# MIS HOLDINGS_CLEAN — Session Handoff
> **What this is:** Cloud-Claude session deliverable for next-session pickup (Cursor / Claude Code on Sam's Windows desktop). Captures everything analyzed today from Sam's 4 broker screenshots cross-referenced against last 4 days of MIS emails.
> **Generated:** Thursday, May 14 2026 · 4:34 PM EDT (NY)
> **Session context:** Cloud Claude Code (Opus 4.7, 1M ctx) · branch `claude/trading-system-research-WnMqE` · repo `zee78900/hookstreet-workspace`
> **Commit at write time:** `82d12a5` (master couch reference)
> **Source images:** 4 broker screenshots in Sam's chat with cloud-Claude (Fidelity Invest n Save ****0600 at 3:58 PM ET · Fidelity Joint Brok ****5692 at 4:00 PM ET · Schwab ZT Acct at 4:05 PM ET · Schwab SWPF at 4:05 PM ET). Not in repo — referenced from chat.

---

## TL;DR for whoever picks this up

**One tab is the bug. `HOLDINGS_CLEAN` in MIS sheet `1cosuFrU_EJRAprVMm-FEpmddSUTVQWhlI0tHpS1w2S4`.** Every "your holdings" line in MIS Morning/Trade Action/Power Hour emails reads from that tab. It's a manually-pasted snapshot from weeks ago. ~12 real positions are invisible. The engine downstream (SACS, regime, sector, FSE) is healthy. The data feeding "what does the user own" is half-blind.

**Fix is one weekend ritual + one architectural gate:**
1. Sunday paste-block (5 min, Sam-hands) — bring HOLDINGS_CLEAN current
2. PORTFOLIO_OVERLAP reject code in FSE resolver — stops MIS from recommending what's already held (COST/KO/ABBV happened this week)
3. REDUCE/EXIT state graduation — currently no held ticker ever gets a sell signal even when underwater for weeks (ORCL)

Everything else is downstream.

---

## Portfolio reality — 4 accounts, 19 distinct tickers, ~$21.5K total

> Source: Sam's screenshots May 14 2026 4:00 PM ET. % of acct values from Fidelity may include pending settlement of −$10,934.76 in Invest n Save (looks like outflow being processed).

### Fidelity Invest n Save (****0600) — total $15,662.71

| Ticker | Qty | Cost/sh | Mkt Px | % of acct | G/L | Notes |
|---|---|---|---|---|---|---|
| SPY | 10 | $647.63 | $747.825 | 47.75% | +$1,001.95 (+15.47%) | largest position |
| META | 10.351 | $573.26 | $618.28 | 40.86% | +$466.04 (+7.85%) | |
| ASML | 4.007 | $1,309.89 | $1,585.81 | 40.57% | +$1,105.63 (+21.06%) | best % winner |
| ABBV | 17 | $208.75 | $211.17 | 22.92% | +$41.22 (+1.16%) | **MIS doesn't see this** |
| COST | 2.003 | $903.28 | $1,041.37 | 13.32% | +$276.60 (+15.28%) | **MIS doesn't see this; recommended ADD today** |
| KO | 6.086 | $68.43 | $80.41 | 3.12% | +$72.89 (+17.50%) | **MIS doesn't see this; recommended ADD today** |
| ORCL | 0.847 | $301.07 | $195.32 | 1.06% | **−$89.58 (−35.13%)** | **MIS doesn't see this lot (the −35% loser)** |
| GOOG | 0.087 | $319.77 | $396.82 | 0.22% | +$6.70 (+24.09%) | sliver, fractional remnant |
| Pending | — | — | — | — | **−$10,934.76** | outflow being settled (verify with Sam what this is) |

### Fidelity Joint Brok (****5692) — total $4,382.54

| Ticker | Qty | Cost/sh | Mkt Px | % of acct | G/L | Notes |
|---|---|---|---|---|---|---|
| Cash MM | — | — | — | 4.30% | $188.41 | |
| LLY | 0.781 | $967.57 | $1,008.04 | 17.96% | +$31.60 (+4.18%) | |
| SPY | 0.954 | $682.69 | $748.17 | 16.29% | +$62.46 (+9.59%) | different cost basis than Invest n Save lot |
| SCHZ | 21.376 | $23.39 | $23.06 | 11.25% | −$7.06 (−1.42%) | bond ETF, **MIS doesn't see** |
| EQIX | 0.406 | $984.51 | $1,079.68 | 10.00% | +$38.64 (+9.66%) | |
| AAPL | 1.338 | $277.56 | $298.21 | 9.10% | +$27.63 (+7.44%) | |
| AMZN | 1.19 | $210.46 | $267.22 | 7.26% | +$67.54 (+26.96%) | |
| SGOV | 3 | $100.57 | $100.52 | 6.88% | −$0.15 (−0.05%) | T-bill ETF, **MIS doesn't see** |
| META | 0.455 | $666.20 | $618.43 | 6.42% | **−$21.74 (−7.18%)** | **MIS lost this lot between Mon and Thu — only sees consolidated 8.25 sh at $549** |
| ORCL | 1.267 | $205.72 | $195.66 | 5.66% | −$12.75 (−4.90%) | MIS sees this lot (entry $205.72 matches) |
| SCHG | 6.169 | $32.42 | $34.69 | 4.88% | +$14.00 (+7.00%) | **MIS doesn't see** |

### Schwab ZT Acct (main Schwab) — total $1,290.65

| Ticker | Qty | Cost/sh (computed) | Mkt Px | G/L | Notes |
|---|---|---|---|---|---|
| BA | 2 | ~$238.85 | $229.68 | −$18.34 (−3.84%) | **MIS doesn't see; was Mon ADD @ $237.49, now STARTER** |
| UNG | 24 | ~$11.07 | $11.16 | +$2.28 (+0.86%) | **MIS doesn't see; recommended ADD repeatedly** |
| SLV | 7 | ~$76.70 | $75.35 | −$9.48 (−1.77%) | **MIS doesn't see; recommended ADD; −5% today** |
| Cash | — | — | — | $36.07 | |

> Day −$45.59 (−3.41%), driven by BA + SLV.

### Schwab SWPF — total $142.24

| Ticker | Qty | Cost/sh | Mkt Px | G/L | Notes |
|---|---|---|---|---|---|
| ABNB | 1 | ~$141.83 | $134.07 | −$7.76 (−5.47%) | **MIS doesn't see; was Mon ADD @ $142.59 — bought near top** |
| Cash | — | — | — | $8.17 | |

### Schwab 898 (third Schwab account — visible only via MIS email, NO screenshot)

| Ticker | Qty | Entry | Mkt (Thu Power Hour) | G/L | Notes |
|---|---|---|---|---|---|
| AFRM | 15 | $50.78 | $66.56 | **+$236.70 (+31.08%)** | best % winner of any account; MIS sees ✓ |
| DAL | 3 | $63.76 | $71.30 | +$22.62 (+11.83%) | MIS sees ✓ |

> AFRM/DAL got into HOLDINGS_CLEAN before Schwab API auth expired (now 24+ days stale). Other Schwab accounts (ZT, SWPF) never made it in. **Next session must verify which Schwab account ending corresponds to "Schwab 898" tag.**

---

## What MIS actually thinks Sam owns (from Thu 5/14 Power Hour 3:11 PM)

```
SPY     | qty 10.95  | entry $650.68  ✓ correct sum, weighted avg
META    | qty 8.25   | entry $549.24  ✗ WRONG — real is 10.806 sh, two lots not reconciled
ASML    | qty 4.00   | entry $1309.48 ✓
LLY     | qty 0.78   | entry $967.57  ✓
AAPL    | qty 1.34   | entry $277.56  ✓
EQIX    | qty 0.41   | entry $984.50  ✓
ORCL    | qty 1.27   | entry $205.72  ✗ INCOMPLETE — missing Invest n Save lot (0.847 @ $301.07)
AMZN    | qty 1.19   | entry $210.46  ✓
AFRM    | qty 15.00  | entry $50.78   ✓
DAL     | qty 3.00   | entry $63.76   ✓
```

**Missing entirely from HOLDINGS_CLEAN:** ABBV, COST, KO, GOOG sliver, SCHG, SGOV, SCHZ, BA, UNG, SLV, ABNB

**Incorrect:** META qty (8.25 vs real 10.806), ORCL (single lot, missing the −35% lot)

---

## Why MIS gets it wrong — exactly one tab, three broken inputs

### `HOLDINGS_CLEAN` tab

Has three input pipelines feeding it. All three are broken or absent:

| # | Pipeline | State | Evidence |
|---|---|---|---|
| 1 | **Schwab API** | BROKEN, **24+ days stale** | Mon/Tue/Wed briefs: *"🔄 Schwab: 12d / 13d / 14d stale — API may need re-auth or no recent pull"* · Thu brief silently dropped the line (hidden, not fixed) · OAuth refresh originally due **Apr 21**, still pending (SCOPE_BACKLOG M7) |
| 2 | **Fidelity sync** | NEVER BUILT | Every brief: *"🔄 Fidelity: no sync timestamp (set FIDELITY_LAST_SYNC in CONTROL)"* — no integration exists. Both Fidelity accounts have always been manual. |
| 3 | **Manual paste** | STALE / INCOMPLETE | Rows that exist are from weeks ago. ABBV/COST/KO/SCHG/SGOV/SCHZ/BA/UNG/SLV/ABNB never got added. ORCL Invest n Save lot never got added. META qty drifted. |

**Engine is healthy.** SACS distribution sane, regime/VIX correct, sector pressure works, Flow Strength fixed (varies per ticker now, not the 76-for-all bug from April), Live Guard blocks shocks (BIDU/QCOM today). The other 60+ tabs are not the bug.

---

## What MIS calls did the last 4 days (Mon-Thu) actually do

### Mon 5/11 Morning Brief ADD (top 8)
| Ticker | Mon entry | Thu close | Δ | Sam holds? |
|---|---|---|---|---|
| UNG | $11.01 | $11.16 | +1.4% ✓ | yes (24 sh, Schwab ZT) |
| BA | $237.49 | $231.89 | −2.4% ✗ | yes (2 sh, Schwab ZT) — took loss |
| SLV | $77.63 | $75.35 | −2.9% ✗ | yes (7 sh, Schwab ZT) — took loss |
| GLD | $435.11 | $428.50 | −1.5% ✗ | no |
| ABNB | $142.59 | $134.07 | **−6.0% ✗** | yes (1 sh, Schwab SWPF) — bought near top |
| PLD | $144.29 | (n/a) | — | no |
| PM | $175.57 | (n/a) | — | no |
| DBX | $27.83 | REJECTED Wed | — | no |

**Hit rate for verifiable: 1/5. Sam owned 4 of these; 3 underwater 4 days later.**

### Thu 5/14 Morning ADD (today, top 8): XLP, TMV, WELL, TBT, UUP, COST, TBF, KO
- Defensive cluster: 2 short-bond ETFs (TMV, TBT), 1 long-USD ETF (UUP), 1 inverse 20Y bond (TBF), 2 defensive sector ETFs (XLP, XLV), 1 REIT (WELL)
- Today's tape was tech-led: SPY +0.81%, NVDA +4.5%, MSFT +1.07%, ASML +1%. **MIS ADD list had zero tech.**
- Sam already owns COST and KO. MIS doesn't know.

### MIS' own 7-day follow-up self-grade (Thu Power Hour)
> *"7d prior ADD/STARTER check: 10 working | 1 slipping | 18 now blocked/rejected/earnings-risk."*

**18 of 29 ADD/STARTER calls from 7 days ago have been downgraded.** SACS oscillates too fast — boosts on momentum, revokes when momentum tires.

---

## What MIS gets RIGHT (don't break these)

- Regime/VIX classification (NORMAL, factor 1.00, VIX 17-18 correct)
- Sector pressure with 14-sector breadth (Tech leadership +1.95% surfaced correctly today)
- SACS scoring distribution (Top 10 avg ~77, bottom heavy <40)
- Flow Strength varies per ticker (fixed since FSE doc was written)
- Live Guard catches shocks (BIDU −5.36%, QCOM −5.02% both blocked Thu)
- Earnings calendar with VSM (AMAT/QUBT/BIDU/MRVL surfaced)
- Trade Progress per-holding with stops + targets (informational discipline — works)
- Recommendation follow-up section (tracks own calls, learns)
- ASML / AMZN / AFRM / META main lot / SPY — correct HOLD calls on winners

---

## Open architectural calls — pending Sam from earlier in session

These are unblockers I asked Sam earlier and he pivoted before answering. Carry forward:

1. **Python introduction approved as architecture, or still evaluating?**
   - ZW-ENGINE-V9 (research doc Sam fed me 5/13) prescribes Python as data layer
   - MIS_FSE_ARCHITECTURE.md doctrine §12 says "Apps Script for orchestration only" — implicitly formula-first
   - These are different doctrines. Need a call. Today's evidence says **start without Python** — the bottleneck is holdings data, not price data.

2. **Wed/Thu-now first action?**
   - Option (a): Schwab re-auth + Fidelity sync (unblocks ZW-ENGINE-V9 *and* fixes the bug above)
   - Option (b): FSE Session 1 — wire INTC end-to-end through FINAL_STATE_ENGINE tab
   - Option (c): ZW Phase 1 — start replacing Google Finance with Python-driven price table
   - **My recommendation after today's data: (a). Skip Python and price-vendor evaluation until HOLDINGS_CLEAN is fixed.**

3. **`docs/MIS_DECISION_2026-05-14.md` deliverable** — was held back pending #1 + #2. Still owed. Next session should produce this with answers locked.

---

## What this session CAN'T verify (handoff transparency)

| Unverified | Why | Who should verify |
|---|---|---|
| Whether MIS sheet `1cosuFrU_...` titled `MIS_ARCHIVE_production_2026-05-03` is the live sheet or actually archived | Drive search for newer MIS sheets returned empty; emails are firing TODAY so a sheet is live; could be same sheet renamed | Next session reads the actual `HOLDINGS_CLEAN` tab + `RUN_LOG` to confirm |
| Exact column schema of HOLDINGS_CLEAN | Drive read returned only metadata + Reference_Rules/Tickers head | Next session reads the tab structure directly |
| Schwab account ending 898 vs ZT Acct vs SWPF mapping | Not explicit in any doc; MIS uses "Schwab 898" tag for AFRM/DAL but Sam's screenshots don't show account numbers | Sam confirms account ending; or next session checks Schwab statement |
| What the −$10,934.76 "Pending activity" in Fidelity Invest n Save is | Not in any doc; could be Zelle out, brokerage transfer, dividend reinvest, etc. | Sam confirms |
| Whether SCHG, SGOV, SCHZ are in MIS Tickers universe | Tickers tab head shown 184 rows; not exhaustively checked | Next session greps Tickers column A for these symbols |
| Exact cost bases on Schwab ZT (BA/UNG/SLV) and SWPF (ABNB) | Screenshots show G/L but not cost basis directly | Computed in this doc from G/L; next session verifies via Schwab order history |
| Why MIS lost META Joint lot between Mon and Thu | Mon 5/11 brief showed 2 META rows (8.24 @ $549 + smaller @ $645); by Thu only 1 row | Next session diffs HOLDINGS_CLEAN between Mon and Thu states |

---

## What this session CANNOT do from cloud sandbox

- ❌ Read/modify MIS Apps Script code (`MIS/` not in this sandbox, scoped to `zee78900/MIS` separately, MCP can't access)
- ❌ `clasp push` MIS code (no clasp here, no Schwab credentials here)
- ❌ Edit Google Sheet cells directly (Drive MCP is read-only for cells)
- ❌ Schwab API re-auth (Sam's hands + browser)
- ❌ Push to any branch other than `claude/trading-system-research-WnMqE`
- ❌ Send Gmail (only draft)

**Next session needs to be on Sam's Windows desktop in Cursor where MIS/ folder is present and clasp is configured.**

---

## GitHub issues opened this session

See `zee78900/hookstreet-workspace` open issues (filter label: `mis` or `holdings`). Created P0-P3 prioritized:

- **P0** — HOLDINGS_CLEAN sync broken (the umbrella)
- **P0** — Add PORTFOLIO_OVERLAP reject code (FSE doc §3)
- **P0** — Add REDUCE/EXIT state for held tickers (FSE doc §3 defined, not wired)
- **P1** — META lot tracking reconciliation
- **P1** — Schwab re-auth (24d stale, blocks half of HOLDINGS_CLEAN)
- **P1** — SACS oscillation smoothing (3-day MA or higher confirmation threshold)
- **P2** — Style-mismatch warning when ADD list sector ≠ leading sector
- **P2** — `Last 5 Trades` log empty since Jan 2026
- **P2** — ORCL Reversal Watch with no graduation to REDUCE
- **P3** — ADD setup-correlation cluster diagnostic (4-of-8 rate-up bets today)

Each issue references this handoff doc and `docs/MIS_FSE_ARCHITECTURE.md` for context.

---

## The Sunday paste-block (separate file)

See `outputs/2026-05-14_16-34_action_holdings-clean-paste-block.md` — ready-to-paste rows for HOLDINGS_CLEAN sourced from the 4 screenshots. 5-min cadence Sunday before week-ahead fires.

---

## Source trail
- This file: `/home/user/hookstreet-workspace/outputs/2026-05-14_16-34_handoff_mis-holdings-session.md`
- Branch: `claude/trading-system-research-WnMqE`
- HEAD at write time: `82d12a5`
- MIS emails analyzed: Gmail thread IDs `19e174fe9106e7af` (Mon Morning), `19e1c725ca94e3df` (Tue Morning), `19e2198344fba950` (Wed Morning), `19e26be89904f3be` (Thu Morning), `19e27b2ef578b81e` (Thu Trade Action), `19e27e8377da78b7` (Thu Power Hour), `19e13edb820c098d` (Sun 5/10 Week-Ahead)
- MIS sheet ID referenced: `1cosuFrU_EJRAprVMm-FEpmddSUTVQWhlI0tHpS1w2S4` (Drive title: `MIS_ARCHIVE_production_2026-05-03`, last modified 2026-05-07 17:30 UTC — verify status)
- Canonical architecture doc: `docs/MIS_FSE_ARCHITECTURE.md`
- Related: `docs/SCOPE_BACKLOG.md` M7 (Schwab re-auth)
