先说结论:这篇研报让我觉得最爽的一点
就是它告诉我——你别老盯着那个总涨跌幅看,里面东西是混在一起的。
就像你喝一碗汤,觉得味道不对,不是因为汤不行,而是里面既有鸡肉又有姜片,你得分出来。这个“分”的动作,就是切割。
我以前做因子,就是傻乎乎地算个过去20天收益,跑出来IC时好时坏,我还以为是市场有病。现在看来,是我自己没把数据洗干净。
我到底学到了啥(说人话版)
第一,涨跌幅可以拆成“好日子”和“坏日子”
不是按涨跌拆,而是按某种行为特征拆。比如大单多的日子和小单多的日子。
报告里那个理想反转因子,本质就是:大单多的那几天涨跌幅加起来,减去小单多的那几天涨跌幅加起来。就这么一个减法,效果就比原始反转因子稳很多。
我当时看到这里,脑子里冒出一个念头:我靠,那换手率是不是也能这样拆?波动率呢?
第二,减法不是随便减的,它其实是个“抠掉共性”的操作
你想啊,M_high和M_low都包含了市场当天的整体波动,两个一减,市场的影响就被抵消了大半,剩下的就是“大单和小单行为差异”带来的纯信号。
这个思路太实用了。以后我拿到任何两个相关的东西,第一反应应该是:做个差看看?
第三,深度学习不是往里扔数据就完事了,结构设计很重要
之前我也跑过GRU、LSTM,就是把所有特征堆进去,让网络自己学。结果经常是过拟合,或者学出来的东西解释不了。
这篇里DBD-GRU的做法很聪明:先人工切一刀,分成两路,分别学,最后再求差。相当于把领域知识硬塞进网络结构里,而不是指望黑箱自己悟出来。
说实话,我以前觉得“模型结构设计”是搞学术的人玩的东西,现在觉得,这玩意儿真能带来实打实的收益提升。
以后我自己怎么发散着玩(纯脑洞,不一定对)
我不打算照抄报告里的切法,我想自己乱试。
1. 换个对象切着玩
- 切换手率:高换手日的换手率和低换手日的换手率做差,看能不能预测未来波动。
- 切成交额:大额成交日和小额成交日的收益差,会不会比单纯用成交额更好?
- 甚至切涨跌停状态:把涨停日的收益单独拿出来,和没涨停的日子比一比。
2. 换刀法,别总用中位数
报告里用平均单笔成交金额,我可以试试:
- 用当天上午的涨跌幅来切下午的数据(上午涨得多,下午会不会反转?)
- 用新闻情绪评分,把正面新闻日和负面新闻日分开
- 用VIX指数,高波动环境和低波动环境分开切
刀法越奇怪,越有可能挖到别人没发现的东西。
3. 产出不止减法,试试除法和别的
减法是最简单的,但万一比值更有效呢?比如 M_high / M_low。
或者搞个非线性组合:M_high的平方减去M_low的平方,虽然有点玄学,但不试怎么知道。
4. 切完再切,搞嵌套
这个是我最想试的。比如:
- 第一步:按大单/小单切
- 第二步:在大单的那一堆里,再按高振幅/低振幅切
- 最后:高振幅大单日收益 - 低振幅大单日收益
有点像决策树,但更有金融直觉。
5. 不切时间了,切股票
报告里主要是把一只股票的不同交易日切开。那我能不能每天把所有股票按市值分成五组,然后在每组内部算因子?或者先切行业,再切时间?
这种“截面+时间”的双重切割,感觉能做出很精细的因子。
最后,我准备怎么动手试(具体计划)
我打算这周末拿A股数据跑个简单实验:
- 选一个最普通的因子:过去20日收益率(Ret20)
- 选一个切割指标:每日换手率(简单粗暴)
- 按换手率中位数,把20天分成高换手日和低换手日
- 新因子 = 高换手日收益和 - 低换手日收益和
- 跑回测,看IC和多空收益有没有比原始Ret20好
如果效果好,再换刀法,比如用每日波动率来切。如果效果不好,就换对象,比如切换手率本身而不是切收益。
反正就是瞎试 + 有逻辑地瞎试。
一句话收尾:别再把数据当整体看了,学会“切开再重组”,很多时候新因子就藏在那个减法里。
(以上纯属个人瞎琢磨,回测前记得中性化、去极值,别直接拿去实盘)