相对行业波动率
过去 N 日, 股票相对行业指数的收益波动率, 相对收益波动率越大, 股票相对行业指数越容易走出不同走势。
相对行业波动率 =(股票涨幅 - 行业涨幅)的 N 日标准差 * sqrt(N 日)
行业涨幅 = 行业收盘价 / 昨日行业收盘价 -1
行业收盘价取当前股票所在一级行业或二级行业内所有股票的当日收盘价的中位数
以代码 600000 股票 2024 年数据为例,计算其 250 日相对行业波动率。
代码示例:
A |
|
1 |
250 |
2 |
600000 |
3 |
2024-01-01 |
4 |
2024-12-31 |
5 |
=call("adjustprice.splx", "", call("loadkday.splx", A2, A3,A4) ) |
6 |
=A5.derive((close-close[-1])/close[-1]:pctChg).keys(tdate) |
7 |
=T("stock.btx") |
8 |
=A7.select(code==A2).industry |
9 |
=A7.select(industry==A8).(code) |
10 |
=call("adjustprice.splx", "", call("loadkday.splx", A9, A3,A4) ) |
11 |
=A10.group(tdate;~.(close).median():hmed_close) |
12 |
=A11.derive(hmed_close-hmed_close[-1]/hmed_close[-1]:h_pctChg) |
13 |
=join@1(A6:c1;A12:c2) |
14 |
=A13.new(c1.code,c1.tdate,c1.pctChg-c2.h_pctChg:r_change).sort(tdate) |
15 |
=A14.new(code,tdate,sqrt(var@s(r_change[1-A1:0]))*sqrt(A1):RIV) |
A1 时间周期
A2-A5 读取股票数据
A6 计算股票每日涨幅
A7-A9 从股票代码列表中获取所有同行业股票代码
A10 读取所有同行业股票数据
A11 按照日期分组,计算行业收盘价
A12 计算行业涨幅
A13 将股票数据行业涨幅按日期关联
A14 计算相对涨幅,并按日期排序
A15 计算相对行业波动率
为了使用方便,可以封装成脚本供调用。
脚本代码:
A |
|
1 |
=data.derive((close-close[-1])/close[-1]:pctChg).keys(tdate) |
2 |
=T("stock.btx") |
3 |
=A2.select(code==data.code).industry |
4 |
=A2.select(industry==A3).(code) |
5 |
=call("adjustprice.splx", "", call("loadkday.splx", A4, data.tdate,data.m(-1).tdate) ) |
6 |
=A5.group(tdate;~.(close).median():hmed_close) |
7 |
=A6.derive(hmed_close-hmed_close[-1]/hmed_close[-1]:h_pctChg) |
8 |
=join@1(A1:c1;A7:c2) |
9 |
=A8.new(c1.code,c1.tdate,c1.pctChg-c2.h_pctChg:r_change).sort(tdate) |
10 |
=A9.new(code,tdate,sqrt(var@s(r_change[1-n:0]))*sqrt(n):RIV) |
脚本名保存为 riv.splx。
脚本参数:
data |
序表,某支股票的日线数据 |
n |
数字,时间周期 |
返回数据集结构:
code |
股票代码 |
tdate |
日期 |
RIV |
相对行业波动率 |
例如,调用脚本计算浦发银行 2024 年相对行业波动率,n 取 250。
A |
B |
|
… |
… |
计算出源数据 |
6 |
=call("riv.splx",A5,250) |
调用脚本 |
运行效果: