大盘的领先指标:
雪球情绪指数完整历史回测
前文我们对来源于股吧的情绪指数,通过简单策略以历史股价为基准进行了回测。对于雪球的情绪指数,我们用同样的方法对历史数据进行回测以期能有一些新的发现。
数据筛选条件:
数据来源:雪球(http://www.xueqiu.com),采集文本包括发帖内容,浏览量,评论量
过滤条件:浏览数大于5000,发帖数大于2,评论数大于2
用自然语言处理(Natural Language Processing) 量化文本所包含的情绪,按正、负面的程度进行打分,得分即为即情绪指数(范围为0-1)
选股:情绪指数前一天(t-1)排名前10的股票
配仓:按照情绪指数加权满仓配额
交易:在第一个交易日开盘价买入,收盘价卖出,不考虑交易成本
以一年250个交易日为年化标准
以沪深300指数为整体市场
无风险收益率为4%
累计收益曲线
情绪因子 |
沪深300 |
|
总收益 |
161.47% |
11.61% |
年化收益 |
14.77% |
1.59% |
最大回撤 |
-10.01% |
-8.75% |
波动率 |
1.92% |
1.48% |
年化波动率 |
30.34% |
23.43% |
与大盘相关系数 |
0.726 |
|
β |
0.94 |
1 |
β:策略对市场整体风险的贡献度
由表中的最大回撤,波动率以及β系数,可见雪球情绪指数在11-18年的回测中波动率较大,这一点在收益率图上也能得到印证。但最终,在大盘经历15年熊市只能实现年化1.59%收益的情况下,雪球的单因子情绪模型还是实现了总体161.469%的超额收益。
指标分析
情绪因子 |
沪深300 |
|
α |
13.04% |
|
夏普比率 |
0.355 |
-0.103 |
特雷纳指标 |
0.115 |
-0.024 |
信息比率 |
0.624 |
|
平均持有天数 |
1 |
1 |
平均持仓标的数 |
8.673 |
|
平均交易收益 |
0.07% |
0.02% |
正收益平均 |
1.13% |
0.01% |
负收益平均 |
-1.14% |
-0.01% |
胜率 |
56.08% |
53.78% |
α:主动超额收益
夏普比率:单位整体风险收益
特雷纳比率:单位系统性风险收益
信息比率:单位非系统性风险收益
但对于这8年间的回测也有不及预期的地方,在高风险的情况下,策略没有获得与之相匹配的收益,其夏普比率,信息比率等将风险纳入考量的收益指标均在行业平均水平。导致这个问题的重要原因是,虽然大盘的正收益平均和负收益基本一致,但本策略的正收益平均是低于负收益平均的绝对值的,两种最终都是靠着高于50%的胜率获取到了正的平均交易收益。但为何策略的胜率和平均交易收益只略高于大盘,但最终收益能达到大盘7倍左右。考虑到指标只是平均情况,但并未考虑超额收益出现的时机,而超额收益出现的越早或者早期超额收益幅度越大,期初对本金的增长效应越大,那么在后期正交易收益对他的乘数效应也随之会被放大。
将日收益率以时间为序列,点状分布,以方便通过离散度来更清晰看到大幅度的超额收益出现在哪一时刻。以15-10-23为轴,可以看到,左边的蓝点明显更离散尤其是正值区域,而右边正值区域蓝点则更聚合。之前的问题得到了答案,就是超额收益时间出现的时间较早,从而导致基数更大,收益乘数效应的周期更长,由此我们也做出合理的猜想,整个模型相较于大盘是否在时间序列存在一定的提前性。
领先指标
我们的猜想在收益率曲线上得到了印证,尤其是15年市场经历大幅波动的关键转折时期,由上图我们可以看到情绪因子的收益率曲线比大盘提前5-30天不等。而标注出关键时间点则更为有价值,“蓝”“橙”“黄”四个上涨趋势信号,情绪因子提前了至少10天,为提前低价吸筹留出了充足的时间空间;而“灰”“绿”两个下跌趋势信号则能提前5-6天左右,对于类似于15年6月的快速回调,提前预知逃顶的每一天都弥足珍贵。
额外发现
除了提前预知这个优势外,还有令人值得注意的便是,我们的策略是如何度过18年熊市的。虽然以该策略回测,不管是股吧还是雪球,12-18年还是19-21年,胜率都高于大盘约3%左右,但18年熊市大盘的胜率为46%左右,而策略的胜率为51%,高出大盘约5%左右,所以情绪因子依旧如之前分析,展现出了很好的抗熊能力。
2019-2021年结果
累计收益曲线
情绪因子 |
沪深300 |
|
总收益 |
469.37% |
57.17% |
年化收益 |
83.71% |
17.13% |
最大回撤 |
-11.61% |
-7.88% |
波动率 |
1.78% |
1.29% |
年化波动率 |
28.10% |
20.45% |
与大盘相关系数 |
0.64 |
|
β |
0.879 |
1 |
β:策略对市场整体风险的贡献度
到了19-21年,策略则显得稳定了许多,不仅风险较12-18年有所下降,而且收益也极大地提高了,实现了83.707%的年化收益。同时既在19-20年显示了与大盘很好的相关性,又在21年展现了很好的抗风险能力。
情绪因子 |
沪深300 |
|
α |
68.17% |
|
夏普比率 |
2.837 |
0.642 |
特雷纳指标 |
0.907 |
0.131 |
信息比率 |
3.138 |
α:主动超额收益
夏普比率:单位整体风险收益
特雷纳比率:单位系统性风险收益
信息比率:单位非系统性风险收益
同类型比较:夏普比率两倍多。
同收益率比较:选取两年年化同为百分之八十以上基金,其标准差(波动率)为32.33%,策略为28.10%,收益相同情况下策略风险较小,所以单位风险收益也较高。
同风险比较:选股标准差同为28%左右基金,其两年年化为74.42%,夏普比率为其1.5倍左右。
3.收益分析
情绪因子 |
沪深300 |
|
平均持有天数 |
1 |
1 |
平均持仓标的数 |
9.578 |
|
平均交易收益 |
0.26% |
0.07% |
正收益平均 |
1.39% |
0.94% |
负收益平均 |
-1.22% |
-0.92% |
胜率 |
56.70% |
53.57% |
收益放大倍数 |
1.57074495 |
3.581909091 |
收益放大倍数=平均交易收益/(正收益平均+负收益平均)
我们同样好奇较高的超额收益来源于哪里。由上表可见,19-21年有着较高的正收益平均,尤其是结合上负收益平均,两者之和有将近0.17%的空间,远远高出大盘的0.02%,但最终平均交易收益相较于大盘并没有那么高,按道理胜率也比大盘高,平均交易超额收益应该被进一步放大。于是设计了一个新的指标——收益放大倍数,以量化正负收益差反馈到最终收益上的情况,最终情绪因子的收益放大倍数也的确没有大盘高,也就是策略的正收益平均优势并没有被完全发挥出来。
为了进一步寻找到原因,我们使用了与12-18年同样的分析手段,以20-6-18为轴,可以看到高于6%的超额收益都出现在后半部分,同时后半部分的负收益也很少超过-4%,也就是大幅超额收益主要都集中在了后半段,那么正如前文所述,正交易收益的乘数效应周期减少,其效应也随之会被缩小,导致了收益放大倍数不及预期。这也与其收益曲线反映的信息相吻合,19-20年基本与大盘正相关,21年在熊市中展现出信息价值,获得更多超额收益。
同时我们也得出一个的重要结论,不仅仅超额收益在绝对值上的领先很重要,其出现的早晚也会影响到最终的收益。这也就对应到了情绪因子的两个能力上——择股能力和择时能力,择股能力能选出优质资产,增加超额收益的绝对值,而择时能力则能提前发现市场信号,对冲风险,如果所有超额收益都能在时间序列上向前平移,其带来的效应也是数以倍计的。
最后,为了从实际去证明我们结论的依据,和情绪因子的择股能力,我们展示了四天的选股样本,可以看到,在20-21投资后期,我们的确通过情绪因子选取到了与情绪相匹配,具有巨额涨幅的股票,甚至在一定情况下,当情绪指数从大到小排名,股票涨跌幅也相应的有不完全递减关系。
date |
code |
sentiment |
pctChg% |
2020/9/16 |
600537 |
1 |
0.2597 |
2020/9/16 |
603920 |
1 |
2.0931 |
2020/9/16 |
688577 |
1 |
85.1494 |
2020/9/16 |
603298 |
0.999999988 |
-0.6016 |
2020/9/16 |
688288 |
0.999999984 |
0.3712 |
2020/9/16 |
600984 |
0.999999842 |
-5.4515 |
2020/9/16 |
2653 |
0.999999023 |
-0.9017 |
2020/9/16 |
667 |
0.999996098 |
-0.2618 |
2020/9/16 |
688188 |
0.999976013 |
1.1455 |
2020/9/16 |
300619 |
0.999808605 |
0.2568 |
2020/9/28 |
300358 |
1 |
2.3682 |
2020/9/28 |
300897 |
1 |
74.7759 |
2020/9/28 |
2945 |
1 |
-0.2774 |
2020/9/28 |
600221 |
0.999999999 |
1.7045 |
2020/9/28 |
2277 |
0.999999999 |
-4.5064 |
2020/9/28 |
603056 |
0.999999997 |
-0.5309 |
2020/9/28 |
600850 |
0.999999995 |
-2.2727 |
2020/9/28 |
600343 |
0.999999976 |
-1.574 |
2020/9/28 |
600834 |
0.99999994 |
-2.027 |
2020/9/28 |
600183 |
0.99999983 |
-1.6596 |
2020/10/9 |
300217 |
1 |
7.5718 |
2020/10/9 |
300217 |
1 |
7.5718 |
2020/10/9 |
300317 |
1 |
19.9686 |
2020/10/9 |
300115 |
1 |
8.5115 |
2020/10/9 |
300379 |
0.999999989 |
0.7046 |
2020/10/9 |
592 |
0.999999982 |
2.2436 |
2020/10/9 |
603799 |
0.999999676 |
3.5457 |
2020/10/9 |
2049 |
0.999995719 |
0.6819 |
2021/7/29 |
300128 |
1 |
15.8602 |
2021/7/29 |
300907 |
1 |
1.1728 |
2021/7/29 |
688229 |
1 |
0.7668 |
2021/7/29 |
300277 |
0.999999997 |
2.086 |
2021/7/29 |
688312 |
0.999999895 |
3.0266 |
2021/7/29 |
2090 |
0.999999802 |
4.2892 |
2021/7/29 |
688513 |
0.999999719 |
1.828 |
2021/7/29 |
2955 |
0.999999306 |
0.4878 |
2021/7/29 |
300527 |
0.999991485 |
1.5982 |
2021/7/29 |
300162 |
0.999989645 |
8.2725 |