# TR-RSI-ADX — Results (vectorbtpro)

Video claim: ~100 manual trades at fixed 1.5R, win rate ~36%.
Measurement (base, pooled): 1,287 trades, 511 TP / 776 SL, win rate 39.70%.

## Measurement

- Period: Dukascopy H1 Bid, 2017-01-02 to 2026-06-26 (59,132 / 59,131 bars).
- Split (predeclared): IS = exit before 2024-01-01, OOS = exit on/after it.
- Engine: vectorbtpro 2024.11.12 Portfolio.from_signals, closed-bar signals,
  next-bar entry at open, one position per symbol, stop-first on ambiguous bars.
- Base: RSI(14) cross above 70 / below 30 with price vs EMA200 and
  ADX(14) > 25, SL at EMA21, 1.5R.

| Scope | Trades | TP | SL | END | Win rate | IS (n/rate) | OOS (n/rate) |
| EURUSD | 651 | 245 | 406 | 0 | 37.63% | 484 / 38.4% | 167 / 35.3% |
| EURJPY | 636 | 266 | 370 | 0 | 41.82% | 485 / 41.0% | 151 / 44.4% |
| POOLED | 1,287 | 511 | 776 | 0 | 39.70% | 969 / 39.7% | 318 / 39.6% |

## Costs (fixed assumptions, bid-only data)

- Spread EURUSD 1.0 pip / EURJPY 1.2 pip, half-spread adverse on every fill.
- Commission $7/lot round trip ($0.07 at 0.01 lot); EURJPY converted to
  price at a fixed USDJPY 140 (simplification, recorded in summary.csv).
- Pooled base: breakeven win rate with costs 41.53%, effective R 1.41,
  R-denominated max drawdown 82.0R (trade-sequence units, no profit claim).

## Variants (one dimension each, both symbols)

- adx20 (threshold > 20): pooled 1,585 trades, 38.61%.
- adxrising (ADX must also rise): pooled 1,222 trades, 40.02%.
- hold (RSI level >70 / <30, no cross): pooled 1,553 trades, 39.63%.
- Range across variants: 38.6-40.0%, above the claimed ~36% but below
  the with-costs breakeven of ~41.5%.

## Limits

- H1 bid bars: intrabar paths unknown; a bar touching both TP and SL exits
  at SL (1 pooled base trade affected); fills are modeled, not observed.
- Spread, commission and USDJPY are fixed assumptions, not measured costs.
- No exact video replication is claimed (its RSI/ADX settings unstated).
- Audit trail: results/summary.csv + results/trades.csv (no raw bars).
- Engine receipt: test.py requires vectorbtpro on py -3.11 and replays every
  ledger trade in the engine at exact fills (same-bar trades as single-trade
  receipts); see vbt_reconciled in summary.csv.
