Markets › Futures · ES futures (2-minute bars from 1-minute data)

Standard Error Bands Scalping Strategy on ES Futures: a 2-Minute Backtest

Fade every touch of the Standard Error Bands on 2-minute ES bars and take profit at the middle line: 32,145 trades from 2020 to 2026, with costs and a control.

ES futures · 2-minute bars built from 1-minute data · Protocol v1.0 plus the 8 Oct 2026 rules

Buried · No proven edge

Half its touches bounced. The costs never missed one.

BornRules, variants, costs and gates frozen 7 Nov 2026 (seb_spec.md), before any band was computed
Died7 Nov 2026

Variants tried: 3 · Passed every gate: 0 · Holdout opened: yes (already used)

Short answer: not in our test. Fading every touch of the Standard Error Bands on 2-minute ES bars, with the middle line as the target, made about nothing before costs (-$2.32 a trade with a 1:1 stop), so the average trade lost about the full $30.76 of costs over 32,145 trades from 2020 to 2026. All three versions were buried.

00The verdict in three lines

  • The idea, from a popular post on Reddit's r/FuturesTrading in April 2025: on 2-minute charts, when price touches the upper or lower Standard Error Band, trade against it and take profit at the middle line. The post gave no stop, so the rules here are ours, written and frozen before the run: a limit order at the band, the target at the middle line, a stop as far as the target (SEB-1) or twice as far (SEB-2), and a version with a trend filter (SEB-1F), on ES futures from 2020 to September 2026 with $30.76 of costs a trade.
  • All three versions were buried, and all three lost money even before costs: -$2.32, -$1.58 and -$0.17 a trade gross. With costs, SEB-1 lost $1,063,360 per contract over 32,145 trades, about 19 a day, and every version lost in every year.
  • A high win rate did not help: with the stop twice as far as the target, 65.1% of trades won, and the average before costs was still slightly negative (-0.004 R a trade). The real trades showed no advantage over the same trades moved to other days: the 1:1 version did worse than most control runs (percentile 13.4), and the other two landed close to the control median.

01The bands and our rules

Standard Error Bands: for each 2-minute bar, fit a straight line to the last 21 closes by least squares; the middle line is that line's value at the latest bar, and the bands are two standard errors of the fit above and below it; all three are then averaged over the last 3 bars. They look like Bollinger Bands but follow a regression line instead of a moving average. The bands use every trading hour, as a chart does; a trade uses the bands of the last 2-minute bar completed before its minute.

PartOur rule
EntryWhen flat, a buy limit at the lower band and a sell limit at the upper band, from 09:46 New York to 15 minutes before the session close (15:45 on normal days); one position at a time. A position can be opened again the minute after a stop, and more than a third of the 1:1 version's trades were such re-entries.
TargetThe middle line at the entry, fixed for the trade.
StopSEB-1 and SEB-1F: as far beyond the entry as the target is; SEB-2: twice as far.
Trend filter (SEB-1F)No entry when the regression line moved more over its 21 bars than the width of the band.
ExitThe target, the stop, or the session close (16:00; 13:00 or 13:15 on early-close days).

Band reversals have been tested before on this site (Bollinger Bands and VWAP bands on ES), so the development t-statistic needed is 2.5.

02Data and costs

ES futures, NinjaTrader's back-adjusted 1-minute history, January 2020 to 25 September 2026, built into 2-minute bars; 1,737 trading days. Periods: development 2020 to 2023, validation January 2024 to March 2025, holdout April 2025 to September 2026, already used by earlier ES tests. Costs: $30.76 a round trip per contract ($5.76 of commission and one tick of slippage on each fill), 0.62 points, as in every ES test on the site; this is a conservative cost model, not a reconstruction of the slippage on each fill. Limit fills at the band and at the middle line may get less slippage in reality; on the other hand the test assumes that a limit order fills as soon as price touches it, which is optimistic, since in a real queue a touch often does not fill. Either way, even at zero cost the versions were negative. Engine check: seb_selftest.js checked the bands against a hand calculation, hand-built minutes (fills, both bands in one minute, stops, targets, gaps, the close, the entry window, the filter), and all three versions trade by trade against an independent re-implementation (seb_selftest_result.txt).

03Results

Results in dollars per ES contract ($50 a point). The 95% range is the Wilson interval for the win rate.

VariantVersionTradesNet after costsNet per tradeGross per tradeWinners (95% range)Profit factorDrawdown on closed tradesVerdict
SEB-1stop as far as the target (1:1)32,145-$1,063,360-$33.08-$2.3249.3% (49% to 50%)0.80-$1,067,428Buried
SEB-2stop twice as far as the target18,610-$601,881-$32.34-$1.5865.1% (64% to 66%)0.85-$609,313Buried
SEB-1F1:1 with a trend filter23,273-$719,896-$30.93-$0.1749.7% (49% to 50%)0.82-$720,733Buried
-$1,000,000-$500,000$0202120222023202420252026validationholdout*SEB-1SEB-2SEB-1F

