MIS MASTER SUMMARY โ€” your single source of truth

Sun May 3 2026 ยท 2:15 PM EDT ยท Print this. Bookmark this. Reference once a day.
Bottom line: Your MAIN sheet is v1. You have one click to make tomorrow morning. Everything else is reference/archive. Three answers below: (1) which sheet for what, (2) what you'll click Mon AM, (3) the architecture question you asked about ONE master sheet pulling for everyone.

๐ŸŽฏ #1 โ€” YOUR MAIN SHEET (and what to click each day)

WhatClick hereWhen + why
v1 SHEET (your daily working sheet) ๐Ÿ“„ Open v1 sheet Morning to look at SACS / Snapshot / Tickers data. This is where you see the live engine output.
v1 SCRIPT (the engine code) โš™๏ธ Open v1 script Mon AM ONE click: function dropdown โ†’ runSACSUpgrade โ†’ โ–ถ Run. That applies 8 fixes incl. RiskGate that unlocks LLY/AMD/MRVL.
Tomorrow's only action: Open v1 script โ†‘ โ†’ function dropdown (top of editor) โ†’ pick runSACSUpgrade โ†’ click โ–ถ Run โ†’ wait ~30 seconds โ†’ check the new SACS_Upgrade_Log tab in v1 sheet for what changed. Done. The script is already pushed and waiting.

๐Ÿ“‹ #2 โ€” EVERY SHEET / SCRIPT YOU HAVE โ€” status + action

