# Learning-loop review — 2026-09-02 440 closed trades reviewed, 163 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 **+0.79% per trade** across **440 closed trades**, profit factor 1.58, win rate 63% (Wilson low 58.3%). At the raw trade-count level this comfortably clears the ~20-trade minimum, so the headline is not noise. Two caveats before trusting it as "the" number: - **Clustering**: 343 of the 440 trades (78%) are QSR, and QSR's own power analysis shows 334 scored rows collapse to only **81 independent symbol-days**. The 440-trade count overstates independent evidence whenever we're attributing performance to entry conditions rather than just reporting realized P&L. - **Account mix**: this pools simulated (paper) fills with `live-1`'s real fills. Per account, `paper-main` (354 trades) shows net +$2766, but `live-1` (58 trades, real money) shows **net -$90.50** despite a 66% win rate — small, real-money, and price-biased (small-notional-only) evidence, and it's not confirming the pooled positive number. So: expectancy is holding at the pooled level, but the "true" independent sample size for anything more granular than "strategy overall" is much smaller than 440 suggests. ## 2. Which bucket is the biggest drag? Filtering to buckets with n ≥ 20 and negative or clearly sub-par expectancy vs. the 0.79% baseline: | Bucket | n | Expectancy | PF | Total P&L | |---|---|---|---|---| | RSI 30-40 | 96 | **-0.83%** | 0.59 | **-$554** | | <-10% vs MA50 | 51 | -0.77% | 0.54 | -$315 | | orb-v1 (strategy) | 68 | -0.00% | 0.92 | -$67 | **RSI 30-40** is the biggest legitimate drag by both expectancy and total dollar loss, and n=96 clears the 20-trade minimum. But: the gap versus the overall average is **0.79% − (−0.83%) ≈ 1.62 percentage points**, which is **below the 2.48pp noise floor** established for this journal. This bucket clears the sample-size bar and *still* cannot be distinguished from noise — exactly the trap the doc warns about. Same conclusion applies to the `<-10% vs MA50` bucket (gap ≈1.56pp, also sub-floor). Neither should be treated as a discovery. ## 3. Entry problem, exit problem, or regime problem? The report doesn't provide MAE/MFE broken out by RSI band or by MA50-distance bucket — only the aggregate figures exist (MAE winners **-1.78%**, MAE losers **-5.15%**, MFE losers **+1.17%**). At the aggregate level: MFE losers is modest (+1.17%, not the "was up big, gave it back" pattern the doc calls a take-profit problem), while MAE losers is quite deep (-5.15% vs -1.78% for winners), which if anything points toward stops being roughly appropriately placed relative to how far these names travel against us rather than a systematic giveback problem. However — since the RSI 30-40 gap itself doesn't clear the noise floor, attributing it specifically to entry vs. exit vs. regime would be speculative on top of an already-unresolved effect. **No confident attribution can be made here**; the aggregate MAE/MFE numbers describe the whole book, not this bucket specifically. ## 4. Proposed change **No entry-signal or bucket-threshold change.** The only candidate drag bucket (RSI 30-40) has a gap (~1.62pp) smaller than the 2.48pp noise floor this journal can resolve. Per the rules, this must be logged as **NO CHANGE** on that axis. Projected revisit: at the current ~4.5 symbol-days/session accrual rate, an edge of this rough magnitude (~1%) needs ~124 symbol-days; we have 81, so revisit around **2026-09-16** (10 more sessions). If the true edge is smaller (0.5%), the honest revisit is **2027-01-09**. **Instead, propose a risk-sizing change that doesn't depend on out-predicting the market:** - Parameter: `QSR_RISK` override for the **live-1** account, `riskPerTradePct` - Current: **10** (with `maxNotionalPct: 10`, i.e. essentially full-notional risk per trade on a $480-equity account) - Proposed: **2** Reasoning: this isn't a signal claim — it's a survivability/drawdown lever. The pooled `stop_loss` exit bucket (n=147, a mechanical/deterministic category, not a band-split) shows expectancy of **-5.32%** per stopped-out trade with a win rate of 0.7%. On `live-1`, `riskPerTradePct` is set an order of magnitude higher than every other account (0.08–0.12 elsewhere), so any single stop-loss event there is proportionally far more damaging than in paper. `live-1` is already net negative (-$90.50 over 58 trades) despite a 66% win rate, consistent with losses being outsized relative to wins under this sizing. Dialing risk-per-trade down doesn't change what gets bought or when — it only reduces how much a stop-out costs, which is fair game regardless of the 2.48pp signal-detection limit. ## 5. Notable open positions QSR has a large number of positions aging well past its own typical 7.5-day average hold, with **`maxHoldDays: null` (no time-based exit at all)**: HDB open **42.3 days** at -4.01%, ETR positions (6 tranches) open **28–33 days** at -1.10%, BTI (multiple tranches) open **21–23 days** at -2.45%, TRP open 23 days at -1.12%, CI/AEP/EBAY clusters open 22–28 days. Given the closed-trade book shows only 3 `time_stop` exits out of 440 total, QSR effectively never time-stops — these open, stagnant, underwater positions are consistent with that. This is situational color only and is **not** used to support the point-4 proposal, since none of these trades have a confirmed outcome yet. ## 6. QSR shadow comparison note The legacy `isTriggered+isBuy/buyZonePct` shadow method and the live `newlyA` method look like largely different selection processes: the shadow log fired only **48 times** across **18 tickers** in its two-week window, while real `newlyA` entries over a comparable-or-longer span produced **174 closed + 144 open** trades across **48 tickers** — roughly triple the ticker breadth and a much higher firing rate. Only **11 tickers overlap** between the two candidate lists. Qualitatively this suggests `newlyA` is a substantially looser/broader filter than the legacy logic, not just a re-timing of the same signal. The shadow window (2026-08-09 → 2026-08-23) is now closed, so a fuller backtest comparing hypothetical shadow outcomes to real `newlyA` outcomes can be requested — but per the source doc this observation is not evidence for the point-4 proposal.