# Learning-loop review — 2026-08-27 353 closed trades reviewed, 219 currently open. Proposal only — nothing here is applied automatically (CLAUDE.md §4: the AI review proposes, dan disposes). # QSR / Journal Review ## 1. Is overall expectancy holding? Pooled expectancy is **+1.78% per trade** across **353 closed trades**, profit factor 2.29, Wilson-lower win rate 65.6%. On raw trade count this clears the ~20-trade floor by a wide margin. But two caveats matter before calling this "holding": - The pool mixes three accounts on **different risk configs** (paper-main, Paper02qsr, live-1) — this is not one repeated experiment, and 261 of the 353 trades are `qsr`, so the pooled number is really "mostly QSR's expectancy." - The trade-count is not the same as the independent-sample count. QSR's own power-check shows 334 rows collapse to **81 independent symbol-days**. The trade-level 1.78% is a legitimate outcome number (it's realized P&L, not a predictive claim), so it stands as-is, but don't read sub-bucket splits of it as if 353 were 353 independent draws. **Verdict: expectancy is holding at the whole-book level and is large enough to report, but not large enough at the sub-bucket level to license any entry-signal tuning.** ## 2. Which bucket is the biggest drag? Restricting to buckets with n≥20, the standout is **`orb-v1` (n=68): expectancy −0.00%, profit factor 0.92, payoff 1.19, win rate 45.6% (Wilson low 34.3%)** — the only strategy-level bucket at breakeven-or-worse with a real sample size. (`vwap-mr-v1`, n=23, is also weak at +0.54% but the bucket is right at the 20-trade floor, so it's a hypothesis at best.) Gap check: orb-v1's expectancy (0.00%) vs. the pooled all-trades expectancy (1.78%) is a **~1.78 percentage-point gap**. The documented noise floor for bucket-vs-bucket differences is **2.48pp** (computed for QSR 5-day returns, but there's no reason trade-level P&L on a different, faster strategy is meaningfully quieter). **1.78pp < 2.48pp — this gap does not clearly exceed the noise floor.** So even though orb-v1 clears n=20, its "drag" status is suggestive, not confirmed. ## 3. Entry, exit, or regime problem? The report does not break MAE/MFE out by strategy — only the pooled figures are given (MAE winners −1.66%, MAE losers −4.15%, MFE losers +0.80%). Those pooled numbers show no strong "gave back a winner" signature (MFE losers is small, not "up 3%, exited down 2%"), so at the whole-book level this looks more like an entry/noise issue than a systematic exit-timing leak — but that pooled read is dominated by QSR (261/353 trades) and tells us nothing specific about orb-v1. For orb-v1 specifically: exit-reason data isn't split by strategy either, and orb-v1's own avg hold is 0.3 days (essentially same-day resolution), so a stop-vs-target MAE/MFE story would need a per-strategy cut we don't have. **Honest answer: cannot attribute orb-v1's flat expectancy to entry, exit, or regime with the data in this report — that breakdown needs to be pulled before drawing a mechanism conclusion**, and given point 2's gap is already sub-noise-floor, it isn't worth chasing a mechanism yet. ## 4. Proposed parameter change Because the orb-v1 drag (1.78pp) is smaller than the 2.48pp noise floor, **no entry-signal or threshold change is justified** — that would be exactly the mistake the noise-floor rule exists to prevent (RSI band, relvol cutoff, volume-confirm multiplier, entry-cutoff-minute, etc. are all off the table here). Per the projected-revisit table, resolving anything at that scale realistically needs edges ≥1% and more sessions than currently exist (81 symbol-days now vs. 124 needed even for a 1% true edge — that's QSR's table, but orb-v1 has no equivalent power-check yet, so treat it as at-least-as-far-away). Instead, propose the one change that **doesn't depend on out-predicting the market** — a risk-sizing adjustment reflecting orb-v1's realized (not predicted) PF<1: > **Change `orb-v1.sizeMultiplier` from `0.5` → `0.25`.** Reasoning: this is a capital-turnover/exposure lever, not a bet on which conditions will work — it simply reduces stake on a strategy currently running PF 0.92 / flat expectancy over 68 trades, while leaving the entry logic completely untouched so a future re-test isn't confounded. (Note orb-v1 is currently backtest-only / not live-wired, so this has zero live-risk effect today — it only matters if/when orb-v1 gets wired up — but it's the correct one-parameter change to have queued given the realized numbers.) No other parameter should move at the same time (rule: one change at a time). ## 5. Notable open positions - QSR has a large number of aging, underwater positions with **no calendar time-stop** (`maxHoldDays: null`): HDB −6.62% at 36.3d, HON −4.25% at 15.3d, ETR −1.34% held 22–27d across four tranches, EBAY −2.71%/−2.71% at 15–16d, CVS −3.03% at 10.3d, ENB −0.79% at 14d. - This is a live illustration of the "no calendar time-stop" design choice compounding — several names have sat at a loss for 2–5 weeks without hitting either the stop or the trailing-activation level. This is situational color only; it is **not** used as evidence for point 4, since none of these trades have closed and their eventual MAE/MFE could go either way. ## 6. QSR shadow-comparison note The shadow window (2026-08-09 → 2026-08-23) is **closed**. Qualitatively: the legacy isTriggered+isBuy/buyZonePct method fired far less often (48 would-buys, 18 tickers) than the live newlyA method (94 closed + 196 open, 35 tickers) — newlyA is casting a substantially wider net. Ticker overlap between the two methods is only 10 names (AEP, SU, COHR, TRP, BTI, ENB, NKE, ITUB, EBAY, VALE) out of the union of tickers touched, meaning the two selection methods are picking largely different names, not just different timing on the same names. 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.