# MIROSCOPE VARIANT BACKTESTS — REPORT
Date: 2026-09-25. Dataset: `backtest/data/eurusd-h1.csv` (10,605 H1 bars,
2025-01-01 to 2026-09-22 UTC). Engine: `variants/run_variants.py` (stdlib only,
deterministic). Plan and mechanization choices: `variants/PLAN.md`.
Accounting (all runs): $10,000 start, 1% risk per setup, R-multiple accounting,
no spread/commission/slippage (same as the Phase 4 baseline, for comparability).

## TOP LINE (plain language)
No variant beats the baseline convincingly. V3 (RSI divergence) has the best
numbers (+0.635R expectancy, profit factor 5.13) but only 13 trades, which is too
few to trust. V11 (moving-average origin) is marginally profitable on 23 trades
(+0.068R, PF 1.12), also too few to trust. V4 is near breakeven. V2, V5, V9 lose.
V1a, V1b, and V7 produce almost no trades at all: their filter stacks are so
strict they barely trigger on 20 months of data. The M15 variants (6, 8, 10) were
not tested and not faked: no M15 data exists here.

## RESULTS TABLE (ranked by expectancy, then profit factor)

| Rank | Run | Variant | n | Win% | PF | Exp(R) | MaxDD% | Ret% |
|------|-----|---------|---|------|----|--------|--------|------|
| 1 | V3 | RSI-divergence 1-2-3 (13-17 UTC) | 13 | 84.6 | 5.13 | +0.635 | 1.0 | +8.25 |
| 2 | V7 | Trader's Trick entry (07-17 UTC) | 3 | 66.7 | 1.55 | +0.183 | 1.0 | +0.55 |
| 3 | V11 | MA-origin 1-2-3 (07-17 UTC) | 23 | 39.1 | 1.12 | +0.068 | 7.2 | +1.55 |
| 4 | V4 | Neckline break + retest (07-17 UTC) | 24 | 45.8 | 0.94 | -0.029 | 4.2 | -0.69 |
| 5 | V5 | Ross Hook continuation (07-17 UTC) | 16 | 37.5 | 0.89 | -0.068 | 4.9 | -1.09 |
| 6 | V2 | 60-MA channel (07-17 UTC) | 24 | 50.0 | 0.79 | -0.088 | 4.6 | -2.10 |
| — | — | **Phase 4 baseline** | 100 | 31.0 | 0.78 | -0.139 | 27.6 | -13.82 |
| 7 | V9 | 50% pullback continuation (07-17 UTC) | 10 | 30.0 | 0.40 | -0.396 | 4.7 | -3.96 |
| — | V1a | Classic 38.2-61.8% (07-11 UTC) | 1 | 100.0 | inf | +2.250 | 0.0 | +2.25 |
| — | V1b | Classic 38.2-61.8% (13-17 UTC) | 1 | 0.0 | 0.00 | -1.000 | 1.0 | -1.00 |

(V1a/V1b excluded from ranking: a single trade each is not a test.)

## PER-VARIANT NOTES
- **V3** — 13 trades, 11 wins. Winners cluster in EURUSD's 2025 rally; the 18-bar
  live-trade expiry closing drift-profitable trades does heavy lifting (7 of 13
  closed at expiry with profit). Mechanics verified (no lookahead; pivots confirmed
  2 bars late; stops fill on later bars; accounting unit-tested). Verdict:
  interesting, NOT convincing. Would need out-of-sample data (more pairs, more years)
  before anyone acts on it.
- **V7** — 3 trades. The correcting-bar-within-3-bars + 1.0R-to-P2 + slope + RSI +
  ATR stack almost never fires. Verdict: untestable as specified.
- **V11** — 23 trades, marginally positive. Two full-target winners (+2.25R each:
  0.5*1.5 + 0.25*2.5 + 0.25*3.5, math verified) carry the result; 12 of 23 took the
  full -1R stop. Verdict: marginally positive, not convincing at n=23.
- **V4** — 24 trades, near breakeven (PF 0.94). The retest entry does not fix the
  baseline's problem. Verdict: no edge found.
- **V5** — 16 trades, negative. The Ross Hook continuation as mechanized (first
  post-breakout pivot high, hook <= 5 bars, <= 50% retracement) loses mildly.
  Verdict: no edge found.
- **V2** — 24 trades, 50% win rate but PF 0.79: wins too small. Better expectancy
  (-0.088R) and far smaller drawdown (4.6%) than baseline, but still negative.
  Verdict: not a convincing beat.
- **V9** — 10 trades, PF 0.40, clearly negative. Buying the rebound after a 50%
  retracement, as mechanized, underperforms badly. Verdict: dead.
- **V1a/V1b** — 1 trade each. The RSI-at-P1 filter (<=35 long / >=65 short) is the
  binding constraint: across 20 months it passes 1-15 times depending on swing size.
  Verdict: untestable as specified; the filter set describes a setup that hardly
  ever occurs on H1 EURUSD.

## ASSUMPTIONS (mechanization choices — see PLAN.md for the full list)
- Fractal swings: N=2 bars each side; a pivot is only visible 2 bars after it forms
  (no lookahead). 1-2-3 = latest confirmed alternating triple (L,H,L) / (H,L,H).
- "1 tick" stop entries implemented as trigger + 0.05*ATR buffer; fills at the stop
  price; if the fill bar also hits SL, the SL is assumed hit first (conservative).
- Close-break entries (V2, V9) fill at the signal bar's close; SL/TP from the next bar.
- Partials: 50/50 at two targets; 50/25/25 at three targets (brief's rule).
- Session windows gate the entry-signal bar only; pendings may fill later and trade
  management continues outside the window.
- V1 expiry 8 bars after P3; V2 6; V3 8; V4 3 after breakout; V5 5 after hook low;
  V7 8 after correcting bar (documented anti-stall); V9 10 after impulse; V11 6.
  Live-trade expiries per spec, closed at bar close.
- V7: spec lists both 0.50R and 1.0R minimum entry-to-P2 distance; used the stricter
  1.0R. V4 pre-breakout triple staleness 12 bars and V5 30 bars are documented
  anti-stall choices (spec is silent). Spread filters not modeled (no spread data;
  same as baseline).
- One position per direction max. Max drawdown on closed-trade balance equity.

## UNTESTED (M15 — do not fake)
- V6 (Ross Hook 25% retracement, M15), V8 (1-2-3 + Ross Hook congestion tie-breaker,
  M15), V10 (ATR-adaptive Ross Hook, M15): NOT tested. No M15 data exists in this
  environment. Nothing below was invented for them.

## COMPARABILITY CAVEAT
The baseline ran a D1-bias/H1-trigger lane with a 5-setups/day cap and a -3% daily
halt; the variants are pure-H1 with session windows and no daily cap/halt (per the
brief's common simulator). Expectancy, profit factor, and return are comparable
(same data, same $10k/1% accounting); trade counts and drawdowns are not
apples-to-apples with the baseline's risk overlays.

## BOTTOM LINE FOR MICHAEL
The research produced hypotheses, the backtest disposed of most of them. Two are
worth keeping an eye on (V3's divergence filter, V11's MA-origin filter), but
neither has enough trades to believe yet. Nothing here justifies paper trading.
The honest next step, if he wants it: more data (more pairs, more years) to see
whether V3/V11 survive out of sample. That is his call.