Cumulative net result by month, dollars per contract. * Holdout already used by earlier ES tests.

By period

VariantDevelopment (trades)Validation (trades)Holdout* (trades)Development tValidation PF
SEB-1-$613,419 (18,956)-$233,720 (6,218)-$216,222 (6,971)-12.590.77
SEB-2-$388,429 (10,965)-$128,000 (3,573)-$85,453 (4,072)-7.540.82
SEB-1F-$449,368 (13,826)-$165,294 (4,418)-$105,234 (5,029)-10.330.78

04Win rate against break-even

VariantWinnersBreak-even before costsTargetStopClosed at the session closeBefore costs, per tradeAfter costs, per trade
SEB-149.3%50.0%48.9%50.0%1.1%-0.008 R-0.172 R
SEB-265.1%66.7%64.2%31.9%3.9%-0.004 R-0.085 R
SEB-1F49.7%50.0%49.2%49.5%1.3%-0.001 R-0.156 R

A touch of the band was followed by a return to the middle line about as often as by a move to the stop. With a 1:1 stop that is a coin toss; with a stop twice as far, the win rate rises to 65.1%, which looks good. For a trade that ends only at the target or at a stop twice as far, the break-even win rate before costs is 66.7%; 3.9% of these trades ended at the session close instead, with other results, so the real test is the average per trade, and before costs it was slightly negative (-0.004 R).

05What the costs do to a scalp

VariantTrades a dayMedian target, pointsCosts as a share of the targetGross per tradeNet per day
SEB-118.54.7113.1%-$2.32-$612
SEB-210.74.7812.9%-$1.58-$347
SEB-1F13.44.9612.4%-$0.17-$414

The bands on 2-minute bars sit only a few points from their middle line, so the target is small and the cost of each round trip is a large share of it. With nothing before costs, the average trade loses about the cost, and many trades a day turn that into a large daily loss.

06April 2025, the month of the post

VariantTrades in April 2025NetNet per tradeNet per trade, all other months
SEB-1444-$18,851-$42.46-$32.95
SEB-2248+$4,722+$19.04-$33.04
SEB-1F275-$15,916-$57.88-$30.61

The idea was posted in April 2025, a month of very large swings in US stocks. Only the version with the wide stop made money that month; the other two lost more per trade than in the other months.

07By year

YearSEB-1 tradesSEB-1 netSEB-2 tradesSEB-2 netSEB-1F tradesSEB-1F net
20204,852-$102,7692,841-$78,8363,496-$107,591
20214,548-$176,3572,585-$111,1113,268-$115,847
20224,675-$191,6522,711-$115,3013,522-$140,628
20234,881-$142,6412,828-$83,1813,540-$85,302
20245,053-$187,1582,958-$98,7833,609-$128,497
20254,818-$154,1562,747-$99,8273,420-$78,990
20263,318-$108,6271,940-$14,8422,418-$63,041

2026 counted to 25 September.

08Longs, shorts and the best trades

VariantLongs: trades / grossShorts: trades / gross10 best tradesNet without them
SEB-116,805 / +$12,12815,340 / -$86,708+$44,417-$1,107,777
SEB-29,589 / +$23,6849,021 / -$53,122+$40,662-$642,543
SEB-1F12,082 / +$23,57211,191 / -$27,591+$32,848-$752,744

09Is it the bands or the market?

The benchmark is a moved-day control: each day's real trades (their minutes, directions and distances) are moved, all days together, by one random offset of at least 5% of the days, and entered on the real day at the market, with the same targets, stops, close and costs. 500 runs with fixed seeds; the bar is the 95th percentile of the average net result per trade. The real trades did no better than the same trades on other days.

VariantTradesReal average per tradeControl medianControl 5th to 95thPercentile (95 needed)
SEB-132,145-$33.08-$30.95-$34.04 to -$27.8013.4
SEB-218,610-$32.34-$32.40-$36.99 to -$27.1850.8
SEB-1F23,273-$30.93-$31.07-$34.83 to -$27.5551.6

10The gates

VariantTrades1. PF ≥ 1.2 in validation2. ≥ 50 trades in each period3. t ≥ 2.5 on development4. Above the 95th percentile of the control5. Positive without the 10 best trades6. Holdout net positive (already used)
SEB-132,145failpassfailfailfailfail
SEB-218,610failpassfailfailfailfail
SEB-1F23,273failpassfailfailfailfail

11Verdict by variant

VariantCauseGates failedVerdict
SEB-1No proven edge1, 3, 4, 5, 6Buried
SEB-2No proven edge1, 3, 4, 5, 6Buried
SEB-1FNo proven edge1, 3, 4, 5, 6Buried

All three were slightly negative before costs, so by the protocol's definitions the cause is No proven edge, not Costs; the costs turned a result near zero into a large loss.

