Markets › Futures · NQ futures (1-minute bars, US session)

Intraday Momentum Backtest: First Half-Hour to Last Half-Hour on NQ Futures

Does the first half-hour of the US session predict the last one? We tested the rule on E-mini Nasdaq-100 futures (NQ), 2020 to 2026, with costs and a matched control.

NQ futures · 1-minute bars, US session · Protocol v1.0 plus the 8 Oct 2026 rules

Buried · No proven edge

The first half-hour said nothing about the last.

BornRules, variants, costs and gates frozen 11 Oct 2026 (ih_spec.md), before any half-hour return was computed
Died11 Oct 2026

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

Short answer: not on NQ futures from 2020 to 2026. We tested whether the first half-hour of the US session predicts the last half-hour, measured from the previous close and from the 09:30 open, long and short and long only. None of the four variants passed; each lost money before costs, and the signal did worse than the same signals moved to other days.How much costs took here, compared across all 54 of our tests →Did the same rules work on other markets? The cross-market scoreboard →

00The verdict in three lines

  • "Intraday momentum" is a published result (Gao, Han, Li and Zhou, 2018): on the S&P 500, the return of the first half-hour of the US session, from the previous close to 10:00 New York, predicted the return of the last half-hour. We turned it into a rule (long or short for the last half-hour in the direction of the first) and tested it on NQ futures from 2020 to 2026, measuring the first half-hour from the previous close and from the 09:30 open, long and short and long only, with the rules, costs, gates and a control fixed in a dated specification.
  • None passed, and each variant lost money before costs (from -$14.31 to -$1.66 a trade), then more after $15.76 of costs a trade.
  • The signal did not beat the same signals moved to other days (percentiles 28.8 to 43.4). On these years the first half-hour said nothing useful about the last. The same test on ES: read the ES post.

01What we tested

Signal at 10:00 New York: the price at 10:00 against a reference, either the close of the previous US session (OV, as in the paper, so the night is included) or the 09:30 open (RTH, the session only). Up: long; down: short (no trade in the long-only versions); unchanged: no trade. Trade: in at the open of the minute starting 15:30, out at the close of the minute ending 16:00; on early-close days the same half-hour before the exchange's earlier close. One contract, one trade a day at most. Days missing a needed minute have no trade.

Four variants: IM-NQ-OV-LS, IM-NQ-OV-L, IM-NQ-RTH-LS, IM-NQ-RTH-L. With the same four on ES, eight variants of the idea were tried, so the protocol requires a development t-statistic of 2.5.

02Data and costs

E-mini Nasdaq-100 futures (NQ), NinjaTrader's back-adjusted 1-minute history, January 2020 to 25 September 2026 (back-adjustment shifts prices by constants at rolls, which changes no move inside a day). Periods: development 2020 to 2023, validation January 2024 to March 2025, holdout April 2025 to September 2026. These periods are not new: the same file and years were used by our earlier NQ tests, so the holdout is reported as already used. Costs: $15.76 a trade ($5.76 commission plus one tick of slippage on each fill), $20 a point. Engine check: ih_selftest.js checked hand-built days (both signals, long, short, an unchanged price, an early close, a missing minute), the exchange calendar against the data, and all eight variants trade by trade against an independent re-implementation (ih_selftest_result.txt).

03Results

Dollars per contract. The 95% range is the Wilson interval for the win rate. The drawdown is on closed trades; a position lasts 30 minutes.

VariantFirst half-hour measuredTradesNet after costsNet per tradeGross per tradeWinners (95% range)Profit factorDrawdown on closed tradesVerdict
IM-NQ-OV-LSfrom the previous close, long and short1,726-$34,827-$20.18-$4.4249.0% (47% to 51%)0.94-$108,219Buried
IM-NQ-OV-Lfrom the previous close, long only960-$16,725-$17.42-$1.6648.9% (46% to 52%)0.95-$64,925Buried
IM-NQ-RTH-LSfrom the 09:30 open, long and short1,726-$51,897-$30.07-$14.3147.1% (45% to 49%)0.92-$76,160Buried
IM-NQ-RTH-Lfrom the 09:30 open, long only928-$23,075-$24.87-$9.1147.1% (44% to 50%)0.93-$46,391Buried
-$50,000+$0202120222023202420252026validationholdout*IM-NQ-OV-LSIM-NQ-RTH-LS

