WeCore
风险管理

算法交易者的风险管理:层层设防的保护体系

自动交易的多层风控:单笔止损、每日亏损上限、最大持仓、交易次数限制、紧急停止开关、监控,以及自动化出现异常时该如何处理。

WeCore·发布于 ·阅读约 3 分钟

在自动交易中,风险管理不是附加功能,而是系统本身的一部分。电脑可以发出成百上千笔订单,却从不停下来问一句“是不是哪里不对劲”。因此值得建立多层保护,一层失效时,下一层能把损失挡住。

为什么自动交易需要不同的思路

对手动交易者而言,最后一道防线是人本身:看到异常就平仓。在自动化系统中,这道刹车并不总是存在。一条重复的警报可能开出双倍仓位,一个逻辑错误可能导致反复入场,一次断线可能让仓位失去止损保护。

所以要从两个层面考虑风险:市场风险——价格朝不利方向走;以及操作风险——系统做了你并不想要的事。好的风险管理要同时应对这两者。

第 1 层:每笔交易都有止损

基础是每笔交易都预先设定好判断错误时的出场点。几条原则:

  • 止损应作为真实订单发送到券商,而不只是存在于你的代码里。即使你的系统断线,挂在券商那里的订单仍然在保护你。
  • 先根据结构或波动性确定止损位置,再按止损大小确定仓位——而不是反过来。参见仓位管理方法。
  • 记住止损单会变成市价单,在快速行情中可能在离止损位很远的地方成交。

第 2 层:每日亏损上限

即使每笔交易都有止损,同一天里的一连串亏损也会累积起来。每日上限的意思是:亏损达到设定金额后,系统停止交易,直到第二天。

一个假设的例子:一个每笔风险 $200 的账户,设定 $500 的每日上限,两到三次亏损后就会停止交易。如果你在自营交易公司交易,个人上限要明显低于公司的上限,为滑点和未平仓位留出安全余量。详见每日亏损上限详解。

要事先决定:上限只计算已实现亏损,还是也包括浮动亏损;触及上限时,系统是平掉现有仓位,还是只阻止新的入场。

第 3 层:最大持仓规模

这是防范程序错误最重要的手段之一。即使你的逻辑会动态计算仓位,也要设定一个无论如何都不能突破的合约数量硬上限。如果一条乱码警报要求下 50 手而不是 5 手,这个上限会把它拦住。

值得分别为每个方向(多或空)和总敞口设定上限,尤其是当同一账户上运行多个策略,或交易 NQ 和 ES 这类高度相关的市场时。

第 4 层:交易次数与交易时间

  • 每日最大交易次数:一个通常每天交易三次的策略突然交易了二十次,这是在告诉你出了问题。这样的限制能阻止失控的循环。
  • 时间窗口:把交易限制在策略经过测试的时段内。很多交易者也会避开重大数据公布前后的入场。
  • 收盘前平仓:如果你不打算隔夜持仓,确保仓位在交易时段结束前自动平掉。有些自营交易公司要求这样做。

第 5 层:紧急停止开关与监控

紧急停止开关(kill switch)是一种快速、简单的全面停止方式:撤销挂单、平掉仓位并屏蔽新信号。务必清楚它在哪里,并确认用手机也能操作。

监控包括:

  • 交易执行、触及限额或出现错误时发出通知。
  • 定期对比系统“认为”的持仓和账户中实际的持仓。
  • 一份交易日志,让你事后能查清发生了什么以及原因。

自动化出现异常时怎么办

当情况看起来不对时,操作顺序是:

  1. 停止:按下紧急停止开关。不要在系统还在交易时尝试修复。
  2. 核实:直接登录券商平台,检查持仓和挂单。
  3. 手动平掉所有不该存在的仓位。
  4. 记录:保存警报、日志和时间戳。
  5. 在重新启动前调查原因,然后逐步恢复,最好先经过模拟。

破产风险

破产风险是指一连串亏损让账户跌破你无法继续交易的水平的概率——例如在自营交易公司账户中,就是最大回撤线。即使是有真实优势的策略,也可能偶然遭遇漫长的连亏。

一个假设的例子:如果每笔交易冒允许回撤的 25%,连续四次亏损就会让账户终结——而这样的连亏是再普通不过的事。如果每笔冒 5%,则需要连续二十次亏损。较小的单笔风险并不能消除风险,但能给策略时间去证明它是否有优势。关于回撤的更多内容见自营交易公司的回撤类型。

要点总结

  • 自动交易同时存在市场风险和操作风险,两者都需要防范。
  • 层层设防:单笔止损、每日上限、合约上限、交易次数和时段限制。
  • 紧急停止开关和监控是系统的组成部分,而不是可有可无的附件。
  • 出问题时:停止、到券商端核实、平仓、记录,然后才去调查。
  • 较小的单笔风险能大幅降低破产风险。

WeCore 内置自动化风控规则,例如每日亏损上限、最大合约数、交易时段和自动平仓,并在每个已连接的账户上执行。你可以把它们设得比自营交易公司的规则更严格,并在模拟模式下进行测试。详见指南如何在 WeCore 中设置风控限额。

资料来源与延伸阅读