CUSUM Monitoring of Strategy PnL
A strategy's daily P&L is noisy enough that a real regime break can hide inside normal-looking daily swings for weeks. A CUSUM chart accumulates small deviations so a persistent shift trips an alarm long before any single bad day would.
Prerequisites: Standard Deviation
A strategy that normally makes an average of $4,000 a day with a daily standard deviation of $18,000 starts, on day 61, quietly earning only $500 a day on average — a real degradation. No single day in the new regime looks alarming: a −$12,000 day is well within the normal $18,000 SD and happens routinely even when healthy. A risk manager glancing at daily P&L sees noise consistent with an ordinary bad stretch, for weeks, while the mean has actually shifted. By the time a monthly report makes it obvious, six weeks of foregone risk-adjusted return have already passed.
The idea behind CUSUM
A cumulative sum (CUSUM) chart doesn't look at any single day. It accumulates the deviation of each day's P&L from the expected mean, letting small persistent shifts build into a large, unmistakable signal even while each individual day stays inside normal bounds:
In words: today's cumulative score is yesterday's score, plus how far today's P&L came in below the expected mean , minus a small slack that keeps ordinary noise from accumulating — reset to zero if the sum would go negative. An alarm fires when crosses a threshold , chosen from the strategy's own historical volatility so false alarms are rare.
Worked example: catching the drift
Strategy: and , both in dollars per day. A slack tuned for a large 1σ shift, (i.e. $9,000), fails here: the actual shortfall of $3,500 a day is smaller than that slack, so the accumulator keeps resetting to zero and never fires. Retuning to ($4,500), each post-break day now contributes on average net toward the accumulator, and with the threshold retuned to ($54,000), the chart crosses the alarm threshold roughly 30–40 trading days after the break — noisy in exact timing, but reliably faster than the six-to-eight weeks a monthly report took to make the shift obvious by eye.
Worked example: tuning the tradeoff
A tighter slack () catches smaller shifts faster but false-alarms more often — simulating the healthy pre-break period 500 times shows this trips a false alarm every 25 trading days on average, unusably often. A looser slack () rarely false-alarms (once every 300+ days) but takes over 80 days to catch the same $3,500 shift — barely faster than eyeballing a monthly report. The choice of is a quantifiable tradeoff between detection speed and false-alarm rate, set by simulating both on the strategy's own history, not a textbook default.
Widen the standard deviation above until it swallows a mean shift of $3,500: that's exactly why no single day's P&L can reveal this regime break, and why an accumulator that ignores day-to-day noise is needed instead.
CUSUM accumulates small persistent deviations from an expected mean so a real regime shift crosses an alarm threshold well before any single day looks alarming. Tune the slack and threshold by simulating detection speed against false-alarm rate on the strategy's own history.
The classic confusion: setting and from a generic default rather than the strategy's own volatility and the shift size you care about catching. A slack tuned for a large 1σ shift, as the first example shows, can fail to accumulate at all against a smaller but economically meaningful drift.
What this means in practice
Run a CUSUM on daily P&L (and separately on realized IC, turnover, cost) for every live strategy, tuned by simulating false-alarm and detection-speed tradeoffs on historical data before launch. Treat an alarm as a trigger for investigation, not automatic shutdown — pair it with Live Information Coefficient Monitoring so a P&L-side alarm can be corroborated by the signal side before acting.
Related concepts
Practice in interviews
Further reading
- Page, Continuous Inspection Schemes
- Bailey & López de Prado, Balanced Baskets