AFML读书笔记--Backtesting through Cross-Validation

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 1N1个组的样本容量是 T / N T/N T/N,最后第 N N N组的样本容量是 T − [ T / N ] ∗ ( N − 1 ) T-[T/N]*(N-1) T[T/N](N1).
([.]为向下求整,[3.33]=3)
2.第二步:我们从 N N N个组中取 k k k个组作为Test set 那么就有 C N n − k C_N^{n-k} CNnk个组合(N-k个Train,k个test)
3.对每一组组合进行Purge 和 Embargo 因为有一些测试集的标签可能又训练集的数据得到
4.在每个组合上的训练集上训练出模型,并在对应的测试集上做出预测结果
5.我们可以得到 ϕ \phi ϕ个Path 每个Path上面都有 N N N个测试集预测结果,并最后计算每个Path的夏普率

Path计算公式:

AFML读书笔记--Backtesting through Cross-Validation_第1张图片
AFML读书笔记--Backtesting through Cross-Validation_第2张图片
(注意:图中红框圈出来的为Path 1)
解释一下这个图:
一共六个组( N = 6 N=6 N=6)
要选两个测试组( K = 2 K=2 K=2)
一共 C 6 2 C_6^{2} C62种组合法( C 6 2 = 15 C_6^{2}=15 C62=15)
看第一个组合 S 1 S_1 S1,组1和组2是选做了测试集所以在图片中标出,那么组3、组4、组5、组6将合成训练集,这个训练集将fit出模型1并在组1、组2的测试集上得出预测结果,并计算出执行策略在Test set上面的夏普率
(个人觉得CV中test set 应该叫validation set)

文中关于CPCV的例子

K = 1 K=1 K=1时:

CPCV的Path只有一条,那么CPCV就退化成了普通CV

K = 2 K=2 K=2时:

CPCV的Path有 N − 1 N-1 N1条,十分接近于 N N N组,所以当我们有指定的Path需要生成时,我们直接将数据分成 P a t h + 1 Path+1 Path+1组就可以了。理论上我们希望Path 越多越好这样就能更真实地反应策略的效果。那么我们极限情况下可以把 N = T N=T N=T(T之前提到过是总共样本数),那么这时的Path共有 T − 1 T-1 T1个,那么策略将会在 1 − 2 T 1-\frac{2}{T} 1T2的比例上进行训练。实际运用中通常将K设置成2就行了。

你可能感兴趣的:(AFML读书笔记,推导)