Tested by BacktestingMax
FOMC day fade backtest on NQ, ES and gold futures
Does the FOMC day fade work on NQ, ES and gold futures?
No, not reliably. FOMC days are the 8 days a year when the US Federal Reserve announces its interest rate decision, at 14:00 New York time. To fade a move means to trade against it. The FOMC day fade marks the highest and the lowest price from 14:00 to 14:30: the range. When price first goes past the range after 14:30 and then closes back inside it, the fade trades the other way until 16:00. We ran 6 tests on all 63 FOMC days from 2018 to 2025: MNQ, MES and MGC, each on 5-minute and 15-minute charts. These are the micro contracts of NQ (Nasdaq 100 futures), ES (S&P 500 futures) and gold futures. After trading costs, 4 of the 6 tests made a small profit in 8 years, at most +11.9%. Adding up the 6 tests, all of the profit came from the 5 best FOMC days. Without them, the fade lost money. All 6 tests lost money in 2018–2021 and made money in 2022–2023, but the MNQ and MES tests lost again in 2024–2025. Each test had only 32 to 53 trades, too few to be sure. Our 'Where it worked' box and the versions table count only tests with at least 100 trades. So the box shows 0 under 'Made money', and every 'made money in both periods' count shows 0, for every version.
6 backtests 2018–2025 Trading costs included Tested 2 November 2026
Where it worked 6 backtests- Made money
- 0 of 6 tests, with the standard rules
- Made money in both periods
- 0 2018–2021 and again 2022–2025
- Best backtest
- +12% MGC (Micro Gold), 5-minute chart: account growth 2018–2025
- Trade with the breakout instead of against it
- 0 tests made money in both periods, compared with 0 with the standard rules
The results
Results on every market
Each box shows one backtest of the FOMC day fade with the standard rules, from 2018 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 2018–2021 and 2022–2025, or passed all four of our checks (see "How a test passes" further down).
| Market | 5-minute | 15-minute |
|---|---|---|
| MNQ (Micro Nasdaq 100) | +3% Too few trades | −2% Too few trades |
| MES (Micro S&P 500) | −4% Too few trades | +5% Too few trades |
| MGC (Micro Gold) | +12% Too few trades | +0.9% Too few trades |
All the numbers, test by test
| Market | Chart | Trades | Win rate | Profit factor | Result | Max drawdown | 2018–2021 | 2022–2025 | Monte Carlo drawdown | Trading costs |
|---|---|---|---|---|---|---|---|---|---|---|
| MNQ (Micro Nasdaq 100) | 5-minute | 51 | 35.3% | 1.10 | +3.1% | −10.8% | −7.2% | +11.0% | −14.1% | $997 |
| MNQ (Micro Nasdaq 100) | 15-minute | 38 | 36.8% | 0.90 | −1.8% | −8.9% | −7.7% | +6.3% | −11.0% | $628 |
| MES (Micro S&P 500) | 5-minute | 53 | 35.8% | 0.88 | −3.8% | −14.7% | −13.7% | +11.4% | −17.3% | $1,905 |
| MES (Micro S&P 500) | 15-minute | 38 | 42.1% | 1.28 | +4.9% | −6.2% | −1.1% | +6.1% | −9.5% | $1,198 |
| MGC (Micro Gold) | 5-minute | 41 | 39% | 1.54 | +11.9% | −9.8% | −4.8% | +17.5% | −10.3% | $1,640 |
| MGC (Micro Gold) | 15-minute | 32 | 34.4% | 1.06 | +0.9% | −7.3% | −6.3% | +7.7% | −8.8% | $970 |
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. 2018–2021 and 2022–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 6 backtests show
With the standard rules (the rules under 'The rules we tested', with no changes), 4 of the 6 tests made money from 2018 to 2025, after trading costs. The $50,000 account grew by 11.9% on the MGC 5-minute chart, the best test, and fell by 3.8% on the MES 5-minute chart, the worst. FOMC days come only 8 times a year, so each test traded on just 32 to 53 of the 63 FOMC days. No test reached 100 trades, the minimum we ask for before we trust a result. With fewer trades, a small profit or loss can be luck. How the trades ended, adding up the 6 tests: 119 out of 253 trades hit the stop-loss, 98 of them within 30 minutes of opening. The other 134 were still open at 16:00, and 70.1% of those made money. So the stop-loss was usually hit soon after the entry, and a trade that lasted until 16:00 usually made money.
All of the profit came from 5 days. We measure results in R: 1R is 1% of the account at the time of the trade, about what a trade loses at its stop-loss. Adding up all 6 tests, the trades made +17.3R from 2018 to 2025. The 5 best FOMC days made +67.2R, and the other 56 FOMC days with a trade lost 50.0R. So without those 5 days, the fade lost money. The best day was 20 September 2023. On all three markets, price went above the range just after 14:30, closed back inside it, and then fell until 16:00. That day alone made +24.2R in the 6 tests. By period, all 6 tests lost money in 2018–2021 and made money in 2022–2023. In 2024–2025, the 4 MNQ and MES tests lost money, and the 2 MGC tests made money (see 'All of the profit came in 2022 and 2023' below).
Fading the same range on ordinary days lost money. As a check, we ran the same rules on every trading day from 2018 to 2025, about 2,000 days, FOMC days included. All 6 tests lost money: the account fell by 62.2% to 96.9%. Before trading costs, the trades were close to break-even: from about −$6 to +$3 per trade on average. The costs, $28,113 to $49,213 per test, made them lose. On ordinary days the range is smaller, so costs take a bigger share of each trade's risk. Per trade, FOMC days lost less or made more than the other days in all 6 tests. The table 'The same rules on every trading day lost money in all 6 tests' below shows each one.
We call the move from 14:00 to 14:30 the first move. Many traders say it usually reverses. In our data, it reversed about as often as on any other day: about half the time. On FOMC days, price went the other way from 14:30 to 16:00 on 44.4% to 54.0% of the days, depending on the market. On ordinary days, it went the other way on 46.5% to 49.4% of the days. The fade's signal was not special to FOMC days either. After the first breakout of the range, a 5-minute candle closed back inside it on 68.3% to 84.1% of FOMC days. On ordinary days, it did so on 82.0% to 86.7% of the days. The table 'The first move after the statement turned around about as often as on any other day' below shows each market.
Fade trades that opened before 15:00 did better than later ones in all 6 tests. Adding up the 6 tests, the 143 trades that opened before 15:00 made +0.31R each on average. The 110 trades that opened at 15:00 or later lost 0.24R each. One possible reason: a later trade has less time to move before 16:00, but its stop-loss can still be hit. We found this by looking at all the years, and we did not test a rule that stops trading at 15:00. So we can't say whether that rule would help.
Year by year
All of the profit came in 2022 and 2023
Each bar adds up the results of all the trades that opened in two calendar years, in all 6 tests with the standard rules, after trading costs. The results are in R, as in the findings: 1R is 1% of the account at the time of the trade. Don't read +61.4R as +61.4%: each bar adds up 6 separate accounts. Green bars made money in total; red bars lost money. Each bar covers two years, because some single years had fewer than 30 trades.
- 2018–201965 trades −28.9R
- 2020–202162 trades −13.0R
- 2022–202360 trades +61.4R
- 2024–202566 trades −2.3R
In 2022 and 2023, the Fed raised interest rates at 11 of its 16 meetings, by up to 0.75 percentage points at a time. On those 11 days, the trades made +43.8R. In 2018, the Fed raised rates at 4 of its 8 meetings, and on those 4 days the trades lost 7.8R. So a rate rise alone did not make the fade work. The 2022–2023 total also includes 20 September 2023, a meeting with no change in rates, when the trades made +24.2R.
FOMC days or every day
The same rules on every trading day lost money in all 6 tests
As a check, we ran the standard rules on every trading day from 2018 to 2025, not only on FOMC days. 'Every trading day' shows the % change in the account after trading costs, with the number of trades in brackets, and the trades' result in dollars before costs. The last two columns compare the average result per trade on FOMC days and on the other days, with the number of trades in brackets. They are in R, as in the findings: 1R is 1% of the account at the time of the trade.
| Market | Chart | Every trading day: result after costs | Every trading day: result before costs | FOMC days: average per trade | Other days: average per trade |
|---|---|---|---|---|---|
| MNQ | 5-minute | −84.6% (1,629) | −$2,961 | +0.074R (51) | −0.096R (1,592) |
| MNQ | 15-minute | −62.2% (1,383) | −$2,975 | −0.041R (38) | −0.054R (1,357) |
| MES | 5-minute | −94.3% (1,567) | +$1,148 | −0.060R (53) | −0.167R (1,532) |
| MES | 15-minute | −85.6% (1,336) | −$8,046 | +0.138R (38) | −0.136R (1,310) |
| MGC (micro gold) | 5-minute | −96.9% (1,392) | −$5,944 | +0.290R (41) | −0.241R (1,371) |
| MGC (micro gold) | 15-minute | −89.9% (1,263) | +$4,273 | +0.034R (32) | −0.173R (1,237) |
The FOMC-day averages come from the standard test, which trades only on FOMC days. The other-day averages come from the every-day test. In the every-day test the account shrank, so many trades used only a few contracts. Sizes are rounded down to whole contracts, so those trades often risked less than 1R. That moves the other-day averages closer to zero, so the gap between FOMC days and other days may be bigger than the table shows.
The first move
The first move after the statement turned around about as often as on any other day
Each row is one market, from 2018 to 2025. The first move is the change in price from 14:00 to 14:30 New York time. It turned around when price moved the other way from 14:30 to 16:00. The breakout columns count the days when price went past one side of the 14:00 to 14:30 range after 14:30. They show how often a 5-minute candle then closed back inside the range before 16:00, which is the fade's signal. The ranges are medians: on half of the days, the range was smaller.
| Market | Range 14:00 to 14:30, FOMC days | Range 14:00 to 14:30, other days | First move turned around, FOMC days | First move turned around, other days | Breakout closed back inside, FOMC days | Breakout closed back inside, other days |
|---|---|---|---|---|---|---|
| MNQ | 90.00 points | 36.25 points | 50.8% | 48.8% | 83.9% | 86.7% |
| MES | 20.75 points | 8.50 points | 54.0% | 46.5% | 84.1% | 86.0% |
| MGC (micro gold) | $11.60 | $2.30 | 44.4% | 49.4% | 68.3% | 82.0% |
There were 63 FOMC days and 1,930 other trading days with full prices from 14:00 to 16:00. After 14:30, price went past one side of the range on 62 FOMC days on MNQ, 63 on MES and 60 on MGC. On 1 more MGC day, the first breakout candle went past both sides of the range at once, so that day is left out. By 16:00, price was still past the side of that first breakout on 58.1% of those days on MNQ, 49.2% on MES and 65.0% on MGC. On the other days, it was 48.7% to 51.4%. So on MNQ and gold, the first breakout was still in place at 16:00 more often on FOMC days than on other days. These numbers come from the price data, not from the trades, so they include the days the strategy did not trade.
The strategy
What the FOMC day fade is
FOMC is the Federal Open Market Committee: the group in the US Federal Reserve (the Fed, the US central bank) that sets US interest rates. It meets 8 times a year on a fixed schedule. On the last day of each meeting, it publishes a statement with its decision at 14:00 New York time. Traders call that day FOMC day. At 14:30, the Fed chair (the head of the Fed) starts a press conference: a live question and answer session with reporters. Since 2019, there has been a press conference after every meeting. In 2018, there was one after only 4 of the 8 meetings. On FOMC days, stock index futures and gold often move much more than usual after 14:00. Many traders say the first move after the statement often reverses. To fade a move means to trade against it. This page tests one popular way to trade that idea. It marks the range of the first 30 minutes after the statement: the highest and the lowest price from 14:00 to 14:30. From 14:30, it waits for the first breakout of that range, and trades against it once a candle closes back inside the range. It does not fade the 14:00 move itself, so a trade can go in the same direction as that move. The stop-loss goes just past the furthest price the breakout reached, and the trade closes at 16:00. So every trade opens after 14:30, the time the press conference starts. 'The rules we tested' lists the exact rules. We tested it on MNQ (Micro Nasdaq 100) and MES (Micro S&P 500), which follow the same prices as NQ and ES. We also tested MGC (Micro Gold), which follows gold futures (GC). A micro contract makes or loses one tenth as much money per point as the full-size contract.
- FOMC days
- The 63 scheduled FOMC statements from 2018 to 2025: 8 a year, and 7 in 2020. All came out at 14:00 New York time. We checked each date and time in the BacktestingMax economic calendar. We left out the two emergency statements of March 2020 (see the questions at the end)
- Range
- 14:00 to 14:30 New York time, the 30 minutes after the statement. In UK time, the statement comes out at 19:00 for most of the year
- Breakout
- The first candle from 14:30 whose high goes above the range high, or whose low goes below the range low
- Entry
- Against the breakout, at the next candle's open, after a candle closes back inside the range before 16:00. On 2 of the 254 signals in the 6 tests, that candle closed even past the other side of the range. Those trades still opened
- Stop-loss
- 1 tick (the smallest price step) past the furthest price of the breakout: above its highest price for a sell, below its lowest price for a buy
- Take-profit
- None. A trade still open at 16:00 New York time closes then
- Trades per day
- 1 at most, on FOMC days only
- 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. A typical (median) trade used 6 MNQ, 8 or 9 MES, or 10 to 12 MGC contracts
- Days without a trade
- On 10 to 28 FOMC days per test, there was no signal: price did not break out of the range, or did not close back inside it before 16:00. On 3 to 6 FOMC days on the 15-minute charts, and on 1 day on the MGC 5-minute chart, the first breakout candle went past both sides of the range. Those days were skipped. The MNQ 5-minute test also skipped 1 May 2024, because 1 contract would have risked more than 1%
- Contracts
- MNQ, MES and MGC are the micro contracts of NQ, ES and GC (gold futures): the same prices at one tenth of the size. So a trade can risk close to 1% in whole contracts. We also tested YM (Dow) and RTY (Russell 2000), which have no micro contracts in our data. There, 1 contract often risked more than 1% of the account. On the 5-minute chart, YM skipped 16 of its 49 signals, and RTY 12 of 36. They traded on only 11 to 33 FOMC days, too few to judge, so they are not in the results. Our RTY data starts in 2020
- Fills
- A trade opens at the next candle's open after the signal. The stop-loss fills at its price, or at a candle's open if price opens past it. A trade still open at 16:00 closes at the open of the 16:00 candle. After the statement, price can jump past a stop-loss: 27 of the 119 stop-loss exits lost more than 1.1R. In the take-profit version (under 'Can the FOMC day fade be improved?'), the take-profit fills at its exact price. When price reaches the stop-loss and the take-profit in the same candle, the backtest looks at the 1-minute candles inside it to see which came first. If both are in the same 1-minute candle, the backtest counts the stop-loss
- Price data
- BacktestingMax's futures data. 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 and roll (the switch from one contract month to the next). It is not exchange data. The stop-loss sits just 1 tick past the breakout's furthest price, so small differences between our prices and exchange prices can change whether a stop is hit. Before mid-2018, our index prices can stop updating outside US stock market hours. Every trade here was between 14:35 and 16:00 New York time, and we checked that prices moved normally then on the 2018 FOMC days
- 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 and $1 on MGC. A trade pays half the spread when it opens and half when it closes. There is also a commission (the broker's fee) of $0.62 per contract when a trade opens and again when it closes. In the take-profit version, a trade that closes at the take-profit pays no spread when it closes. We added no slippage (a fill at a worse price than the order) beyond the spread. On FOMC days, real stop-loss fills are often worse, so real results could be lower than this backtest. With the standard rules, the costs were $628 to $1,905 per test from 2018 to 2025
The rules we tested
- All times are New York time. Trade only on FOMC days: the 8 days a year with a scheduled FOMC statement at 14:00. We took the dates from the BacktestingMax economic calendar: 63 days from 2018 to 2025.
- Mark the range: the highest and the lowest price from 14:00 to 14:30. On the 5-minute chart, that is the 6 candles from 14:00 to 14:30. On the 15-minute chart, it is 2 candles.
- From 14:30, wait for the first breakout: the first candle that goes above the range high or below the range low. A wick past the range is enough: the candle's high or low only has to go past the range, and the candle does not have to close there. If that first breakout candle goes past both sides of the range, skip the day.
- After a breakout above the range, sell (go short: sell first, to profit if price falls) when a candle closes back below the range high. After a breakout below the range, buy when a candle closes back above the range low. This signal candle can be the breakout candle itself. The trade opens at the next candle's open.
- Put the stop-loss 1 tick past the furthest price the breakout reached, from the breakout candle to the signal candle. For a sell, that is 1 tick above the highest price. For a buy, it is 1 tick below the lowest price. A tick is the smallest price step: 0.25 points on MNQ and MES, and $0.10 on MGC.
- There is no take-profit. If the trade is still open at 16:00, close it then.
- Trade once a day at most. If price does not close back inside the range before 16:00, there is no trade that day.
- Size every trade so that a loss at the stop-loss costs 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) and MGC (Micro Gold)
- Charts
- 5-minute and 15-minute candles
- Dates
- January 2018 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 2018 to 2021 and again from 2022 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 2022 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 FOMC day fade be improved?
We tried three changes that FOMC day traders often make, one at a time, on the same 6 tests. The first adds a take-profit at the other side of the range. The second counts a breakout only when a candle closes past the range, not when only a wick goes past it. The third trades with the first breakout instead of against it. 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 2018–2021 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 2022–2025, the years we did not use to pick it.
| Version | Made money 2018–2021years used to pick the best version | Made money 2022–2025years not used to pick it | Made money in both periods | Passed all four checks |
|---|---|---|---|---|
| Standard rules The rules under 'The rules we tested': trade against the first breakout of the 14:00 to 14:30 range once a candle closes back inside it. The stop-loss is 1 tick past the breakout's furthest price, and the trade closes at 16:00. | 0 of 6middle test −6.8% | 6 of 6middle test +9.3% | 0 | 0 |
| With a take-profit at the other side of the range Close the trade when price reaches the other side of the 14:00 to 14:30 range: the range low for a sell, the range high for a buy. A trade that doesn't get there still ends at the stop-loss or at 16:00. If the signal candle (the candle that closed back inside the range) has already closed past that level, there is no trade that day. | 0 of 6middle test −6.5% | 4 of 6middle test +2.3% | 0 | 0 |
| Breakout only on a candle close past the range A breakout counts only when a candle closes past the range. A wick past it is not enough. After that, wait for a later candle to close back inside the range, then trade against the breakout as in the standard rules. | 3 of 6middle test +0.6% | 3 of 6middle test +1.6% | 0 | 0 |
| Trade with the breakout instead of against itBest on 2018–2021 From 14:30, buy when a candle first closes above the range, and sell when one first closes below it. The trade opens at the next candle's open. The stop-loss is 1 tick past the other side of the range: below the range low for a buy, above the range high for a sell. The trade closes at 16:00. | 4 of 6middle test +0.8% | 3 of 6middle test +0.5% | 0 | 0 |
In the table, and in the card at the top of the page, 'Made money in both periods' shows 0 for every version. That is because it counts only tests with at least 100 trades. No change clearly did better, and every version had too few trades to judge. On 2018–2021, the years we used to pick, trading with the breakout did best. It made money in 4 of 6 tests, compared with 0 of 6 with the standard rules. On 2022–2025, the years we kept for the check, it made money in 3 of 6 tests, compared with 6 of 6 with the standard rules. The middle test was +0.5% with the change and +9.3% with the standard rules. From 2018 to 2025, the tests that trade with the breakout ended between −2.9% and +7.1%. Their stop-loss is past the other side of the range, far from the entry. So the stop-loss was hit on only 51 out of 329 trades, and most trades ended at 16:00 with a small gain or loss. Counting all tests, trading with the breakout made money in both periods in 2: MNQ on the 15-minute chart and MGC on the 5-minute chart. With the standard rules, none did. Counting a breakout only on a candle close made money in 4 of 6 tests from 2018 to 2025. It made money in both periods in 2 tests: MNQ and MES on the 5-minute chart. But on the 15-minute charts, it traded on only 13 to 24 FOMC days. The take-profit at the other side of the range made money in 2 of 6 tests. It took profit long before the biggest moves ended. On 20 September 2023, it made +8.2R in the 6 tests, compared with +24.2R with the standard rules.
Questions
Questions traders ask
Does the FOMC day fade strategy work?
Not reliably, in our backtest. FOMC days are the 8 days a year when the US Federal Reserve announces its interest rate decision, at 14:00 New York time. On those days, the fade marks the range from 14:00 to 14:30. It trades against the first breakout of that range once a candle closes back inside it. The stop-loss is just past the breakout's furthest price, and the trade closes at 16:00. We tested it on MNQ, MES and MGC (micro Nasdaq 100, S&P 500 and gold futures), each on 5-minute and 15-minute charts. The tests covered all 63 scheduled FOMC days from 2018 to 2025. After trading costs, 4 of the 6 tests made money, from +0.9% to +11.9% on a $50,000 account, and 2 lost money. Each test had only 32 to 53 trades. Adding up the 6 tests, all of the profit came from the 5 best FOMC days. All 6 tests lost money in 2018–2021, and the MNQ and MES tests lost money again in 2024–2025.
How does NQ move on FOMC day?
Much more than usual from 14:00, when the statement comes out. Traders call this volatility: how far price moves. We used MNQ, which follows the same prices as NQ at one tenth of the size. From 2018 to 2025, the range from 14:00 to 14:30 was 90.00 points on a typical (median) FOMC day. That is about 2.5 times the 36.25 points on other days. In the 30 minutes before the statement, the range was a little smaller than usual: 30.75 points, compared with 34.00. After 14:30, price went past the 14:00 to 14:30 range on 62 of the 63 FOMC days. From 14:30 to 16:00, price went the other way from the first 30 minutes on 50.8% of FOMC days. So the first move was no guide to the rest of the afternoon. In our backtest from 2018 to 2025, after trading costs, fading the first breakout made +3.1% on the MNQ 5-minute chart and lost 1.8% on the 15-minute chart.
Should you fade or follow the FOMC breakout?
Neither did clearly better in our backtest. Fading means trading against the first breakout of the 14:00 to 14:30 range, once a candle closes back inside the range. Following means trading with it: buy when a candle first closes above the range, or sell when a candle first closes below it. The stop-loss goes past the other side of the range. From 2018 to 2025, after trading costs, following made money in 4 of 6 tests (−2.9% to +7.1%), and fading in 4 of 6 (−3.8% to +11.9%). In 2018–2021, following made money in 4 of 6 tests and fading in none. In 2022–2025, fading made money in all 6 and following in 3. So which one did better depended on the years, and both had too few trades to judge.
What time is the FOMC announcement?
The FOMC statement comes out at 14:00 New York time on the last day of each scheduled meeting. In UK time, that is 19:00 for most of the year. The Fed chair's press conference starts at 14:30. There are 8 scheduled meetings a year, and the Fed publishes their dates in advance. In 2020 there were 7, because the Fed held its March meeting early, as an emergency meeting. We took the dates from the BacktestingMax economic calendar: 63 scheduled statements from 2018 to 2025, all at 14:00. In March 2020, the Fed made two emergency statements outside the schedule. One came on Tuesday 3 March at 10:00, and one on Sunday 15 March at 17:00, before the futures market opened. We left both out, because the strategy needs a scheduled 14:00 statement: it marks the range from 14:00 to 14:30 and trades after that. The FOMC minutes, a written record of each meeting, also come out at 14:00, three weeks later. Those are not decision days, and we did not trade them.
Keep exploring
Related strategies we tested
Seasonal & calendar NFP day breakout backtest on NQ, ES and gold futures Made money in 0 of 6 tests, 0 of them in both periods. Best: MES (Micro S&P 500), 5-minute, +3%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 FomcDayFade(Strategy):
"""FOMC day fade on US futures: on the days the Federal Reserve announces its interest
rate decision, trade against the first break of the 30 minutes after the statement.
All times are New York time (daylight saving included). The FOMC (the Federal Open
Market Committee, the Fed's rate-setting committee) meets 8 times a year on a fixed
schedule. It publishes its statement at 14:00 on the last day of each meeting, and the
Fed chair's press conference starts at 14:30.
FOMC days: the scheduled statements in the BacktestingMax economic calendar, all at
14:00 New York. The two unscheduled (emergency) statements of 2020 are left out: Tuesday
3 March at 10:00 and Sunday 15 March at 17:00, when the futures market was closed.
Standard (all switches off):
1. Trade only on FOMC days.
2. The range: the highest and the lowest price of the candles from 14:00 to 14:30
(6 candles on the 5-minute chart, 2 on the 15-minute chart).
3. From 14:30, the first break is the first candle that trades above the range high
or below the range low. If that candle trades past both sides, skip the day.
4. After a break above, sell when a candle closes back below the range high. After a
break below, buy when a candle closes back above the range low. The break candle
itself can be that candle. The trade opens at the next candle's open.
5. Stop-loss 1 tick beyond the break extreme: the highest price since the break for a
sell, the lowest price since the break for a buy.
6. No take-profit. A trade still open at 16:00 closes then.
7. One trade a day at most. If price does not close back inside the range before
16:00, there is no trade that day.
8. Size every trade so that 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:
target = 1 take profit at the other side of the range (the range low for a
sell, the range high for a buy); if the signal candle has already
closed past it, no trade that day
close_break = 1 a break counts only when a candle closes past the range (a wick
past it is not enough); then wait for a close back inside
follow = 1 trade with the first break instead of against it: buy when a candle
first closes above the range, sell when one first closes below it;
stop-loss 1 tick beyond the other side of the range
every_day = 1 a check, not a change: the same rules on every trading day, to
compare FOMC days with ordinary days
"""
params = {"range_minutes": Param(type=int, default=30, min=5, max=90),
"target": Param(type=int, default=0, min=0, max=1),
"close_break": Param(type=int, default=0, min=0, max=1),
"follow": Param(type=int, default=0, min=0, max=1),
"every_day": Param(type=int, default=0, min=0, max=1)}
lookback = 2
statement = 840 # 14:00 New York, in minutes after midnight
exit_time = 960 # 16:00 New York
# FOMC statement days (14:00 New York), from the BacktestingMax economic calendar.
fomc_days = (
"2018-01-31 2018-03-21 2018-05-02 2018-06-13 2018-08-01 2018-09-26 2018-11-08 2018-12-19 "
"2019-01-30 2019-03-20 2019-05-01 2019-06-19 2019-07-31 2019-09-18 2019-10-30 2019-12-11 "
"2020-01-29 2020-04-29 2020-06-10 2020-07-29 2020-09-16 2020-11-05 2020-12-16 "
"2021-01-27 2021-03-17 2021-04-28 2021-06-16 2021-07-28 2021-09-22 2021-11-03 2021-12-15 "
"2022-01-26 2022-03-16 2022-05-04 2022-06-15 2022-07-27 2022-09-21 2022-11-02 2022-12-14 "
"2023-02-01 2023-03-22 2023-05-03 2023-06-14 2023-07-26 2023-09-20 2023-11-01 2023-12-13 "
"2024-01-31 2024-03-20 2024-05-01 2024-06-12 2024-07-31 2024-09-18 2024-11-07 2024-12-18 "
"2025-01-29 2025-03-19 2025-05-07 2025-06-18 2025-07-30 2025-09-17 2025-10-29 2025-12-10 "
"2026-01-28 2026-03-18 2026-04-29 2026-06-17 2026-07-29 2026-09-16 2026-10-28")
# every_day only: days the New York Stock Exchange is closed or closes early (13:00).
closed_days = (
"2018-01-01 2018-01-15 2018-02-19 2018-03-30 2018-05-28 2018-07-03 2018-07-04 2018-09-03 "
"2018-11-22 2018-11-23 2018-12-05 2018-12-24 2018-12-25 "
"2019-01-01 2019-01-21 2019-02-18 2019-04-19 2019-05-27 2019-07-03 2019-07-04 2019-09-02 "
"2019-11-28 2019-11-29 2019-12-24 2019-12-25 "
"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.ny = ctx.clock("America/New_York")
self.fomc = set(self.fomc_days.split())
self.no_trading = set(self.closed_days.split())
self.day = None
self.high = None # the range high (14:00 to 14:30)
self.low = None # the range low
self.count = 0 # candles in the range so far
self.side = 0 # the first break: 1 above the range, -1 below it
self.extreme = None # the highest (or lowest) price since the break
self.done = True # True once today's trade is placed, or the day can't trade
self.trade_day = 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
range_end = self.statement + ctx.params.range_minutes
if self.ny.date != self.day: # a new day: forget yesterday's range
self.day = self.ny.date
self.high = self.low = None
self.count = 0
self.side = 0
self.extreme = None
if ctx.params.every_day == 1:
self.done = self.ny.weekday >= 5 or self.day in self.no_trading
else:
self.done = self.day not in self.fomc
if ctx.position is not None:
if end >= self.exit_time or self.ny.date != self.trade_day:
ctx.close_position() # fills at the 16:00 candle's open
return
if self.done:
return
# The range: the candles that open from 14:00 to 14:30.
if self.statement <= start < range_end:
self.high = ctx.high[0] if self.high is None else max(self.high, ctx.high[0])
self.low = ctx.low[0] if self.low is None else min(self.low, ctx.low[0])
self.count += 1
return
if start < range_end:
return
if end >= self.exit_time: # no signal from the candle that ends at 16:00
self.done = True
return
full = self.count * ctx.timeframe_minutes == ctx.params.range_minutes
if not ctx.gate("full_range", full and self.high is not None and self.high > self.low):
self.done = True
return
close = ctx.close[0]
tick = ctx.pip_size
if ctx.params.follow == 1:
# Trade with the break: the first close past the range.
up, down = close > self.high, close < self.low
if not ctx.gate("close_past_range", up or down):
return
self.done = True
stop = self.low - tick if up else self.high + tick
self.enter(ctx, 1 if up else -1, stop, None)
return
# The first break of the range.
if self.side == 0:
if ctx.params.close_break == 1:
up, down = close > self.high, close < self.low
else:
up, down = ctx.high[0] > self.high, ctx.low[0] < self.low
if not ctx.gate("range_broken", up or down):
return
if not ctx.gate("one_side_broken", not (up and down)):
self.done = True # one candle went past both sides
return
self.side = 1 if up else -1
self.extreme = ctx.high[0] if up else ctx.low[0]
elif self.side > 0:
self.extreme = max(self.extreme, ctx.high[0])
else:
self.extreme = min(self.extreme, ctx.low[0])
# Fade the break once a candle closes back inside the range.
back = close < self.high if self.side > 0 else close > self.low
if not ctx.gate("closed_back_inside", back):
return
self.done = True # one trade a day: this is it
if self.side > 0:
stop = self.extreme + tick
target = self.low if ctx.params.target == 1 else None
if target is not None and not ctx.gate("target_still_ahead", close > target):
return
self.enter(ctx, -1, stop, target)
else:
stop = self.extreme - tick
target = self.high if ctx.params.target == 1 else None
if target is not None and not ctx.gate("target_still_ahead", close < target):
return
self.enter(ctx, 1, stop, target)
def enter(self, ctx, direction, stop, target):
size = ctx.size_by_risk_pct(0.01, stop=stop, entry=ctx.close[0])
if not ctx.gate("one_contract_fits_1pct_risk", size > 0):
return # one contract would risk more than 1%
self.trade_day = self.day
if direction > 0:
ctx.buy(size=size, sl=stop, tp=target, tag="fomc_long")
else:
ctx.sell(size=size, sl=stop, tp=target, tag="fomc_short")
Your turn
Test the FOMC day fade yourself
Change the settings, the market or the stop-loss and see the result in seconds. Ask the BacktestingMax AI: Backtest the FOMC day fade on MGC 5-minute charts: on FOMC days, mark the 14:00 to 14:30 New York range, trade against the first breakout once a candle closes back inside it, stop-loss 1 tick past the breakout's extreme, close at 16:00, risk 1% per trade
.
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.