# Forward test: NQ MACD + RSI with a 200 EMA filter, MRE-15-1.5R, protocol v1.0

**Frozen 27 October 2026 (draft 1, approved by the owner the same day).** Nothing below may change during the test.

**One-line summary:** a pre-registered forward test of the MACD + RSI crossover with a 200 EMA trend filter that came closest on NQ (5-minute bars; the trend from the last completed 15-minute bar against its 200 EMA; a MACD (12, 26, 9) cross with RSI(14) above 50 for a buy, below 50 for a sell; a stop one tick beyond the nearest 5-minute swing; a 1.5R target; out at the session close). The record is a **paper series**: the frozen rule, computed by the backtest's own code on new 1-minute data as it comes in, month by month, with the backtest's costs. No orders are placed.

**Start:** the regular session of **Monday 2 November 2026 (09:30 New York)**, provided this protocol is published on the site before that time; otherwise the first Monday session after it is published, written here before any forward trade is computed. Nothing before the start counts.

## 1. What this test is, and what it is not

- **A forward evaluation, not a second backtest.** The historical test ([MACD + RSI on NQ](/posts/macd-rsi-200-ema-strategy-nq/)) gave **Buried, 4 of 6 gates**: it beat every one of 500 random-day controls and stayed positive without its 10 best trades, but failed the validation profit factor (1.10 against 1.2) and the development t-statistic (2.30 against 2.5); the 2025-2026 holdout, already used, was flat (+$278). Its verdict does not change; this is a separate record on data that did not exist when the rule was tested.
- **Why this variant:** of the four versions, the one with the most gates and the highest control percentile, **chosen after seeing the results**. A positive forward result is therefore modest evidence, and that is stated wherever the test is reported.
- **Two known weaknesses, written now:** about **two thirds of the historical profit came from 2022**, a year of long trends (without 2022: about +$27 a trade); and most of the difference between winning and losing signals came from the **200 EMA filter**, not from the MACD and RSI. A forward record in a year without strong trends may well be flat.
- **A paper record, not trading.** Fills are the backtest's assumed fills (the next minute's open; stops and targets at their level or a minute's open beyond it) and costs are the backtest's ($15.76 per round trip per contract). It says nothing about real slippage beyond one tick per fill.
- **Historical figures** (3 February 2020 to 25 September 2026, one NQ contract, after costs): 2,433 trades, about 366 a year (1.4 a session), mean **+$65 a trade**, standard deviation $1,711, win rate 46.3%, longest losing streak 13 trades, worst trade -$10,276, best +$7,514.
- **It cannot confirm the edge quickly.** The mean is small next to the spread of single trades:

| Closed trades | About (years) | 95% interval half-width on the mean | Chance of t of 2 or more if the true mean is +$65 | If the true mean is half of that |
|---|---|---|---|---|
| 300 | 0.8 | $194 | 9% | 5% |
| 600 | 1.6 | $137 | 14% | 6% |
| 900 | 2.5 | $112 | 19% | 8% |

## 2. The rule (frozen; nothing here may change during the test)

- **Market:** NQ (E-mini Nasdaq-100 futures, $20 a point, tick 0.25), NinjaTrader 1-minute history exported by the owner with `FuturesDataExporter.cs` (front contract, global merge policy "Merge back adjusted", Last, instrument trading hours, **overnight session included**), New York clock, bars stamped at their close; the exchange calendar of `rb_lib.sessionClose`.
- **Bars and indicators:** continuous 5-minute and 15-minute bars including the overnight session; EMA 200 of the 15-minute closes; MACD (12, 26, 9) and RSI(14, Wilder) of the 5-minute closes; all as in `mre_spec.md` (frozen 26 October 2026) and the readings at the top of `mre_lib.js`. The back-adjustment shifts all earlier prices by a constant at each roll; every indicator comparison and every dollar result is unchanged by such a shift.
- **Trend:** the close of the last completed 15-minute bar above its EMA 200 (long) or below it (short).
- **Signal:** at the close of a 5-minute bar stamped 09:35 to 15:30 (or up to 30 minutes before an early close) on a usable day: the MACD line crosses above its signal line with RSI above 50 and the trend long (a short mirrored).
- **Entry:** the open of the next minute, in the session. **Stop:** one tick beyond the most recent 5-minute swing (2 bars on each side) of the last 48 bars that is beyond the signal bar's close; none, or an entry at or beyond the stop: no trade. **Target:** 1.5 times the risk. Stop first, then target, on every minute from the entry; otherwise out at the close of the last in-session minute. One position at a time; several trades a day.
- **Costs and units:** $15.76 per round trip per contract; results in dollars per contract and in R (entry to stop).

