When does a strategy know it's broken?
Every quant has a version of this conversation with themselves around 3am, after a bad week. "Is the alpha gone, or am I just unlucky?" If you can't answer it cleanly, you'll either kill a strategy that was about to mean-revert, or feed money to one that's already dead.
I've been using a three-bucket framework for the last 18 months. None of these are original — they're all in the literature somewhere — but having them written down in one place has saved me from at least two expensive decisions.
The strategy doesn't know it's broken. You do — but only if you decided what "broken" looks like before you ever ran it live.
1. The drawdown bucket. Boring, but non-negotiable. If your 30-day rolling drawdown crosses 2× the worst window in your backtest, the regime has changed faster than your model. Don't argue with the math.
2. The win-rate decay bucket. Win rate is noisy, but its trend isn't. I track a scipy.stats.kendalltau on the last 50 trades' realized PnL ranked by entry confidence. If τ goes negative and stays there for 20+ trades, your signal stopped predicting.
3. The microstructure bucket. The one nobody talks about. Your fills get worse before your PnL does. Track median realized slippage against your model's expected slippage. When realized exceeds expected by >1.5× for a week, somebody on the other side has figured you out, or the venue's flow has changed.
The three got triggered together exactly once — September 2024, ETH was ranging dead, fills were getting fronted on Base. Paused for nine days, came back, the strategy was fine. That's the one that pays for the framework.
What's your version of this? Especially curious to hear from anyone running mean-reverting strategies on perp venues — the funding leg changes the answer in ways I haven't fully figured out yet.
The microstructure bucket is the one I always sleep on, then regret. For perp venues I add a fourth: funding_rate / realized_basis ratio. If it inverts and stays inverted, the basis is gone and you're paying to be in the trade.
Real example: my ETH-perp basis trade ran clean for 11 months, then went negative on May 7th. I waited four days because the daily PnL was still positive. Cost me ~$3k before I shut it.
Counter-take: all three of your buckets are reactive. They tell you the alpha is gone after it's already cost you. What I do — and what nobody talks about — is run an always-on shadow strategy with randomized signs on my signal. If it makes money, my real signal is noise.
Costs me maybe 0.5% of capital, saves my entire book once a year.
One thing that's helped me: don't pause, throttle. When bucket 1 fires I cut size in half. When bucket 2 fires, half again. When 3 fires, I'm at 12.5% notional and I either come back or quietly retire it after 30 days. Avoids the "did I kill it too early?" anxiety.
For Solana-side strats I'd add: priority_fee_paid / fee_at_block_top. When you're consistently below the top of the block but still getting filled, something is off with the routing or somebody's giving you adverse selection.
The honest answer most people don't want to hear: a strategy "knows" it's broken when you stop wanting to look at it. The framework is downstream of that emotional signal — it just gives you permission to act on it.
If you're avoiding the dashboard, the dashboard already told you.
I implemented something close to your three-bucket setup six months ago and the false-positive rate has been ~14% — meaning ~1 in 7 pauses was unnecessary. That sounded bad until I compared it to the false-negative rate when I was eyeballing it, which was probably 40%+.
Bad detectors that fire too often beat good detectors that never fire.
Saving this thread. The Kendall-τ trick is going straight into my monitor.