MIS v2 — Tab-Coverage Self-Test (do I actually have every formula?)
Sam's ask: before we build (even 2 tickers), prove I know every formula in every column of every important tab — so the months of work you put into the sheet aren't lost.
Honest answer: I have every formula for the tabs the BUILDER code creates (Code.js + the v11 scripts). I do NOT yet have the formulas for the hand-built tabs that evolved only inside the live sheet — that's a real gap, graded RED below. The fix is a one-time formula dump (bottom).
Source:MIS/MIS_v7.1_audit_sheet_summary.csv(the live sheet = 59 tabs, with per-tab formula counts).
Grading
- ✅ HAVE — formula source is in the repo (builder code or a faithful extract); v2 can port it.
- 🟡 STRUCTURE — I have the columns + logic shape (value-extract), formulas rebuildable.
- 🔴 GAP — real formulas, hand-built, live-sheet-only. Must pull before building so nothing's lost.
- ⬜ DATA — no formulas (pure data/history); migrate the data, nothing to "lose."
| Tab | Formulas | Grade | Where / note |
|---|---|---|---|
| Momentum Engine | 10,304 | ✅ | Code.js:220 buildMomentumEngine — full 60-col chain captured |
| Tickers | 2,932 | ✅ | Code.js:122 buildTickers |
| Catalyst Engine | 1,007 | ✅ | Code.js:178 (multiplier) |
| Sector Map | 90 | ✅ | Code.js:384 |
| Daily Snapshot | 7 | ✅ | Code.js:423 |
| Reference Rules | 2 | ✅ | Code.js:93 (mostly values) |
| Trade Signals | 1,097 | ✅ | Code.js:493 (QUERY of Momentum) |
| Live Guard | (resolver) | ✅ | emailDailySnapshot.js:1353 resolver + severity |
| Entry Pad | 67 | 🟡 | Entry_Pad.csv — ACTUAL-vs-IDEAL ticket + checklist (analyzed) |
| EntryTracker | 5,800 | 🟡 | EntryTracker.csv — 48-col journal schema captured |
| Blind Side Analysis | 5,016 | 🟡 | Blind_Side_Analysis.csv — holder-bias re-grade; CONCATENATE of Setup/SACS/ActionFlag, rebuildable |
| Calc Data | 121 | 🟡 | Calc_Data.csv — calc-staging |
| ME Pre Rebuild | 10,912 | 🟡 | ME_Pre_Rebuild_2026-04-30.csv — frozen Momentum w/ formulas (regression fixture) |
| Snapshot (LIVE) | 10,672 | 🔴 | builder makes only 14 cols; live is ~58 cols (BF) → ~44 cols of formulas I don't have |
| Execution Playbook | 3,683 | 🔴 | hand-built; I have the reader (misReadExecutionPlaybook_) not the tab's own formulas |
| Trade Planner | 635 | 🔴 | live-only formulas |
| Quick Trade Calc | 11 | 🔴 | CANONICAL planner per CLAUDE.md — I have the 13-col schema from memory, NOT the formulas |
| Exit Tracker | 280 | 🔴 | live-only; exit discipline logic |
| Wash Sale Tracker | 57 | 🔴 | live-only (sweep said "stub" but it has 57 formulas — verify) |
| Integrity Check | 23 | 🔴 | live-only data-integrity formulas |
| Holdings | 190 | 🔴 | live-only (the empty-source one; HOLDINGS_CLEAN is data) |
| Behavior Tracker | 5 | 🔴 | minimal; verify |
| Command Center / Dashboards / Exec Dashboard | 411 / 35 / 68 | 🟡 | static-value extracts exist; formulas live-only |
| Setup Engine · Playbook V2 | 17 · 36 | ✅/orphan | builder/orphan per sweep |
| Hist Momentum (5,299 rows) · Hist Daily/Playbook/Sector/Exec · Run Log (1,461) · Report Snapshots · Self Grade · VIX histories · News Catalyst · Holdings Clean · Schwab Positions · Macro Context · Trade Log · Market Calendar · Diagnostics | 0 | ⬜ | DATA — migrate the data (esp. Hist Momentum = backtest substrate); no formulas to lose |
✅ GAPS CLOSED — 2026-05-27 (pulled the formulas from the local xlsx, no paste-run needed)
A local export (MIS/working-copies/MIS_v7.1_gsheet_forclaudeedit.xlsx) carries the formulas (xlsx stores formula text). Parsed with openpyxl → every 🔴 gap-tab formula extracted to MIS/v2/MIS_V1_FORMULA_ARCHIVE.md (full archive, local). All RED gaps are now ✅:
- Snapshot (58 cols) = a clean projection of Momentum_Engine + the refined sizing block (J-S): ATR14 = Price×Vol30D% · stops 1/1.3/2× · Risk% = (Price−Stop1.3)/Price · Target% = Risk%×2.5 · Shares = ROUNDDOWN(Portfolio_Start×Risk_Per_Trade / (Price×Risk%)) · R:R = Target%/Risk%. Snapshot col AS = FinalState (the value every other surface VLOOKUPs).
- execution_playbook = decision surface; per row reads Snapshot → EntrySignal = IFS(FinalState ADD→"BUY ADD", STARTER→"BUY STARTER", WATCH→…) + Stop@1.3xATR/Risk%/Target%/R:R/Shares/SACS/Flow/Setup/ActionVerdict/RejectCode/Reason. Header row carries live VIX + Regime (IFS vs Reference_Rules bands).
- Trade_Planner = account-aware position log (Date·Account·Ticker·Side·Entry·Stop·Target·Shares·LivePrice·Cost·MktVal·UnrealPnL·Stop_Suggested=Live×0.94·Target_Suggested=Live×1.1·Action·MIS_FinalState=VLOOKUP(Snapshot col 45)). Accounts e.g. "Invest n Save (Z29720600)".
- Quick_Trade_Calc (canonical) = 5-input sizer: type Ticker/Entry/Stop/Target/$Risk → Live(GF), Risk%, Reward%, R:R, Shares=ROUNDDOWN($Risk/(Entry−Stop)), Position$, MIS_State, Verdict (R:R≥2.5 trade · 1.5-2.5 marginal · <1.5 skip).
- Exit_Tracker = pulls open positions from Trade_Planner → Current(GF)/P&L%/Stop/Target/Stop_Distance/Target_Distance/Auto_Trim/Stop_Hit/MIS_State/Action.
- Holdings = account-filterable UNIQUE(FILTER(Trade_Planner)) view.
- Integrity_Check = data-health guard (Include=Y count, blank sectors, ME valid prices, ME errors, Sector_Map populated, Weight_* ≥12).
- Behavior_Tracker = daily self-grade journal (FollowedPlan·Discipline_1to5·FOMO_Trades·Stop_Hits·Lessons + rolling-30 averages) → this IS the behavioral-guardrail layer, already designed; revive it.
🎯 The big find: the REAL weighted Composite (Phase-0 had the stale builder version)
Live Momentum_Engine Composite (AG) = a weighted sum driven by Reference_Rules dials (rows 10-24, which Phase-0 missed): SetupWeight (LeanIn 15 / Breakout 12 / MomentumTrim −5 / ReversalWatch 8 / HoldWait −3) + ContrarianWatch 6 + TrendUp ±8 + Above30D ±6 + Compression 4 + Accumulating ±7 − (V × Weight_VolPenalty 40) + MacroBias ±4 + EventImpact×3 + ((FlowStrength−50)/50)×Weight_Flow 12. The −(V×40) VolPenalty term is the real grade-collapse driver (dominates, craters Composite) → locked fix VolPenalty 40→15. FlowStrength (AD) is already richer than the builder's 76-peg (z-clamped ±8 + Above30D ±8 + Accumulating/Rotating/Distributing tiers + Accel±8 + HighVol−8). v2 uses THIS weighted config with the dials in Reference_Rules — not the stale Flow×0.6+Event×3 builder formula.
(Belt-and-suspenders: a dumpAllTabFormulas() paste-run on the live sheet would capture all 59 tabs at once if we ever want the exhaustive cell-level archive — but the gap tabs are now captured.)
Tab-coverage self-test · 2026-05-27 · Claude Code. Pairs with MIS_V2_LOGIC_CAPTURE.md + MIS_V2_DEFINITION_OF_DONE.md.