## 3. How the series is computed

- **Code:** the backtest's engine, unchanged: `mre_lib.js` (SHA-256 3c1c19aabf6744e010d5788a83690a4a8975fcc9671696ef84f5c315eee03889), with `rb_lib.js` (20b1be79cb731804ef1a924d57da311bbd3ad0e8d0e0489d5aa2f520ebb44b12), `em_lib.js` (467a245ebb2bef9f17ae34893f1aefe512fc7cdd47a85694f4f2fa16c74821bf), `gh_lib.js` (7b5dcb7710893735485ae9614d90cef7533e43cf35680ff4ba1914c8160c6597), `control_audit_lib.js` (726e8a9bdd73a2401cafb90724753c841d541479114ae850b3832ebd7d9a5d38). The data are read **without the cut of the historical study** (that cut only fixed the end of the backtest), by a small forward script that only loads the minutes and calls the engine's `buildDays` and `simulate` for MRE-15-1.5R, keeping the trades whose entry is at or after the start. Any change to the engine makes a new test.
- **Data:** each month, in the first week, with the NQ export already used by the other NQ forward records; the file is kept with its date, its SHA-256 and last bar are recorded, and **the whole forward window is recomputed**. **Check:** every earlier forward trade must reproduce in entry and exit time and in dollar result; prices may differ by a constant after a roll, nothing else may. Any other difference is published and explained.
- **Holes:** the rules of the NQ hole finder applied to the forward window; never filled; trades whose span from 120 minutes before the entry to the exit touches a hole are counted, and every result is also reported without them.

## 4. Records and reporting

- **Per trade:** date, signal bar, direction, entry, stop, target, exit time and price, reason, result in dollars and in R, whether it touched a hole.
- **Monthly update** (the first in the first week of December 2026, with the November data): the trades of the month and of the whole window, mean per trade, profit factor, win rate, drawdown on closed trades, the file's hash, last bar and holes, and the reproduction check. Months with no trades are reported too. The site's forward-test page shows the record.

## 5. Evaluation (fixed now)

- **Formal evaluations at 300, 600 and 900 closed trades** (about 0.8, 1.6 and 2.5 years). Updates before them are descriptive only.
- **Primary measure:** mean net dollars per trade with its standard error and 95% interval (t critical value, n - 1 degrees of freedom), profit factor, win rate, drawdown.
- **Verdict at an evaluation point:** **Contradicted** if the mean is zero or negative or the profit factor is below 1.0; **Not contradicted** if the mean is positive, the profit factor at least 1.0 and the interval includes zero ("keep going", not "confirmed"); **Supported** only if the lower end of the interval is above zero. The verdict is also reported without the trades touching holes; if that changes it, the verdict is reported as inconclusive for that reason.
- **Control:** the historical test's moved-trade control on the forward window (every trade moved by one random offset of whole usable days, at least 5% of the window, entered at the open of the first minute at or after the same time, same direction, stop distance and target multiple; 500 runs, seeds 1000 + run), reported as a percentile beside the verdict, not as a gate.
- **Also reported, descriptive:** the result split by the trend filter's direction and by year, so the reliance on trending periods stays visible.
- Criteria are not changed after results are seen. No edge is declared from a few good months.

## 6. Modifications

Any change to the rule, the settings, the timeframe, the symbol, the data source, the costs, the engine or these criteria is a separate test with its own protocol and start date. Results are never merged across tests.
