蒙特卡洛回测 · monte carlo bootstrap backtest
回测的本质是:拿历史交易序列,按时间顺序累加收益,算夏普。问题是——历史只有一种顺序。但未来的交易顺序是随机的,同样的交易换个顺序,夏普可能差很多。
举个极端例子:你的策略有 100 笔交易,其中 10 笔大赚、10 笔大亏、80 笔小赚。如果大赚集中在前期,资金曲线一路向上,夏普 2.5;如果大亏集中在前期,资金曲线先腰斩再爬回来,夏普可能 0.5。同样的交易,不同顺序,夏普差 2 倍。哪个才是"真实"的夏普?
答案是:都不是。真实的夏普是一个分布。蒙特卡洛就是生成这个分布:把交易序列随机打乱重排,算每次的夏普,重复几千次,得到夏普的分布和置信区间。这才是策略"稳健性"的真实写照。
下面模拟一个策略,原始回测夏普 2.0。点"重采样"看蒙特卡洛把交易打乱后的夏普分布——直方图越窄说明策略越稳,越宽说明越靠运气。看 95% 置信区间和你的 2.0 的关系。
蒙特卡洛回测有两种主要做法,回答不同问题:
把回测的交易序列随机重排,算每次夏普。回答:"同样的交易换个顺序,夏普会变多少?"——测路径依赖。
从交易分布里有放回抽样,组成新序列。回答:"如果交易分布不变但样本变了,夏普会变多少?"——测样本稳定性。
直接对每日收益做 bootstrap。更简单,但忽略了交易结构。
按块(如 5 天一块)抽样,保留自相关。金融收益有自相关,普通 bootstrap 会低估方差。
实战建议:用块 bootstrap。金融收益有自相关(今天涨明天可能还涨),普通 bootstrap 假设独立,会低估方差、高估置信度。块 bootstrap 保留块内自相关,置信区间更真实。块长度一般取 5-10 天。
另一个关键:置信区间窄 ≠ 策略好。窄只说明"结果稳定",但稳定的可能是稳定地亏。还要看均值的符号和大小——均值正且区间下限也正,才是真稳健。