Forward Test: NQ Noise Area Breakout (NA-NQ-NY-LS)
Protocol and monthly journal. The noise area breakout on Nasdaq-100 futures in the New York session, long and short, the variant that passed every gate of the backtest, tested forward on new data with the rule, the start, the costs and the evaluation fixed in advance.
Status, 14 October 2026: this page was live before the start (checked against the live site on 11 October 2026), so the record started as scheduled on Monday 12 October 2026, 09:30 New York. Its first data comes with the NQ export in the first week of November 2026.
One-line summary: a pre-registered forward test of the noise area breakout on Nasdaq-100 futures in the New York session, long and short, the variant that passed every gate of the backtest. The record is a paper series: the frozen rule, computed by the backtest's own code on new data as it comes in, month by month, with the backtest's costs. No live or simulated orders are placed. It can show whether the historical result is contradicted; it needs about two years for a fair chance of supporting it (section 7).
Status: frozen 11 October 2026 (draft 1, approved by the owner the same day). Start: Monday 12 October 2026, 09:30 New York, provided this protocol is published on the site before that time; otherwise the first New York session after it is published, written here before any forward trade is computed. Nothing before the start counts. The backtest data ended on 25 September 2026; the sessions between then and the start are not part of either record.
01What this test is, and what it is not
- A forward evaluation, not a second backtest. The historical test (noise area breakout on NQ) gave Survivor for this variant: 1,504 trades from 2020 to 25 September 2026, +$231,557 per contract after costs, development t-statistic 2.82 (2.5 needed), validation profit factor 1.33, holdout +$48,864, control percentile 100.0. But the holdout had been used by earlier tests on the same file, 18 variants were tried, and the same rule failed on ES and gold. The forward result does not change the historical verdict; it is a separate record on data that did not exist when the rule was tested.
- Why this variant: both New York versions passed. The long-only version's trades are exactly the long trades of this one (747 trades, +$152,227), so testing the long-and-short version also tests the long-only one. The long side is reported separately at every update, as a descriptive figure; the verdict is on the long-and-short version only.
- A paper record, not trading. Fills are the backtest's assumed fills and costs are the backtest's assumed costs. It says nothing about real execution in fast markets.
02The rule (frozen; nothing here may change during the test)
The rule is the one in research/na_spec.md (frozen 11 October 2026), New York session, long and short:
- Market: NQ (E-mini Nasdaq-100), 1 contract, NinjaTrader's continuous back-adjusted 1-minute series with real contract volume, New York clock, bar time = close time.
- Session: 09:30 to 16:00 New York, or the exchange's earlier close on early-close days (exchange calendar of
rb_lib.js). Monday to Friday. A session is used only if its open bar and its close bar exist. - Open = the open of the first 1-minute bar of the session; previous close = the close of the previous New York session.
- sigma(m) = the average of |close at minute m / open - 1| over the previous 14 sessions that have a bar at m (at least 10 required).
- Noise area: upper band = max(open, previous close) x (1 + sigma(m)); lower band = min(open, previous close) x (1 - sigma(m)).
- Checkpoints: every 30 minutes from 10:00 New York, up to the last checkpoint at least 30 minutes before the close. Decisions use the close of the checkpoint minute; orders fill at the open of the next minute.
- Entry: flat and close above the upper band: buy 1 contract; below the lower band: sell short 1 contract.
- Exit (checked at the checkpoints): a long is closed when the close falls below max(upper band, VWAP); a short when it rises above min(lower band, VWAP). After an exit the same checkpoint can open the opposite position. Every position is closed at the close of the session. No position overnight.
- VWAP: from the session open, typical price (high + low + close) / 3, weighted by contract volume.
- Costs: $15.76 a round trip (commission plus one tick of slippage per fill); a flip pays two. Exactly as in the backtest.
03How the series is computed
- Code:
na_lib.js, the backtest's code, unchanged (SHA-2566f47edc2eedc8c343f664645995b14a84dc5004116a189f396df883789534854), with the calendar ofrb_lib.js(SHA-25620b1be79cb731804ef1a924d57da311bbd3ad0e8d0e0489d5aa2f520ebb44b12). Any change to either makes a new test. - Data: the same monthly NQ export as the NQ ribbon forward test: NinjaTrader's NQ 1-minute history exported in the first week of every month with
FuturesDataExporter.cs, from 1 January 2020 to the end of the previous month, so the 14-session averages are warmed up at the start. The export's SHA-256, its last bar and its holes are recorded with each update. - Data rule 3 (as in the backtest): holes are never filled. Trades in a session that touches a hole are counted, and the evaluation is also reported without them; if that changes a label, the label is reported as inconclusive for that reason.
- Each month the whole forward window is recomputed from the new export. The bands are ratios to price; back-adjustment shifts older prices by constants at each roll, which can move a band by a few percent of its width. Check: every earlier forward trade must reproduce in entry and exit time, direction and dollars; any difference is published and explained.
04Records and reporting
- Per trade: date, entry and exit time, direction, entry and exit price, gross and net dollars, the exit reason (band or VWAP stop, flip, session close), and whether the session touched a data hole.
- Monthly update (the first for the month in which the test starts, published in the first week of the next month): the trades of the month and of the whole forward window, net dollars, net per trade, profit factor, win rate, drawdown on closed trades, the long and the short side separately, the export's hash and holes, and the reproduction check. Months with no trades are reported too. The trade list and the computation's output are published; the raw NinjaTrader price data is not.
05Evaluation (fixed now)
- Evaluation points: at 250 and 500 closed trades (about one and two years at the historical rate of about 226 a year). Monthly updates before them are descriptive only.
- Statistic: the mean net dollars per trade, its standard deviation, the standard error (SD / sqrt(n)) and the 95% confidence interval = mean +/- t(0.975, n - 1) x SE; the profit factor; the win rate; the drawdown on closed trades. As a robustness check the same interval is computed on daily totals (a session with a flip has two trades); the verdict uses the per-trade interval and the daily one is reported next to it.
- Verdict:
- Contradicted: the mean net result per trade is zero or negative, or the profit factor is below 1.0.
- Not contradicted: the mean is positive, the profit factor is at least 1.0, and the 95% interval includes zero. It means "keep going", not "confirmed".
- Supported: the lower end of the 95% interval is above zero.
- Two looks: the same rule is applied at 250 and at 500 trades without adjustment; because the samples overlap, the chance of a "supported" label at either point when the true edge is zero is a little above 2.5% (one-sided), and is stated with the result.
- Matched control on the forward window: the backtest's moved-entry control (each session's first entry moved, all sessions together, by one random circular offset of at least 5% of the sessions, then managed by the same exit rule and costs), 500 runs with fixed seeds (1000 + run); the forward percentile is reported next to the verdict.
- The criteria are not changed after results are seen.
06Stopping
- The paper series has no drawdown limit: it records what the rule would have done, and stopping it on a bad run would bias the record. It stops at the 500-trade evaluation, or earlier if NinjaTrader's NQ history can no longer be exported; the reason and the date are then published, and the evaluation is made on the trades collected, with the sample size stated.
07How much this test can show (the power estimate)
From the 1,504 historical trades: mean +$154 a trade, standard deviation $2,070; the longest run of losing trades was 9 and the largest drawdown on closed trades -$44,648. If the forward trades had the same mean and spread and were independent, the chance that the lower end of the 95% interval is above zero is about:
| Closed trades | About | Chance of "supported" if the true mean is +$154 | If it is half that |
|---|---|---|---|
| 250 | 1.1 years | 22% | 9% |
| 500 | 2.2 years | 38% | 13% |
These figures are optimistic: the variant was published because it passed, after 18 variants were tried, so the true mean is more likely lower than higher. The 95% interval after 500 trades is about +/- $181 a trade wide, larger than the historical mean itself. The likely outcomes in the first year are "not contradicted" or "contradicted"; a "supported" label is unlikely before two years even if the edge is real.
08Modifications
Any change to the rule, the session, the checkpoints, the market, the size, the costs, the code or these criteria is a separate test with its own name, frozen protocol and start date. Results are never merged across tests.
JMonthly journal
Updated in the first week of every month, months with no trades included. Results are computed by the backtest's code on the new data (a paper record, not trades).
No forward data yet. The test has not started.
Raw files
na_lib.js · rb_lib.js
Noise area breakout on NQ · na_spec.md
CCorrections
None yet. Any change to this protocol after the start would be published here and would make the changed version a separate test (section 8).