| What | Click here | When + 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. |
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.
| Sheet/Script (link) | Currently | Should be | Action |
|---|---|---|---|
| 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. |
| Time EDT | Engine | Subject line | What you'll see |
|---|---|---|---|
| 9:46 AM | v1 | ๐ MIS Morning Brief | NEW 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 AM | Production | ๐ MIS Morning Brief | OLD format: no BLUF, plain LEAN IN list mixing setup with action, full earnings dump, macro shows GLD/USO/UUP ETF prices |
runSACSUpgrade (already in v1 script, awaiting your click)MIS/SCHWAB_898_TRADE_LOG_SEED.csv for pasteYou're right to push back โ I shouldn't pretend to know real-time prices. Honest answer:
| What | How to verify the real value RIGHT NOW | Formula for v1 sheet |
|---|---|---|
| Gold spot per oz | Google search "gold spot price per ounce" or check goldprice.org | =GOOGLEFINANCE("CURRENCY:XAUUSD") โ returns USD per troy ounce live |
| Silver spot per oz | goldprice.org / kitco.com | =GOOGLEFINANCE("CURRENCY:XAGUSD") |
| Bitcoin spot | coingecko.com or coinmarketcap.com | =GOOGLEFINANCE("CURRENCY:BTCUSD") โ works in Google Sheets |
| Ethereum spot | coingecko.com | =GOOGLEFINANCE("CURRENCY:ETHUSD") |
| WTI Crude Oil per barrel | marketwatch.com/investing/future/crude | Google 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 Yield | cnbc.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).
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:
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.
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.
| Function | Speed | Use when |
|---|---|---|
| VLOOKUP | Fast โ under 50ms even on 5000 rows when range is sorted | Single value lookup by ticker. Your 184-ticker universe = nothing. |
| INDEX/MATCH | Faster than VLOOKUP for unsorted ranges | Same as VLOOKUP but more flexible |
| QUERY | Medium โ slower as ranges grow, but powerful | Filter + sort + aggregate in one. Use sparingly. |
| GOOGLEFINANCE | SLOW โ each call is a network request, ~200-500ms, RATE LIMITED | The 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.
Working directory: C:\Users\ztrei\OneDrive\2. Hook Street\05. 2026 BH\
| Where | What's there |
|---|---|
MIS/FINAL_STRUCTURE_RECOMMENDATION.md | End-state map of all sheets/scripts/triggers |
MIS/FOLDER_INVENTORY.md | Local 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.csv | 47-trade history ready to paste into v1 Trade_Planner |
MIS/working-copies/ | 7 xlsx working drafts (gitignored) |
outputs/2026-05-03_*.html | This briefing + ecosystem map + cross-sheet analysis |
memory/project_mis_resume_marker.md | Quick-resume context for next Claude session |
runSACSUpgrade โ โถ Run โ check SACS_Upgrade_Log tabMIS/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.