刚把上个月非农那天的MT4订单流水导出来,逐笔看了三遍。屏幕上是那根半小时内吞掉我半年利润的K线,旁边列着36周以来的周收益曲线,一条几乎45度向上的平滑线,然后在某一点垂直坠落。那种视觉冲击力,比账户数字变化来得更直白。
先说下我那套策略的背景吧。欧美15分钟图,基于均值回归逻辑,核心参数是布林带开口收窄后的突破确认,配合ATR动态止损。从去年4月到今年2月,整整36周,周胜率71%,最大连续回撤没超过4.6%,夏普比率稳定在2.3我一度觉得找到了圣杯,甚至把杠杆从2倍加到4倍,因为历史回测显示即使加杠杆,极端情况下的最大回撤也在可控范围内。现在回头看,这个“极端情况”的样本量,其实只有三年多的历史数据,而外汇市场的尾部风险,从来不是靠历史数据能完全刻画的。
非农那晚的具体情况是这样的。数据公布前15分钟,策略照常运行,在1.0845挂了个空单,止损设在1.0872。我当时还特意看了下市场预期和前置值,非农就业人数预期18.5万,前值修正后只有12.3万,按理说如果数据低于预期,美元走弱,欧美应该上涨,我的空单方向其实是逆着大概率事件的。但策略的逻辑是纯技术面的,它不管基本面日历,只按价格行为触发。结果数据公布值15.2万,低于预期但高于前值,市场先是快速下探到1.0831触发了我空单的浮盈,然后半小时内反转拉升80点,直接扫掉止损。如果只是这样,亏损也就2.3%左右,但问题出在我加了马丁格尔式的补仓模块——那是我实盘前三个月手动加的,用来应对震荡行情中的假突破,回测里确实把胜率提升了5个百分点。
补仓模块在非农夜的连锁反应是这样的:首次止损后,策略在1.0875反手做多,因为价格突破了前高,但随即又一根大阴线砸下来,多单再次止损。连续两次止损后,补仓逻辑触发,仓位翻倍做空,结果正好接在V型反转的顶部。半小时内三次触发,仓位从初始的0.5手累加到2.1手,单日亏损达到账户净值的31%。我盯着屏幕的时候,脑子是空白的,等反应过来手动关掉EA,已经晚了。后来花了整整两周复盘,把非农那天每一笔成交、每一次信号触发、每一根K线的数据都拉出来对照。最终想通的道理其实很简单,但代价很贵:我犯的错不是策略本身失效,而是用技术面逻辑去硬扛基本面驱动的行情,并且没有在关键数据发布前做风控降级处理。均值回归策略最怕的就是单边脉冲行情,而非农恰恰是外汇市场最大的脉冲源。我后来在策略里加了两个硬性条件:一是每周五北京时间20:30前半小时强制平仓所有持仓并停止开新单,直到数据发布后15分钟再恢复;二是补仓模块增加一个波动率过滤器,当ATR突然放大到20日均值的1.8倍时,禁止任何加仓操作。
另一个让我印象深刻的教训是,我太依赖连续36周的正收益来验证策略的鲁棒性,却忽视了这36周里其实只经历了两次非农和一次CPI,样本量远远不够。真正的统计显著性需要覆盖不同经济周期、不同波动率环境,而不是单纯看周数。现在我的回测框架里多了一个维度:把历史数据按波动率聚类分成不同状态,分别测试策略在每个状态下的表现,而不是只看整体曲线。
最后想问问同样跑EA的汇友,你们在关键数据发布前是怎么处理策略的风控的?是直接关停,还是像我这样设个波动率熔断,还是有其他更细的做法?毕竟这种黑天鹅事件,光靠止损有时候真的不够。
先说下我那套策略的背景吧。欧美15分钟图,基于均值回归逻辑,核心参数是布林带开口收窄后的突破确认,配合ATR动态止损。从去年4月到今年2月,整整36周,周胜率71%,最大连续回撤没超过4.6%,夏普比率稳定在2.3我一度觉得找到了圣杯,甚至把杠杆从2倍加到4倍,因为历史回测显示即使加杠杆,极端情况下的最大回撤也在可控范围内。现在回头看,这个“极端情况”的样本量,其实只有三年多的历史数据,而外汇市场的尾部风险,从来不是靠历史数据能完全刻画的。
非农那晚的具体情况是这样的。数据公布前15分钟,策略照常运行,在1.0845挂了个空单,止损设在1.0872。我当时还特意看了下市场预期和前置值,非农就业人数预期18.5万,前值修正后只有12.3万,按理说如果数据低于预期,美元走弱,欧美应该上涨,我的空单方向其实是逆着大概率事件的。但策略的逻辑是纯技术面的,它不管基本面日历,只按价格行为触发。结果数据公布值15.2万,低于预期但高于前值,市场先是快速下探到1.0831触发了我空单的浮盈,然后半小时内反转拉升80点,直接扫掉止损。如果只是这样,亏损也就2.3%左右,但问题出在我加了马丁格尔式的补仓模块——那是我实盘前三个月手动加的,用来应对震荡行情中的假突破,回测里确实把胜率提升了5个百分点。
补仓模块在非农夜的连锁反应是这样的:首次止损后,策略在1.0875反手做多,因为价格突破了前高,但随即又一根大阴线砸下来,多单再次止损。连续两次止损后,补仓逻辑触发,仓位翻倍做空,结果正好接在V型反转的顶部。半小时内三次触发,仓位从初始的0.5手累加到2.1手,单日亏损达到账户净值的31%。我盯着屏幕的时候,脑子是空白的,等反应过来手动关掉EA,已经晚了。
论坛里有个汇友说过一句话,我当时觉得是废话,现在觉得是真理:“回测曲线越漂亮,实盘越要小心,因为市场总会在你最自信的时候,用你从未见过的方式教育你。”
另一个让我印象深刻的教训是,我太依赖连续36周的正收益来验证策略的鲁棒性,却忽视了这36周里其实只经历了两次非农和一次CPI,样本量远远不够。真正的统计显著性需要覆盖不同经济周期、不同波动率环境,而不是单纯看周数。现在我的回测框架里多了一个维度:把历史数据按波动率聚类分成不同状态,分别测试策略在每个状态下的表现,而不是只看整体曲线。
最后想问问同样跑EA的汇友,你们在关键数据发布前是怎么处理策略的风控的?是直接关停,还是像我这样设个波动率熔断,还是有其他更细的做法?毕竟这种黑天鹅事件,光靠止损有时候真的不够。
