Tested by BacktestingMax
ICT New York killzone backtest on NQ and ES futures
Does the ICT New York killzone strategy work on NQ and ES futures?
No, not with our standard rules. MNQ and MES, the micro contracts of NQ and ES, lost money on 5-minute and 15-minute charts from 2020 to 2025, after trading costs. The account lost 14.1% (5-minute chart) and 18.5% (15-minute chart) on MNQ, and 51.8% and 42.6% on MES. The New York killzone is a time window from ICT (The Inner Circle Trader, a trading teacher): 07:00 to 10:00 New York time. Our rules trade the first fair value gap of the killzone in the direction of the 1-hour trend. A fair value gap is a gap between the first and the third of three candles, left when the middle candle moves fast. The rules wait for price to come back to the gap, and the take-profit is 2R. R is what a trade risks: the distance from the entry to the stop-loss, which is about 1% of the account in money. We ran 10 backtests: 5 futures markets, each on 5-minute and 15-minute charts. 4 of the 10 made money, and only 1 in both 2020–2023 and 2024–2025: MGC (micro gold) on the 15-minute chart. A later window, 08:30 to 11:00, did worse. The best setups were the gaps price did not come back to in time, so the rules never traded them. But entering right away lost money in all 10 tests.
10 backtests 2020–2025 Trading costs included Tested 2 November 2026
Where it worked 10 backtests- Made money
- 4 of 10 tests, with the standard rules
- Made money in both periods
- 1 2020–2023 and again 2024–2025
- Best backtest
- +36% MGC (Micro Gold), 15-minute chart: account growth 2020–2025
- Without the 1-hour trend filter
- 0 tests made money in both periods, compared with 1 with the standard rules
Made money in both periods
- MGC (Micro Gold), 15-minute
The results
Results on every market
Each box shows one backtest of the ICT New York killzone with the standard rules, from 2020 to 2025, after trading costs: the % result, and a small chart of the account balance. The solid line is the account balance and the dashed line is the starting balance. Green results made money; red results lost money. Under each result: whether it made money in both 2020–2023 and 2024–2025, or passed all four of our checks (see "How a test passes" further down).
| Market | 5-minute | 15-minute |
|---|---|---|
| MNQ (Micro Nasdaq 100) | −14% Lost money | −19% Lost money |
| MES (Micro S&P 500) | −52% Lost money | −43% Lost money |
| MGC (Micro Gold) | −53% Lost money | +36% Made money in both periods |
| YM (Dow futures) | +30% Made money overall, lost in one period | +6% Made money overall, lost in one period |
| RTY (Russell 2000 futures) | −71% Lost money | +9% Made money overall, lost in one period |
All the numbers, test by test
| Market | Chart | Trades | Win rate | Profit factor | Result | Max drawdown | 2020–2023 | 2024–2025 | Monte Carlo drawdown | Trading costs |
|---|---|---|---|---|---|---|---|---|---|---|
| MNQ (Micro Nasdaq 100) | 5-minute | 1,083 | 35.1% | 0.97 | −14.1% | −50.3% | −30.4% | +23.5% | −55.5% | $23,696 |
| MNQ (Micro Nasdaq 100) | 15-minute | 670 | 34.9% | 0.95 | −18.5% | −43.8% | −9.6% | −9.9% | −46.8% | $8,674 |
| MES (Micro S&P 500) | 5-minute | 1,105 | 34.8% | 0.89 | −51.8% | −60.0% | −46.2% | −10.4% | −69.2% | $34,912 |
| MES (Micro S&P 500) | 15-minute | 655 | 34% | 0.89 | −42.6% | −55.6% | −26.7% | −21.6% | −58.3% | $17,327 |
| MGC (Micro Gold) | 5-minute | 1,046 | 34.9% | 0.90 | −52.5% | −58.2% | −30.9% | −31.2% | −68.7% | $32,425 |
| MGC (Micro Gold) | 15-minute | 601 | 40.8% | 1.09 | +36.2% | −15.0% | +12.6% | +21.0% | −32.5% | $13,927 |
| YM (Dow futures) | 5-minute | 1,064 | 36.9% | 1.05 | +29.6% | −27.6% | −7.4% | +40.0% | −42.1% | $29,070 |
| YM (Dow futures) | 15-minute | 613 | 36.2% | 1.02 | +6.2% | −31.8% | +7.8% | −1.5% | −35.2% | $10,403 |
| RTY (Russell 2000 futures) | 5-minute | 990 | 30.8% | 0.82 | −71.2% | −75.2% | −51.5% | −40.7% | −77.0% | $18,460 |
| RTY (Russell 2000 futures) | 15-minute | 630 | 35.7% | 1.03 | +8.5% | −24.3% | −0.2% | +8.7% | −34.7% | $9,370 |
Profit factor is the money won divided by the money lost. Above 1 means the test made money. Max drawdown is the biggest fall from the highest balance. 2020–2023 and 2024–2025 show the result in each period on its own. Monte Carlo drawdown: we shuffled the trades into a random order 1,000 times; in 95% of those runs, the worst drawdown was this number or less. Result is the change in the account, with the risk of each trade set to 1% of the account at that time.
The account balance
The best test and the middle test
What we found
What the 10 backtests show
With the standard rules, 4 of the 10 tests made money from 2020 to 2025, after trading costs. The 4 were MGC (micro gold) on the 15-minute chart, where the account grew 36.2%, and YM on the 5-minute chart (+29.6%). The other 2 were RTY (+8.5%) and YM (+6.2%), both on the 15-minute chart. Only MGC on the 15-minute chart made money in both 2020–2023 (+12.6%) and 2024–2025 (+21.0%). Each period's % is the change in the account during those years, so the two do not add up to the 2020 to 2025 result. Before trading costs, 7 of the 10 tests made money. On the 5-minute charts of MNQ, MES and MGC, the costs turned a profit into a loss. On MES, for example, the 5-minute trades made $9,015 before costs and paid $34,912 in costs.
The setup is the first fair value gap of the killzone in the direction of the 1-hour trend, and it usually formed early. On the 5-minute charts, half of the setups had formed by 07:45, and 83.0% by 08:30. On many days, the main US economic reports come out at 08:30. Many index futures traders use a later window, 08:30 to 11:00, which starts with those reports. With the same rules, the later window did worse. Only 1 of its 10 tests made money (MGC on the 15-minute chart, +8.0%), and 7 of the 10 tests did worse than in the 07:00 to 10:00 window. The later window did worse before trading costs too. Before costs, only 2 of its 10 tests made money, compared with 7 of the 10 from 07:00 to 10:00 (see the first table below).
The standard rules wait for price to come back to the gap, with a limit order: an order that waits at a set price. Price came back and filled 73.2% of the orders: 8,457 out of 11,561. On the other 3,104, price did not come back before 10:00, or it reached the take-profit level first, so there was no trade. We also tested a change to the rules: entering right away, at the next candle's open after the gap forms. R is what a trade risks: the distance from the entry to the stop-loss, which is about 1% of the account in money. On the days price did not come back to the gap, the enter-right-away trades made +0.593R on average, and 61.4% of them made money. So those were the best setups. But on the days price came back to the gap, the same change lost 0.267R per trade. Nobody knows in advance which gaps price will come back to. So entering right away takes both kinds of setup, and it lost money in all 10 tests (see the three cards below).
During New York hours, price went past the London high or the London low on almost every day. These are the highest and the lowest price from 02:00 to 05:00 New York time, which ICT calls the London killzone. On 65.7% of the days, price at 07:00 was still between the two. On those days, price went past at least one of them by 12:00 on 98.9% of the days, and past both on 44.5% (all 5 markets together). But the 1-hour trend gave only a small hint of which one price would reach first. When the trend was up at 07:00, price went above the London high first, before any move below the London low, on 57.0% of those days. When the trend was down, price went below the London low first on 51.0% of those days, about as often as not (see the London table below). As the take-profit, the London high or low made money in 2 of 10 tests, compared with 4 with a 2R take-profit.
07:00 or 08:30
The 07:00 to 10:00 window did better than 08:30 to 11:00 in 7 of 10 tests
Each row is one market and chart, tested with the standard rules in two windows, from 2020 to 2025, on an account that started at $50,000. 'Made before costs' is the trades' profit or loss in dollars, before trading costs. 'Result after costs' is the % change in the account after costs, with the number of trades in brackets.
| Market | Chart | 07:00 to 10:00: made before costs | 07:00 to 10:00: result after costs | 08:30 to 11:00: made before costs | 08:30 to 11:00: result after costs |
|---|---|---|---|---|---|
| MNQ | 5-minute | $16,664 | −14.1% (1,083) | −$8,707 | −46.2% (999) |
| MNQ | 15-minute | −$573 | −18.5% (670) | −$3,068 | −15.0% (503) |
| MES | 5-minute | $9,015 | −51.8% (1,105) | −$10,749 | −68.4% (1,035) |
| MES | 15-minute | −$3,959 | −42.6% (655) | −$9,179 | −37.5% (503) |
| MGC (micro gold) | 5-minute | $6,193 | −52.5% (1,046) | −$6,498 | −52.7% (1,021) |
| MGC (micro gold) | 15-minute | $32,035 | +36.2% (601) | $10,371 | +8.0% (477) |
| YM | 5-minute | $43,865 | +29.6% (1,064) | −$15,070 | −49.3% (748) |
| YM | 15-minute | $13,505 | +6.2% (613) | $2,450 | −2.4% (332) |
| RTY | 5-minute | −$17,160 | −71.2% (990) | −$840 | −30.8% (854) |
| RTY | 15-minute | $13,605 | +8.5% (630) | −$3,080 | −14.8% (377) |
A negative 'made before costs' means the trades lost money even before costs. On MGC's 5-minute chart, the two windows were almost the same after costs. The later window had fewer trades for two reasons. In the later window, the stop-loss was further from the entry. So on YM and RTY, there were more days when even 1 contract risked more than 1% of the account, and those days were skipped. YM skipped 356 days (5-minute chart) and 398 days (15-minute chart) from 08:30 to 11:00, compared with 30 and 77 from 07:00 to 10:00. And on the 15-minute charts, price came back to the gap less often. On the MNQ 15-minute chart, 56.5% of the orders filled from 08:30 to 11:00, compared with 71.5% from 07:00 to 10:00.
Waiting for price to come back
The best setups were the gaps that price did not come back to, but entering right away still lost money
The standard rules wait at the gap with a limit order: an order that waits at a set price and fills when price comes back to it. The change we compare here enters right away instead, at the next candle's open after the gap forms. The standard rules and the change take the same setup each day: the first gap of the killzone in the direction of the 1-hour trend. The three cards add up all 10 tests, from 2020 to 2025, after trading costs. R is what a trade risks: the distance from the entry to the stop-loss, which is about 1% of the account in money.
- Price came back to the gap: the standard rules
- −0.031R Average per trade, on 8,074 days, one trade a day. 35.0% of the trades made money.
- Price came back to the gap: entering right away
- −0.267R Average per trade, on the same 8,074 days. 26.4% of the trades made money.
- Price did not come back to the gap: entering right away
- +0.593R Average per trade, on 2,821 days. 61.4% of the trades made money. The standard rules took no trade on these days.
So waiting at the gap did better overall: the standard rules made money in 4 of 10 tests, and entering right away in none. Price did not come back to the gap before 10:00, or reached the take-profit level first, on 3,104 out of 11,561 orders. Nobody knows which setups those are until later. Each R figure is a trade's result after costs divided by 1% of the account at that time. Sizes are rounded down to whole contracts, so many trades risked a little less than 1R. The cards leave out the days the change skipped. Entering right away put the stop-loss further from the entry, so on some days even 1 contract risked more than 1% of the account. That happened on 383 days the standard rules traded and on 283 of the days price did not come back, mostly on YM and RTY.
The London high and low
Price went past a London high or low almost every day, and the 1-hour trend gave only a small hint of which one
The London high and low are the highest and the lowest price from 02:00 to 05:00 New York time. Each row is one market, from 2020 to 2025. It counts only the days when price at 07:00 was still between the London high and low: 948 to 1,028 out of 1,496 trading days. We looked at price from 07:00 to 12:00 New York time. We used the same trend rule as our strategy, checked at 07:00. The trend was up when the last 1-hour candle before 07:00 closed above the 50 EMA, and down when it closed below it. The 50 EMA is an average of the closing prices of the last 50 one-hour candles that gives more weight to recent prices.
| Market | Days | Went past the London high or low | Went past both | Trend up: went above the London high first | Trend down: went below the London low first |
|---|---|---|---|---|---|
| MNQ | 1,028 | 99.7% | 48.6% | 56.2% | 49.9% |
| MES | 997 | 98.4% | 40.4% | 58.7% | 50.4% |
| MGC (micro gold) | 988 | 97.7% | 37.7% | 60.3% | 53.6% |
| YM | 952 | 99.2% | 44.9% | 54.3% | 54.1% |
| RTY | 948 | 99.7% | 50.9% | 55.2% | 47.2% |
'First' means price went past that level before it went past the other one, or went past only that one. On 13 of these days, price went past both levels in the same minute, so neither counts as first. These numbers come from the price data, not from the trades, so they include the days with no setup.
The strategy
What the ICT New York killzone is
ICT is The Inner Circle Trader, the online name of the trading teacher Michael Huddleston. A killzone is one of the times of day when ICT expects the biggest and clearest price moves. The New York killzone is 07:00 to 10:00 New York time. On many days, the main US economic reports come out at 08:30 New York time, inside the killzone. The US stock market opens at 09:30, so the killzone also covers its first half hour. Traders use it on index futures such as NQ (Nasdaq 100 futures) and ES (S&P 500 futures), and on gold. A common way to trade it: take the direction from a chart with longer candles, such as the 1-hour chart. Then wait inside the killzone for a fair value gap in that direction, and enter when price comes back to the gap. A fair value gap (FVG) forms over three candles in a row. The middle candle moves so fast that the third candle's price range does not overlap the first candle's range. The empty space between them is the gap. For the take-profit, many traders use a fixed multiple of the risk, such as 2R. R is what a trade risks: the distance from the entry to the stop-loss, which is about 1% of the account in money. Others aim for the London high or low: the highest or lowest price from 02:00 to 05:00 New York time, which ICT calls the London killzone. ICT teaches that other traders' stop-loss orders wait just beyond these two levels. ICT teachers describe the killzone in different ways, and many index futures traders use a later window, 08:30 to 11:00. Our standard rules take the direction from the 1-hour trend, trade the first fair value gap of the killzone in that direction, and take profit at 2R. 'The rules we tested' lists them exactly. The later window and the London high or low are two of the changes we tested.
- Killzone
- 07:00 to 10:00 New York time. In UK time, that is 12:00 to 15:00 for most of the year
- 1-hour trend
- Checked when the gap forms: up when the last finished 1-hour candle closed above the 50 EMA of 1-hour closes, down when it closed below it
- Setup
- The first fair value gap of the day inside the killzone in the direction of the 1-hour trend. The gaps are on 5-minute candles in the 5-minute test, and on 15-minute candles in the 15-minute test
- Entry
- A limit order at the near edge of the gap: the top of a bullish gap, the bottom of a bearish gap
- Stop-loss
- 1 tick beyond the first candle of the gap
- Take-profit
- 2R: twice the distance from the entry to the stop-loss
- Order cancelled
- At 10:00 if price has not come back to it, or when price reaches the take-profit level first
- Time exit
- 12:00 New York time
- Trades per day
- 1 at most
- Account and risk
- $50,000 at the start, a common size for a prop firm evaluation (the trading test a firm sets before it lets you trade its money). Each trade risks about 1% of the account balance at that time, rounded down to whole contracts. Margin is the money a broker holds for each open contract. Our margin limit lets the open contracts be worth at most 30 times the account. On 194 out of 8,457 trades, the stop-loss was so close to the entry that a 1% risk needed more contracts than that. So those trades used fewer contracts and risked less than 1%
- Days skipped
- The backtest skipped a day when even 1 contract would risk more than 1% of the account. With the standard rules, this happened on 30 days (5-minute chart) and 77 days (15-minute chart) on YM, and on 106 and 79 days on RTY. It happened on 8 days or fewer on MNQ, MES and MGC
- Contracts
- MNQ, MES and MGC are the micro contracts of NQ, ES and gold futures: the same prices at one tenth of the size. So a trade can risk close to 1% of the account in whole contracts. For the Dow and the Russell 2000, we used the E-mini contracts, YM and RTY, because our data has no micro contracts for those two markets
- Fills
- The limit order fills at its price as soon as price touches it, or at a candle's open if price opens past it. The stop-loss fills at its price, or at a candle's open if price opens past it. The take-profit fills at its exact price. We use 1-minute data to see which price came first. Inside the candle where the order fills, only the prices after the fill count. If the stop-loss is reached in the same minute as the entry or as the take-profit, the test counts the trade as a loss. Real trading can be harder: a waiting limit order that price only touches does not always fill
- Price data
- BacktestingMax's futures data (backtestingmax.com/futures-backtesting). It is built from CFD prices (a broker's price that follows the same market). It is adjusted to match the real contracts: their price, trading hours, tick (the smallest price step) and roll (the switch from one contract month to the next). It is not exchange data
- Trading costs
- The spread is the gap between the buy and the sell price. We used a spread of 1 tick: $0.50 per contract on MNQ, $1.25 on MES, $1 on MGC, $5 on YM and $5 on RTY. The limit order and the take-profit fill at their exact price, so they pay no spread. A trade that closes at the stop-loss or at 12:00 pays half the spread. No other slippage is added. There is also a commission (the broker's fee) when a trade opens and again when it closes. It is $0.62 per MNQ, MES or MGC contract, and $2.50 per YM or RTY contract
The rules we tested
- All times are New York time. The killzone is 07:00 to 10:00. Trade Monday to Friday, but not on days the New York Stock Exchange is closed or closes early.
- The 1-hour trend is checked when the gap forms. It is up when the last finished 1-hour candle closed above the 50 EMA, and down when it closed below the 50 EMA. The 50 EMA is an average of the closing prices of the last 50 one-hour candles that gives more weight to recent prices.
- A bullish fair value gap is three candles in a row where the low of the third candle is above the high of the first candle. A bearish fair value gap is three candles in a row where the high of the third candle is below the low of the first candle. On the 5-minute chart these are 5-minute candles, and on the 15-minute chart, 15-minute candles.
- The setup is the first fair value gap of the day that forms inside the killzone in the direction of the 1-hour trend. That is a bullish gap when the trend is up, and a bearish gap when it is down. All three candles must be inside the killzone, and none of them can be flat (high equal to low). The gap must form before the last candle of the killzone, so that price has time to come back to it.
- Place a limit order at the near edge of the gap, the edge that price reaches first when it comes back. Buy at the top of a bullish gap (the low of the third candle). Sell at the bottom of a bearish gap (the high of the third candle). A limit order waits at a set price and fills when price comes back to it.
- Put the stop-loss 1 tick beyond the first candle of the gap: 1 tick below its low for a buy, and 1 tick above its high for a sell. A tick is the smallest price step of a contract, for example 0.25 points on NQ and ES. R is what a trade risks: the distance from the entry to the stop-loss, which is about 1% of the account in money.
- Put the take-profit at 2R: twice the distance from the entry to the stop-loss, in the direction of the trade.
- Cancel the order if price has not come back to it by 10:00, or if price reaches the take-profit level before the order fills. There is one setup a day at most. If it does not fill, wait for the next day.
- If the trade is still open at 12:00, close it.
- Size every trade so that, if the stop-loss is hit, the trade loses about 1% of the account balance at that time. Round down to whole contracts. If even 1 contract would risk more than 1%, skip the day.
The method
How we tested it
The test
- Markets
- MNQ (Micro Nasdaq 100), MES (Micro S&P 500), MGC (Micro Gold), YM (Dow futures) and RTY (Russell 2000 futures)
- Charts
- 5-minute and 15-minute candles
- Dates
- January 2020 to December 2025
- Account
- $50,000, risking 1% of the account on each trade
- Trading costs
- Included. Every trade pays that market's normal trading cost: the spread, which is the gap between the buy price and the sell price.
How a test passes
We call a test passed only if it meets all four checks. A strategy can make money in one backtest and still fail one of these checks.
- At least 100 trades. With fewer trades, a good result could be luck.
- It made money from 2020 to 2023 and again from 2024 to 2025. This shows whether the strategy kept working in the newer years, not only in the older ones.
- A profit factor (the money won divided by the money lost) of at least 1.2 from 2024 to 2025, after trading costs.
- In 95% of 1,000 random shuffles of the trades, the account must not fall more than 30% from its highest point.
Improvements
Can the ICT New York killzone be improved?
We tried four changes that New York killzone traders often make, one at a time, on the same 10 tests. The four changes are a later window (08:30 to 11:00), no 1-hour trend filter, the London high or low as the take-profit, and entering right away. Without the trend filter, the rules trade the first gap in either direction. The table below explains each one. If you pick the best change and judge it on the same years you used to pick it, it almost always looks better than it really is. So we picked the best change using 2020–2023 only: the change that made money in the most tests. In a tie, we picked the one with the better middle test (the median: half of the tests did better, half did worse). Then we checked it on 2024–2025, the years we did not use to pick it.
| Version | Made money 2020–2023years used to pick the best version | Made money 2024–2025years not used to pick it | Made money in both periods | Passed all four checks |
|---|---|---|---|---|
| Standard rules The rules under 'The rules we tested': the killzone from 07:00 to 10:00 and the first fair value gap in the direction of the 1-hour trend. The order waits at the near edge of the gap, and the take-profit is 2R. | 2 of 10middle test −18.1% | 4 of 10middle test −5.7% | 1 | 0 |
| Later window, 08:30 to 11:00 The same rules from 08:30 to 11:00 New York time, a window many index futures traders use. It starts at 08:30, when the main US economic reports come out on many days, and includes the first 90 minutes of the US stock market. The order is cancelled at 11:00 instead of 10:00. The time exit stays at 12:00. | 1 of 10middle test −15.0% | 2 of 10middle test −13.8% | 0 | 0 |
| Without the 1-hour trend filterBest on 2020–2023 Trade the first fair value gap of the killzone in either direction, whatever the 1-hour trend: a bullish gap is a buy, and a bearish gap is a sell. | 2 of 10middle test −15.7% | 2 of 10middle test −16.9% | 0 | 0 |
| Take-profit at the London high or low The take-profit is the London high for a buy and the London low for a sell. These are the highest and the lowest price from 02:00 to 05:00 New York time, ICT's London killzone. If the London high is not above the entry (for a sell, if the London low is not below it), the take-profit is 2R. As in the standard rules, the order is cancelled if price reaches the take-profit before the order fills. | 1 of 10middle test −16.6% | 3 of 10middle test −9.7% | 0 | 0 |
| Enter right away, without waiting for price to come back Buy or sell with a market order at the next candle's open after the gap forms, instead of waiting at the gap. The stop-loss stays 1 tick beyond the first candle of the gap, so it is further from the entry. R and the 2R take-profit are measured from the close of the gap's third candle, the last price known when the order is sent. A market order pays half the spread when it opens. | 0 of 10middle test −25.4% | 2 of 10middle test −17.9% | 0 | 0 |
None of the four changes did better than the standard rules. Of the four, dropping the 1-hour trend filter looked best on 2020–2023, the years we used to pick. It made money in 2 of 10 tests, the same as the standard rules, but its middle test lost less: −15.7%, compared with −18.1%. But in 2024–2025, the years we kept for the check, it made money in 2 of 10 tests, compared with 4 with the standard rules. From 2020 to 2025, the standard rules made money in 4 of 10 tests, and so did the change without the trend filter. But the standard rules, with the trend filter, did better than the change in 7 of the 10 tests. The later window made money in 1 of 10 tests, the London high or low as the take-profit in 2 of 10, and entering right away in none. The London level was the take-profit on 7,682 out of the 11,532 orders of that change. On its other orders, price was already past the London level, so the take-profit was 2R. The London level was less than 1R from the entry on 26.3% of those 7,682 orders, and more than 3R away on 33.6%. So it was often much closer, or much further, than 2R. With each of the four changes, no test made money in both 2020–2023 and 2024–2025.
Questions
Questions traders ask
Does the ICT New York killzone strategy work?
No, not reliably, in our backtest. We tested 5 futures markets, each on 5-minute and 15-minute charts: MNQ and MES (micro Nasdaq 100 and S&P 500), MGC (micro gold), YM (Dow) and RTY (Russell 2000). With our standard rules, 4 of the 10 tests made money from 2020 to 2025, after trading costs. Only MGC on the 15-minute chart made money in both 2020–2023 and 2024–2025. The rules trade the first fair value gap of the killzone, 07:00 to 10:00 New York time, in the direction of the 1-hour trend. A fair value gap is a gap in price left by a fast candle. The take-profit is 2R. R is what a trade risks: the distance from the entry to the stop-loss, which is about 1% of the account in money. We also tested four common changes: a later window (08:30 to 11:00), no 1-hour trend filter, the London high or low as the take-profit, and entering right away. With each change, no test made money in both periods.
What time is the ICT New York killzone?
ICT's New York killzone is 07:00 to 10:00 New York time. In UK time, that is 12:00 to 15:00 for most of the year. Many index futures traders use a later window, 08:30 to 11:00, which starts when the main US economic reports come out. In our backtest, we traded the same fair value gap rules in both windows, on 10 tests: 5 futures markets, each on 5-minute and 15-minute charts. The 07:00 to 10:00 window did better in 7 of the 10. After trading costs, 4 of the 10 tests made money from 07:00 to 10:00, and only 1 from 08:30 to 11:00.
Does the New York killzone work on NQ and ES?
No, not with the rules we tested: the first fair value gap of the 07:00 to 10:00 killzone in the direction of the 1-hour trend, with a 2R take-profit. R is what a trade risks: the distance from the entry to the stop-loss, which is about 1% of the account in money. We tested MNQ and MES, the micro contracts of NQ and ES (Nasdaq 100 and S&P 500 futures). They have the same prices as NQ and ES at one tenth of the size, so a trade can risk close to 1% of the account in whole contracts. From 2020 to 2025, after trading costs, the $50,000 account lost 14.1% on the MNQ 5-minute chart and 18.5% on the 15-minute chart. MES lost 51.8% on the 5-minute chart and 42.6% on the 15-minute chart. The MNQ 5-minute trades made $16,664 before costs, but they paid $23,696 in trading costs. With the London high or low as the take-profit, the MNQ 5-minute account grew 25.4% in total. But it lost 19.3% in 2020–2023, then grew 55.5% from that smaller balance in 2024–2025. So it made money in only one of the two periods.
Should you trade the New York killzone on news days?
Not on jobs report days, in our backtest. They were the worst days to trade the New York killzone. The US jobs report comes out at 08:30 New York time, inside the killzone, usually on the first Friday of the month. R is what a trade risks: the distance from the entry to the stop-loss, which is about 1% of the account in money. With our standard rules, the trades on jobs report days lost 0.190R each on average. Jobs report days did worse than the other days in 9 of 10 tests. On CPI days (the main inflation report), the trades lost 0.070R each. On days with one of the other main reports, they lost 0.003R each. These are PPI (producer prices), retail sales, GDP (economic growth) and core PCE (another inflation measure). Each day counts once, in the first group that fits: jobs report, then CPI, then the other main reports. On days with none of these main reports, the trades lost 0.019R each. The weekly jobless claims, which also come out at 08:30, don't count as a main report here. We did not backtest a change that skips jobs report days, so we can't say how much skipping them would help.
Keep exploring
Related strategies we tested
ICT & smart money ICT Silver Bullet backtest on NQ and ES futures Made money in 0 of 10 tests, 0 of them in both periods. Best: MGC (Micro Gold), 5-minute, −2% ICT & smart money Fair value gap (FVG) retest strategy backtest Made money in 5 of 24 tests, 2 of them in both periods. Best: S&P 500, 15-minute, +124% ICT & smart money Order block strategy backtest Made money in 5 of 30 tests, 2 of them in both periods. Best: USD/JPY, 4-hour, +29% ICT & smart money ICT Power of 3 (AMD) backtest on NQ, ES and gold futures Made money in 4 of 10 tests, 2 of them in both periods. Best: YM (Dow futures), 15-minute, +46% ICT & smart money Change of character (CHoCH) and market structure shift (MSS) backtest Made money in 7 of 40 tests, 5 of them in both periods. Best: USD/JPY, 1-hour, +66% Opening range breakout First hour (initial balance) breakout backtest on NQ and ES futures Made money in 12 of 12 tests, 5 of them in both periods. Best: MES (Micro S&P 500), 5-minute, +61%The strategy code we ran
This is the exact code from the BacktestingMax strategy engine. Paste it into the strategy editor in the app to run it on any market.
class IctNewYorkKillzone(Strategy):
"""ICT New York killzone on futures: the first fair value gap of the morning in the
direction of the 1-hour trend, entered when price comes back to the gap.
All times are New York time (daylight saving included). ICT's New York killzone is
07:00 to 10:00.
Fair value gap (builtin:fair_value_gaps): three candles in a row where the third one's
low is above the first one's high (a bullish gap), or its high is below the first one's
low (a bearish gap). The gaps are on the chart's own candles: 5-minute gaps on the
5-minute chart, 15-minute gaps on the 15-minute chart.
1-hour trend: up when the last finished 1-hour candle closed above the 50 EMA of the
1-hour closes, down when it closed below it.
Standard (all switches off):
1. Trade Monday to Friday, but not on days the New York Stock Exchange is closed or
closes early.
2. The setup is the first gap of the day that forms inside the killzone in the
direction of the 1-hour trend: a bullish gap when the trend is up, a bearish gap
when it is down. All three candles must be inside the killzone, none of them flat
(high = low), and the gap must form before the killzone's last candle.
3. Buy limit at the top of a bullish gap (the third candle's low); sell limit at the
bottom of a bearish gap (the third candle's high).
4. Stop-loss 1 tick beyond the first candle of the gap: below its low for a buy,
above its high for a sell. R is the distance from the entry to the stop-loss.
5. Take-profit at 2R.
6. The order waits until the killzone ends. It is cancelled then, or when price
reaches the take-profit before the order fills. One setup a day: after that, wait
for the next day.
7. A trade still open at 12:00 closes then.
8. Size every trade so the stop-loss costs 1% of the account, in whole contracts. If
one contract would risk more, skip the day.
The changes, one at a time:
kz = 1 the killzone is 08:30 to 11:00, a later window many index futures
traders use
notrend = 1 no trend filter: the first gap of the day in either direction
london = 1 take-profit at the London high (buy) or low (sell): the highest and the
lowest price from 02:00 to 05:00. If price is already past it, 2R
market = 1 don't wait for price to come back: enter at the next candle's open after
the gap forms. Same stop-loss; the take-profit is 2R from the gap
candle's close
"""
params = {"kz": Param(type=int, default=0, min=0, max=1),
"notrend": Param(type=int, default=0, min=0, max=1),
"london": Param(type=int, default=0, min=0, max=1),
"market": Param(type=int, default=0, min=0, max=1),
"ema_period": Param(type=int, default=50, min=5, max=400),
"exit_rr": Param(type=float, default=2.0, min=0.5, max=10.0)}
lookback = 5
exit_time = 720 # 12:00 New York, in minutes after midnight
london_start = 120 # 02:00 New York: ICT's London killzone
london_end = 300 # 05:00 New York
# Days with no trading, 2020-2025: the New York Stock Exchange is closed, or it closes
# early at 13:00.
closed_days = (
"2020-01-01 2020-01-20 2020-02-17 2020-04-10 2020-05-25 2020-07-03 2020-09-07 2020-11-26 "
"2020-11-27 2020-12-24 2020-12-25 "
"2021-01-01 2021-01-18 2021-02-15 2021-04-02 2021-05-31 2021-07-05 2021-09-06 2021-11-25 "
"2021-11-26 2021-12-24 "
"2022-01-17 2022-02-21 2022-04-15 2022-05-30 2022-06-20 2022-07-04 2022-09-05 2022-11-24 "
"2022-11-25 2022-12-26 "
"2023-01-02 2023-01-16 2023-02-20 2023-04-07 2023-05-29 2023-06-19 2023-07-03 2023-07-04 "
"2023-09-04 2023-11-23 2023-11-24 2023-12-25 "
"2024-01-01 2024-01-15 2024-02-19 2024-03-29 2024-05-27 2024-06-19 2024-07-03 2024-07-04 "
"2024-09-02 2024-11-28 2024-11-29 2024-12-24 2024-12-25 "
"2025-01-01 2025-01-09 2025-01-20 2025-02-17 2025-04-18 2025-05-26 2025-06-19 2025-07-03 "
"2025-07-04 2025-09-01 2025-11-27 2025-11-28 2025-12-24 2025-12-25")
def init(self, ctx):
self.fvg = ctx.indicator("builtin:fair_value_gaps", max_age=100)
self.h1 = ctx.tf("H1")
self.h1_ema = self.h1.ema(source=self.h1.close, period=ctx.params.ema_period)
self.ny = ctx.clock("America/New_York")
self.no_trading = set(self.closed_days.split())
self.kz_start, self.kz_end = (510, 660) if ctx.params.kz == 1 else (420, 600)
self.date = None # the New York date of the current candle
self.done = True # True once today's setup has come, or the day can't trade
self.london_high = None # the highest and lowest price from 02:00 to 05:00
self.london_low = None
self.order = None # the resting limit order
self.side = 0
self.target = None
self.trade_date = None # the date the open trade was placed on
def on_bar(self, ctx):
start = self.ny.minute_of_day # this candle's open, New York time
end = start + ctx.timeframe_minutes # this candle's close
if self.ny.date != self.date:
self.date = self.ny.date
self.done = self.ny.weekday >= 5 or self.date in self.no_trading
self.london_high = self.london_low = None
if self.london_start <= start < self.london_end:
self.london_high = ctx.high[0] if self.london_high is None else max(self.london_high, ctx.high[0])
self.london_low = ctx.low[0] if self.london_low is None else min(self.london_low, ctx.low[0])
if self.order is not None and self.order.filled_at_bar is not None:
self.order = None # the limit order filled
if ctx.position is not None:
if end >= self.exit_time or self.date != self.trade_date:
ctx.close_position() # fills at the 12:00 candle's open
return
if self.order is not None:
reached = ctx.high[0] >= self.target if self.side > 0 else ctx.low[0] <= self.target
if end >= self.kz_end or reached or self.date != self.trade_date:
ctx.cancel_order(self.order.order_id) # the killzone is over, or price got there without us
self.order = None
return
if self.done:
return
# All three candles of the gap inside the killzone, with at least one candle left.
first_open = start - 2 * ctx.timeframe_minutes
if not ctx.gate("killzone", first_open >= self.kz_start and end < self.kz_end):
return
bull = len(self.fvg.now("fvg_bull")) > 0
bear = len(self.fvg.now("fvg_bear")) > 0
if not ctx.gate("gap_formed", bull or bear):
return
if not ctx.gate("no_flat_candle", all(ctx.high[k] > ctx.low[k] for k in range(3))):
return
if ctx.params.notrend == 0:
ema, h1_close = self.h1_ema.value, self.h1.close[0]
if ema is None or h1_close is None:
return
up = bull and h1_close > ema
down = bear and h1_close < ema
if not ctx.gate("with_the_1h_trend", up or down):
return
else:
up, down = bull, bear
self.done = True # the first gap is the day's setup
tick = ctx.pip_size
if ctx.params.market == 1:
entry = ctx.close[0] # the order fills at the next candle's open
else:
entry = ctx.low[0] if up else ctx.high[0] # the near edge of the gap
stop = ctx.low[2] - tick if up else ctx.high[2] + tick
risk = entry - stop if up else stop - entry
if risk <= 0:
return
size = ctx.size_by_risk_pct(0.01, stop=stop, entry=entry)
if not ctx.gate("one_contract_fits_1pct_risk", size > 0):
return # one contract would risk more than 1%
tp = entry + ctx.params.exit_rr * risk if up else entry - ctx.params.exit_rr * risk
kind = "2r"
if ctx.params.london == 1 and self.london_high is not None:
level = self.london_high if up else self.london_low
if (level > entry) if up else (level < entry):
tp, kind = level, "london"
self.side = 1 if up else -1
self.target = tp
self.trade_date = self.date
tag = ("kz_long_" if up else "kz_short_") + kind
if ctx.params.market == 1:
if up:
ctx.buy(size=size, sl=stop, tp=tp, tag=tag)
else:
ctx.sell(size=size, sl=stop, tp=tp, tag=tag)
elif up:
self.order = ctx.buy(size=size, limit=entry, sl=stop, tp=tp, tag=tag)
else:
self.order = ctx.sell(size=size, limit=entry, sl=stop, tp=tp, tag=tag)
Your turn
Test the ICT New York killzone yourself
Change the settings, the market or the stop-loss and see the result in seconds. Ask the BacktestingMax AI: Backtest the ICT New York killzone on MGC 15-minute charts: from 07:00 to 10:00 New York time, take the first fair value gap in the direction of the 1-hour trend (the last 1-hour close above or below the 50 EMA), limit order at the near edge of the gap, stop-loss 1 tick beyond the gap's first candle, 2R take-profit, close at 12:00
.
Free account. No credit card needed.
See every strategy we tested Browse strategies shared by tradersBacktest on historical data with trading costs, run by BacktestingMax. Past results do not guarantee future results, and nothing here is financial advice. Updated 2 November 2026.