# Learning-loop review — 2026-09-10 551 closed trades reviewed, 247 currently open. Proposal only — nothing here is applied automatically (CLAUDE.md §4: the AI review proposes, dan disposes). ## 1. Is overall expectancy holding? Overall expectancy across all 551 closed trades is **+0.97% per trade**, profit factor **1.82**, win rate 61.3% (Wilson lower bound 57.2%). At n=551 the pooled sample comfortably clears the ~20-trade minimum, so the headline number is real and not noise — the system as a whole is expectancy-positive. However, this is pooled across four accounts with different risk configs (see account section) and is heavily carried by one strategy (qsr, 446 of 551 trades); it should not be read as "all four strategies work." ## 2. Which bucket is the biggest drag? Restricting to buckets with n≥20, by strategy: **orb-v1** (n=68) is the clear drag — expectancy **-0.00%**, profit factor **0.92** (below 1.0), win rate 45.6% with Wilson lower bound **34.3%** (can't rule out a coin flip). Compare to qsr (n=446, expectancy 1.14%) which carries essentially all the system's profit. Gap check against the noise floor: orb-v1's expectancy gap versus qsr/overall is roughly **1.0–1.1 percentage points** (-0.00% vs 1.14% / 0.97%). The stated noise floor for resolving a bucket-vs-bucket gap is **2.48pp**. This gap is smaller than the noise floor. So orb-v1 clears the 20-trade bar but its apparent underperformance **cannot be distinguished from noise** at the level of precision this journal currently supports — a textbook case of "clears the count, still unresolvable." (Note: rsi 30-40, n=133, expectancy -0.62% vs overall 0.97%, is a ~1.6pp gap — also under the 2.48pp floor. Same conclusion.) ## 3. Entry, exit, or regime problem? This report doesn't provide a strategy-specific MAE/MFE breakdown (MAE/MFE is only given system-wide), so a clean orb-v1-specific diagnosis isn't possible from the evidence base — flagging that gap rather than forcing a read. Using the only numbers available (system-wide): MAE winners avg **-1.89%** vs MAE losers avg **-5.18%** — losers dig a much deeper hole before failing than winners ever do before succeeding, which does *not* look like "stops too tight relative to noise." MFE losers avg **+1.27%** is positive but modest, not the "materially positive" giveback pattern the doc calls out as a clear exit problem. Combined with orb-v1's near-coin-flip win rate and sub-1.0 profit factor over a 0.3-day average hold, the more honest read is that this looks like **a strategy with no demonstrated edge**, not a fixable entry-tightness or exit-timing pattern — but this is a system-wide proxy standing in for a bucket-specific one we don't have, and the strategy-level gap itself is below the noise floor (point 2), so no diagnosis here should be treated as confirmed. ## 4. Proposed parameter change Because the orb-v1-vs-rest gap doesn't clear the 2.48pp noise floor, **no entry-signal or threshold change is justified** — proposing an ORB entry filter tweak (volume mult, entry cutoff, etc.) off this data would be exactly the kind of unresolvable search the power-check section warns against. Projected revisit point: this is a strategy-level comparison rather than the QSR RSI-band study the revisit table was built for, but by the same logic it needs a materially larger n before a ~1pp gap is trustworthy — treat orb-v1 as "insufficient evidence" rather than assign a specific date. What *is* fair game regardless of sample size is a capital-allocation lever, and orb-v1 already carries a size discount (`sizeMultiplier: 0.5`) precisely because it's less proven. Given 68 trades showing flat-to-negative expectancy and PF<1 with nothing in this data set contradicting that, I propose: > **orb-v1.sizeMultiplier: 0.5 → 0.25** Reasoning: this is a risk-sizing change, not a bet that any entry condition predicts returns — it simply reduces capital exposure to a strategy whose current sample shows no edge, while leaving the strategy running so more data can accumulate. (Orb-v1 is currently backtest-only/not live-wired per the params doc, so this change has no live-capital effect today — treat it as the setting to carry forward if/when it's wired live.) No other parameter should be touched at the same time. ## 5. Notable open positions The open book is heavily QSR and skews toward aging, underwater trades: several ETR (36–41d), BTI/TRP (29–31d), EBAY/CVS (23–30d), CARR (14–15d), and NKE (15d) positions are all currently negative (roughly -2% to -5%) and have sat for weeks. This is consistent with `qsr.maxHoldDays: null` — there is no calendar exit, so a stalled trade simply stays open indefinitely rather than resolving. Several very recent QSR entries (COHR, BSX, SHOP -4.8% to -6%) are also already deep into their stop range within 1–2 days. This is situational color only — none of these open trades have a confirmed outcome and none of it feeds the point-4 proposal. ## 6. QSR shadow comparison note Worth flagging qualitatively: the legacy isTriggered+isBuy/buyZonePct shadow method fired only **48** would-buy events across **18** tickers in the closed window (2026-08-09→2026-08-23), versus the live newlyA method's **273 closed + 233 open** entries across **83** tickers over the same period — roughly an order of magnitude more frequent and a far broader universe. Ticker overlap between the two methods is only **13** names, a small fraction of either list, meaning the two selection logics are picking almost entirely different stocks, not just differing on timing of the same names. The shadow window is now closed, so a fuller backtest comparing hypothetical shadow-log outcomes to the real newlyA outcomes could be requested next — but this is observational only and not evidence for point 4's proposal.