Category: Backtests

Honest backtest results — including the strategies that failed. Methodology, slippage, and out-of-sample checks.

  • Research Log: Turning a 98% Gap-Fill Statistic Into a Tradable System

    This is a full research log — from raw statistic to finished strategy — so you can see exactly how we work and where the traps are. The starting point: on index futures, when the market gaps down at the open, price comes back to fill at least half the gap on the vast majority of sessions. On ES and YM the half-fill rate runs 98–99%. That number is so high it practically begs to be traded. The question is whether a statistic that strong survives contact with stops, targets, and real execution.

    Step 1: Define the trade before looking at results

    A fill statistic is not a strategy. We froze the rules first: on a gap-down open, go long at the opening print, take profit at the half-gap level, and cap risk with a fixed points stop. No re-entries, no discretion. Execution on 5-minute bars with slippage charged both ways. Freezing the rules before peeking prevents the quiet parameter-shopping that inflates most published results.

    Step 2: Sweep, but honestly

    The one free parameter is the stop distance, so we swept it across a grid on ~90 days of data per instrument — the same grid for every market, no per-market tuning beyond the stop itself. Results diverged sharply by instrument:

    • YM: the standout — profit factor near 3 with a wide stop, drawdown contained around $1.3k per contract
    • ES: strong with a tight stop — profit factor around 2.6
    • NQ: workable but weaker, around 1.8 with a mid-size stop
    • GC: dead. Gold’s gaps do not behave like index gaps, and no stop setting rescued it

    That instrument ranking mirrors the underlying fill rates, which is what you want to see: the strategy’s edge tracks the statistic it was built on. When a sweep produces a winner whose edge doesn’t line up with the underlying stat, that winner is usually noise.

    Step 3: Read the geometry honestly

    Notice what this trade is: a high-probability target with a protective stop that loses more per loss than a win makes per win — the tight-target, wide-stop shape we keep warning about. The 98% fill stat is what makes that geometry survivable. But it means the tail scenario — a gap-down that keeps falling all day — is where all the risk lives. The stop is not decoration; it is the entire risk model. Size accordingly.

    What would falsify this

    • A longer window (the 90-day sample is the weakest link — trend regimes flatter long-at-open systems)
    • A cluster of full-gap-and-go days, which concentrate the fat losses
    • Fill rates decaying as more traders lean on the same statistic

    We are treating this one as promising-but-in-sample until it clears a full-year retest. That verdict — and the retest — will get its own post either way. Nothing here is advice; the risk disclaimer applies in full.

  • That Viral Strategy Dashboard Probably Won’t Survive a Real Backtest

    A strategy dashboard made the rounds recently claiming +124R over a few months, a 61% win rate, a profit factor above 2, and a maximum drawdown of about six points of R. The equity curve was a nearly straight line. We rebuilt the strategy rule-for-rule and ran it through an honest backtest. The result: a profit factor of 0.86 — a losing system.

    How a losing strategy produces a beautiful dashboard

    • No transaction costs. Fast index futures strategies live or die on slippage. A backtest with perfect fills flatters every entry, and short-hold systems get flattered the most.
    • Cherry-picked conditions. The dashboard highlighted its “best hours.” When we tested exactly those hours, they performed worse than the rest — the classic signature of parameters selected after seeing the results.
    • An implausibly smooth equity curve. Real strategies breathe: they have losing weeks and flat months. A max drawdown of 6R against 124R of profit is not a sign of genius; it is a sign the curve was built by fitting to the data it is drawn on.

    The checklist we run before believing any result

    1. Reproduce it faithfully. Code the exact published rules — not your improved version — and confirm you get their trade count and win rate before you judge anything.
    2. Charge for every trade. Slippage on entry and exit plus commissions, scaled to the instrument. If the edge dies here, it was never an edge.
    3. Stretch the window. Anything under six months of data is a regime bet. Run a full year minimum, through both trend and chop.
    4. Test the claimed filters out-of-sample. If the “best conditions” only work in the sample they were discovered in, they are noise.
    5. Check the loss geometry. High win rates with small targets and wide stops hide rare catastrophic losses that a short backtest may simply never have hit.

    The uncomfortable takeaway

    Most shared strategies are not lies; they are honest overfitting. The author really did see those numbers — on the data the rules were tuned on, without costs. That is why we publish failures alongside winners here: the failure rate is the base rate. When something does survive slippage, a year of data, and out-of-sample checks, that survival means something. Everything else is a screenshot.