How to know when a strategy is dead (and kill it)
Edges expire. Here is a practical kill checklist — expectancy after costs, regime change, drawdown rules, and why “one more tweak” is usually denial.
trading · strategy · risk · advice
Most bot builders are good at starting strategies. Almost nobody is good at ending them. Accounts die less often from “no edge ever” and more often from keeping a dead edge warm with hope, parameter tweaks, and “it worked last month.”
Is a losing week enough to kill a system?
No.
Variance is real. A positive-EV strategy can lose for days or weeks and still be fine — if the sample is small relative to the edge and the risk is controlled.
A losing week is a signal to measure, not a signal to panic-delete.
So when is it dead?
Treat a strategy as dead (or suspended) when several of these stack up — not one alone:
- Expectancy after costs is ≤ 0 over a sample large enough to mean something for your frequency
- The market regime that fed it is gone (trend → chop, fee structure change, liquidity collapse, competitor crowd)
- You cannot explain the edge in one paragraph without waving at indicators
- Drawdown rules fire repeatedly after you already reduced size
- Fixes only work in-sample — every “improvement” is a re-fit to recent pain
If you need a story to keep it alive, it is already dead.
The “one more tweak” trap
This is the most expensive sentence in bot trading:
“Let me just change the threshold / timeframe / stop / pair list once more.”
Sometimes a tweak is legitimate — a bug, a wrong fee model, a broken feed. Those are engineering fixes.
Most of the time, the tweak is grief. You are negotiating with a market that already moved on. Parameter hunting after a break usually produces a system that looks better on the last three months and worse on the next three.
Rule of thumb: if the core idea needs constant surgery to print, the core idea is weak.
Measure after fees or do not measure at all
A strategy that is “almost profitable before fees” is not almost profitable. It is unprofitable.
Always include:
- Trading fees
- Spread
- Slippage (especially on thin books and market orders)
- Funding (if futures)
- Your own infra cost if it is material at your size
If the edge only exists in a fee-free fantasy log, it does not exist.
Sample size without pretending you are a quant fund
You do not need a PhD. You do need honesty about how many independent trials you have.
- 12 trades is not a system.
- 120 trades on one pair in one regime is still thin.
- Thousands of trades across venues and regimes is where “EV+” starts to mean something.
If your bot trades rarely, accept that time is part of the sample. Do not promote a weekly system to “proven” after one good month.
A simple kill checklist we actually use
Before we keep capital on a bot, we answer:
| Question | Kill if… |
|---|---|
| After-cost expectancy | Flat or negative over the agreed sample |
| Max drawdown vs plan | Repeatedly hits the stop you set when sober |
| Regime | The condition you named is no longer present |
| Complexity | You keep adding filters to “save” it |
| Ops | Data, fills, or cancels are lying and you cannot fix them fast |
If two or more rows are red, pause. Size to zero is a valid trade.
What to do after you kill it
- Write one page: what you thought the edge was, what broke, what you measured.
- Archive the code and the config — do not overwrite history with a “fixed” version.
- Do not immediately deploy the cousin strategy that is 90% the same idea with new lipstick.
- Return to plumbing and small experiments until a new idea earns size.
Killing a strategy is not failure. Refusing to kill one is how five years of learning turns into a flat account.
Where tools help (and where they do not)
Tools cannot tell you an edge is eternal. They can make the measurement less painful:
- Cleaner public market data across venues
- Fewer rate-limit surprises while you research
- Faster iteration from idea → log → decision
If that is useful later:
- Market Data API — public exchange data through a hosted proxy
- nexrade — multi-exchange Python trading library
- nexrade-cache — local Redis-compatible cache
Assume every edge can die. Build the habit of checking whether it already has.
That is how we still trade — and how we still delete bots.
Want to try the path this note describes? Create a free API key, or return to the full list of notes.