diff --git a/CLAUDE.md b/CLAUDE.md index 150c1fbb8..abcb22d97 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -97,25 +97,21 @@ version caveats. ## Phase status -Current schema: **`0.8.0-phase4.5f`** (4.5f bumped via 5 additive -optional fields: `manipulation_index` + `composite_score_adjusted` -on `StockSummary` + `StockDetail` + `manipulation_components` dict -on `StockDetail`). Defense layer: **17** (7 active vetoes + 10 -annotates + 5 numerical guards + `manipulation_index` rollup). -Latest release tag: `v1.0.0` (2026-05-14); **tag `v1.2.0-phase4.5` -ready to cut**. Phase **4.5f merged 2026-05-17** (PR #100) — -**Phase 4.5 cluster ✅ complete**. Production verified run #51 -(commit `e57f09cb`, warm-cache 5m14s). Test suite: 856 offline + -17 `@network`. - -**Next deliverable**: tag `v1.2.0-phase4.5` → then **Phase 4.5e** -(Form 4 insider clustering — `insider_sell_cluster` + -`c_suite_unusual_sell`, ~420 LOC, new SEC parser, ~3 weeks; reserved -weight slots already declared in `FLAG_WEIGHTS` so the integration -is a one-line uncomment). Factor integrations **4h/4i/4j/4k** -(OSAP / JKP / Qlib / IPCA) run in parallel — disjoint code paths, -share the PR 4b §2 PBO/DSR gate. Tag `v1.1.0-phase4` after 4h-4k -land; `v1.3.0` after 4.5e. +Current schema: **`0.8.0-phase4.5f`** · Defense layer: **17** +(7 active vetoes + 10 annotates + 5 numerical guards + +`manipulation_index` rollup). Latest release tag: +[**`v1.2.0-phase4.5`**](https://github.com/dackclup/quantrank/releases/tag/v1.2.0-phase4.5) +**SHIPPED 2026-05-17** at commit `6d414a9b` — **Phase 4.5 cluster +✅ complete** (6 sub-PRs). Production verified run #51 +(`b1588b2a`, 5m14s warm-cache). Test suite: 856 offline + 17 +`@network`. + +**Next deliverable** (pick by appetite — three tracks parallelize): +**4.5e** (Form 4 insider, ~3w → v1.3.0) · **4h/4i/4j/4k** factor +integrations (OSAP / JKP / Qlib / IPCA, ~6w total → v1.1.0-phase4) · +**Phase 5** ML meta-learner (~10-12w, unblocks PR 4b §3 IC-decay +writer). 4.5e weight slots already declared in +`FLAG_WEIGHTS` so integration is a one-line uncomment. See [`PHASE_STATUS.md`](PHASE_STATUS.md) for the canonical chronological tracker — keep this section under 15 lines and let diff --git a/PHASE_STATUS.md b/PHASE_STATUS.md index 4cedd0ae2..80c03f0ea 100644 --- a/PHASE_STATUS.md +++ b/PHASE_STATUS.md @@ -7,22 +7,40 @@ | 2 | Fundamentals via SEC EDGAR | ✅ DONE — 2026-05-08 | | 3 | Classical features + composite + **defenses** → **v1.0** | ✅ **DONE — 2026-05-14** (v1.0.0 tagged + GitHub release) | | 4 | Factor consolidation (OSAP + JKP + Qlib + IPCA) → **v1.1** | 🟡 IN PROGRESS — 4a-4g + 4c.1/4c.2/4c.3 + PR 4b §1+§2 all merged; PR 4b §3 IC-decay output deferred to Phase 5; **next: 4h / 4i / 4j / 4k factor integrations** (PBO/DSR gate ready), can run in parallel with Phase 4.5 | -| **4.5** | **Earnings-manipulation defense cluster** → **v1.2** | ✅ **DONE 2026-05-17** (PRs #89/#90/#91 + #93 + #95 + #97 + #100). Active vetoes **5 → 7**; defense layer **9 → 17** (= 7 vetoes + 10 annotates). 4.5f adds `manipulation_index` (0-100 rollup) + `composite_score_adjusted` (soft penalty, max 10 pts, informational only) + `ManipulationRiskCard` UI + schema bump **`0.7.1-phase4g` → `0.8.0-phase4.5f`**. Production verified run #51 (`e57f09cb`, 5m14s warm-cache): card fires on 158/502 (31.5%); HIGH band 2 (SMCI=84 · WAT=64), MODERATE 60, LOW 96. Tag **`v1.2.0-phase4.5`** ready to cut. | +| **4.5** | **Earnings-manipulation defense cluster** → **v1.2** | ✅ **DONE 2026-05-17** — **tag [`v1.2.0-phase4.5`](https://github.com/dackclup/quantrank/releases/tag/v1.2.0-phase4.5) cut** at commit `6d414a9b`. 6 sub-PRs (#89/#90/#91 + #93 + #95 + #97 + #100). Active vetoes **5 → 7**; defense layer **9 → 17** (= 7 vetoes + 10 annotates). 4.5f adds `manipulation_index` (0-100 rollup) + `composite_score_adjusted` (soft penalty, max 10 pts, informational only) + `ManipulationRiskCard` UI + schema bump **`0.7.1-phase4g` → `0.8.0-phase4.5f`**. Production verified run #51 (`b1588b2a`, 5m14s warm-cache): card fires on 158/502 (31.5%); HIGH band 2 (SMCI=84 · WAT=64), MODERATE 60, LOW 96. 4.5e Form-4 insider clustering **deferred to v1.3.0** — reserved-slot weights already declared in `FLAG_WEIGHTS`. | | 5 | ML meta-learner (Triple-Barrier + Meta-Labeling + Conformal) + SHAP | ⚪ not started | | 6 | Sentiment v2 (FinBERT + Whisper + 8-K Lazy Prices) | ⚪ not started | | 7 | Regime + portfolio (Student-t HMM + NCO + TDA) → **v1.5** | ⚪ not started | | 8 | Universe expansion (S&P 1500) | ⚪ not started | -**Current focus**: Phase 4 in flight — **4a → 4e merged** (cache + -ROE fix + UX trio backend) across PRs #58-72; **4f price-chart-enhancements -implementation** next per locked sequencing in -[`.claude/skills/phase-4/v1-to-v1-1-migration/PLAN.md`](.claude/skills/phase-4/v1-to-v1-1-migration/PLAN.md). -Production data still on schema `0.6.0-phase3d` (4d / 4e additive -schema fields didn't bump the constant — `recommendation` + `loss_chance_pct` -ride at the existing version per `v1-to-v1-1-migration/PLAN.md`'s -additive-only-within-major rule). Run #32 `b5bc65f3` was the v1.0.0 -shipping snapshot; latest production run is `e47fa37e` (2026-05-15 -weekly compute reflecting 4d + 4e fields). +**Current focus**: **🎉 v1.2.0-phase4.5 SHIPPED 2026-05-17** — +[release](https://github.com/dackclup/quantrank/releases/tag/v1.2.0-phase4.5) +at commit `6d414a9b`. Production schema `0.8.0-phase4.5f`; latest +production run is `b1588b2a` (run #51, 5m14s warm-cache). + +**Next deliverables** (parallelizable, pick by appetite): + +1. **4.5e — Form 4 insider clustering** (~420 LOC, ~3 weeks) — + `insider_sell_cluster` + `c_suite_unusual_sell` annotates; + reserved-slot weights already in `compute/scoring/manipulation_ + index.py::FLAG_WEIGHTS` so integration is a one-line uncomment. + Tag `v1.3.0` after merge. +2. **4h / 4i / 4j / 4k — Factor integrations** (OSAP / JKP / Qlib / + IPCA, ~6 weeks total) — each gated by PR 4b §2 PBO/DSR. + Disjoint code paths from 4.5e so can ship in parallel. Tag + `v1.1.0-phase4` after all four merge (back-numbered relative to + v1.2.0 since factor work was originally Phase 4 scope). +3. **Phase 5 — ML meta-learner** (~10-12 weeks) — LightGBM + + Triple-Barrier + Meta-Labeling + Conformal Prediction; also + unblocks PR 4b §3 IC-decay writer (issue #75). + +**4 open Phase 4+ issues**: #15 (fundamentals throttling) · #41 +(Next.js 14 → 16 CVEs) · #67 (Damodaran CoE Phase 5+) · #75 (PR 4b +§3 — Phase-5-blocked) · #103 (loss_avoidance universe mismatch, +filed post-v1.2) · #104 (tag-naming inconsistency, filed post-v1.2). + +**Earlier phase history below** — keep this header section under +20 lines and let the per-phase blocks own the detail. **Phase 4 sub-PR progress** (2026-05-14 → 2026-05-15):