99.99% 的回撤教会我如何构建交易机器人

我第一个上线到实盘账户的交易机器人几乎亏光了一切。胜率:25%。最大回撤:99.99%。它爆仓并不是因为市场残酷,而是因为我用大多数人构建第一个机器人的方式来构建它——把它当成一个靠自己的主观判断拼凑起来的原型。

这是一个关于我为什么把后续系统里每一条手写规则都删掉的故事,也是这个决定教会我的——人的判断在自动化策略中究竟该处于什么位置。

示意性的资金曲线,小幅攀升至峰值后几乎崩塌归零 仅为示意,并非真实业绩数据。这次崩塌不是某一笔糟糕的交易造成的——而是一千个微小、自信却错误的决策累积的结果。

那个令人安心的错误

刚起步时,硬编码的规则让你觉得一切尽在掌控。止损设在 3%。止盈设在某个整数关口。仓位大小套用某篇博客文章里读来的公式。每一条规则单独看都显得审慎。但它们组合在一起,就构成了一台脆弱的机器,而它从未见过自己即将面对的局面。

我的第一个系统里全是这类规则。它还在 CPU 上用循环来做数值计算,就像你写一次性脚本那样。在干净、友好的数据上做回测时,这些都无关紧要。可一旦真实环境——手续费、滑点、爆仓的可能性——登场,这一切就都至关重要了。一个 3% 的硬止损在纸面上看似纪律严明,实则成了一台一遇到任何噪声就抛售、从不给一个判断喘息空间的机器。这次回撤不是某一笔灾难性的交易造成的,而是一千个微小、自信却错误的决策累积的结果。

那个令人不适的教训

这个教训不是”把止损调得更好”。而是我才是瓶颈。每一个硬编码的阈值,都是我把一个猜测冻结进系统,并强迫未来去服从它。

于是在下一个系统里,我立下了一条关于规则的规则:在模型真正负责学习的那部分里,完全没有任何手写规则。没有止损,没有止盈,没有仓位管理,没有杠杆。如果某个决策会影响策略的行为方式,那么模型就必须从行动的后果中学到它——而不是从我的直觉里继承它。(系统层面的安全机制——敞口上限、紧急熔断开关——是独立的一层,它会保留。被剔除的是我亲手编写交易决策这件事。)

这听起来很极端,确实如此。但它也强制了一种纪律,悄然解决了几个新手常见的失败:

人仍然不可或缺的地方

剔除手写规则并不会剔除人,而是重新安置了人。我不再决定模型在某一时刻做什么。我决定**“好”意味着什么**——它被奖励去追求的目标、它训练时所处的环境、它必须遵守的成本。设计这个目标函数是整件事中最具人性的部分,而把它设计错了,远比任何一笔糟糕的交易都更危险,因为模型会精确地优化你所要求的东西,而不是你所想表达的东西。

这笔交换我每次都愿意做:不再假装自己能为每一个未来状态亲手写好决策,而是把那份精力花在定义系统所学习的那个世界上。

核心要点

99.99% 的回撤是一位昂贵的老师,但也是一位讲得很清楚的老师。这个机器人失败,不是因为它缺少规则,而是因为它装的是我的规则——僵硬、从未经受现实检验,并且是在替代学习而非促成学习。

如果你正在构建自己的第一个系统,最值得你删掉的东西,就是你自己的笃定。


这是构建一个强化学习交易系统的匿名连载记录的第 1 部分。它讲的是方法和错误,而不是交易信号——这里的任何内容都不构成投资建议,也不会分享任何策略细节。