# Learning-loop review — 2026-08-18 234 closed trades reviewed, 155 currently open. Proposal only — nothing here is applied automatically (CLAUDE.md §4: the AI review proposes, dan disposes). # AI Review — Trading Journal (dan's `pnpm learn` review) ## 1. Is overall expectancy holding? Yes, on the pooled numbers: **expectancy 2.02% per trade, n=234, profit factor 2.34, Wilson low bound on win rate 68.4%** (vs raw 74.4%). At the pooled/overall level the sample is comfortably above the ~20-trade minimum, so this top-line number is meaningful. But "overall" pools three very different strategies together — the strategy-level cut below shows the aggregate is being carried by one strategy and dragged by another, so the pooled number alone should not be read as "the system is fine." ## 2. Which bucket is the biggest drag? At ≥20 trades, the standard "by strategy" cut is the clearest actionable drag: - **orb-v1**: n=57 (clears the 20-trade bar), win rate 43.9% (Wilson low **31.8%** — genuinely close to a coin flip), expectancy **-0.05%**, profit factor **0.87** (sub-1, losing money), total P&L **-$98**. qsr (n=159) and the market-regime/RSI/relvol/distance cuts are all positive at ≥20 trades. vwap-mr-v1 (n=18) doesn't clear the bar so it's excluded from decisions. No individual symbol or strategy+symbol bucket reaches 20 trades, so symbol-level conclusions (e.g. MO, NXPI, HDB, EBAY all look bad) are explicitly hypotheses only, not results. orb-v1 is the biggest drag we're allowed to act on. ## 3. Entry problem, exit problem, or regime problem? This report does **not** break MAE/MFE out by strategy — only pooled-overall (-1.61% / -3.56% / 0.75%) and by exit-reason are given. That's a real limitation: I can't directly point to "orb-v1's MAE was X." With that caveat, the available evidence points more toward an **entry-quality problem than a giveback/exit problem**: - Pooled `avgMfeLosersPct` is only **0.75%** — not "materially positive" per the doc's own threshold, so system-wide there's little evidence of "was up big, gave it back." That argues against a broad exit-problem story. - orb-v1's payoff ratio is **1.18**, while its declared `targetRMultiple` is **2**. A payoff of only 1.18 against a 2R target means winners are rarely actually reaching the target — they're realizing far less than intended (likely exiting via `eod_flatten`, which shows a very short 0.2d avg hold and unrelated 79.3% win rate, i.e. many orb-v1 trades just get flattened same-day before the target is hit). - With payoff=1.18, breakeven win rate is ≈45.9% (1/(1+1.18)); orb-v1's actual win rate is 43.9%, just under that line — consistent with the near-zero/negative expectancy without needing to invoke a regime effect. There's no regime bucket that isolates orb-v1 specifically, so I can't rule that in or out, but nothing here screams regime (the "unknown"-regime bucket is dominated by other strategies' rows too). **Read: this looks like a target/entry mismatch (target too far given how the trade actually plays out intraday) more than a "we had the winner and blew the exit" pattern** — but flagged as a lower-confidence read given the missing strategy-level MAE/MFE breakdown. ## 4. Proposed parameter change **Change `orb-v1.targetRMultiple` from `2` to `1.5`.** Reasoning: the realized payoff ratio (1.18) is far below what a 2R target implies, meaning trades are mostly resolving (via eod_flatten/stop) before ever reaching target. A smaller, more achievable target should convert some of those near-misses into recorded wins, lifting win rate above the ~45.9% breakeven point without touching any other lever (position sizing, volume filter, entry timing untouched). This is a single, small, reversible change on the one bucket that clears the 20-trade bar with negative expectancy. No changes proposed to qsr, vwap-mr-v1, or any risk parameter — none of those show a qualifying drag. ## 5. Notable open positions (situational color only, not evidence for #4) - **qsr positions dominate the open book** and several are aging well past qsr's typical resolved hold time (closed-trade avg hold is 5.1d): multiple HDB, TXN, ARGX, AZN, SNY, CI, TRGP positions sitting **12–28 days** open. `qsr.maxHoldDays` is `null` (no calendar time-stop), so nothing forces these to resolve — worth watching given qsr's own strong closed-trade profile is built on faster turnover. - **EBAY** stands out: its closed trades were a clean loss (n=2, expectancy -6.82%), and there are *multiple* EBAY qsr positions currently open and underwater (-2.67%) at various ages (0.0d–7.3d). Sample is far too small to act on (well under 20), but it's the kind of persistent per-symbol pattern the "by symbol" cut is designed to eventually catch. - **HDB** open positions are underwater (-3.92%) at 19–27 days held, again echoing a small but uniformly bad closed sample (n=2, -4.60%, 0% win rate). - The **MARA "external"** open position lists an identical SL and TP (10.94 / 10.94) — looks like a data anomaly worth a sanity check, not a trading signal. - Two **crypto-trend-v1** positions (BTC, ETH) have been open 28.2 days with no calendar time-stop, similar "aging without resolution" shape to the long-held qsr names. ## 6. QSR shadow comparison (observational only) The shadow window (legacy `isTriggered+isBuy/buyZonePct` logic) is still running per the doc, ending 2026-08-23 — **not yet closed**, so no outcome backtest can be requested yet; that becomes available once the window ends. Qualitatively: the two selection methods look at meaningfully different opportunity sets. Legacy shadow flagged 15 distinct tickers (39 would-buy events); live `newlyA` actually entered 18 distinct tickers (26 closed + 99 open). Overlap is only **8 tickers** (AEP, SU, COHR, TRP, BTI, ENB, NKE, ITUB, EBAY) — so roughly half of each method's universe is unique to it. That's a fairly low overlap for what's nominally the "same" strategy's entry logic, and worth flagging as a signal-timing divergence to watch once a real outcome comparison is possible — but per the doc's own framing, this cannot feed into point 4's parameter proposal since none of the shadow trades executed.