# Learning-loop review — 2026-08-31 405 closed trades reviewed, 174 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.32% per trade** across 405 closed trades, profit factor 1.98, max drawdown only $680. On raw trade count this clears the 20-trade minimum by a wide margin. But two caveats matter before treating this as solid: - QSR supplies 309 of the 405 trades (76%), and the power-check section tells us those 309 rows collapse to only **81 independent symbol-days** once same-day correlation is removed. The "n=405" headline overstates independent evidence. - The account breakdown shows the *live* account (`live-1`, real money) is flat-to-slightly-negative (net **-$25** on 49 trades) while the paper accounts are positive — consistent with paper fills being optimistic. The pooled 1.32% figure is mostly a paper/simulated result. **Verdict: expectancy is holding on paper, unconfirmed live, and the "true" independent sample is much smaller than 405 suggests.** # 2. Biggest drag bucket Buckets with ≥20 trades that underperform the 1.32% pool average: `orb-v1` (n=68, expectancy ≈0.00%, PF 0.92, total P&L -$67), RSI 30–40 (n=88, expectancy -0.31%, PF 0.77, total P&L -$241), and the tautological `stop_loss` exit-reason bucket (n=117, expectancy -4.98% — but that's a partition by outcome, not a predictive condition, so it doesn't answer "which entry condition drags"). Of the genuine attribution cuts, **RSI 30–40** is the standout drag: n=88 (clears 20), negative expectancy, PF<1, and the largest absolute dollar loss of any non-tautological bucket (-$241). Gap vs. the overall pool: 1.32% − (−0.31%) ≈ **1.63 percentage points**. The stated noise floor for bucket-vs-bucket comparisons is **2.48pp**. The gap does not clear it. (Same conclusion holds for orb-v1: gap ≈1.32pp, also under the floor.) **So: RSI 30–40 clears the 20-trade bar but the difference is not statistically resolvable — it is a hypothesis, not a demonstrated drag.** # 3. Entry, exit, or regime problem? No per-bucket MAE/MFE breakdown is provided for RSI 30-40 (or for orb-v1), only the aggregate across all 405 trades: MAE winners **-1.73%**, MAE losers **-4.79%**, MFE losers **+0.99%**. That aggregate pattern (MFE-losers only +0.99%, not "materially positive") suggests, system-wide, losers mostly just go down and stay down rather than being profitable trades we failed to exit — i.e. the aggregate signature leans toward an **entry** issue rather than an exit/take-profit problem. But this is an aggregate statement, not evidence about RSI 30–40 specifically, and no regime split (bull vs bear) is testable here since almost all labeled-regime trades are `SPY>MA200` (no bear-regime bucket exists to compare). **I can't cleanly attribute the RSI 30-40 drag to entry vs. exit vs. regime with the data given — flagging the limitation rather than guessing.** # 4. Proposed parameter change The candidate change I was evaluating (tightening `maxRsi14` in swing-dip-v1, currently 40, to exclude the weak 30-40 band) is exactly the class of **entry-signal/bucket-threshold change** the rules gate on the noise floor. The supporting gap (≈1.63pp) is smaller than the 2.48pp noise floor, so: **Proposal: NO CHANGE to any RSI/threshold parameter right now.** Per the revisit table: at the current rate (~4.5 symbol-days/session) a 1.00% true edge needs 124 symbol-days (have 81, 10 sessions to go → **2026-09-14**); a more realistic 0.50% edge needs 493 (→ **2027-01-07**). Revisit RSI-band questions no earlier than 2026-09-14, and treat anything before then as noise. Instead, the one thing worth doing now that doesn't depend on out-predicting the market: **continue the QSR anchor/runner paired A/B** (already running, 74 pairs closed, difference +0.13pp, 95% CI -0.43…+0.69, not significant) rather than opening a new band-split study — it has a 0.56pp noise floor vs. 2.48pp for bucket splits, so it's the cheapest path to a real answer. No parameter is being changed today; the action is "keep collecting paired data," which costs nothing extra since the pairs are generated automatically by QSR's own tranche structure. # 5. Notable open positions Several QSR positions are aging well past typical hold times with `maxHoldDays: null` (no time-stop), and some are meaningfully underwater right now: **HDB** −5.87% at 40.3 days, **HON** −7.22% at 19.3 days, **ARM** −7.43% at 4.2/12.0 days, **GE** −4.63%, **DAL** −4.48%, **BTI** −2.64% (multiple lots, 20+ days). Notably, ARM and HWM/HON/NXPI/MO were also among the worst *closed*-trade symbols (ARM closed expectancy -4.84%, HON -7.99%, HDB -4.98%), so the open losers rhyme with a pattern already visible in closed data — worth watching, but (per instructions) not usable as evidence for point 4 since these trades haven't resolved. Separately, the three `crypto-trend-v1` positions (BTC, ETH, DOGE) have been open 11–41 days against a journal that has exactly **one** closed crypto trade — this strategy is effectively running live with real exposure and zero closed-trade track record. # 6. QSR shadow comparison note The shadow-log window (2026-08-09 → 2026-08-23) is now closed. Qualitatively: the legacy isTriggered+isBuy method fired only 48 times across 18 tickers, while the live newlyA method produced far more activity (140 closed + 155 open across 37 tickers) — roughly double the ticker universe and a much higher firing rate. Ticker overlap between the two methods is only 10 names (AEP, SU, COHR, TRP, BTI, ENB, NKE, ITUB, EBAY, VALE) — the two selection logics are picking largely different stocks, not just timing the same stocks differently. A fuller backtest comparing hypothetical shadow outcomes to real newlyA outcomes can now be requested. This is observational only and is not used to support the point-4 proposal.