标题:复盘方法第5篇:Tick数据、行进式分析与蒙特卡洛模拟
一个看起来很赚钱的复盘结果往往是谎言。多数零售复盘存在三个致命缺陷:幸存者偏差、前视偏差和过度拟合。本指南提供四种专业的复盘方法来暴露这些问题。
1. 方法一 – Tick数据要求
OHLC数据不足以进行真实的复盘。限价单和市价单的成交方式不同。
2. 方法二 – 行进式分析(黄金标准)
行进式分析通过将优化与测试分离来防止过度拟合。
``
python
行进式复盘结构
总数据年数 = 5
优化窗口年数 = 3
测试窗口年数 = 1
for 当前年 in range(0, 总数据年数 - 优化窗口年数, 测试窗口年数):
优化数据 = 数据[当前年:当前年 + 优化窗口年数]
测试数据 = 数据[当前年 + 优化窗口年数:当前年 + 优化窗口年数 + 测试窗口年数]
最优参数 = 优化(优化数据)
表现 = 复盘(测试数据, 最优参数)
保存表现()
最终结果 = 所有测试窗口表现的平均值
`
通过标准: 测试窗口表现必须至少达到优化窗口表现的70%
若不通过: 系统过度拟合。减少参数数量或简化逻辑。
3. 方法三 – 用于回撤估算的蒙特卡洛模拟
历史复盘只显示一条路径。蒙特卡洛模拟数千个随机序列。
`python
回撤估算的简化蒙特卡洛逻辑
原始交易列表 = 加载所有复盘交易() # 盈亏数值列表
def 蒙特卡洛回撤(模拟次数=1000):
结果列表 = []
for i in range(模拟次数):
随机打乱交易顺序 = random_shuffle(原始交易列表)
权益曲线 = cumulative_sum(随机打乱交易顺序)
最大回撤值 = 计算最大回撤(权益曲线)
结果列表.append(最大回撤值)
return {
"中位数回撤": median(结果列表),
"90分位回撤": percentile(结果列表, 90),
"最坏情况回撤": max(结果列表)
}
`
解读: 如果90分位回撤超过25%,无论历史结果如何,你的系统都需要更严格的风控。
4. 方法四 – 六项复盘红旗检查清单
在信任任何复盘结果之前,验证以下六项:
| 检查项 | 通过/不通过 |
|--------|-------------|
| 无幸存者偏差(包含已退市的货币对) | |
| 无前视偏差(仅使用交易时可得的数据) | |
| 模拟了滑点(外汇1-2点) | |
| 模拟了手续费(每手来回3-7美元) | |
| 最少200笔交易(不是K线数) | |
| 至少在3个不同的货币对上测试过 | |
5. 常见复盘陷阱 – 精确数字
陷阱1: 在同一根K线上使用“开盘价”入场 → 你的复盘在交易未来。修正:使用前一根K线的收盘价或下一根K线的开盘价。
陷阱2: 忽略新闻期间的点差扩大。修正:单独复盘非农发布时段,模拟3-5点点差。
陷阱3: 100笔交易的复盘 → 95%置信区间宽度为±15%。要达到±5%的精度,需要400+笔交易。
6. 复盘到前测的协议流程
`
第1步 – 复盘(Tick数据、行进式、蒙特卡洛)→ 通过/不通过
第2步 – 模拟盘前测(100笔交易,真实市场,无实盘资金)→ 对比复盘指标
第3步 – 若前测盈利因子达到复盘的80%以上 → 通过
第4步 – 小额实盘账户(每笔风险1%,50笔交易)→ 再次对比
第5步 – 完整部署
`
关键规则: 如果前测结果与复盘差异超过25%,你的复盘方法存在缺陷。停止并重建。
7. 复盘频率
每周: 对运行中的系统进行滚动6个月复盘,检测性能衰减
每季度: 完整的行进式重新优化(仅当性能衰减超过15%时)
每年: 包含黑天鹅场景的完整蒙特卡洛压力测试(例如2015年瑞郎事件)
8. 下一步
第6篇将讲解风险管理 – 黑天鹅对冲、断路器机制和最大回撤控制系统。
参考来源:
Pardo, R. (2008). 《交易策略评估与优化》. Wiley.
Aronson, D. R. (2006). 《基于证据的技术分析》. Wiley.
``