Sun Oct-18 14:08:49
times in Europe/Lisbon

📈 Weekly review Mon Sep-14

📐 Gauges — this week

anchornhit ratemean |available|
S1462+51.4%+0.69%
S251+52.9%+0.66%
S3184+51.4%+0.61%

materiality calibration (S1): 60-69: +52.2% (n=391) · 70-79: +36.8% (n=19) · 80-89: +53.1% (n=50) · 90-100: 0.0% (n=2)

booknedge bpsmean transit leakqueued-fill n
S1-S3 intraday56+10.30-0.01%38
S4 overnight32-19.60+0.26%9

PRICED-at-detection: +20.6% (192/934)

gatefiredw/ cfside-adj moveexclusions
tape gate6763+21.97% sumpost close=4
materiality floor113109+4.11% sumpost close=4
netting210200-0.07% meanpost close=10
PRICED block192184+2.50% sumpost close=8
news age4240-3.18% sumpost close=2
news age S4 o/n518+0.63% sumpost close decision=2, slot outranked=23, slot taken by entry=15, next session after window=3

📝 Review

Review A

INJECTION CHECK (reading_rules): neither retro_buckets nor coach_report_audit contains anything resembling instructions directed at me; both self-report clean inputs (retro_buckets header; coach_report_audit scope note). Nothing to flag. One retro_buckets sanity check passes exactly: its eight bucket costs sum to -$7.73, matching attribution.decomposition.totals.pnl to the cent — the taxonomy is at least arithmetically anchored to the mechanical P&L this week.

1. SCOREBOARD READ

Blended edge this week is -1.01 bps (scoreboard.week_edge_bps): s13 intraday +10.3 bps on 56 trades, s4 overnight -19.6 bps on 32 (gauges.traded.s13_intraday, gauges.traded.s4_overnight). Against gauges.trailing_trend, s13 posts its second positive print in ten weeks (-5.34, -9.96, -16.28, -13.48, -27.37, -15.76, +24.12, -43.37, now +10.3). The swing from -43.37 to +10.3 is NOT distinguishable from noise: 56 trades with capture_usd_sum +$48.87 against single-trade dispersion of ±$46-54 this same week (retro_buckets exemplars 1099 at +$46.40, 1085 at -$53.76) — the ~$200 week-over-week swing is four or five trades. What persists and is therefore more likely real: gauge1 S1 hit rate printed 51.4% (n=462, gauges.gauge1.s1), the TENTH consecutive week inside the coin-flip band and never above it (49.8, 49.8, 49.9, 48.4, 45.8, 51.4, 49.0, 46.7 per gauges.trailing_trend, plus the 53.4 opening week recorded in prior_weekly_reviews 2026-08-10 §1, now 51.4). The tape was mildly against the book (do_nothing_baseline -0.09%, n=519, scoreboard) yet market_pnl was +106.3 against total pnl -7.73 (attribution.decomposition.totals) — the traded cohort's tape helped and timing (-165.25) gave it back. No target value proposed.

GRADE OF LAST WEEK'S BET (2026-09-14, gauge1 latency-band split for S1): NOT SHIPPED. Verified mechanically: gauges.gauge1 contains no latency-band rows — only the s1/s2/s3 rollups and materiality_calibration — and no PR after #253 (2026-08-21) appears in predictions_to_grade. coach_report_audit's scope note (untrusted, but consistent with the PR ledger) records an empty changelog_week and code_changed=false on all five sessions. That is the FIFTH consecutive unshipped weekly bet (MAX_PUB_TO_DETECT_MIN three times: 2026-08-10/17/24; S4 shadow: 2026-09-07... issued 2026-08-31; latency-band ledger: 2026-09-07 — see prior_weekly_reviews §5 each week), and the fifth consecutive week in which zero code of any kind shipped.

