我花了几天时间审核自己构建的一个实时外汇系统,该系统拥有超过 16 年的历史数据。结果出现了意想不到的亏损,而发现这一问题的诊断方法具有足够的普适性,值得撰文分享——它不仅适用于交易领域的参数搜索,也适用于其他任何参数优化场景。
下方的所有数据均源自实际运行测量,绝非示意性数据。
设置
17 种配置,4 小时入场 K 线,在 1 小时 K 线上模拟出场,时间跨度从 2010-05-28 至 2026-07-08,共 7,641 笔交易。关键在于,我向系统输入的是历史 CSV 数据而非实时数据流,且使用的是未经修改的生产函数,因此被测试的代码路径与实际实盘运行的代码路径完全一致。
错误 1:模拟将成本计入了错误的位置
平台的 OHLC K 线使用的是 BID(卖出)价格。回测在 K 线收盘时建立入场,将止盈和止损设置在收盘价 ± n·ATR 处,并针对 BID 的高低点检查是否触及,最后从最终盈亏中减去点差。
而在实盘中,多头头寸以 ASK(买入)价成交,挂单区间相对于该 ASK 价设定,平仓则发生在 BID 价。因此,实盘需要价格多运行一个点差的距离才能到达目标位,也会提前一个点差的距离触及止损位。
从结果中扣除成本,等同于向触发机制收取成本,这两者并不相同。前者改变的是你的盈利金额,后者改变的是哪些交易能够最终获利。
实测数据显示:胜率会损失 2–5 个百分点,且始终对交易者不利。
这一原则广泛适用于交易之外的领域:如果你的模拟将成本作为事后调整应用,而非建模生成这些成本的机制,那么你的事件计数就是错误的,而不仅仅是总额有误。
错误 2:胜率是设计选择,而非证据
目标设为 0.5–0.8×ATR,止损设为 1.5–2.0×ATR。这意味着盈亏比为 0.25–0.4,通过算术计算即可确定保本胜率:
保本胜率 = SL / (TP + SL) = 75–82%
在样本外测试中,仅使用向前滚动测试片段:4,947 笔交易,胜率 73.5%,亏损 -4,669.9 pip,平均每笔交易亏损 -0.944 pip。
胜率为 73.5% 却仍然亏损并非悖论。小目标容易被频繁触及,这正是小目标的特性。高胜率是以接受四倍于盈利幅度的亏损为代价换来的——它从来都不是存在交易优势的证明。
值得借鉴的诊断方法
在重新优化任何参数之前,我首先问了一个问题:参数曲面是否根本就可学习。
对于每个前向滚动(walk-forward)折叠:在训练窗口和测试窗口上评估整个参数网格,然后计算两者之间的 Spearman 秩相关系数。
若 rho > 0 -> 训练秩次可预测测试秩次;选择具有意义
若 rho ~ 0 -> 曲面纯属噪声;任何选择规则都无济于事
第二行才是关键所在。它区分了*"我的优化器很糟糕"与"这里根本没有任何有效信号"*——这两种情况从外部看来完全相同,却需要截然相反的应对策略。
119 个折叠的统计结果如下:
- rho 中位数:** -0.024**
- rho 均值:-0.030,95% 置信区间 [-0.090, +0.030] — 包含零
- rho > 0 的折叠占比:47.9% — 等同于抛硬币
零信息量。与此一致的是,采用平台平滑处理的前向滚动优化所产生的样本外结果,甚至比那些我从未触碰过的原始参数更差;并且在 17 种配置中有 11 种选择了网格边界——这正是优化器"无从下手"的典型特征。
随后我检查了该效应是否存在于任何地方
38 个交易品种,非重叠持仓期,波动率缩放,并按资产类别汇总,因此 1,140 次测试缩减为 6 次,分为前半段与后半段对比:
| 资产类别 | 夏普比率 @0bp | 盈亏平衡成本 | 前半段 | 后半段 | 稳定 |
|---|---|---|---|---|---|
| FX major | +0.08 | 3bp | +0.06 | -0.09 | no |
| FX cross | +0.02 | 1bp | -0.05 | -0.06 | no |
| Index | +0.07 | 5bp | +0.04 | +0.02 | yes |
| Metal | +0.12 | 12bp | +0.13 | +0.03 | yes |
| Energy | +0.13 | 23bp | +0.15 | -0.02 | no |
| Crypto | +0.42 | 100bp | +0.54 | +0.15 | yes |
有两点是我未曾预料到的:
盈亏平衡交易成本比夏普比率更具决策参考价值。 FX major 的盈亏平衡点约为 3bp,FX cross 约为 1bp——两者均低于实际点差。在编写任何策略代码之前,“此处是否存在优势”这一问题便已有定论。
显著的结果反而是虚假的。 Energy 在全样本中显示 t = 3.73。但在后半段表现持平至负向。若不进行分段检验,它看起来将是表中最强的发现。
Crypto 是唯一的幸存者,但其衰减剧烈(从 0.54 降至 0.15)。在现实的 CFD 点差下,后半段转为负值。这是历史效应,而非当前效应。
实际教训
在构建策略之前,先构建证伪器。
之所以一长串配置看起来像是“已验证”,是因为流程中没有任何组件负责说这里什么都没有。每个部分都被设计用来寻找某些东西,所以它每次都确实找到了东西。
上述的秩相关测试仅花了一个下午,就否定了数月的参数研究工作——包括我最有信心的一条线索。这正是该测试发挥的作用,也是我长期以来为研究流程添加的最廉价的保险措施。
本文档属于研究记录,不构成投资建议。过往业绩并不代表未来表现。交易 CFD 存在极高的亏损风险。
照片由 Tyler Prahm 拍摄,发布于 Unsplash
Photo by Tyler Prahm on Unsplash
相关文章
SafetyWing 保险评测:适合海外远程工作者与长期旅行者的灵活选择
SafetyWing 是一款专为数字游民和长期海外停留者设计的医疗保险,按月订阅、可随时取消。本文从费用、保障内容、适用人群等角度进行中立评测,帮助您判断它是否适合您的海外生活规划。
baby planet:癌症保险专业咨询服务的客观评价
baby planet是日本一家专注于癌症保险的独立咨询平台,适合对保险种类感到困惑、希望获得中立建议的人群。通过30家以上保险公司的产品比较,帮助用户找到符合自身需求的方案。
FUNDROP 不动产众筹评测:居住用不动产短期投资的实际表现
FUNDROP是日本一家以居住用不动产为投资标的的众筹平台,主打1万日元起投、6至12个月短期项目。本文从实际用户反馈出发,分析其适合人群、风险点及与同类服务的差异,帮助中文读者判断是否值得尝试。