Not tested: other stops and targets, other band settings, discretionary filters such as levels marked by hand, other markets.

TWhat this shows, and what to take into your own tests

What the results show

  • Before costs, fading a touch of the Standard Error Bands on ES 2-minute bars earned about nothing: between -$2.32 and -$0.17 a trade.
  • With the stop twice as far as the target, 65.1% of trades won after costs (65.3% before costs), still below the 66.7% that this shape needs just to break even before costs.
  • At 19 trades a day, $30.76 of costs a trade added up to $988,780 per contract over the period for the 1:1 version; with a small loss before costs, it lost $1,063,360 in all.

What remains unknown

  • Other stops, targets beyond the middle line, or other band settings.
  • Discretionary filters, such as key levels marked by hand, which cannot be tested as written.
  • Lower costs: even at zero cost the versions were slightly negative before costs, so lower costs alone would not make them profitable.

Why it failed

The target is small: the median distance from the fill to the middle line was 4.7 points, so the 0.62 points of commission and slippage a round trip took about 13.1% of the median target (about 16% of the target on average). With a 1:1 stop, price came back to the middle line about as often as it went on to the stop, so there was nothing before costs to pay for them.

What you can apply to your own tests

  • Check the win rate against the break-even of the trade's shape: 65% winners lose money when the stop is twice the target.
  • Count the trades per day: a small loss per trade times many trades a day is a large loss.
  • Express the cost as a share of the target before trading a scalp: here it was more than a tenth.

A note on the numbers: drawdown figures are measured on closed trades unless a table says it includes open losses. Open losses inside a trade are not counted in a closed-trade drawdown, so real account risk is higher, especially for systems with no stop. Backtests are not live trading.

FAQCommon questions

What are Standard Error Bands?

Bands around a linear regression line: for each bar, a straight line is fitted to the last 21 closes, and the bands sit two standard errors of that fit above and below its latest value, usually smoothed over 3 bars. They look like Bollinger Bands but follow a regression line instead of a moving average.

Does the Standard Error Bands scalping strategy work?

Not in our test on ES futures: with a 1:1 stop, price returned to the middle line about as often as it went on to the stop, so the average trade lost about the cost. With a 1:1 stop it won 49.3% of the time, and over 32,145 trades the version lost $1,063,360 per contract.

Why does a 65% win rate still lose money?

Because the stop was twice as far as the target: a trade that risks two to make one and ends only at the target or the stop needs a win rate of 66.7% just to break even before costs. Our version won 65.1%, some trades ended at the session close instead, and its average before costs was slightly negative.

How was the strategy tested?

On ES 1-minute data from 2020 to 2026 built into 2-minute bars, with a limit at the band, the middle line as the target, three versions fixed in advance (a stop as far as the target, one twice as far, and the first with a trend filter), $30.76 of costs a trade, rules written and dated before the data was run, results split into development, validation and holdout periods (the holdout already used), a control that moves each day's trades to another day as the benchmark, and every variant reported. Read the protocol.

12Check our arithmetic

Frozen specificationThe bands, rules, variants, costs, periods, gates and control, dated before any band was computed, with the run log (it records two fixes made before the run).
seb_spec.md
CodeThe engine (its readings at the top), the independent re-implementation, the self-test and the run.
seb_lib.js · seb_ref.js · seb_selftest.js · seb_run.js
Shared code it usesThe ES loader, the exchange calendar, statistics and control helpers.
control_audit_lib.js · em_lib.js · fx_data.js · gh_lib.js · hourly_lib.js · ma_lib.js · na_lib.js · rb_lib.js · rsi2_protocol.js
ResultsSelf-test result, the console output of the run and all numbers as one file.
seb_selftest_result.txt · seb_results.txt · seb_summary.json
Trade logs (CSV)Every trade of every variant.
SEB-1 · SEB-2 · SEB-1F
Data recordFile hashes and the holes in the data.
data_manifest.md · data_holes.json

Code provenance: our own code. No third-party source code is used or published.

13Data notes

Holes. Trades open across a known hole in the data are removed in a second count; no verdict changes:

VariantTradesRemovedNet per tradeVerdict
SEB-132,1450-$33.08 → -$33.08Buried → Buried
SEB-218,6101-$32.34 → -$32.45Buried → Buried
SEB-1F23,2730-$30.93 → -$30.93Buried → Buried

Back-adjustment. The bands and targets are price differences inside a day, which back-adjustment does not change.

14Corrections

9 Nov 2026, the day of publication, corrections after a review: the break-even of the version with the 2:1 stop is now explained with its session-close exits (66.7% holds only for trades that end at the target or the stop; its average before costs was slightly negative); the comparison with the control is given by version (the 1:1 version did worse than most control runs, the other two were close to the median); the cost section now says that one tick on every fill is a conservative model and that the touch fill of limit orders is optimistic. No number or verdict changed.

+More tests and guides