单元 6 / 6 · 5 分钟阅读

自动化策略的风险控制

一个没有硬性、预先设定上限的机器人,是一项没有边界的负债,所以在它接触真钱之前,先设好紧急停止开关、仓位规模上限、API 密钥规则以及监控。

动手建立 · 机器人安全卡
我的机器人安全卡
  • 熔断开关:若账户单日下跌 3%,即停止所有交易。
  • 单笔上限:任何单一仓位的风险不超过配置资金的 1%
  • 配置上限:投入此机器人的资金,最多不超过我资本的 20%
  • 回撤暂停:当峰谷跌幅达 10% 时,停止并要求人工复核。
  • API 密钥权限:可交易

可交易权限能下单,但不能将资金转出交易所。对于必须交易的机器人,这是正确的层级。

部署前先截图保存。只读、可交易,还是交易 + 提款,决定了你面对的是难受的一个下午,还是血本无归。

在继续阅读之前,先在上方建立你的卡片:设好四个硬性上限,然后选择 API 密钥权限,看看当你伸手去拿提现权限时会发生什么事。一个交易机器人快速、不知疲倦,而且完全没有判断力。当市场乖乖听话时这没问题,一旦市场失控就是灾难,因为机器人会全速执行它最糟糕的行为,永远不会停下来怀疑是不是哪里出了错。你在先前各单元学到的一切,重点全都落在这里:在硬性、预先设定的上限横亘于机器与你的钱之间之前,任何自动化策略都不该碰真正的资金。这些控制不是你事后才加上的修饰。它们是入场的代价,事先就以冷冰冰的数字决定好,而不是在账户淌血的当下凭感觉去拿捏。

四道上限,全都在你上线之前设好

把这四道当成安全带,在第一笔真实交易之前把它们全部系好。每一道都是你事先决定、由系统自动强制执行的硬性数字。

  • 单日最大亏损(紧急停止开关)。 一旦账户在一天内下跌到某个设定额度,比如 3%,就停止所有交易。这样一来,一次糟糕的交易时段就不会失控演变成一场灾难。
  • 单笔交易最大规模。 限制任何一个仓位能承担多少风险、或能开到多大,这样单独一张订单永远无法炸掉整个账户。
  • 总配置上限。 限制你的资金在任何时候最多有多少暴露在该策略之下,把其余部分圈护起来,不受出错机器人的波及。
  • 回撤暂停门槛。 在出现某个设定幅度的峰值到谷底跌幅后,自动停下策略并要求人工检查,这样缓慢的失血就不会在无人看管的情况下持续下去。

共通的主线是:每一道都是事先选定的硬性数字,而不是你眼看着红色数字滚过去时临场即兴的决定。恐慌是个糟糕的风险管理者。预先设定的上限则是个冷静的风险管理者。

锁紧 API 密钥

当你把机器人连接到交易所时,你是通过一把 API 密钥来连接的,而那把密钥的权限决定了一次泄露、或一个失控机器人能造成多大的伤害。这是你手上杠杆效益最高的控制,因为即使其他所有防护全部失效,它仍能框住你的最坏情况。

密钥通常带有三种各自独立的权限等级,而它们之间的落差,就是“不便”与“灾难”之间的落差:

  • 只读。 工具可以查看但不能交易。只要机器人仅需观察,就用这一种。
  • 可交易。 机器人可以下单。只有在某个工具真正需要时才授予这项权限。
  • 可提现。 密钥可以把钱移出交易所。一个交易机器人永远没有理由这么做。

最重要的一条规则:永远不要在交易密钥上启用提现权限。 只要关闭提现,即使密钥完全泄露,也无法把你的资金抽干,它顶多只能拿去交易。还有两个习惯能让密钥更安全:加上 IP 白名单,让密钥只在你已知的地址才能运作;以及为每个工具各建一把独立的密钥,这样你可以撤销其中一把而不惊动其余。

在机器人运行时盯着它

“设定后就忘掉”会悄悄变成“设定后就后悔”。自动化拿掉的是手动点击,不是责任,所以一个正在运行的策略仍然需要盯着。

留意少数几件事:它的权益与回撤,对照你的回测与前向测试让你所期待的水准;它的交易频率;它的平均盈利与平均亏损;以及它未平仓仓位之间的相关性有多高。把机器人采取的每一个动作都记录下来,这样你事后才能重建到底发生了什么。并设定警报,在任何上限被突破的当下就通知你,而不是靠你自己记得去查看。

那些叫你“立刻停手”的警示信号

