Nitro CRT (A re-break) · Strategy & parameters
What was backtested, with which code and parameters, what it returned, and what v2 adds. Dev site only.
← Nitro Trades (trader page)SMT All-in-One + Roman Essentials v0.1 · NinjaTrader 8 template · not yet compiled in NT8
1Name
Nitro CRT (A re-break), version 1, as backtested (setup NITRO_CRT_A_REBREAK).
2Code base used
- SMT All-in-One + Roman Essentials v0.1 (294 params). The Nitro CRT plugin v1 is entry-only; Roman Essentials is the order manager (size, stops, exits, caps).
- Honesty line: the v1 backtest used a simplified Roman-style order-management stand-in (a one-shot stop/target simulation inside the backtest script), not the full Essentials stack.
- Version refs (
/workspace/smt-python/VERSION_LOG.md): SMT_AllinOne + Roman v0.1 (2026-09-25, full Essentials bagessentials_params_full.json, 294 rows); Roman Essentials HOST (Python) v0.1 (2026-09-24); Nitro Trades CRT plugin v1 (2026-09-24,entry_plugins/nitro_crt_v1/); CRT plugin v2 Milestone 1 (crt_v2_m1, incomplete, 2026-10-01). - Backtest script:
/workspace/nitro-setups/backtests/run_nitro_crt_a_rebreak_bt.py(fixed engine of 2026-09-29; the copy used for the clean run is byte-identical).
3Parameters as coded
Each row checked against the backtest script; code names shown where one exists.
| Rule | As coded | Code param |
|---|---|---|
| Setup | Two back-to-back 5m bars on the same day (C1, C2). C2 trades beyond C1's high or low (the sweep) and closes back inside C1's range (no tolerance). If C2 swept both sides (outside bar), the direction comes from the 15m trend. | c2_edge_tol_frac = 0.0 (5m resample) |
| Trend filter | 15m EMA20 vs EMA50 must agree with the direction: long only if EMA20 > EMA50, short only if EMA20 < EMA50. Read from the last completed 15m bar at C2's close. | bias_mode = "ema20_50" |
| Entry | After C2, a later 5m bar must pull back past C2's body midpoint, (open + close) / 2. Entry is the first 5m close beyond C2's other extreme, filled at that bar's close. The setup is cancelled if a 5m bar closes beyond the sweep extreme first. | ENTRY_TF = "5m" |
| Window | Entries 09:30–12:00 ET: the 5m entry bar must start at or after 09:30 and before 12:00. | SESSION_START = 09:30, SESSION_END = 12:00 |
| Max entries | 2 per stock per day, and only one open position at a time per stock. | MAX_TRADES_PER_DAY = 2 (max_per_day) |
| Stop | Beyond the sweep extreme. Minimum distance (stocks) = max($0.05, 0.05% of price); NQ = 5 points. The stop must be at least that minimum from entry and at least 10% of the minimum beyond the sweep extreme, whichever is further. | MIN_STOP_STOCK_ABS = 0.05, MIN_STOP_STOCK_PCT = 0.0005, MIN_STOP_NQ_POINTS = 5.0, buffer msd × 0.1 |
| Target | C1's opposite extreme. Skip the trade if reward / risk < 0.5 (no fallback target). | MIN_RR = 0.5, rr_fallback_R = None |
| Exit | First 1m bar (from the fill) that touches the stop or the target; stop wins if both are touched in the same bar. If a 1m bar opens through a level, the fill is at that open. Otherwise flat at 16:00 ET (the close of the 15:59 1m bar). | eod_flat = 16:00, stop_gap_fill_open = True |
| Sizing | $1M sleeve per stock, 0.5% of current sleeve equity risked per trade (whole shares, rounded down), compounding. PnL is net of commission ($0.005/share/side, $1.00 min per side; NQ $2.50/contract/side). | STARTING_EQUITY = 1,000,000, RISK_PCT = 0.005 |
4Latest result (clean data, 10 stocks)
Verdict: no edge yet.
AAPL, AMD, AMZN, GOOGL, META, MSFT, NVDA, QQQ, SPY, TSLA · 2026-03-12 → 2026-09-11 · net of commission. Winners average +0.79R, losers −1.01R, so break-even needs 56.1% wins; actual is 53.5%. The forensic review replays all 370 trades exactly; the loss itself is not statistically significant (bootstrap PF 95% CI 0.73–1.12): best reading is no edge, breakeven-to-negative before slippage.
Source: /workspace/smt-python/results/nitro_crt_weekly_clean_2026-10-01/compare_summary.json (clean_fixed_runner, STOCKS_COMBINED) and forensic/FORENSIC_REPORT.md. Break-even WR recomputed from the 370 trade rows (56.1%).
5v2 roadmap
The 13 micro-features from Nitro Trades’ “The only CRT video you’ll ever need” (nRIqZwma9xM). Statuses follow /workspace/smt-python/entry_plugins/nitro_crt_v2/BUILD_PLAN.md (written 2026-10-01).
| # | Feature | Status | Note |
|---|---|---|---|
| 1 | Clock-aligned 15m/30m/1H CRT (ET grid, 1H on the CME clock hour) | Done · M1 | |
| 2 | First-formed CRT across TFs (tie → lowest TF) | Done · M1 | |
| 3 | 1H pivot sweep + reversal bias; optional 1H OB rejection | M2 · params only | BUILD_PLAN: “params only” (M2 is next; not coded yet) |
| 4 | First 1m break of bar 2's far side | Done · M1 | |
| 5 | Break-then-retest mode | M2 · params only | Selecting it raises NotImplementedError until built |
| 6 | Stop built back from target at 1.5R | Done · M1 | Pulled forward into M1 (stop_hint is mandatory) |
| 7 | One CRT/day, counted from the first formed | Done · M1 | |
| 8 | News/FOMC filter incl. no-news Mondays | M2 · partial | BUILD_PLAN: FOMC day file built; CPI/NFP list not sourced yet |
| 9 | MNQ + MES + MGC watched, one trade total | M3 · mapping done | BUILD_PLAN: Essentials one-trade mapping done; router not built |
| 10 | 1m chop filter | M2 · params only | |
| 11 | BE only near target (hint to Roman) | M3 · params only | Needs Essentials support (gap G2); BE stays off |
| 12 | Micro specs: MNQ $2, MES $5, MGC $10 per point | Done · M1 | Verified vs CME: ticks MNQ 0.25 ($0.50), MES 0.25 ($1.25), MGC 0.10 ($1.00) |
| 13 | Integration into the plugin | Ongoing · M1 → M3 | BUILD_PLAN: M1 skeleton done |
M1 smoke: NQ run as 1 MNQ, 187 trades, PF 0.78, −$2,017 (conservative entry-bar policy; next-bar policy PF 0.88, −$1,018). Incomplete milestone (no bias, no calendar filter): not a verdict.
Source: entry_plugins/nitro_crt_v2/results/m1_smoke_nq_as_mnq_2026-10-01_PC2/RESULTS.md (PF 0.776, net −$2,017.00; 2025-07-01 → 2026-09-09; no commission or slippage).