Advance Finance Machine Learning读书笔记
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。
因为年初疫情影响,书剩在别的地方无法出门取,所以断更了很久,现在持续更新中……
之前有搜到大神weixin_38753422的AFML系列。写得很详细并且有代码和图片解释,链接在此
此系列从Part 1 Chapter 3开始写起,Chapter3之前内容可以在上面的链接里看到。(注意并不是所有内容的整理,而是我个人觉得需要整理的内容)
本文讲的时Part 3 Chapter 12 Backtesting through Cross-Validation (使用CV进行回测)
啥是回测
回测是用于检测投资策略在OOS上的性能表现,大致有两个方向:
- 前向回测法:将策略在曾经的数据上跑一边,这也是经常被提到的那个回测(历史数据检测)
- 虚拟回测法:模拟从未发生过的数据,在这个数据上进行测试
前向回测法
缺点:
- 因为是在一条单一时间线上进行回测,所以很容发生过拟合
- 如果测试放在一些明显的趋势性时间序列上,会导致在上下波动的区间训练的策略表现极差,如果实际交易中发生于回测时间序列区间相反的趋势,就会发生过拟合,无法泛化的结果
- 训练数据集太少(Warm-up set 没看懂)
优点:
- 前向法在历史数据上进行模拟交易,所以它的表现可以直接有策略交易详单得出
- 历史回测本身就可以避免信息泄露,只要Purge这步操作过就能保证Testset是OOS
交叉验证回测法
优点:
- 使用CV的Test set是k个不同的情境
- 生成策略的训练集样本大小一致,也就说利用的信息量一致,后期有可比性
- 每一个样本都能参与到test set中去
缺点:
- 和WF回测一样仍是在已有的时间序列方向上进行测试
- CV在历史数据上并没有像WF一样有交易的模拟记录
- 操作时要特别主要Test Set 的信息不能流入Train Set(参考Chapter 7 提到的Purge 和 Embargo)
将Purge与CV结合的CPCV回测
1.第一步:将 T T T个样本进行分组,分成 N N N个组,前 1 … … N − 1 1……N-1 1……N−1个组的样本容量是 T / N T/N T/N,最后第 N N N组的样本容量是