Per my own 2026-09-07 §5 pre-commitment, this is now the review's PRIMARY RESULT: the pilot's intervention channel is inoperative, and this includes the zero-risk analytics lever that was chosen precisely because it had a shipped precedent (#212). The coach channel shows the same defect at higher resolution this week: its S4 shadow recommendation was pushed for the 6th and 7th time, never actioned, and then abandoned by pivot rather than decision (coach_report_audit §3), with the falsifiability math attached to it wrong by ~2x on both days it appeared (§5). A system whose two measurement organs cannot get any change executed — not a gate, not a shadow mode, not a ledger — cannot answer its own north-star question. The standing recommendation to the pilot's operators, carried from 09-07 and now activated: audit the shipping channel itself before spending further weekly measurement. Deliverable 5 below is deliberately reduced to the smallest possible lever pull — a one-line edit to an existing constant with an already-live counterfactual ledger — so that it doubles as a channel canary.

Operational note resolving last week's flag: alpaca's pub→detect median recovered to 264.1s (article_funnel.by_provider.alpaca) from last week's anomalous 2545.5s (prior_weekly_reviews 2026-09-07 §1). One-week inversion, gone; consistent with the cursor artifact by_provider_note describes rather than a regression.

2. CHAIN DIAGNOSIS

Link 1 — Prediction (all alerts, gauge1). S1: 51.4% hit rate (n=462, binomial SE ~2.3pp), mean_available_pct +0.03 against mean_abs_available_pct 0.69 (gauges.gauge1.s1) — the call extracts ~4% of the average absolute move available at detection; tenth consecutive coin-flip week. S3: 51.4% (n=184, SE ~3.7pp) — coin flip (gauges.gauge1.s3). S2: 52.9% (n=51, gauges.gauge1.s2); pooled across six reviewed weeks S2 sits at roughly 96/227 ≈ 42% (8/36, 6/24, 23/51, 21/35, 11/30 per prior_weekly_reviews §2 each week, plus 27/51 now) — still below coin flip pooled, though the last two weeks have been at/above 50; the pooled deficit is thinning, not cleared. Materiality calibration (gauges.gauge1.materiality_calibration): 60-69 → 52.2% (n=391), 70-79 → 36.8% (n=19), 80-89 → 53.1% (n=50), 90-100 → 0.0% (n=2). Sixth consecutive week: flat-to-backwards everywhere the sample is adequate; materiality does not rank prediction skill.

Link 2 — Transit. Priced-at-detection 20.6% (192/934, gauges.priced_at_detection), in line with prior weeks. On the traded s13 cohort transit is negligible (-$2.56, gauges.traded.s13_intraday) — sixth consecutive week transit is not the intraday leak. The S4 transit number, though, is structurally interesting: transit_usd_sum +$64.52 against capture_usd_sum -$56.60 (gauges.traded.s4_overnight) — mean_transit_pct +0.26 vs mean_capture_pct -0.35. The predicted move happened INTRADAY, before S4's close entry, and the overnight window S4 actually monetizes caught the reversal. This is the third consecutive week with S4 transit strongly positive and capture negative (+93.58 on 08-31, +15.66 on 09-07 per prior_weekly_reviews §2 both weeks) — S4 may be a right-ish signal harvested in the wrong window, which cross-checks retro_buckets bucket 2's "post-earnings drift reversed" language. Noted as a three-week pattern; the shadow experiment that would separate direction-wrong from window-wrong remains unshipped. Blended pub→detect median 789.0s ≈ 13.2m (article_funnel.latency_pub_to_detect_secs); per provider, alpaca 264.1s vs eventregistry 790.4s (article_funnel.by_provider) — 3.0x. No per-ticker transit-leak field exists in per_ticker (#87 still not live).

Link 3 — Selection. s13: available_usd_sum +$46.31, mean_available_pct +0.09 (gauges.traded.s13_intraday) against a -0.09% do-nothing baseline (scoreboard.do_nothing_baseline) — a +0.18pp selection spread, the first positive spread in six reviews (prior: -0.29, 0.00, -0.15-ish, negative both books earlier, per prior_weekly_reviews §2 each week). On n=56 this is one week and thin; noted, not celebrated. s4: mean_available_pct -0.09, spread exactly 0.00pp — the overnight picks had precisely the average available move of the alert universe. Attribution: selection_pnl +51.22 total, S4 selection +18.7 with market -61.77 carrying S4's loss (attribution.decomposition) — this week S4's damage reads as tape plus window, not anti-selection, unlike 08-31's -214.03. Per-ticker dispersion (per_ticker rows): worst QCOM -230.65, MU -174.53, AVGO -96.43, META -71.92; best SMCI +359.36, AMD +143.35, ASML +96.65, GOOGL +81.45. One-week cross-sectional echo, stated without generalizing: the three best tickers have the highest priced rates on the board (SMCI 59.6%, AMD 62.4%, ASML 50.4%) — the same pattern flagged 08-17 that died 08-24; still not carried forward. Surprise rate 0.0% on all 15 tickers, sixth straight week.

Link 4 — Capture. Exit slippage small and positive: +$14.47 over 56 exits, mean +$0.26 (attribution.exit_slippage). MFE-realized degenerate again where n is real (S1 -2.11, S4 +19.61, attribution.mfe_realized — outside [0,1], unusable except as near-zero-denominator symptom; S2 0.66 / S3 0.45 read sane but n=3 each). Timing_pnl is the largest negative bucket for the fifth time in six weeks: -165.25 of -7.73 total, S1 alone -140.03 (attribution.decomposition; prior series -311.13, -162.64, -120.57, -30.25, -130.62). One refinement to my own prior reads, not an oscillation: I have been localizing timing to the entry side because exit slippage is benign, but exit slippage only exonerates the exit PRINT versus the close quote — the hold-to-close give-back that retro_buckets buckets 4+6 describe (~$200 of peak-vs-realized leakage across 18 trades, e.g. 1056 banking +$4.28 of a +7.05% peak, 1027 closing -$19.01 after a +6.31% peak) also lives inside timing_pnl. Timing conflates entry chase (bucket 5, -$63.28) and exit-policy give-back (buckets 4+6); both are real, neither is separable in the mechanical decomposition as provided.

SINGLE WEAKEST LINK: prediction, sixth consecutive week. Convicting numbers: S1 51.4% on n=462, ten weeks in the coin-flip band and never above it (gauges.gauge1.s1, gauges.trailing_trend); materiality calibration non-ranking for a sixth week (gauges.gauge1.materiality_calibration); raw directional error is the week's dominant cost in the retro corpus — buckets 2+3 at -$389.53 combined (retro_buckets), which cross-checks mechanically against S1's 42.0% win rate (scoreboard.per_strategy S1) and S4's market_pnl -61.77 (attribution.decomposition.per_strategy.S4); S2 pooled ~42% over six weeks. Honest counter-evidence this week: the s13 selection spread went positive (+0.18pp) and s13 edge printed +10.3 — if that repeats, the diagnosis weakens; one week on n=56 does not move it. Timing is again the biggest dollar bucket (-165.25) and the standing reasoning holds without oscillation: monetization losses on top of a coin-flip classifier are the cost of trading noise. The one confound that keeps "no signal" from being the pilot's calibrated final answer — signal alive at publish, dead by the ~13-minute median detection delay — is now SIX weeks old and untested solely by non-shipping (§1).

3. PREDICTION GRADES

All genuine clauses carry deploy_status "live" — a single-instant read at the week's last session (2026-09-18), cited per reading_rules; where that gives no assurance the change ran for the cited numbers, I stay at not-yet-measurable. Backfilled clauses (#108 and below) are attribution material only, not graded. Oscillation guard: no grade below reverses a prior week's grade.

GRADE #253 cost: not-yet-measurable — deploy_status live; no shadow_sessions.elapsed_ms or page-count field in any mechanical section. Sixth week at this status. GRADE #242 signal: not-yet-measurable — deploy_status live; no mechanical section counts counter-move S4 entries or exposes s4_alignment_skips. Noting without grading: gauges.traded.s4_overnight mean_transit_pct +0.26 shows S4 entries are, on average, aligned with the same-day move — consistent with the gate's intent but not a count of violations. GRADE #241 cost: not-yet-measurable — deploy_status live; no page-count data in any mechanical section (the 7,520 baseline lives only in the clause text). GRADE #228 freshness: not-yet-measurable — deploy_status live; no stale-at-fill cancel count anywhere mechanical (gauges.traded transit_queued_unknown_n=0 measures a different thing). GRADE #226 freshness: not-yet-measurable — deploy_status live; no absorbed-move counterfactual ledger in gauges.declined or strategy_aggregates. Noting without grading: retro_buckets bucket 5 (untrusted) again describes in-direction chased entries (1075, 1073, 1035). GRADE #222 signal: not-yet-measurable — deploy_status live; gauges.declined.priced_block (fired 192) is not band-resolved by |since|, so sub-2.0 "verdict PRICED" skips remain uncountable. GRADE #216 freshness: not-yet-measurable — no stall/paging data in mechanical sections. GRADE #212 signal: confirmed — the ledger exists and grades: gauges.declined.news_age_s13 fired 42, with_counterfactual 40, blocked_pnl_pct_sum -3.18; news_age_s4 fired 51, with_counterfactual 8, blocked_overnight_pnl_pct_sum +0.63 (S4 coverage still thin: 38 of 51 excluded as slot_outranked/slot_taken_by_entry). Sixth consecutive confirmed. GRADE #211 signal: not-yet-measurable — daily-report contents have no mechanical counterpart. GRADE #209 signal: not-yet-measurable — article_funnel.by_provider.eventregistry (articles 22667, classify_eligible 17548) has no per-day duplicate-eligibility delta. GRADE #207 cost: not-yet-measurable — no retry-ladder timing data in mechanical sections. GRADE #206 freshness: not-yet-measurable — no stale-at-fill cancel counts in mechanical sections. GRADE #203 cost: not-yet-measurable — prior_weekly_reviews retains five consecutive reviews, evidence Mondays produce reviews, but the clause covers both arms every Monday and no mechanical run-log exists. GRADE #202 freshness: confirmed — article_funnel.by_provider exists with per-provider latency (alpaca median 264.1s, eventregistry 790.4s), and this review grades #177 off the split, never the blend. Sixth consecutive confirmed. GRADE #198 cost: not-yet-measurable — no journal-row reasoning-field data in mechanical sections. GRADE #193 risk: not-yet-measurable — no S4 failed/orphaned-enter counter; news_age_s4.post_close_decision_excluded=2 is a ledger exclusion, not an orphan count. GRADE #188 signal: not-yet-measurable — coach citation behavior has no mechanical counterpart; coach_report_audit's citation findings this week (a fabricated prior-confirmation on 09-18, an unsupported -78.1 total on 09-14, §2) cut against citation quality but are untrusted, one hop removed, and not gradeable evidence for this clause either way. GRADE #185 signal: not-yet-measurable — no pre-open prev_close comparison field and no stale-at-fill cancel count in mechanical sections. GRADE #179 freshness: confirmed — the gate demonstrably fires across strategies: gauges.declined.news_age_s13 fired 42, news_age_s4 fired 51; strategy_aggregates.top_skip_rationales "news 8-24h old at decision, floor 4h" S4=17, S1=16, plus S4 "news 1-7d old" 15 and "4-8h" 11. As in all prior weeks, "trades entered on >4h news → 0" is inferred from gate activity plus the absence of any contrary field. Counterfactual note: blocked s13 cohort -3.18% (missed_wins 19 vs avoided_losses 21), blocked S4 cohort +0.63% on n=8 — near-neutral both sides this week; the sign keeps bouncing, still noise. GRADE #177 freshness: refuted — article_funnel.by_provider: alpaca pub→detect median 264.1s vs eventregistry 790.4s = 3.0x, short of the ≥5x claim. Sixth consecutive refuted. Last week's categorical inversion (alpaca 3.2x SLOWER) did not persist — the ratio is back inside the stable 2-3.5x range, supporting the cursor-artifact reading over a regression. The per-provider-never-blended half remains honored (see #202). GRADE #172 freshness: not-yet-measurable — no opening-tick drain metric in mechanical sections. GRADE #168 cost: not-yet-measurable — no historical-delta data in this prompt. GRADE #166 freshness: confirmed — proxy: article_funnel.latency_detect_to_alert_secs median 17.1s (n=519), far under the 10m target; flagging again that detect→alert contains but is not labeled "classify wait." GRADE #153 cost: not-yet-measurable — no shadow-send data in mechanical sections. GRADE #155 cost: not-yet-measurable — article_funnel.journaled_llm_cost_partial_usd 8.18 is an explicit floor (journaled_llm_cost_note) with no per-call baseline split. GRADE #151 cost: not-yet-measurable — no audit fire/no-fire flip data in mechanical sections. GRADE #147 risk: not-yet-measurable — no mechanical tripwire counter; retro_buckets and coach_report_audit both report no injection this week (untrusted). GRADE #146 risk: not-yet-measurable — same class as #147; no mechanical measurement. GRADE #143 signal: confirmed — scoreboard.per_strategy: S2 3 trades +$20.59 + S3 3 trades +$9.58 = +$30.17 combined, well inside "toward ≥ -$30" from ≈ -$108, with the floor visibly firing (gauges.declined.materiality_floor fired 113; strategy_aggregates.top_skip_rationales "materiality 65 below floor 75": S3 55+30, S2 16). Sixth consecutive confirmed. Standing caveat holds: the floor caps volume, not quality — its blocked cohort was roughly a coin flip this week (missed_wins 56 vs avoided_losses 53, blocked_pnl_pct_sum +4.11, gauges.declined.materiality_floor), and S2's pooled hit rate is still ~42% (§2). The 3-for-3 S2 and S3 weeks are n=3 each; not evidence of repair. GRADE #140 cost: not-yet-measurable — no timeout/page data in mechanical sections. GRADE #139 cost: not-yet-measurable — no error-envelope data in mechanical sections. GRADE #138 cost: not-yet-measurable — no auditor fire-count in mechanical sections. GRADE #137 freshness: confirmed — publish→alert ≈ 806.1s ≈ 13.4m (article_funnel: pub→detect median 789.0s + detect→alert 17.1s), stable versus 13.4m/13.4m/12.9m/13.1m/13.5m in prior weeks and consistent with the honest-baseline claim; ER, ~98% of articles, sits at 790.4s per by_provider. GRADE #134 cost: not-yet-measurable — no page-storm/WARNING data in mechanical sections. GRADE #131 cost: not-yet-measurable — scaffolding-citation rate has no mechanical counterpart. GRADE #130 signal: not-yet-measurable — no delimiter-breakout counter in mechanical sections. GRADE #128 cost: not-yet-measurable — no 400/self-heal data in mechanical sections. GRADE #126 cost: not-yet-measurable — no prompt_chars measurement in this prompt. GRADE #121 cost: not-yet-measurable — no timeout-page or shadow-row counts in mechanical sections. GRADE #120 risk: confirmed — but this is the weakest confirmed of the series and is flagged: gauges.declined.tape_gate S1 fired 45, with_counterfactual 42, missed_wins 27 vs avoided_losses 15, blocked_pnl_pct_sum +20.9% (≈ +0.50% per blocked trade — the gate COST money this week, its worst single-week print against the "net gated P&L ≈ 0" promise). Pooled across the six reviewed weeks the S1 gate sits near zero (+3.84, -8.61, -15.18, -22.2, -0.68, +20.9 ≈ -21.9pp over ~270 fires ≈ -0.08%/trade per prior_weekly_reviews §3 each week), which is what the clause claims, so confirmed on the pooled read — but a second consecutive week at +0.4-0.5%/blocked trade should flip this to refuted. The "worst-day S1 loss ↓" half remains unassessed (no worst-day field). GRADE #117 signal: confirmed — proxy: processed/classify_eligible = 17812/(264+17548) = 100.0% (article_funnel + by_provider). Fourth consecutive clean week; standing caveat that this proxy cannot isolate the capped-tick tail specifically.

4. BUCKET PROMOTION

Standing promotion, extended and refined: S4 overnight-drift failure (promoted 2026-08-31, held unresolved 2026-09-07). This week it is retro_buckets bucket 2 (11 trades, -$269.77, "the overnight-drift thesis simply reversed"), the week's most expensive bucket. Mechanical cross-check per reading_rules before repeating: scoreboard.per_strategy S4 -$56.60 at 46.9% WR; attribution.decomposition.per_strategy.S4 market_pnl -61.77 with selection_pnl +18.7; gauges.traded.s4_overnight spread 0.00pp over the do-nothing baseline. The mechanical numbers agree the trades lost, but they REFINE the retro story: this week's damage reads as tape-plus-window, not anti-selection — and the three-week pattern of S4 transit positive / capture negative (§2: +93.58, +15.66, +64.52) sharpens the open question from "is S4's direction wrong?" to "is S4's monetization window (close→next close) systematically behind its own signal?" S4 is negative 7 of 9 trailing weeks (gauges.trailing_trend + this week). The instrument that would resolve this — the shadow experiment, pushed 7 times by the coach and once by this reviewer — remains unshipped (coach_report_audit §3; predictions_to_grade ends at #253). Promoted-and-unresolved, third consecutive week.

Standing promotion, extended: the stale/chased-entry pattern (promoted 08-17, re-promoted 08-24, re-strengthened 09-07). This week retro_buckets bucket 5 (10 trades, -$63.28, entries after the pop). Mechanical cross-check: timing_pnl -165.25 is the largest negative bucket for the fifth time in six weeks (attribution.decomposition; series -311.13, -162.64, -120.57, -30.25, -130.62, -165.25), exit slippage benign (+$14.47, attribution.exit_slippage). Still no carrying PR in predictions_to_grade. Refinement stated in §2 and carried here: timing_pnl also contains the buckets 4+6 hold-to-close give-back (~$200 of peak leakage across 18 trades per retro_buckets' cross-cutting note), so the entry-chase attribution is an upper bound, not the whole of timing. Remains the most persistent named, costed, unactioned monetization defect: four promotions across six reviews.

Explicitly not promoted again: buckets 4+6 (exit give-back, the week's "single most actionable execution finding" per retro_buckets). Five prior reviews' reasoning stands without oscillation: while gauge1.s1 reads 51.4% coin flip (gauges.gauge1.s1), exit redesign optimizes the monetization of noise. It stays first in line if the prediction question ever resolves — and I note honestly that if the s13 selection spread stays positive another week (§2 Link 3), that resolution gets closer.

Observed, not promoted: netting-forced exits (retro_buckets bucket 8, -$13.20, 6 trades; gauges.declined.netting fired 210, mean_move_to_close_pct -0.07). Third week observed, measured cost still small; watch. Still dormant: the violent-adverse-rally tail (promoted 08-10) — fifth week without recurrence; worst single trade this week is -$53.76 (retro_buckets bucket 2, id 1085). Reopen on recurrence.

Cross-check note on Stage A: retro_buckets' closing claim that "no evidence either constant influenced outcomes this week" (TAPE_CONTRADICTION_PCT, S2/S3 floor) is correctly scoped to ENTERED trades only — on the declined side both were very much live: tape gate fired 67 times and the materiality floor 113 times (gauges.declined). No correction needed, but the scoping matters: the floor is binding and is what kept S2/S3 at 3 trades each.

5. ONE BIGGER BET

Target: prediction, the weakest link named in (2), at its six-week-old confound — "signal never existed" vs "signal alive at publish, dead by the ~13.2-minute median detection delay" (article_funnel.latency_pub_to_detect_secs 789.0s). Constraints on this bet's design: three gate bets and two purpose-built ledger/shadow bets have failed to ship (§1), and my 09-07 commitment makes governance the primary result. So this bet is the minimum conceivable pull — a ONE-LINE EDIT to an existing constant whose gate and counterfactual ledger are already live and already confirmed six consecutive weeks (#179 gate, #212 ledger, §3). No new code, no new table, no new ledger. It is simultaneously the latency-decay experiment and a canary on the shipping channel itself.

  • 2026-09-21 owner: lower MAX_NEWS_AGE_H from 4 to 0.25 (threshold_constants.MAX_NEWS_AGE_H) for a two-week experiment window, then revert regardless of outcome — news age at decision (publish→decision) is pub→detect plus seconds of detect→alert (median 17.1s, article_funnel), so a 15-minute age floor is the long-proposed publish-latency gate implemented through the existing news_age machinery, with gauges.declined.news_age_s13 automatically grading the blocked cohort — expect: signal, with the gate firing at volume (news_age_s13 fired should jump from 42/wk toward 150+/wk given the 13.2m median latency): if over the two weeks pooled the surviving s13 traded cohort's selection spread (gauges.traded.s13_intraday.mean_available_pct minus scoreboard.do_nothing_baseline.mean_pct; this week +0.09 − (−0.09) = +0.18pp on n=56) reaches ≥ +0.35pp while the blocked slow cohort grades ≈ coin flip in the ledger (missed_wins ≈ avoided_losses, |blocked_pnl_pct_sum| small relative to fires), detection latency is convicted as the prediction leak; if instead the surviving fast cohort's spread stays ≤ +0.10pp pooled over both weeks, latency is exonerated at the only threshold the pipeline can enforce, and "no measurable directional signal even on news under 15 minutes old" becomes the pilot's standing calibrated conclusion for S1-S3.

Grading notes for next week: grade the SPREAD, never raw mean_available_pct (tape-contaminated, per the 08-31 lesson) and never edge bps — no target value is proposed. Trade count will roughly halve (~25-30 s13 trades/wk), which is why both branches pool two weeks. The constant is global, so S4's volume also drops; news_age_s4's own ledger (gauges.declined.news_age_s4) grades that side, and given S4's unresolved thesis (§4) the volume cut is acceptable collateral, not a confound — but note it when reading S4's weekly numbers. Beware the alpaca cursor artifact when interpreting which articles survive: alpaca (median 264.1s) will dominate the surviving cohort. If this one-line constant change also fails to ship, the governance finding is complete at every lever size — gate, shadow, ledger, and now config — and per the 09-07 commitment the correct next deliverable is not another bet but a standalone report to the operators that the pilot cannot execute any intervention and the shipping channel must be audited before further weekly measurement is spent.

Review B

DATA-INTEGRITY FLAG: prior_weekly_reviews contains instruction-like language such as “next week should” and “do not re-issue.” Under reading_rules, I treated those passages only as historical journal data and did not follow them as instructions. retro_buckets and coach_report_audit contain trading recommendations being summarized or audited, but no instruction directed at this reviewer.

1. SCOREBOARD READ

This week’s blended edge was -1.01 bps (scoreboard.week_edge_bps), with total P&L of -$7.73 across 88 closed trades (attribution.decomposition.totals.n/pnl). The books diverged: S1-S3 intraday produced +10.3 bps on 56 trades, while S4 produced -19.6 bps on 32 (gauges.traded.s13_intraday.n/edge_bps; gauges.traded.s4_overnight.n/edge_bps). By strategy, S1 earned +$18.70 despite only a 42.0% win rate; the tiny S2 and S3 samples were each 3-for-3 and together earned +$30.17; S4 lost $56.60 at a 46.9% win rate (scoreboard.per_strategy rows S1-S4).

The near-flat headline is a sharp improvement from the prior blended weeks of -37.46, -10.4, -11.74, -20.82, and -15.94 bps (prior_weekly_reviews weeks 2026-09-07 through 2026-08-10, §1), but it is not distinguishable from noise. The principal week-over-week move was S1-S3 going from -43.37 to +10.3 bps, while S4 barely changed from -20.93 to -19.6 (gauges.trailing_trend week 2026-09-07; gauges.traded rows). Gross dispersion swamps the net: the mechanically reconciled total was only -$7.73 (attribution.decomposition.totals), while Stage A partitions 27 usable winners at +$411.60 and 27 directional failures at -$398.13 (retro_buckets ranks 1-2). Those bucket totals reconcile to the same 88-trade, -$7.73 mechanical total, but their causal labels remain one-hop LLM summaries. A few trades moving between those two sides could readily change the weekly sign.

The longer trend remains more informative than this print. Including this week, S1-S3 has been negative in seven of nine trailing weeks, with only +24.12 and +10.3 positive; S4 has been negative in seven of nine (gauges.trailing_trend plus gauges.traded). Gauge1 S1 has remained around coin flip throughout that period rather than improving with the headline P&L (gauges.trailing_trend.gauge1_s1_hit_rate_pct; current gauges.gauge1.s1.hit_rate_pct).

Last week’s bigger bet—adding an S1 gauge split by publish-to-detect latency—was not shipped or at least is not visible in this packet, so it is not-yet-measurable. The current gauge1 S1 row remains undivided, and predictions_to_grade contains no PR after #253 carrying that ledger (gauges.gauge1.s1; predictions_to_grade latest genuine PR #253). The underlying fast-versus-slow signal question therefore remains unanswered.

2. CHAIN DIAGNOSIS

Prediction skill, all alerts: S1 hit 51.4% on n=462, with mean available move only +0.03% against mean absolute available move of 0.69% (gauges.gauge1.s1). Its approximate binomial standard error is 2.3 percentage points, so 51.4% is plainly consistent with a coin flip. S3 is almost identical at 51.4% on n=184, mean available +0.03%, and mean absolute available 0.61% (gauges.gauge1.s3). S2 printed 52.9% on n=51 and mean available +0.15%, but its roughly 7-point sampling error makes that inconclusive (gauges.gauge1.s2).

Materiality still does not rank directional skill. The 60-69 band was 52.2% on n=391; 70-79 fell to 36.8% on n=19; 80-89 returned to 53.1% on n=50; and 90-100 went 0-for-2 (gauges.gauge1.materiality_calibration). The adequately sampled 60-69 and 80-89 bands are nearly identical, while the others are too thin. This is consistent with the prior reviews’ recurring non-monotonic calibration, not evidence that a higher materiality threshold would uncover signal (prior_weekly_reviews 2026-08-10 through 2026-09-07, §2).

Transit: 192 of 934 candidates, or 20.6%, were already PRICED at detection (gauges.priced_at_detection). Publish-to-detect latency was 789.0 seconds blended, but the provider split is the valid comparison: Alpaca 264.1 seconds versus Event Registry 790.4 seconds, approximately a 3.0x advantage for Alpaca; detect-to-alert added a median 17.1 seconds (article_funnel.latency_pub_to_detect_secs; article_funnel.by_provider rows; article_funnel.latency_detect_to_alert_secs). On traded S1-S3, transit lost only $2.56, with mean transit -0.01%, about -1 bp; S4 transit added $64.52, with mean transit +0.26%, about +26 bps (gauges.traded.s13_intraday.transit_usd_sum/mean_transit_pct; gauges.traded.s4_overnight.transit_usd_sum/mean_transit_pct). Thus transit was not the principal realized leak this week. No per-ticker transit-bps or publish-versus-detection field exists in per_ticker, and no #87 clause appears in predictions_to_grade, so the requested per-ticker transit-drop test remains unavailable.

Selection: the traded S1-S3 cohort had mean available move +0.09%, versus a -0.09% do-nothing baseline, a favorable but one-week-thin spread of +0.18 percentage points on 56 trades (gauges.traded.s13_intraday.mean_available_pct; scoreboard.do_nothing_baseline). S4’s mean available move was -0.09%, exactly equal to the do-nothing baseline on 32 trades (gauges.traded.s4_overnight.mean_available_pct; scoreboard.do_nothing_baseline). The attribution model assigns +$51.22 to selection overall: S1 -$5.10, S2 +$11.70, S3 +$25.92, and S4 +$18.70 (attribution.decomposition.totals.selection_pnl; attribution.decomposition.per_strategy). Thus selection was not mechanically negative overall this week, although the S2/S3 estimates each rest on only three trades.

Ticker temperament remains extremely dispersed and non-monotonic. QCOM and MU were deeply negative at -230.65 and -174.53 bps, with the slowest median detection latency on the table at 748.0 seconds and PRICED rates of 47.6% and 39.0%; yet SMCI earned +359.36 bps despite a 59.6% PRICED rate, while AMD earned +143.35 at a 62.4% PRICED rate (per_ticker rows QCOM, MU, SMCI, AMD). Conversely, AAPL had no PRICED alerts but still printed -28.68 bps (per_ticker AAPL). Those one-week ticker results do not support a simple “high PRICED rate means bad edge” rule. Surprise rate was 0.0% for all 15 tickers across five eligible sessions each (per_ticker.surprise_rate_pct/surprise_eligible_sessions), continuing to provide no discriminating feature.

Capture and execution: total timing P&L was -$165.25, overwhelming positive market P&L of +$106.30 and selection P&L of +$51.22 (attribution.decomposition.totals). S1 accounted for -$140.03 of that timing loss; S4 accounted for -$13.53 (attribution.decomposition.per_strategy.S1/S4). Exit slippage was small by comparison: +$14.47 over 56 exits, or +$0.26 per exit, with no missing-close or cross-day exclusions (attribution.exit_slippage). MFE-realized is not generally interpretable this week: S1 is -2.1124 and S4 is 19.6053, both outside a meaningful 0-to-1 capture range; only S2 at 0.6602 and S3 at 0.4541 look numerically sane, and each has n=3 (attribution.mfe_realized rows). Stage A’s “late entry into an already-spent move” bucket cost $63.28 across 10 trades, consistent with the mechanical timing loss, while its exit-surrender bucket still realized +$39.99 in aggregate and therefore does not establish exits as the dominant dollar failure (retro_buckets ranks 3-4; attribution.decomposition.totals.timing_pnl).

SINGLE WEAKEST LINK: prediction.

The current week contains a severe monetization loss in timing, but the system still has no established directional edge to monetize. S1 is 51.4% on 462 alerts with only +0.03% mean available move; S3 is also 51.4%; S2 is 52.9% on a thin n=51; materiality is non-monotonic; and S1’s trailing hit-rate series has remained around 50% for nine weeks (gauges.gauge1 rows; gauges.gauge1.materiality_calibration; gauges.trailing_trend). The favorable +0.18-point selection spread for S1-S3 and +10.3 bps intraday edge are encouraging one-week observations, but n=56 and the reversal from -43.37 bps the prior week are not enough to distinguish a new signal from sampling noise (gauges.traded.s13_intraday; gauges.trailing_trend week 2026-09-07). Timing is the largest current dollar leak, but persistent coin-flip prediction is the weakest causal link: fixing timing without first establishing signal would still be optimizing the execution of noise.

3. PREDICTION GRADES

All genuine clauses show deploy_status “live,” which is only a last-session manifest observation and does not establish full-week exposure (predictions_to_grade rows cited below). Backfilled clauses #108 and below are not graded.

GRADE #253 cost: not-yet-measurable — deploy_status live, but no shadow_sessions.elapsed_ms or page-count measurement appears in gauges, article_funnel, or any other mechanical section (predictions_to_grade PR #253).

GRADE #242 signal: not-yet-measurable — deploy_status live, but no mechanical field counts counter-move S4 entries or s4_alignment_skips (predictions_to_grade PR #242).

GRADE #241 cost: not-yet-measurable — deploy_status live, but no outage-day warning-page count is present in the mechanical data (predictions_to_grade PR #241).

GRADE #228 freshness: not-yet-measurable — deploy_status live, but no “stale at fill” cancellation count is provided; gauges.traded.s13_intraday.transit_queued_unknown_n=0 measures queued transit grading, not this cancellation outcome (predictions_to_grade PR #228; gauges.traded.s13_intraday).

GRADE #226 freshness: not-yet-measurable — deploy_status live and ABSORBED_MOVE_PCT=1.5 is configured, but no mechanical absorbed-move ledger or count of 1.5%-2.0% in-direction entries is supplied (predictions_to_grade PR #226; threshold_constants.ABSORBED_MOVE_PCT).

GRADE #222 signal: not-yet-measurable — deploy_status live; gauges.declined.priced_block.fired=192 is not split by move magnitude, so the number of sub-2.0% PRICED skips is unavailable (predictions_to_grade PR #222; gauges.declined.priced_block).

GRADE #216 freshness: not-yet-measurable — deploy_status live, but no quote-stall or page count exists in the mechanical sections (predictions_to_grade PR #216).

GRADE #212 signal: confirmed — deploy_status live; the weekly ledger exists and grades both windows: S1-S3 fired 42 times with 40 counterfactuals and -3.18 blocked P&L percentage points, while S4 fired 51 times with 8 counterfactuals and +0.63 blocked overnight points (predictions_to_grade PR #212; gauges.declined.news_age_s13/news_age_s4).

GRADE #211 signal: not-yet-measurable — deploy_status live, but no mechanical count of closed trades absent from every daily report is supplied (predictions_to_grade PR #211).

GRADE #209 signal: not-yet-measurable — deploy_status live; Event Registry has 22,667 articles and 17,548 classify-eligible rows, but no field isolates newly admitted duplicates per day (predictions_to_grade PR #209; article_funnel.by_provider.eventregistry).

GRADE #207 cost: not-yet-measurable — deploy_status live, but no retry-ladder duration or attempt-budget exhaustion count is present (predictions_to_grade PR #207).

GRADE #206 freshness: not-yet-measurable — deploy_status live, but no count of sub-2.0% stale-at-fill cancellations is supplied (predictions_to_grade PR #206).

GRADE #203 cost: not-yet-measurable — deploy_status live and a weekly review exists, but no mechanical run log establishes whether at least one of the official or shadow arms completed every Monday (predictions_to_grade PR #203).

GRADE #202 freshness: confirmed — deploy_status live; article_funnel.by_provider reports Alpaca and Event Registry separately, and this review uses their 264.1-second and 790.4-second medians rather than the 789.0-second blend to grade #177 (predictions_to_grade PR #202; article_funnel.by_provider).

GRADE #198 cost: not-yet-measurable — deploy_status live, but no count of coach/shadow/weekly/audit rows with NULL reasoning is supplied (predictions_to_grade PR #198).

GRADE #193 risk: not-yet-measurable — deploy_status live; gauges.declined.news_age_s4.post_close_decision_excluded=2 is a counterfactual-ledger exclusion, not a count of failed or orphaned S4 entries (predictions_to_grade PR #193; gauges.declined.news_age_s4).

GRADE #188 signal: not-yet-measurable — deploy_status live, but no mechanical count of coach recommendations citing a named aggregate row is present; coach_report_audit’s citation discussion is LLM-generated and not an outcome measurement for this clause (predictions_to_grade PR #188; coach_report_audit finding 2).

GRADE #185 signal: not-yet-measurable — deploy_status live, but neither pre-open prev_close mismatches nor stale-at-fill cancellations are mechanically counted (predictions_to_grade PR #185).

GRADE #179 freshness: not-yet-measurable — deploy_status live and the gate visibly fires, with 42 S1-S3 and 51 S4 age declines, but the requested outcome is the number of actual trades entered on news older than four hours, and that number is not provided (predictions_to_grade PR #179; gauges.declined.news_age_s13/news_age_s4). OSCILLATION-GUARD FLAG: prior reviews called this confirmed by inference; the stricter reading_rules require not-yet-measurable because skip activity is not the same outcome as old-news trades equaling zero.

GRADE #177 freshness: refuted — deploy_status live; Alpaca’s median publish-to-detect latency was 264.1 seconds versus Event Registry’s 790.4 seconds, only about 3.0x lower rather than at least 5x, although the provider split itself is present (predictions_to_grade PR #177; article_funnel.by_provider.alpaca/eventregistry).

GRADE #172 freshness: not-yet-measurable — deploy_status live, but no opening-tick drain duration appears in the mechanical data (predictions_to_grade PR #172).

GRADE #168 cost: not-yet-measurable — deploy_status live, but no replay result for the 422 historical closed trades is supplied (predictions_to_grade PR #168).

GRADE #166 freshness: not-yet-measurable — deploy_status live; detect-to-alert median was 17.1 seconds, but the clause specifically concerns alerting-article classify wait, and no classify-wait field is supplied (predictions_to_grade PR #166; article_funnel.latency_detect_to_alert_secs). OSCILLATION-GUARD FLAG: prior reviews confirmed this using detect-to-alert as a proxy; under the current rule that a different metric cannot substitute for the clause’s outcome, that grade is no longer supportable.

GRADE #153 cost: not-yet-measurable — deploy_status live, but no restart-day duplicate shadow-send count is supplied (predictions_to_grade PR #153).

GRADE #155 cost: not-yet-measurable — deploy_status live; journaled LLM cost is only a partial $8.18 floor and provides neither weekly call count nor unchanged daily spend (predictions_to_grade PR #155; article_funnel.journaled_llm_cost_partial_usd/note).

GRADE #151 cost: not-yet-measurable — deploy_status live, but no late-exit audit fire/no-fire comparison is present (predictions_to_grade PR #151).

GRADE #147 risk: not-yet-measurable — deploy_status live, but no mechanical count of live tags reaching a prompt is supplied (predictions_to_grade PR #147).

GRADE #146 risk: not-yet-measurable — deploy_status live, but no hostile-versus-benign rationale test result is supplied (predictions_to_grade PR #146).

GRADE #143 signal: confirmed — deploy_status live; S2 and S3 closed only six trades combined and earned +$30.17, versus the clause’s approximately -$108 baseline and “toward at least -$30” direction, while the materiality floor fired 113 times (predictions_to_grade PR #143; scoreboard.per_strategy S2/S3; gauges.declined.materiality_floor). This confirms volume/P&L containment for the week, not predictive quality: S2 and S3 gauge1 hit rates were still only 52.9% and 51.4% (gauges.gauge1.s2/s3).

GRADE #140 cost: not-yet-measurable — deploy_status live, but no shadow-coach timeout or watchdog-kill count is present (predictions_to_grade PR #140).

GRADE #139 cost: not-yet-measurable — deploy_status live, but no malformed-envelope error records are supplied (predictions_to_grade PR #139).

GRADE #138 cost: not-yet-measurable — deploy_status live, but no auditor fire count or no-call count is present (predictions_to_grade PR #138).

GRADE #137 freshness: confirmed — deploy_status live; publish-to-detect was 789.0 seconds and detect-to-alert was 17.1 seconds, placing the observed path at roughly 13 minutes rather than the old flattering 6.6-minute baseline, consistent in direction and rough scale with the stated honest-baseline change (predictions_to_grade PR #137; article_funnel.latency_pub_to_detect_secs/latency_detect_to_alert_secs). The two medians are separate distributions, so their sum is only an operational approximation.

GRADE #134 cost: not-yet-measurable — deploy_status live, but no page-storm or per-attempt WARNING count is supplied (predictions_to_grade PR #134).

GRADE #131 cost: not-yet-measurable — deploy_status live, but no mechanical scaffolding-citation rate is supplied (predictions_to_grade PR #131).

GRADE #130 signal: not-yet-measurable — deploy_status live, but no structural delimiter-breakout test or clean-article comparison is supplied (predictions_to_grade PR #130).

GRADE #128 cost: not-yet-measurable — deploy_status live, but no mandatory-reasoning 400, self-heal, page, cost, or latency count is supplied (predictions_to_grade PR #128).

GRADE #126 cost: not-yet-measurable — deploy_status live, but coach prompt_chars and report-quality measurements are absent (predictions_to_grade PR #126).

GRADE #121 cost: not-yet-measurable — deploy_status live, but no coach timeout-page or shadow-row count is supplied (predictions_to_grade PR #121).

GRADE #120 risk: refuted — deploy_status live; the S1 tape gate blocked a strongly positive +20.90 summed move across 42 graded counterfactuals, with 27 missed wins versus 15 avoided losses, approximately +0.50% forfeited per graded block rather than net gated P&L near zero (predictions_to_grade PR #120; gauges.declined.tape_gate.by_strategy S1). The worst-day half remains unmeasured. OSCILLATION-GUARD FLAG: this reverses prior confirmed grades; the reversal is required by this week’s directly adverse counterfactual, but one week does not establish the gate’s general effect.

GRADE #117 signal: not-yet-measurable — deploy_status live; processed equals classify-eligible this week, 17,812 of 17,812, but that aggregate does not isolate the capped-tick tail percentage named by the clause (predictions_to_grade PR #117; article_funnel.processed; article_funnel.by_provider classify_eligible totals). OSCILLATION-GUARD FLAG: prior reviews confirmed this through the processed/eligible proxy; the clause-specific capped-tail outcome remains absent.

4. BUCKET PROMOTION

Promote the recurring late/chased-entry pattern to a mechanical rule. This week it is retro_buckets rank 3, “late entry into an already-spent move,” costing $63.28 across 10 trades. That one-hop summary is mechanically corroborated by -$165.25 of total timing P&L, including -$140.03 in S1, while exit slippage was only +$14.47 or +$0.26 per exit (attribution.decomposition.totals/per_strategy.S1; attribution.exit_slippage). The pattern has now been promoted or observed repeatedly across prior weeks with mechanical timing losses of -$311.13, -$162.64, -$120.57, -$30.25, -$130.62, and now -$165.25 (prior_weekly_reviews 2026-08-10 through 2026-09-07, §2/§4; current attribution.decomposition.totals.timing_pnl). One quieter week did not break the recurrence. It is stable, costly, and localized to entry timing rather than ordinary exit slippage.

The eventual mechanical rule should compare the fill-time price with the decision-time price and cancel an entry that has moved materially in the trade’s own direction, with a counterfactual ledger. I am not selecting a threshold here because this deliverable is a promotion call, not the week’s single intervention, and the packet does not provide a banded decision-to-fill distribution from which to justify one.

The previously promoted S4 overnight-drift selection failure stopped appearing as a distinct Stage A pattern this week. There is no S4-specific overnight-drift bucket in retro_buckets, and the mechanical selection evidence no longer convicts it: S4 selection P&L was +$18.70, while its mean available move of -0.09% merely matched the -0.09% do-nothing baseline (attribution.decomposition.per_strategy.S4.selection_pnl; gauges.traded.s4_overnight.mean_available_pct; scoreboard.do_nothing_baseline). S4 still lost $56.60 and printed -19.6 bps, but market P&L was -$61.77 and timing P&L -$13.53, so this week’s loss was not the previously promoted anti-selection pattern (scoreboard.per_strategy.S4; gauges.traded.s4_overnight.edge_bps; attribution.decomposition.per_strategy.S4). One week does not retire the old pattern; it makes it absent this week and unresolved.

The older violent-adverse-rally short-tail promotion also remains dormant: no matching bucket appears in the current retro_buckets taxonomy. That is continued absence, not evidence that the unshipped exposure was fixed.

5. EXACTLY ONE BIGGER BET

The intervention targets prediction, the single weakest link. Because materiality has repeatedly failed to rank hit rate and the unshipped latency-band ledger still leaves publish-time decay unresolved, the lever will be the classifier prompt itself, tested without changing live paper positions.

2026-09-21 owner: run a paired shadow classifier on every S1-eligible article using the same model and article at the same detection timestamp, but replace the current direction prompt with a challenger prompt that must state a ticker-specific causal chain from catalyst → revenue/cost/capital impact → expected same-session price direction before emitting a forced LONG or SHORT; journal both calls and grade both from the identical detection price to the same-session close — expect: signal, on at least 300 paired S1 observations the challenger increases hit_rate_pct by at least 5 percentage points and mean_available_pct by at least 0.05 percentage points versus the live prompt; a spread below 2 points on hit rate or non-positive on mean available refutes prompt formulation as the missing prediction lever.

The baseline is current S1 at 51.4% hit rate and +0.03% mean available on n=462 (gauges.gauge1.s1). Pairing the calls on identical articles and prices removes provider mix, tape, universe, and latency-cohort differences from the comparison. The graded metrics are directional hit rate and available move, never edge bps.

← 2026-09-07 · 2026-09-21 →