# Learning-loop review — 2026-09-09 528 closed trades reviewed, 226 currently open. Proposal only — nothing here is applied automatically (CLAUDE.md §4: the AI review proposes, dan disposes). ## 1. Is overall expectancy holding? Yes, directionally: **0.76% expectancy per trade, n=528**, profit factor 1.78, Wilson-lower win rate 56.8%. This pooled sample is comfortably above the ~20-trade minimum, so the headline number is meaningful *as a pooled statistic*. But note the caveat from the account breakdown: pooled trades mix PAPER (simulated, optimistic fills) and one small LIVE account (`live-1`, net **-$68.61** over 78 trades) running different risk configs — the pooled 0.76% is not one clean experiment, and the live account alone (78 trades, single config, price-biased subsample) is at best weak standalone evidence. ## 2. Biggest drag bucket (≥20 trades) Several buckets clear 20 trades. The clearest strategy-level drag is **orb-v1**: n=68, expectancy **-0.00%**, profit factor **0.92** (below 1.0, i.e. net loser), vs. overall 0.76% and qsr's 0.89%. Total P&L is also negative (-$67). **Does the gap clear the noise floor?** The gap between orb-v1 (-0.00%) and qsr (0.89%) is ~0.89pp; the gap between orb-v1 and the overall pool is ~0.76pp. The report's own noise floor for resolving bucket-vs-bucket differences is **2.48pp** (and that floor was derived specifically for QSR's 5-day forward-return comparisons with symbol-day clustering — applying it to a cross-strategy expectancy comparison is even more generous than warranted, since strategy trades also cluster by symbol-day and aren't independent observations either). Either way, **0.76–0.89pp < 2.48pp**: orb-v1 clears the 20-trade bar but the gap does **not** clear the noise floor. Same conclusion applies to the RSI 30-40 vs RSI 40-50 gap (~2.39pp) — close, but still under the floor. So: a bucket exists with enough trades to *look at*, but not enough resolving power to *act on* the size of gap observed. ## 3. Entry, exit, or regime problem? The report doesn't break MAE/MFE out by strategy, so orb-v1 can't be diagnosed in isolation — this itself is a limitation worth naming rather than papering over. At the system-wide level: MAE winners avg **-1.79%**, MAE losers avg **-5.17%**, MFE losers avg **1.27%**. Per METRICS.md's own rule of thumb, an exit/take-profit problem shows up as a *materially positive* avgMfeLosersPct (losers that were up meaningfully before giving it back); 1.27% is modest, not "materially positive." That points away from a pure exit/giveback story and more toward either an entry-quality issue (losers just go straight down, small MAE→MFE swing) or stops roughly matched to normal noise. Given orb-v1's own hold time is 0.3 days average, this reads more like a same-day noise/regime issue than a slow bleed exit problem — but this is a *hypothesis*, not a confirmed diagnosis, since strategy-specific MAE/MFE isn't in the report. ## 4. Proposed change Because the orb-v1 vs. rest gap (0.76–0.89pp) is smaller than the 2.48pp noise floor, I will **not** propose any entry-signal or threshold change for orb-v1 (no RSI/volume/time-of-day tweak) — that would be exactly the kind of unresolvable bucket-splitting the anti-self-deception rules warn against. Projected revisit: per the power table, resolving an edge this size (well under 1.00%) would need on the order of 493+ independent symbol-days (~110 sessions), i.e. not before **2027-01-16** at the current data rate. Instead, a change that doesn't depend on out-predicting the market: **reduce `orb-v1.sizeMultiplier` from 0.5 to 0.25.** This is a pure capital-allocation/risk-sizing lever, not a signal claim — it simply cuts exposure to a strategy that, over its full available sample (68 trades, PF 0.92, expectancy ≈0%), is running flat-to-negative, while leaving the underlying signal and all thresholds untouched so a future re-evaluation is still clean (rule #2: one change at a time). ## 5. Notable open positions A large number of QSR positions are aging without resolving — many 27-40+ days old (ETR at 40.3d, CI at 33-34d, AEP/TRP at 30d, BTI at 28-30d), consistent with `qsr.maxHoldDays: null` (no time-stop). Most notable: **BTI**, open ~28-30 days across multiple tranches, sitting at **-4.81%** unrealized — and BTI's closed-trade history is 0% win rate / -4.96% expectancy, so this open exposure is consistent with a name that has already shown a clean loss pattern. This is situational color only; it is not being used as evidence for point 4. ## 6. QSR shadow comparison note The legacy isTriggered+isBuy/buyZonePct method would have fired only **48 times across 18 tickers** in the closed shadow window, versus the live newlyA method's **251 closed + 212 open across 77 tickers** in the same-ish period — newlyA is firing far more often and across a much broader name set. Ticker overlap between the two methods is only ~12 names, meaning the two selection logics are picking almost entirely different stocks in practice, not just re-timing the same ones. The shadow window (2026-08-09 → 2026-08-23) is now closed, so a fuller backtest comparing hypothetical shadow-log outcomes to real newlyA outcomes can be requested — but per the report's own framing, none of this is scored/executed data and it is not evidence for point 4's proposal.