Kill Switches and Human Overrides for ML Models
Because an ML model can fail in ways nobody anticipated, every model running live capital needs a way for a human to shut it off or shrink its size fast, without waiting for the failure to be fully understood first.
Prerequisites: Why ML Strategies Degrade Live, Online vs Batch Updates for Live Models
A model that has run cleanly for a year can still misbehave badly on a day nobody planned for — a corrupted data feed, a corporate action the feature pipeline mishandled, a regime the training data never saw. Understanding why it broke can take hours or days. Waiting for that understanding before doing anything is how a small model malfunction turns into a large loss.
A kill switch is a mechanism, usually automated with a manual override on top, that can shut a model down or cut its position size immediately when something looks wrong — without requiring anyone to first diagnose the exact cause.
A kill switch's whole purpose is to act before the problem is understood. If it only triggers once the desk has diagnosed the failure, it isn't doing its job — by then the position has usually already been sized for the bad state.
What triggers one
Kill switches are usually built around a small number of hard, checkable conditions rather than subjective judgment calls, because subjective judgment is exactly what's too slow in the moment:
- Position or loss limits. The model's positions or daily P&L breach a preset threshold.
- Input sanity checks. A feature value falls wildly outside its historical range, suggesting a feed problem rather than a real market move.
- Output sanity checks. The model's predicted positions change far more between updates than they historically have.
- Manual override. A human on the desk can always cut the model's size or turn it off, independent of any automated trigger, because a person watching the market may notice something no automated rule was written to catch.
Worked example
A signal-driven equity model has a rule that halts trading if any single stock's predicted position changes by more than 3 standard deviations from its typical daily change. On a day when a data vendor mistakenly duplicates a corporate action, one stock's adjusted price feed shows a 40% overnight "return" that never happened. The model, reading this as a genuine dislocation, would normally have taken a large position against it. The kill switch trips on the output sanity check before the order is sent, halting that stock's trading and flagging it for a human to review — the desk confirms the data error within 20 minutes and corrects the feed, and the model resumes with no loss, versus what could have been a large mispriced position if the trade had gone through.
What this means in practice
Kill switches need to be tested the same way the model itself is tested — with drills, not just documentation — because a switch nobody has actually triggered in a live-like rehearsal often turns out to have a gap: a dependency that doesn't shut down cleanly, a position that isn't actually flattened by the "halt" command, or a monitoring dashboard that doesn't update fast enough for a human to notice in time.
A kill switch that requires human judgment to activate is not a kill switch, it's a suggestion. The whole value of an automated trigger is that it fires without waiting for a person to notice, decide, and act — reserve the manual override for catching what the automated rules didn't anticipate, not as the primary mechanism.
Further reading
- Patterson, Dark Pools (ch. 9, on 2010 Flash Crash algo failures)