- 关于计算ic方式不一样:按照每分钟做一个归一化的操作是计算截面ic的,目前我们做的是计算时序ic的。
- 要多问,这个问题其实应该一开始就问带教,自己想是看不出来的。
- 交流了一下,截面ic会高一些,也可以作为参考。现在将ic大于0.15的因子发过去看看。
- 接下来要做的:尽快对齐数据,算出正确的时序ic,同时保留截面ic的接口。
- 训练问题
- 排查完一切问题,重新训练。10min的对数收益率是log(ref(t,-10)/ref(t,-1)),对齐数据后训练。训练不久后出现计算ic为NaN。
- 截面ic和时序ic
- 截面IC:衡量在某一时刻,不同股票的因子值与未来收益的相关性。即在每个时间点,因子对股票横截面排序的有效性。
- 计算方式:每期对所有股票,计算因子值与未来收益的相关系数,然后对所有期取均值。
- 适用场景:多股票横截面选股。
- 时序IC:衡量某一股票在不同时间,因子值与未来收益的相关性。即对单只股票,因子在时间序列上的预测能力。
- 计算方式:对每只股票,计算因子值与未来收益在时间上的相关系数,然后对所有股票取均值。
- 适用场景:单股票时序预测。
- 目前训练的总结
- (1)之前训练的股票池是沪深300,导致截面ic高;目前用全市场的股票训练,稳定的截面ic在0.06左右。
- (2)时序ic在训练时会出现NaN,可能和手写的flatten personr计算方式有关,按道理来说ic作为奖励被使用,不参与梯度计算,因此和ic无关,应该是梯度消失了。
- (3)目前构造因子的方式是使用kbar的高低开收和Vwap,应该可以加成交量等数据。
- 训练时的显存不足问题:如果选用全市场股票,会导致显存不足,数据量太大,针对这问题,尝试减小batch size一半,并且数据间隔5条采样一条,这样会让显存开销减少。
- 将之前的因子发送给带教。目前好像没有从逆波兰表达式转化为df的流程,先自己手写,后面再看要不要写一个脚本。
- 修复了higgsdb库中的一个问题,现在每次多读取下一个交易日前10min的数据,用来计算收益率,解决了之前最后的收益率无法计算的问题。
- 完成了从蔷薇数据库->rlgen自动挖掘->因子表达式转数据->评估的流程。
- 开始测评前几天在沪深300上挖掘的因子,使用的数据集是2025年4 5 6 7四个月的1min的kbar数据,一共20个因子,训练时的评价指标是overall ic。
首批的20个因子和它们的组合,在全市场上的时序ic,bystock ic和 rank ic 如下:
| signal |
over_all_ic |
| alpha_12 |
0.020244 |
| alpha_13 |
0.017476 |
| alpha_0 |
0.005805 |
| alpha_7 |
0.005762 |
| alpha_4 |
0.004493 |
| alpha_10 |
0.003285 |
| alpha_15 |
0.002742 |
| alpha_2 |
0.002695 |
| alpha_17 |
0.001662 |
| alpha_18 |
0.001487 |
| combo_alpha |
-0.000236 |
| alpha_19 |
-0.001230 |
| alpha_5 |
-0.001875 |
| alpha_16 |
-0.002932 |
| alpha_6 |
-0.006056 |
| alpha_3 |
-0.007747 |
| alpha_8 |
-0.008007 |
| alpha_14 |
-0.008251 |
| alpha_11 |
-0.008643 |
| alpha_9 |
-0.015848 |
| alpha_1 |
-0.016454 |
| signal |
over_all_ic |
| alpha_12 |
0.020244 |
| alpha_13 |
0.017476 |
| alpha_0 |
0.005805 |
| alpha_7 |
0.005762 |
| alpha_4 |
0.004493 |
| alpha_10 |
0.003285 |
| alpha_15 |
0.002742 |
| alpha_2 |
0.002695 |
| alpha_17 |
0.001662 |
| alpha_18 |
0.001487 |
| combo_alpha |
-0.000236 |
| alpha_19 |
-0.001230 |
| alpha_5 |
-0.001875 |
| alpha_16 |
-0.002932 |
| alpha_6 |
-0.006056 |
| alpha_3 |
-0.007747 |
| alpha_8 |
-0.008007 |
| alpha_14 |
-0.008251 |
| alpha_11 |
-0.008643 |
| alpha_9 |
-0.015848 |
| alpha_1 |
-0.016454 |
| signal |
over_all_rankic |
| alpha_19 |
0.056788 |
| alpha_13 |
0.049284 |
| alpha_12 |
0.046369 |
| alpha_10 |
0.041468 |
| combo_alpha |
0.039469 |
| alpha_2 |
0.036195 |
| alpha_7 |
0.035485 |
| alpha_15 |
0.026764 |
| alpha_17 |
0.022462 |
| alpha_16 |
0.018137 |
| alpha_0 |
-0.009742 |
| alpha_14 |
-0.013681 |
| alpha_18 |
-0.016194 |
| alpha_4 |
-0.022659 |
| alpha_8 |
-0.028349 |
| alpha_6 |
-0.032231 |
| alpha_5 |
-0.036195 |
| alpha_11 |
-0.036423 |
| alpha_3 |
-0.044258 |
| alpha_1 |
-0.050421 |
| alpha_9 |
-0.052308 |
- 目前存在的问题:有些因子还有NaN的情况,需要排查
检查在中证1000上挖掘的因子,和在沪深300上挖掘的因子进行对比,发现前者在训练过程中一直比后者高,说明“一般沪深300会比其它所有股票难预测,ic会低一些”这个结论没问题。
发现之所以ic计算不一致,是因为tensor展开的方向错了,需要重写,然后在higgsdb取数据时未能考虑到后复权的影响,需要添加.
下午接到学校通知有事情处理,暂停半天。