机器人行为上的某些变化,不是可以硬撑过去的噪声,而是叫你暂停并检查的信号。学会辨认这些,你就能及早抓到麻烦,而不是事后才来解释它。

  • 回撤超出你的测试所预测的范围。 市场可能已经改变,或者优势可能已经衰退。
  • 突然爆量的订单。 异常的交易频率往往意味着某个程序错误在打转,而那应该立刻让机器人停下来。
  • 相关性瓦解。 你原以为彼此独立的仓位开始一起连动,这代表你真正的风险,远高于你的仓位数量所暗示的水准。
  • 滑点或成本高于你的假设。 这些会一笔交易接一笔交易地,悄悄侵蚀你的优势。
  • 策略交易进了它从未被设计来应对的环境。 那就是上一个单元提到的黑天鹅警示信号。

当这些之中任何一个出现时,正确的做法是暂停并查看,绝不是放着让它跑、指望它自己修正。

紧急停止开关证明自己值回票价

你用 $10,000 的配置运行一个策略,带有三道预先设定的控制:总配置上限 $10,000、单笔交易最大风险 1%($100),以及设在 3%($300)的单日最大亏损紧急停止开关。

某天下午,一次数据源故障让机器人误读价格,开始循环地连发订单。亏损迅速累积,但就在累计亏损触及 $300 的那一刻,紧急停止开关自动停止了所有交易。你当天的损害被限制在 $300,另外的 $9,700 毫发无伤。你收到一则警报,你去调查,你修好数据源。

现在想象同样的故障发生在一个一模一样、却没有任何上限的机器人身上。那个循环持续朝一个流动性稀薄的市场连发订单,滑点扩大,等到你察觉时,账户已经亏了 $6,000,跌了 60%。同样的错误、同样的市场、同样的逻辑。唯一的差别,在于是否有一道硬性、自动的上限横亘在故障与你的资金之间。

为什么提现权限才是那条关键的界线

设想最坏情况会有帮助。假设一名攻击者直接盗走了你的 API 密钥,或者你信任的那个机器人其实心怀恶意。

如果密钥是只读的,他们顶多得知你持有什么,仅此而已。如果密钥可交易但提现已关闭,他们可以在你的账户里进行交易(恼人,也可能造成损失),但他们无法把一枚币移出交易所。你的资金原封不动。如果密钥带有提现权限,他们可以直接把你的钱转走,然后它就没了。

这就是为什么“只读 vs 可交易 vs 可提现”的抉择不是细枝末节。它决定了一把泄露的密钥只是一个糟糕的下午,还是一场全盘皆输。交易机器人永远不需要提现,所以启用它没有任何好处,却可能失去一切。

良好的监控实际上是什么样子

监控不是整天盯着一张图表看。它是建立几个习惯,让机器人无法在无人察觉之下漂移。

追踪那些能揭示策略健康状况的数字,而不只是它的余额:回撤对照预期,能抓到衰退中的优势;交易频率能抓到失控的循环;仓位之间的相关性能抓到隐藏的集中度(好几笔“独立”的交易,其实是同一个大赌注)。保留一份完整的动作记录,这样当某件怪事发生时,你可以把它重播出来,而不是用猜的。然后把警报接到你的各道上限上,让任何突破都能立刻传到你这里,因为如果你晚一天才发现,一道门槛的全部价值就都白费了。

心态很简单:机器人负责点击,你负责监督。

快速知识检核

在一个自动化策略上线之前,你要设定的四道不可妥协的上限是什么? 单日最大亏损(紧急停止开关)、单笔交易最大规模、总配置上限,以及回撤暂停门槛,每一道都是事先决定、并自动强制执行的硬性数字。

为什么交易用的 API 密钥永远不该启用提现权限? 交易机器人没有理由移动资金,所以关闭提现意味着:即使密钥完全泄露,也只能拿你的资金去交易,而无法把它们从交易所偷走。它框住了你的最坏情况。

一个正在运行的机器人突然开始下远比平常多的订单。你会怎么做,为什么? 立刻暂停它并调查。突然爆量的订单往往意味着某个程序错误在打转,若放着让它继续运行,可能以机器的速度造成巨大的亏损。

资料来源

  • SEC (investor.gov) & FINRA, "Investor Alert: Automated Investment Tools",探讨为什么一个自动化系统仍然需要预先设定的规则与积极的人工监督。
  • SEC, "SEC Charges Knight Capital With Violations of Market Access Rule" (Press Release 2013-222),这个案例中,一次有缺陷的自动化部署发出了大量非预期的订单,在约 45 分钟内造成约 $440 million 的亏损。
  • OWASP, "Authorization Cheat Sheet",最小权限的 API 访问原则:把读取、交易、提现权限分开,让提现保持停用,并以 IP 白名单限制密钥。