Our edge is +EV. A fat tail still cost $920 in a morning.
One of our cleanest signals is an oversold mean-reversion long on the European morning session. Over a decade it wins about 55% of the time with a positive expectancy. One morning it just kept falling — −460 points, −$920 on a single micro contract, roughly 46% of a prop eval's entire drawdown buffer gone before lunch. The signal wasn't broken. The lesson is that positive expectancy and survival are not the same thing.
The trade
The bot armed a long on micro-Nasdaq (MNQ) at the morning reopen — the price was oversold, the exact condition the edge is built to fade. Entry near 30,825. The bounce never came; the contract bled lower all session and we time-exited near 30,365. At $2 a point that one contract realized about −$920. There was a disaster stop on the position, but it sat ~1,100 points away — wide enough to protect against a crash, useless against a slow, all-day grind. The worst intraday excursion only reached −483 points, so the disaster stop never even fired. The position simply lost money in a straight line and we held it to the close.
Why a +EV signal can still do this
The reflex is to kill a signal that just lost $920. We didn't — we ran it through a locked decade-long gate check first (2,373 trades across the contract). The verdict: the edge is real. Win rate 55%, Sharpe around 0.70, expectancy a modest but positive +0.03% net per trade. Keeping it is correct.
But the same study showed the shape of the risk: a fat left tail. About 15% of trades lose more than 1%, the worst near −4.35%, and that day's −1.49% was only a ~5th-percentile draw — unpleasant, not abnormal. A mean-reversion edge makes its money in many small wins and pays it back in rare large losses. That is fine on a deep account. On a prop evaluation with a tight $2,000 trailing drawdown, the tail can bust you long before the average has time to compound. +EV gets you a seat; it does not keep you in it.
The fix: bound the tail, don't cut the edge
So we didn't touch the entry. We added two guards on the eval accounts only — the showcase account is deliberately left unguarded so we can keep watching the raw signal:
1. A hard tail-stop. A fixed cap, tighter than the disaster stop, that converts the fat left tail into a bounded loss: about −$550 per contract (275 points on MNQ). On that morning it would have cut the −$920 down to ~−$550 — the difference between a bad day and a dangerous one.
2. An intraday trend-exit. An oversold long is a bet on a bounce. If the bounce doesn't come — price stays below a short intraday average for a sustained run after a grace window that lets the trade breathe — we leave. We don't ride a failed bounce down all day. On that session it would have exited mid-morning, well above the eventual low.
We don't ship a stop on faith
Putting a new stop on a live, real-money account is exactly the kind of change that quietly breaks
something. So the guards landed with a regression test (_verify_eu_guard.py) that replays
that exact morning — 30,825 down to 30,365 — and asserts
all four things we actually care about:
· the tail-stop fires at −$550, not −$920;
· the trend-exit fires in a sustained downtrend, but only after the grace window (so it is a
trend signal, not the tail-stop in disguise);
· a dip that then recovers does not get whipsawed out — the guard must not turn winners
into losers;
· the unguarded showcase account rides the full −460, proving the change is scoped to exactly the accounts
we meant.
Same idea as our execution tests: a guard you can't reproduce on demand is a guess. The test makes the bad day repeatable, so the fix is provable.
A positive-expectancy signal is a license to trade, not a license to survive. On a tight drawdown limit, bounding the tail is worth more than improving the average — and the only honest way to bound it is to replay the worst day you've already had and prove the new code would have held.
The loop that matters
What we're really proud of isn't the stop — it's the turnaround. The loss showed up on the live cockpit at the close. The decade gate check confirmed by evening that the signal was sound and the tail was the real enemy. The two guards and their regression test were written, tested, and live before the next session's entry. Live signal → validation → scoped guard → regression test, inside a day. That loop is what lets us put real money behind thin edges without pretending the tail isn't there.