Skip to content
Backtest Results

Index Gap-and-Go (S&P 500)

M1 Bar Data · In-sample 2017–2022 · Out-of-sample 2022–2026 · spread-only costs, no commission

Buy the S&P 500 CFD at the 09:30 ET open when it gaps up 0.4-0.5% or more over the previous session's close, stop at that close, flat by 15:55 ET, one trade per session. Profitable in every in-sample year 2017-2021 (PF 1.49, +$2,807 on 181 trades); out of sample 2022-2025 it made $111 on 169 trades (PF 1.02).

S&P 500 · Candidate 1

Does not hold up
$10k → $10.1k
+$111 net profit
Win Rate: 52.66% · PF: 1.016 · Max DD: 8.43%

S&P 500 · Candidate 2

Does not hold up
$10k → $10.4k
+$397 net profit
Win Rate: 52.53% · PF: 1.043 · Max DD: 7.74%

Strategy Rules

Reference close = close of the last completed M1 bar of the PREVIOUS regular session at or before 15:59 ET (on a half-day that is the 12:59 ET bar; the previous session is the most recent weekday that has a 09:30 ET bar). Never the 20:xx/overnight CFD prints.
At the open of the 09:30 ET M1 bar (DST-adjusted from server UTC), gap% = (bar open - reference close) / reference close * 100.
If GapMinPct <= gap% <= GapMaxPct: enter LONG at market immediately on that 09:30 bar's open (no confirmation bar; the vendor data shows a quarter of all fills happen in the first 5 minutes, so waiting hands the edge to the faders).
One trade per session; no entries after 09:31 ET; skip sessions without a 09:30 ET bar (index holidays) and sessions whose previous session has no 15:30-15:59 ET bars.
NONE in the candidate. The short leg (gap-DOWN >= GapMinPct -> sell at the 09:30 open, stop at the reference close, same exits) is pre-registered as an ABLATION run on IS only, controlled by EnableShortLeg=true, to report the asymmetry (spec-time scan: gap-down shorts lose; see notes.md). It is never part of the optimized candidate and never runs on OOS.
Stop-loss = the reference close (a full gap fill = thesis falsified). Structural, no ATR stop: the gap IS the risk unit, so percent-risk sizing is 1R = gap size.
Take-profit: TakeProfitR x the gap size above entry when TakeProfitR > 0; TakeProfitR = 0 means no target (ride to the time exit). The spec-time scan favoured no target.
Time exit: flatten at 15:55 ET if ExitAtNoon=false, or at 12:00 ET if ExitAtNoon=true. Hard safety: if a position is still open at 16:30 ET or later for any reason (half-day session, missing bars), close it on the next tick — never hold across the CFD rollover (index swap: USA500 -1.726/lot/night, US30 -12.0, USTEC -6.8), never carry a weekend.
GapMaxPct (default 4.0, not optimized) skips limit-up style opens where the stop distance is absurd; the scan had almost no such days in IS.
Regular US cash sessions only; skip half-days entirely if the EA cannot detect the 13:00 ET close (simplest: skip the session after Thanksgiving, Christmas Eve, and July 3 when they fall on weekdays; document the list in the EA).

Backtest Parameters

In-Sample Window2017.01.01 – 2022.01.01
Out-of-Sample Window2022.01.01 – 2026.01.01
Data SourceM1 OHLC bars (index CFDs have no tick feed)
Starting Capital$10,000
Risk per Trade1.0% of equity
CommissionNone - IC Markets index CFDs are spread-only; a 0.75-point spread is subtracted from every trade
Out-of-sample Runs Consumed2

Methodology

Genetic optimization on the in-sample window with a net-of-costs robustness criterion; parameter-plateau selection (top candidates must have profitable neighborhoods, not just a best pass); out-of-sample window run once per frozen candidate on M1 OHLC bars (index CFDs have no tick feed); verdicts gated on net profit factor, drawdown, and IS-to-OOS retention.

Key Takeaway

The in-sample edge was real on its own data: a pre-registered measurement found +0.15R per trade (t 2.3) before any EA was built, and the backtest reproduced it trade for trade. It did not survive the holdout: the strongest failed gate is out-of-sample profit factor (1.02 against the 1.15 minimum), profit came only from 2022, and the $5-per-side cost stress turns both candidates into losses of $4,578 and $6,645. Large gap-ups stopped continuing after 2022. Index CFDs are modeled spread-only (no commission) with the 0.75-point spread subtracted from every trade; all figures carry the M1-OHLC asterisk because indices have no tick feed.

THE BACKTEST FILES
Get every rulebook, free

The exact rules of every strategy we've put on trial, how we tested each one, and what the data showed. 12 case files so far, free with your email.

We use your email to send the link to the files, and nothing else unless you tick the box. Privacy

Disclaimer: Past performance is not indicative of future results. These backtest results are based on historical data with realistic commission assumptions. Real trading involves additional risks including execution delays, variable spreads, and emotional decision-making.

Common questions

Does the Index Gap-and-Go (S&P 500) strategy work?

Buy the S&P 500 CFD at the 09:30 ET open when it gaps up 0.4-0.5% or more over the previous session's close, stop at that close, flat by 15:55 ET, one trade per session. Profitable in every in-sample year 2017-2021 (PF 1.49, +$2,807 on 181 trades); out of sample 2022-2025 it made $111 on 169 trades (PF 1.02). Our verdicts: S&P 500 · Candidate 1: Does not hold up; S&P 500 · Candidate 2: Does not hold up.

What were the out-of-sample results of Index Gap-and-Go (S&P 500)?

Out-of-sample window 2022.01.01 – 2026.01.01, net of costs. S&P 500 · Candidate 1: +$111 net on $10,000 over 169 trades, profit factor 1.016, win rate 52.66%, max drawdown 8.43%, profitable in 1 of 4 calendar years (2022-2025). S&P 500 · Candidate 2: +$397 net on $10,000 over 217 trades, profit factor 1.043, win rate 52.53%, max drawdown 7.74%, profitable in 3 of 4 calendar years (2022-2025).

How much of the Index Gap-and-Go (S&P 500) in-sample edge survived out of sample?

S&P 500 · Candidate 1: in-sample profit factor 1.487, out-of-sample 1.016, so 68% of the in-sample profit factor was retained. S&P 500 · Candidate 2: in-sample profit factor 1.323, out-of-sample 1.043, so 79% of the in-sample profit factor was retained.

What data, period and costs was Index Gap-and-Go (S&P 500) backtested with?

In-Sample Window: 2017.01.01 – 2022.01.01; Out-of-Sample Window: 2022.01.01 – 2026.01.01; Data Source: M1 OHLC bars (index CFDs have no tick feed); Starting Capital: $10,000; Risk per Trade: 1.0% of equity; Commission: None - IC Markets index CFDs are spread-only; a 0.75-point spread is subtracted from every trade; Out-of-sample Runs Consumed: 2.

Why was Index Gap-and-Go (S&P 500) rejected?

The in-sample edge was real on its own data: a pre-registered measurement found +0.15R per trade (t 2.3) before any EA was built, and the backtest reproduced it trade for trade. It did not survive the holdout: the strongest failed gate is out-of-sample profit factor (1.02 against the 1.15 minimum), profit came only from 2022, and the $5-per-side cost stress turns both candidates into losses of $4,578 and $6,645. Large gap-ups stopped continuing after 2022. Index CFDs are modeled spread-only (no commission) with the 0.75-point spread subtracted from every trade; all figures carry the M1-OHLC asterisk because indices have no tick feed.