Markets › Futures · NQ futures, daily bars from 1-minute data
Internal Bar Strength Strategy Backtest: Buying the Weak Close on NQ Futures, 2020 to 2026
When the Nasdaq-100 closes near the low of the day, does it bounce the next day often enough to pay? We backtested the internal bar strength (IBS) rule on NQ futures, long only and long and short, with costs and against the same trades on random days.
Buried · No proven edgeIt beat the random days. Not the gates.
Variants tried: 2 · Passed every gate: 0 · Best: 3 of 6 · Holdout opened: yes (already used)
Short answer: not proven on NQ. Buying at the close when the day closed in the bottom fifth of its range (IBS below 0.20) and selling at the next close made +$736 a trade on 317 trades from 2020 to 2026 after costs, and beat the same trades on random days. But it passed only three of our six gates, and 40% of the profit came from 2020.
00The verdict in three lines
- Does the internal bar strength strategy work on NQ? Not well enough to prove it. Buying at the close when IBS was below 0.20 and selling at the next close made +$736 a trade on 317 trades after costs, but it passed only three of our six gates.
- The hint is real, the proof is not: the trades beat the same trades on random days at the 98.4th percentile, yet 40% of the profit came from 2020 and the middle period made almost nothing.
- Buried, no proven edge. The long-and-short version was worse: the shorts lost -$56,976.
01The internal bar strength strategy
Internal bar strength measures where a bar closed inside its own range. The internal bar strength formula is:
IBS = (close − low) / (high − low)
It is 0 when the day closes on its low and 1 when it closes on its high. The IBS indicator became known as a mean reversion signal through Alexander Pagonidis's 2013 study of equity index ETFs, QQQ among them: a close near the low (IBS below 0.2) was followed by a better than average next day, and a close near the high by a worse one. Jonathan Kinlay's write-up explains it with examples.
- Why it might work: a lot of the volume at the US close carries no information. Leveraged and inverse ETFs (on the Nasdaq-100, TQQQ and SQQQ) must rebalance in the direction of the day's move, volatility-targeting funds cut exposure after down days, and market-on-close orders bunch at 16:00. If that pressure pushes the close too far, whoever takes the other side should be paid by a partial bounce the next day.
- Why it might not: the overnight bounce after sell-off closes, found in E-mini futures from 1998 to 2020 by Boyarchenko, Larsen and Whelan (Review of Financial Studies, 2023), has been flat since 2021 in ES, NQ and YM, according to the same authors (Liberty Street Economics, July 2026). IBS rests on the same kind of closing pressure, and our data start in 2020.
Close relatives on this site, buried: buying short-term weakness on 60-minute ES bars with RSI(2), the Bollinger band reversal and RSI divergence. None used daily bars, the close location or NQ; because this family has now been tried more than four times, the bar for the first period is a t of 2.5, not 2.
02How we made the rules mechanical
- Sessions: New York Stock Exchange trading days, from an exchange calendar, never from the data, so a gap in the file is never mistaken for a holiday. The daily bar is the 1-minute bars from 09:31 to 16:00 (to 13:00 on early-close days); a session needs at least 90% of its minutes to give a signal.
- IBS-L: if IBS is below 0.20 at the close, buy one contract at the open of the next minute (16:01). IBS-LS: the same, plus a short when IBS is above 0.80. Exactly 0.20 or 0.80 gives no signal.
- Exit: at the close of the next session, the same way (the next minute's open). Weekends and holidays in between are held. A new signal at the exit opens a new trade, and both are charged.
- No stop and no target: the documented rule holds for one session. Size: one NQ contract ($20 a point) for every gate; MNQ ($2 a point) is shown as a conversion only.
We were asked for one NQ strategy with a real reason to work. The rules above were written and frozen before any IBS value was computed, and the test was run once, on 3 November 2026. We considered the overnight drift itself and dropped it before the run, for the reason given above.
03How we tested it
NQ, NinjaTrader 1-minute history, back-adjusted continuous contract, on the New York clock, from 1 January 2020 to 25 September 2026: 1,692 sessions, 1,687 of them usable. Costs: $15.76 a round trip per contract (commission plus one tick of slippage on each fill), as in all our futures tests, and the same again for a trade held through a contract roll. Periods by entry date: 2020 to 2023, January 2024 to March 2025, and a holdout from April 2025 already used by our earlier NQ tests. Control: every signal day moved together by one random number of sessions, keeping its direction and the one-session hold, 500 times; it keeps the time of entry, the hold, the number of trades and their clustering, and removes only the IBS condition. Engine check: hand-made sessions (a weekend and a holiday inside the hold, an early close, a missing exit bar, a roll, the end of the data) and an independent re-implementation that matched all 317 and 870 real trades (20 checks; ibs_selftest_result.txt).
04Results: does the IBS strategy work on NQ?
| Variant | Rule | Trades | Win rate | Net per trade | Net total | Profit factor | Largest drawdown (closed trades) | Verdict |
|---|---|---|---|---|---|---|---|---|
| IBS-L | Long when IBS < 0.20 | 317 | 57.4% | +$736 | +$233,220 | 1.49 | -$40,941 | Buried |
| IBS-LS | Long when IBS < 0.20, short when IBS > 0.80 | 870 | 49.4% | +$203 | +$176,243 | 1.13 | -$79,670 | Buried |
Cumulative net dollars per contract by month. * Holdout already used before this test.
The long-only version signalled on 18.8% of the usable sessions and won 57.4% of its trades. Before costs it made +$238,310; costs took about 2% of that, so they do not decide this test.
What a trader would have lived through (one contract)
| Variant | Drawdown, closed trades | Drawdown, including open losses | Worst loss open inside a trade | MNQ, net per trade | MNQ, drawdown including open losses |
|---|---|---|---|---|---|
| IBS-L | -$40,941 | -$53,045 | -$23,180 | +$73 | -$5,323 |
| IBS-LS | -$79,670 | -$90,829 | -$23,180 | +$19 | -$9,256 |
With no stop, a single trade was -$23,180 down at its worst point inside the trade: bought at the close of 3 April 2025, the day after the US tariff announcement. On MNQ every figure is a tenth, before a slightly higher cost per dollar.
05IBS or random days?
| Variant | Trades | Real net per trade | Moved days, median | Moved, 5th to 95th | Percentile (95 needed) |
|---|---|---|---|---|---|
| IBS-L | 317 | +$736 | +$194 | -$190 to +$623 | 98.4 |
| IBS-LS | 870 | +$203 | -$76 | -$356 to +$204 | 94.8 |
This is the strongest point in favour of the idea. The same number of long trades on random days, held the same way, made a median of +$194: NQ rose a lot, so most one-day longs made money. Buying every close and selling the next made +$199 a trade over 1,686 sessions. The weak closes did about 4 times as well, and beat 98.4% of the random sets. With shorts added, the real trades were only at the 94.8th percentile.
06Does a lower close mean a better next day?
The next session of a long trade, for every usable session, grouped by its IBS (descriptive, not a rule):
| IBS of the day | Sessions | Next session, net per long | Overnight part | Day part | t |
|---|---|---|---|---|---|
| 0.0 to 0.1 | 173 | +$989 | +23.8 pts | +26.4 pts | 2.46 |
| 0.1 to 0.2 | 144 | +$432 | +16.9 pts | +5.5 pts | 0.94 |
| 0.2 to 0.3 | 145 | +$720 | +12.6 pts | +24.2 pts | 1.74 |
| 0.3 to 0.4 | 136 | -$116 | +6.0 pts | -10.9 pts | -0.26 |
| 0.4 to 0.5 | 120 | -$181 | -10.9 pts | +2.6 pts | -0.44 |
| 0.5 to 0.6 | 104 | +$592 | +15.7 pts | +14.7 pts | 1.23 |
| 0.6 to 0.7 | 142 | +$87 | +17.8 pts | -12.1 pts | 0.25 |
| 0.7 to 0.8 | 169 | -$458 | +0.5 pts | -22.7 pts | -1.10 |
| 0.8 to 0.9 | 245 | -$115 | -4.4 pts | +0.8 pts | -0.45 |
| 0.9 to 1.0 | 308 | +$219 | +4.3 pts | +7.4 pts | 0.82 |
The weakest closes, IBS below 0.1, had the best next session (+$989, t 2.46). But the pattern is not a clean slope: 0.3 to 0.5 lost, 0.5 to 0.6 did well, and the strongest closes, above 0.9, were still positive. That is why the short side of the rule had little to work with.
07Where the profit came from: 2020 and a few news days
| Year | IBS-L net (trades) | PF | IBS-LS net (trades) | PF |
|---|---|---|---|---|
| 2020 | +$93,491 (44) | 4.95 | +$141,066 (136) | 2.17 |
| 2021 | +$20,657 (48) | 1.40 | -$7,724 (140) | 0.96 |
| 2022 | -$9,931 (66) | 0.93 | +$76,894 (150) | 1.28 |
| 2023 | +$31,785 (52) | 1.63 | +$12,370 (135) | 1.08 |
| 2024 | +$6,904 (48) | 1.08 | -$61,562 (126) | 0.74 |
| 2025 | +$54,033 (35) | 1.84 | +$45,211 (109) | 1.23 |
| 2026 (to 25 Sep) | +$36,281 (24) | 1.66 | -$30,012 (74) | 0.86 |
IBS-L was positive in 6 of 7 years, but 2020 alone made +$93,491, 40% of the total. Without 2020 the long side made +$139,729 on 273 trades, with a t of 1.51.
The 10 best IBS-L trades
| # | Bought at the close of | IBS | Net |
|---|---|---|---|
| 1 | 2025-04-08 | 0.19 | +$40,359 |
| 2 | 2026-06-10 | 0.04 | +$18,663 |
| 3 | 2026-07-29 | 0.02 | +$17,819 |
| 4 | 2022-11-09 | 0.04 | +$15,929 |
| 5 | 2026-06-17 | 0.11 | +$14,124 |
| 6 | 2020-03-12 | 0.01 | +$13,649 |
| 7 | 2024-08-07 | 0.03 | +$10,934 |
| 8 | 2025-04-23 | 0.13 | +$10,599 |
| 9 | 2026-07-20 | 0.04 | +$10,559 |
| 10 | 2025-10-10 | 0.02 | +$10,349 |
The best trade, bought at the close of 8 April 2025 and sold at the close of 9 April, is the day the US paused most of its new tariffs and the Nasdaq-100 jumped: news, not a pattern. Without the 10 best trades the long side kept +$70,233; without the 20 best it was -$18,895. On average a long trade made +20.7 pts overnight and +16.9 pts during the next day.
08Long or short
| Side | 2020 to 2023 net (trades) | Jan 2024 to Mar 2025 net (trades) | Holdout* Apr 2025 to Sep 2026 net (trades) | Total | Overnight, per trade | Day, per trade |
|---|---|---|---|---|---|---|
| IBS-LS longs | +$136,002 (210) | +$9,515 (59) | +$87,703 (48) | +$233,220 | +20.7 pts | +16.9 pts |
| IBS-LS shorts | +$86,604 (351) | -$46,989 (95) | -$96,592 (107) | -$56,976 | -0.5 pts | -4.4 pts |
The shorts after strong closes made money from 2020 to 2023 and lost in both later periods, -$56,976 in total. Strong closes did not pull back in a market that kept rising, and the loss came during the next day (-4.4 pts a trade on average), not overnight.
09Other thresholds (descriptive, looked at after the gates)
| Rule | Trades (by period) | Net per trade | t, first period | PF, second period | Holdout* net | Control percentile | Gates |
|---|---|---|---|---|---|---|---|
| L<0.10 | 173 (118 / 30 / 25) | +$989 | 1.71 | 2.57 | +$39,980 | 97.2 | 4/6 |
| L<0.15 | 236 (156 / 43 / 37) | +$660 | 1.98 | 1.10 | +$42,216 | 91.6 | 2/6 |
| L<0.25 | 393 (258 / 70 / 65) | +$903 | 2.22 | 1.26 | +$176,460 | 99.6 | 5/6 |
| L<0.30 | 462 (303 / 77 / 82) | +$731 | 2.26 | 1.11 | +$162,037 | 99.6 | 4/6 |
| LS 0.10/0.90 | 481 (318 / 82 / 81) | +$195 | 1.87 | 1.05 | -$55,912 | 88.6 | 1/6 |
| LS 0.15/0.85 | 675 (435 / 118 / 122) | +$63 | 1.81 | 0.84 | -$73,383 | 79.4 | 1/6 |
| LS 0.25/0.75 | 1,029 (656 / 180 / 193) | +$302 | 2.42 | 0.91 | +$89,067 | 99.2 | 4/6 |
| LS 0.30/0.70 | 1,184 (749 / 206 / 229) | +$298 | 2.19 | 0.95 | +$129,744 | 99.4 | 4/6 |
Every long threshold from 0.10 to 0.30 was positive, between +$660 and +$989 a trade, so the result does not hang on the exact 0.20. None reached a t of 2.5 in the first period. The 0.25 threshold passed five of six gates, but we saw it only after the results: picking it now is exactly what our protocol forbids, so it does not count. It would need new data.
10By period
| Variant | 2020 to 2023: net per trade (trades) | Jan 2024 to Mar 2025: net per trade (trades) | Holdout* Apr 2025 to Sep 2026: net per trade (trades) | t, first period | PF, second period |
|---|---|---|---|---|---|
| IBS-L | +$648 (210) | +$161 (59) | +$1,827 (48) | 2.24 | 1.09 |
| IBS-LS | +$397 (561) | -$243 (154) | -$57 (155) | 2.33 | 0.87 |
* The holdout months were already used by our earlier NQ tests.
11The gates
| Variant | Trades | 1. PF ≥ 1.2 in validation | 2. ≥ 50 trades in each period | 3. t ≥ 2.5 on development | 4. Above the 95th percentile of the moved-day control | 5. Positive without the 10 best trades | 6. Holdout net positive (already used) |
|---|---|---|---|---|---|---|---|
| IBS-L | 317 | fail | fail | fail | pass | pass | pass |
| IBS-LS | 870 | fail | pass | fail | fail | fail | fail |
| Variant | Cause | Gates failed | Verdict |
|---|---|---|---|
| IBS-L | No proven edge | 1, 2, 3 | Buried |
| IBS-LS | Fragile | 1, 3, 4, 5, 6 | Buried |
The holdout had 48 long trades, two short of the 50 our rules require; we noted that from the trade counts before any result was printed, and changed nothing because of it. The data-gap check removed 3 and 9 trades held across a known gap in the file; no verdict changed. No proven edge: positive, but not shown to be more than luck by our gates. Fragile: positive only thanks to its best trades.
TWhat this shows, and what to take into your own tests
What the results show
- Buying NQ at the close when the day closed in the bottom fifth of its range, and selling at the next close, made +$233,220 on 317 trades from 2020 to September 2026: +$736 a trade after costs, against a median of +$194 for the same trades on random days.
- It still failed three of our six gates: a profit factor of 1.09 from January 2024 to March 2025, only 48 trades in the holdout and a t of 2.24 on 2020 to 2023. 2020 alone made 40% of the profit, and without the 20 best trades the result turns negative.
- Adding shorts on closes near the high made it worse: the short side lost -$56,976, and all of that loss came after 2023.
What remains unknown
- Whether the effect holds after September 2026. Our holdout months had already been used by earlier NQ tests, so only new data can tell.
- Other exits and other markets, such as QQQ or SPY, where the IBS effect was first described. We fixed one exit, the next close, before the run.
- How it would trade with a stop. The rule has none, and one trade was -$23,180 down at its worst point inside the trade on a single contract.
Why it was buried
There is a hint, not a proof. The long side beat the moved-day control at the 98.4th percentile, and every long threshold from 0.10 to 0.30 was positive. But the middle period barely broke even, the holdout is too short for our rules, and the profit leans on 2020 and on a handful of news days, the best of them the tariff pause of 9 April 2025. A small daily edge on a $20-a-point contract with no stop is mostly variance.
What you can apply to your own tests
- Compare a dip-buying rule with simply being long: buying every close made +$199 a trade here, so the signal has to beat that, not zero.
- Take out your best days and look again. Here the 10 best left it positive; the 20 best did not.
- If a neighbouring threshold looks better after the run, write it down as a new test for new data instead of swapping it in.
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 is the internal bar strength formula?
IBS = (close - low) / (high - low). It is 0 when a bar closes on its low and 1 when it closes on its high; a low IBS means the day closed weak inside its own range.
Does the IBS mean reversion strategy work on Nasdaq futures?
Not well enough to prove it in our test. Long only, it made +$233,220 on one NQ contract from 2020 to September 2026, but its middle period had a profit factor of 1.09 and it turned negative without its 20 best trades. Buried, no proven edge.
Should you short when IBS is high?
Not on NQ in our test: the shorts after closes above 0.80 lost -$56,976 in total, all of it after 2023, and the long-and-short version passed one gate of six.
Is the IBS strategy better than buying every day?
Per trade, yes: buying every close and selling the next made +$199 a trade, against +$736 for the weak closes, which beat 98.4% of random sets of the same size. That is a hint, but the other gates failed.
How was the IBS strategy tested?
On NQ 1-minute data built into daily bars of the 09:30 to 16:00 session, with the rules fixed before any IBS value was computed, one contract and $15.76 of costs per round trip, and 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.
12Check our arithmetic
ibs_spec.md
ibs_lib.js · ibs_ref.js · ibs_selftest.js · ibs_run.js
control_audit_lib.js · em_lib.js · gh_lib.js · hourly_lib.js · ma_lib.js · rb_lib.js · rsi2_protocol.js
ibs_selftest_result.txt · ibs_results.txt · ibs_gates.json · ibs_summary.json
Code provenance: our own code, written from the specification.
13Data notes
Source. NinjaTrader NQ 1-minute history, back-adjusted continuous contract, on the New York clock. The daily bars use only the regular session, but the trades are held overnight, so the overnight minutes matter for the worst point inside a trade. Known gaps in the file are listed in our data audit and never filled; five sessions with gaps were not usable for a signal. Fills: entries and exits at the open of the first minute after the close; one tick of slippage per fill is in the cost. Exploratory: one market, two variants of one rule, a holdout already used, and a market that rose a lot, which helps any long-only rule held overnight.
14Corrections
None since publication.