Sheet/Script (link)CurrentlyShould beAction
v1 sheet "MIS_v7.1_gsheet_forclaudeedit"
Open sheet ยท Open script
ACTIVE โ€” main engine Stay PRIMARY Mon AM: run runSACSUpgrade. Then optionally rename sheet to MIS_PRIMARY_2026-05 for clarity.
Production sheet "MIS_v7.1_gsheet"
Open sheet ยท Open script
ACTIVE โ€” A/B control Archive after Mon AM Mon AM: compare its 9:55 AM email to v1's 9:46 AM email. If v1 wins โ†’ open script โ†’ Triggers (clock icon) โ†’ DELETE all โ†’ rename sheet to MIS_ARCHIVE_production_2026-05-03
v2 sheet "...gemini fixes_v2" (broken)
Open sheet ยท Open script (untitled)
BROKEN โ€” Excel-roundtrip damage Archive (don't trash โ€” has good archive tabs) Open sheet โ†’ top-left rename to MIS_v2_archive_for_backtest_2026-05-03. Has 5,299 rows of historical Momentum data worth keeping. Script: ignore.
V2 SACS Sandbox "MIS Architect V2 โ€” SACS Upgrade [SANDBOX]"
Open sheet
SANDBOX โ€” comparison only Keep 1 week, then archive No script firing. Reference sheet showing pre-Fix-5 SACS values. Useful if you want to verify the 1.8ร— expansion math. After 1 week: rename to MIS_SACS_sandbox_2026-05-03 or trash.
Architect V11 Microservices
Open sheet ยท Open script
DORMANT โ€” triggers killed today โœ“ Archive You killed its triggers earlier today. Script source preserved at MIS/scripts/v11_microservices/Code.gs for any code mining. Can rename sheet to MIS_v11_microservices_archive_2026-05-03.
zGoogle Finance Investment Tracker (separate Schwab tracker) โ€” Standalone Different system entirely. Keep as-is or address later.

๐Ÿ“จ #3 โ€” WHAT FIRES MON MAY 4 (your A/B test)

Time EDTEngineSubject lineWhat you'll see
9:46 AMv1๐Ÿ“ˆ MIS Morning BriefNEW format: BLUF section at top, ACTIONABLE TODAY vs LEAN IN SETUPS split, Earnings filtered to your holdings only, macro line shows real Gold spot/BTC/ETH (if Google Finance returns them โ€” see #6 below)
9:50 AM(none)โ€”V11 Microservices killed earlier today โœ“
9:55 AMProduction๐Ÿ“ˆ MIS Morning BriefOLD format: no BLUF, plain LEAN IN list mixing setup with action, full earnings dump, macro shows GLD/USO/UUP ETF prices

โœ… #4 โ€” WHAT'S FIXED vs WHAT'S NOT

โœ… FIXED in v1 (live now):

โŒ NOT YET FIXED:

๐ŸŒ #5 โ€” REAL GOLD/BITCOIN/ETHER VALUES (your concern about $3,300)

You're right to push back โ€” I shouldn't pretend to know real-time prices. Honest answer:

WhatHow to verify the real value RIGHT NOWFormula for v1 sheet
Gold spot per ozGoogle search "gold spot price per ounce" or check goldprice.org=GOOGLEFINANCE("CURRENCY:XAUUSD") โ€” returns USD per troy ounce live
Silver spot per ozgoldprice.org / kitco.com=GOOGLEFINANCE("CURRENCY:XAGUSD")
Bitcoin spotcoingecko.com or coinmarketcap.com=GOOGLEFINANCE("CURRENCY:BTCUSD") โ€” works in Google Sheets
Ethereum spotcoingecko.com=GOOGLEFINANCE("CURRENCY:ETHUSD")
WTI Crude Oil per barrelmarketwatch.com/investing/future/crudeGoogle Finance dropped futures support 2018 โ€” use external API or accept USO ETF as proxy. Best alternative: =IMPORTHTML("https://markets.businessinsider.com/commodities/oil-price","table",1)
USD index (DXY)marketwatch.com/investing/index/dxy=GOOGLEFINANCE("CURRENCY:USDEUR") as inverse proxy, or scrape
10Y Treasury Yieldcnbc.com/quotes/US10Y=GOOGLEFINANCE("TNX")/10 (TNX returns ร—10 by convention)

The real fix in code (already pushed Friday): v1's misBuildMacroPulse_ at line 4334 of emailDailySnapshot.js uses these symbols. Tomorrow's email will show whatever Google Finance returns for them. If Gold or BTC come back blank, GF doesn't support that symbol consistently and we need an external API (Finnhub for crypto/forex, metals-api for gold).

๐Ÿ—๏ธ #6 โ€” YOUR ARCHITECTURE QUESTION (one master script for all sheets?)

Your instinct is correct. The pattern you're describing is solid: one master sheet that pulls macro/signal data once, other sheets VLOOKUP from it. Two ways to do it:

Option A โ€” One container-bound script per sheet (current approach)

Each sheet has its own bound script. Pro: when you open any sheet, its menu appears. Con: code drift across copies. This is what you have now.

Option B โ€” One master script bound to ONE master sheet, controls all others (what you're describing)

Master sheet has the script. Master script uses SpreadsheetApp.openById('1cosuFr...') etc. to read/write OTHER sheets. Pro: one source of truth, no code drift. Con: triggers fire from master only โ€” if master breaks, all stop. Pro: matches your mental model.

Recommendation: use Option B with v1 as the master. v1's script reads from production for Schwab data, writes signals back to production, fires emails for both. One codebase to maintain.

VLOOKUP vs QUERY weight question

FunctionSpeedUse when
VLOOKUPFast โ€” under 50ms even on 5000 rows when range is sortedSingle value lookup by ticker. Your 184-ticker universe = nothing.
INDEX/MATCHFaster than VLOOKUP for unsorted rangesSame as VLOOKUP but more flexible
QUERYMedium โ€” slower as ranges grow, but powerfulFilter + sort + aggregate in one. Use sparingly.
GOOGLEFINANCESLOW โ€” each call is a network request, ~200-500ms, RATE LIMITEDThe actual bottleneck. Batch in one place (master sheet) and VLOOKUP from there.

The architecture you're proposing makes sense for one specific reason: GOOGLEFINANCE is the bottleneck. If 5 sheets each call =GOOGLEFINANCE("AAPL"), Google rate-limits you and one or more returns blank. If ONE master sheet calls it, then 5 sheets VLOOKUP from the master, you've reduced 5 GF calls to 1. Same data, no rate limit.

This is a real performance win, not just aesthetics.

๐Ÿ“ #7 โ€” LOCAL FOLDER MAP

Working directory: C:\Users\ztrei\OneDrive\2. Hook Street\05. 2026 BH\

WhereWhat's there
MIS/FINAL_STRUCTURE_RECOMMENDATION.mdEnd-state map of all sheets/scripts/triggers
MIS/FOLDER_INVENTORY.mdLocal folder structure
MIS/audits/3 forensic teardowns + extracted v2 tabs
MIS/scripts/5 .js automation scripts (some pasted into v1 already)
MIS/screenshots/14 PNG visual references
MIS/SCHWAB_898_TRADE_LOG_SEED.csv47-trade history ready to paste into v1 Trade_Planner
MIS/working-copies/7 xlsx working drafts (gitignored)
outputs/2026-05-03_*.htmlThis briefing + ecosystem map + cross-sheet analysis
memory/project_mis_resume_marker.mdQuick-resume context for next Claude session

๐Ÿš€ #8 โ€” YOUR NEXT 3 MOVES (in order, no thinking)

Tonight (Sun May 3): Nothing. Sleep. Mon AM A/B test fires automatically.
Mon May 4 ~10:00 AM (after both emails arrive):
  1. Read v1 9:46 AM email vs Production 9:55 AM email side-by-side
  2. If v1 wins (it should): open v1 script โ†’ function dropdown โ†’ pick runSACSUpgrade โ†’ โ–ถ Run โ†’ check SACS_Upgrade_Log tab
  3. Open production script โ†’ clock icon (Triggers) โ†’ DELETE ALL
Mon May 4 EOD: Open v1 sheet โ†’ Trade_Planner tab โ†’ paste contents of MIS/SCHWAB_898_TRADE_LOG_SEED.csv into the Date/Action/Ticker/Quantity/Price columns. Fixes "no entry date" complaint that's been in every email.