# Learning-loop review — 2026-08-25 309 closed trades reviewed, 199 currently open. Proposal only — nothing here is applied automatically (CLAUDE.md §4: the AI review proposes, dan disposes). ## 1. Is overall expectancy holding? Pooled expectancy is **+1.77% per trade** across 309 closed trades, with profit factor 2.28 and Wilson-lower-bound win rate 64.2%. The sample size comfortably clears the ~20-trade minimum, so this is a real signal, not noise — **but** it is a pooled number across three accounts running materially different risk configs (see the per-account caveat), so it should be read as "the system in aggregate is working," not as one clean experiment. At the account level, paper-main (259 trades) and Paper02qsr (20 trades, right at the minimum) both look healthy directionally; live-1 (30 trades, ~$480 equity, price-biased subsample) is too small/biased to lean on independently. ## 2. Biggest drag bucket (≥20 trades) **orb-v1** by strategy: n=68, expectancy **-0.00%**, profit factor **0.92** (below 1.0 — losing money net of frictions), win rate 45.6% (Wilson low 34.3%). Every other strategy with ≥20 trades (qsr: 2.43% expectancy, PF 2.83; vwap-mr-v1: 0.54%, PF 2.08) is positive; orb-v1 is the one strategy actively failing to clear even breakeven at real sample size. (Runner-up, not chosen as "the" bucket since it's a symptom-of-exit-type rather than an entry condition: `stop_loss` exit-reason, n=81, expectancy -4.27%, PF 0.02 — flagged below as supporting evidence for diagnosis, not as the primary bucket.) ## 3. Entry, exit, or regime problem? The report doesn't break MAE/MFE out per-strategy, so this has to lean on the overall MAE/MFE stats plus orb-v1's shape, with that limitation stated explicitly: - **MFE of losers overall is only +0.77%** — low. Per METRICS.md's own rule ("when avgMfeLosersPct is materially positive, the fix is in exits"), 0.77% is *not* materially positive — losing trades never got anywhere before failing, so this does **not** look like a take-profit/exit problem. - **MAE of losers is -3.99%** vs winners' -1.62% — losers go meaningfully underwater before dying, consistent with genuinely bad entries rather than good entries stopped out on noise. - Combined with orb-v1's low win rate (45.6%) and its very short avg hold (0.3d), this reads as an **entry-quality problem**: the breakout signal is triggering on moves that don't follow through (likely fakeout breakouts), not a stop-too-tight or exit-too-early issue. - **Regime**: can't be assessed for orb-v1 specifically — the market-regime bucket only shows SPY>MA200 (227 trades) plus "unknown" (82); there is no bear-regime bucket at all in the current data, so a regime problem can't be confirmed or ruled out. Flagging as a genuine blind spot rather than a conclusion. ## 4. Proposed parameter change **orb-v1.volumeConfirmMult: 2.5 → 3.0** Reasoning: orb-v1's failure mode (per point 3) looks like weak breakouts that don't follow through — low win rate, PF<1, low MFE on losers (trade never develops). `volumeConfirmMult` is the lever that filters breakout strength; raising the volume-confirmation bar should reduce the number of low-conviction/fakeout entries taken, at the cost of fewer trades overall. This is a single, small, reversible change on the exact bucket identified as the drag, and orb-v1 has 68 closed trades — enough to judge post-change behavior against, per rule 4 (judge only trades after the change). No changes proposed to qsr or swing-dip-v1 params — both are already net-positive with adequate sample size, and changing more than one parameter at once would break attribution. ## 5. Notable open positions - **qsr has no `maxHoldDays` (null)** and it shows: several positions have been open **20–35 days** while underwater — e.g. 4× HDB tranches at -2.02% held 26–34 days, ETR tranches at -1.57% held 20–25 days, HON tranches at -6.30% held 13.3 days. Nothing is forcing these to resolve. - The crypto-trend-v1 BTC/ETH positions have also been open **35.2 days** with no calendar time-stop, sitting on unspecified unrealized P&L. - Separately, there's a cluster of **many near-duplicate 1-share qsr tranches in VST/HWM/PWR/UMC/APH/etc.** opened within the same 0.2–1.3 day window — this looks like tranche-scaling behavior rather than a problem per se, but worth eyeballing for whether `maxTranches`/`minSharesPerTranche` are producing more granular fills than intended. - This is situational color only — none of it is used to justify point 4. ## 6. QSR shadow comparison note The shadow window (2026-08-09 → 2026-08-23) is now **closed**. Qualitatively: the legacy isTriggered+isBuy method fired far less often (48 events, 18 tickers) than the live newlyA method over the same/adjacent period (61 closed + 165 open, 31 tickers) — newlyA is both more prolific and covers a noticeably wider ticker universe. Overlap is partial: only 10 tickers (AEP, SU, COHR, TRP, BTI, ENB, NKE, ITUB, EBAY, VALE) appear in both lists, meaning the two methods are largely picking *different* names, not just re-timing entries into the same ones. This is purely observational — a fuller backtest comparing hypothetical shadow outcomes to real newlyA outcomes can now be requested, but per the source material this can never itself become a scored bucket (no real fills), and it is not used as evidence for point 4.