Cumulative net dollars per contract by month. * Holdout already used before this test.

By period

VariantDevelopment 2020 to 2023 (trades)Validation 2024 to Mar 2025 (trades)Holdout* Apr 2025 to Sep 2026 (trades)Development tValidation PF
IM-NQ-OV-LS-$44,864 (1,025)-$4,342 (319)+$14,380 (382)-1.440.96
IM-NQ-OV-L-$29,990 (579)-$4,361 (173)+$17,627 (208)-1.380.92
IM-NQ-RTH-LS-$25,639 (1,025)-$3,897 (319)-$22,360 (382)-0.820.97
IM-NQ-RTH-L-$19,004 (564)-$3,297 (154)-$775 (210)-0.870.94

The two versions measured from the previous close made money in the holdout (+$14,380 and +$17,627), after losing in development and validation. One period in the black, after two in the red, is what noise looks like.

04The last half-hour on its own

Over the 1,733 days that could trade, the last half-hour of NQ went up on 50.1% of them, with an average move of 0.21 points. Buying it every day would have ended at -$20,052 after costs. There was no steady drift for a signal to ride.

VariantLongs: trades / gross / netShorts: trades / gross / net
IM-NQ-OV-LS960 / -$1,595 / -$16,725766 / -$6,030 / -$18,102
IM-NQ-OV-L960 / -$1,595 / -$16,725–
IM-NQ-RTH-LS928 / -$8,450 / -$23,075798 / -$16,245 / -$28,821
IM-NQ-RTH-L928 / -$8,450 / -$23,075–

05Is it the signal or the market?

The benchmark is a shifted-signal control: the series of daily signals (long, short or none) is moved by a random offset of at least 5% of the days, so the same mix of longs and shorts lands on other days, and applied to the real last half-hours with the same costs. 500 runs with fixed seeds; the bar is the 95th percentile of the average net result per trade.

VariantTradesReal average per tradeControl medianControl 5th to 95thPercentile (95 needed)
IM-NQ-OV-LS1,726-$20.18-$15.10-$59.25 to +$25.5843.4
IM-NQ-OV-L960-$17.42-$10.95-$51.47 to +$26.2639.4
IM-NQ-RTH-LS1,726-$30.07-$15.61-$57.14 to +$26.1128.8
IM-NQ-RTH-L928-$24.87-$11.91-$49.32 to +$26.1528.8

Every variant sits in the lower half of the control: placed on its own days, the signal did slightly worse than on random days.

06The gates

VariantTrades1. PF ≥ 1.2 in validation2. ≥ 50 trades in each period3. t ≥ 2.5 on development4. Above the 95th percentile of the shifted-signal control5. Positive without the 10 best trades6. Holdout net positive (already used)
IM-NQ-OV-LS1,726failpassfailfailfailpass
IM-NQ-OV-L960failpassfailfailfailpass
IM-NQ-RTH-LS1,726failpassfailfailfailfail
IM-NQ-RTH-L928failpassfailfailfailfail

07Verdict by variant

VariantCauseGates failedVerdict
IM-NQ-OV-LSNo proven edge1, 3, 4, 5Buried
IM-NQ-OV-LNo proven edge1, 3, 4, 5Buried
IM-NQ-RTH-LSNo proven edge1, 3, 4, 5, 6Buried
IM-NQ-RTH-LNo proven edge1, 3, 4, 5, 6Buried

No proven edge: negative before costs and below the control. Not tested: other years, volatility or news filters, other entry times, other sessions.

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

What the results show

  • None of the four variants passed, and each lost money before costs as well as after: the first half-hour did not predict the last half-hour on NQ from 2020 to 2026.
  • The rule did worse than the same signals moved to other days (percentiles 28.8 to 43.4; 95 needed).
  • The last half-hour itself was a coin toss: up on 50.1% of 1,733 days, with an average move of 0.21 points.
  • The two versions measured from the previous close made money in the holdout, after losing in development and validation; one good period is not support.

What remains unknown

  • Earlier years: the published result used S&P 500 ETF data from 1993 to 2013, which we do not have.
  • Filters the paper and later work discuss, such as trading only on volatile days or around news.
  • Other entry times, such as the half-hour before the last one.

Why it failed

A signal has to say something about what comes next before costs can matter. Here the sign of the first half-hour carried no information about the last half-hour: the gross result per trade was negative in all four variants, and the same signals placed on other days did slightly better.

What you can apply to your own tests

  • Look at the result before costs first. If it is not positive, no cost assumption will rescue the idea.
  • Test a published effect on the years after the paper. Effects found in one period often fade once they are known.
  • Compare with the same signals moved to other days: it shows whether the signal or the market made the result.

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

Does the first half-hour predict the last half-hour on NQ?

Not in our test. Trading the last half-hour in the direction of the first made -$34,827 (measured from the previous close) and -$51,897 (from the 09:30 open) per contract over 2020 to 2026, long and short, after costs, and both were negative before costs too.

What is intraday momentum?

A result published by Gao, Han, Li and Zhou (2018): on the S&P 500 ETF from 1993 to 2013, the return from the previous close to 10:00 New York predicted the return of the last half-hour of the session. We tested it as a trading rule on recent futures data.

How was intraday momentum tested?

On NQ futures 1-minute data from 2020 to 2026, entering at 15:30 and exiting at the close, with rules written and dated before the data was run, costs included on every trade, results split into development, validation and holdout periods, a random-entry control as the benchmark, and every variant reported. Read the protocol.

08Check our arithmetic

Frozen specificationRules, variants, costs, gates and control for ES and NQ, dated before any half-hour return was computed.
ih_spec.md
CodeThe engine, the independent re-implementation, the self-test and the run. Needs your own ES and NQ 1-minute files.
ih_lib.js · ih_ref.js · ih_selftest.js · ih_run.js
Shared code it usesThe futures loader, the exchange calendar, statistics and control helpers.
control_audit_lib.js · em_lib.js · gh_lib.js · hourly_lib.js · ma_lib.js · rb_lib.js · rsi2_protocol.js
ResultsSelf-test result, the console output of the run and all numbers as one file.
ih_selftest_result.txt · ih_NQ_results.txt · ih_NQ_summary.json
Trade logs (CSV)Every trade of every variant, in points and dollars.
IM-NQ-OV-LS · IM-NQ-OV-L · IM-NQ-RTH-LS · IM-NQ-RTH-L
Data recordFile hashes and the list of holes in the data.
data_manifest.md · data_holes.json

Code provenance: our own code, written from the rule described in the published paper. No third-party source code is used or published.

09Data notes

The NQ file has known holes (data_holes.json). Days missing a minute the rule needs have no trade; removing the trades whose signal window or trade touches a known hole changes no verdict:

VariantTradesRemovedNet per tradeVerdict
IM-NQ-OV-LS1,72617-$20.18 → -$25.37Buried → Buried
IM-NQ-OV-L9607-$17.42 → -$20.94Buried → Buried
IM-NQ-RTH-LS1,7261-$30.07 → -$30.53Buried → Buried
IM-NQ-RTH-L9281-$24.87 → -$25.72Buried → Buried

10Corrections

None yet. 22 Oct 2026, navigation: added a link to the new guide comparing trading costs across all our tests. No result changed. 22 Oct 2026, navigation: added a link to the new cross-market scoreboard, which includes this test. No result changed. 22 Oct 2026, navigation: added a link to the new guide comparing trend following and mean reversion across all our tests. No result changed.

+More tests and guides