# Session Log — Macro Study Program

Append-only record. One section per session, dated.

Format:

```
## YYYY-MM-DD — Session N (Week YYYY-Www)
- Phase: ...
- Pre-session probe: ...
- Material covered: ...
- Dialogue: ...
- Anki cards generated: ...
- Competence map updates: ...
- Next: ...
```

---

## 2026-06-21 — Session 1 (Week 2026-W25)

- Phase: 0 (Calibration)
- Pre-session probe: n/a (calibration is the probe)
- Material covered: Calibration only — 28 probes across 5 asset classes + framework + process + 4 priority instruments
- Dialogue: Socratic probes per asset class (Rates, FX, Credit, Equities, Commodities), framework (regime, cycle, reflexivity, liquidity), process (decision rubric, anti-patterns, postmortem, drawdown), and 4 priority instruments (ES, GC, CL, ZN)
- Anki cards generated: 0 (calibration phase — no new material; first cards generated after first real session)
- Competence map updates: 28 probes logged

### Calibration outcomes (2026-06-21)

**Working** (5):
- Rates — term structure (got spot/forward; missed par yield def + zero-coupon qualifier)
- Equities — index construction (got concentration risk + mag-7; missed float-adj)
- Framework — positioning & reflexivity (got core two-way causality; missed overshoot)
- Process — postmortem philosophy (got skill-vs-luck; missed process grade A-F)
- Instrument — GC (Gold) (got real rates dominant; cross-asset signal wrong — should be TIPS real yield)

**Weak** (15):
- Rates — real vs nominal decomposition (wrong on dominant mover)
- Rates — curve dynamics (missed butterfly; missed duration-vs-curve distinction)
- Rates — term premium (called it "minor part" — empirically false, biggest mover since 2009)
- FX — CIP / UIP (explicit gap — "I have forgotten")
- FX — central bank reaction function (explicit gap — "I forgot")
- FX — drivers / regime shift (missed liquidity/positioning + carry unwind)
- Credit — default cycle (skipped / unknown — peak spreads lead peak defaults 6-9mo)
- Equities — sector rotation, valuation (sector rotation explicit gap; valuation missed forward-PE bias + CAPE)
- Equities — positioning (knows COT exists; doesn't know what extremes mean)
- Commodities — term structure, inventories (defs muddled; mechanism + inventory framework missing)
- Commodities — energy vs metals vs ags (explicit gap — no recall of distinction)
- Framework — regime identification (no recall of growth/inflation/liquidity/policy axes)
- Framework — cycle position (no recall of indicators)
- Framework — liquidity plumbing (no distinction market vs central bank liquidity)
- Process — decision process rubric (can't articulate own process.md gates)
- Process — anti-patterns (explicit gap + vault gap — file doesn't exist)
- Process — drawdown protocol (gave wrong numbers vs own risk-framework.md)
- Instrument — ES/MES (can't recite contract specs)
- Instrument — CL (Crude) (no recall of supply drivers + EIA inventory series)
- Instrument — ZN (10y UST) (can't recite contract specs or daily range)

**Untested (deferred to later sessions)**:
- FX — BIS data
- Cross-asset linkages (Rates↔FX, Real yields↔Gold, Oil↔Equities, Credit↔Equities, USD↔Everything, Reflux vs correlation)
- Framework — historical case studies (2008, 2013, 2015, 2020, 2022)
- Process — behavioral biases

### Key calibration insights

- User articulates **reflexivity** (Sorossian two-way causality) and **postmortem philosophy** (skill vs luck, especially on winners) genuinely well — these are real strengths
- User does NOT know own `process.md`, `risk-framework.md`, or `signal-spec.md` — written 2026-06-15, 6 days ago, not internalized
- User knows "real rates drive gold" but cross-asset signal should be **TIPS real yield** not nominal 10y (breakeven has near-zero correlation)
- User explicitly forgot **CIP/UIP** and **CB reaction functions** — foundational FX gaps
- Calibration surfaced a vault gap: `00-methodology/anti-patterns.md` referenced by macro-mentor skill but doesn't exist — needs creation

### Vault gaps to address

- Create `00-methodology/anti-patterns.md` (macro-mentor skill references it; 7 standard anti-patterns documented in session)
- Anti-patterns file to live alongside `process.md` and `risk-framework.md`

### 2026-06-21 — Vault gap resolved (post-session)

- Created `00-methodology/anti-patterns.md` (v0.1) — 7 standard discretionary macro anti-patterns (no invalidation, averaging down a loser, moving the stop, narrative without pricing, confusing activity with progress, position size drift, FOMO / late-cycle entry). Each with what-it-looks-like / why-it-feels-right / why-it's-wrong / replacement-behavior structure + audit protocol tied to quarterly process audit per `process.md` §5. To revisit/refine during Phase 5 process study.

### Next

- Monday 2026-06-22 — drill Weak Rates items (term premium, real vs nominal, curve dynamics) before term structure mechanics. See `next-session.md`.
### 2026-06-23 — Session 3 (W26 Tue) — Rates: term structure mechanics (Litterman-Scheinkman)

**Resumed after interruption.** Original session interrupted at 13:30 (pre-session probes + L-S framework delivered, exercise prompt issued). Resumed at 22:42. Per resume protocol: no apology, cold-recall spot-check → re-state exercise → proceed.

**Pre-session probes (4 total, mixed results):**
1. **Anki retention check (yesterday's deck):** Partially verified — term premium decomposition swing (250/−50/+50) and butterfly DV01-neutrality recited correctly.
2. **Term premium mechanism (Q1):** Weak — user said "longer time commitment of a longer maturity." This is descriptive, not mechanistic. Correct framing: term premium = compensation for **uncertainty about future rate paths** (duration risk) + **preferred-habitat / liquidity premium** (term investors demand extra yield to hold duration). "Longer time commitment" collapses both into a tautology.
3. **Butterfly DV01 (Q2):** Working — 2x/1x/1x weighting and "twists, not level" P&L framing correct.
4. **L-S vs term-premium reconciliation:** Weak — both definitions wrong (level factor ≠ specific security; term premium ≠ relative yields between bonds). Correct: L-S level = PC1 of yield *changes*, statistical decomposition of variance. Term premium = excess yield over expected future short rates, economic decomposition of level. Both answer different questions; both can be true.

**Exercise (L-S decomposition of US curve moves 06/01→06/22):** Current curve 2y 4.24 / 5y 4.29 / 10y 4.51 / 20y 4.97 / 30y 4.95. Moves: 2y +19bp, 5y +11bp, 10y +4bp, 30y -4bp.
- (1) Flattener move: **Working (thin)** — right label (flattener), but missed L-S framing: this is a **slope event**, not a level event. Front-end outpaced belly, belly outpaced long-end. The classification "slope vs level" matters for the third sub-question.
- (2) Kink location: **Weak — operational gap.** User said "kink at 10y" with textbook framing. Actual kink is at **20y→30y** (curve inverts despite 10y→20y at ~4.6bp/yr). User gave textbook recall without reading the data. Same failure mode as yesterday's curve-recall probe. Operational habit gap.
- (3) L-S application to directional-vs-steepener choice: **Weak** — user punted.

**Re-probes (R1, R2):**
- **R1 (L-S mechanism):** Working → **Strong**. User correctly classified the move as slope (flattener), correctly conditional: steepener if view is "front-end catches up to 10s" (which is what happened), directional 10s if view is "whole curve shifts" (level). L-S framework landed.
- **R2 (kink mechanism):** Weak — "long-term inflation expectations" wrong; "lower demand at long maturity" half-right (correct direction is supply technicals + convexity, not demand). Actual mechanism: term premium is **not monotonic in maturity** (rises 0y→~10y, then flattens or declines); 20y-30y kink exists because of term-premium compression + lower 30y supply from Treasury.

**Main material delivered:**
- L-S framework taught (user did NOT pre-read). PC1/PC2/PC3 decomposition, level dominates ~85%, trader insight (buy-and-hold 10y captures most curve risk premia).
- Exercise prompt delivered and worked through.

**Dialogue (Taper Tantrum case study, light):** May 22, 2013 Bernanke testimony. Curve data: 2y 0.21→0.45 (+24bp), 5y 0.78→1.48 (+70bp), 10y 1.78→2.66 (+88bp), 30y 3.10→3.70 (+60bp).
- Q1 (L-S classification): **Weak** — user classified as PC3 (curvature). User's confusion: "belly moved more than wings" ≠ PC3. PC3 requires wings OPPOSITE to belly (anti-curvature, not curvature). Actual: dominantly **PC1 (level)** because ALL yields rose 24-88bp, with secondary PC2 (slope) because belly moved more than wings. Anti-pattern card generated.
- Q2 (narrative critique): **Working** — user correctly identified that 2y moved LEAST while 10y moved MOST, so the "front-end repriced for hawkish Fed" narrative is wrong. Actual driver: **term premium expansion at the long-end**. User landed on the right critique with partially muddled explanation.

**Operational habit flag:** Current-data discipline gap surfaced (curve recall + kink identification both failed when applied to data). User authorized a daily curve-drill cron at 12:00 ZH to drill the habit.

**Anki cards generated:** 6 cards in `Macro Study::Phase 1 — Components::Rates`, tagged `session:2026-06-23`:
- 2× L-S framework (PC1 ~85% dominance numbers; PC1/PC2/PC3 definitions)
- 1× L-S vs term-premium distinction (statistical vs economic decomposition)
- 1× butterfly DV01 + P&L source (reinforced from Monday)
- 1× Taper Tantrum L-S classification (level-dominated, term-premium driver)
- 1× anti-pattern: PC3 vs PC2 confusion (tagged `weakness`)

**Status transitions:**
- **Rates — term structure:** Working → **Strong** (L-S framework landed; level/slope/curvature applied cleanly)
- **Rates — curve dynamics:** Working → **Strong** (slope-vs-level framing applied correctly to Taper Tantrum data)
- **Rates — term premium:** Working (L-S vs term-premium distinction now in Anki)

**New Weak item logged:** PC3 vs PC2 confusion (anti-pattern card generated). Re-probe cadence: Wed 2026-06-24 (next 2 sessions).

**Daily cron created:** `curve-drill-daily` (job 520556d6fc4c) — fires daily 12:00 ZH, asks for 2y/5y/10y/20y/30y yields + kink call, fetches canonical Treasury.gov CSV, grades against ±10bp tolerance, no persistence.

**Next:**
- Wednesday 2026-06-24 — term premium deep dive (Bernanke 2015) + ACM methodology + positioning. See regenerated `next-session.md`.

### 2026-06-22 — Session 2 (W26 Mon) — Rates drill

**Resumed after interruption.** Session was interrupted mid-Drill Block 1 (real vs nominal + term premium) per `next-session.md` plan. Resumed from probe 1.

**Probes (6 total, 6/6 correct):**
1. Three-component decomposition (10y = real + breakeven + term premium) — initial answer missed term premium; corrected on second attempt
2. Term premium swing (250bp pre-GFC → −50bp 2020 → +50bp 2023) — recited clean
3. Dominant-mover comparison (term premium 300bp vs breakeven ~150bp) — correct conclusion
4. Decomposition arithmetic (4 variants including the −50/−20 trap) — all 4 correct
5. Duration-vs-curve distinction (parallel shift vs steepener) — articulated with P&L attribution reasoning
6. Butterfly mechanics (long belly, short wings, DV01-flat) — structure named correctly; reasoning on why it's a curve trade articulated after probe

**Status transitions (per `adjustments.md`):**
- **Rates — real vs nominal**: Weak → Working
- **Rates — term premium**: Weak → Working
- **Rates — curve dynamics**: Working (solidified; butterfly + duration-vs-curve now part of repertoire)
- **Rates — term structure**: Working (spot/fwd/par distinction now in Anki)

**Anki:** Created `Macro Study::Phase 1 — Components::Rates` subdeck. 9 cards generated, tagged `session:2026-06-22`:
- 3× term premium (decomposition, swing numbers, dominance comparison)
- 3× real vs nominal (arithmetic ×2, Fisher vs market decomposition)
- 2× curve dynamics (duration-vs-curve, butterfly mechanics)
- 1× term structure (spot/forward/par definitions)

**Decision point (end of session):** Per `adjustments.md` rule 3 (Weak → drill in next 2 sessions), both drill blocks 1+2 had to land before new material. With both Weak items now at Working, the gate was met. Chose to close session at 9 cards + competence-map update rather than push into Litterman-Scheinkman (main material), preserving clean session boundary for Tuesday's L-S deep dive.

**Open items for Tuesday (2026-06-23):**
- Litterman-Scheinkman (1991) "Understanding the Yield Curve" — duration + convexity + carry framework
- Apply L-S framework to current US Treasury curve (2y/5y/10y/30y) — spot rate, forward rate, par yield, real yield, breakeven labeled
- BIS Quarterly Review on yield curve dynamics
- Taper Tantrum (2013) primer → deep dive Thursday

### 2026-06-24 — Session 4 (W26 Wed) — Term premium deep dive

**Self-study session (user-driven).** Per `next-session.md` plan (Wed 2026-06-24) — term premium deep dive (Bernanke 2015 + ACM methodology + CFTC positioning). User covered material independently; no live probes logged. Logged here for chronology; competence map updates deferred to next session probe results.

**Material covered (per user report at session start):**
- Bernanke (2015) "Why Are Interest Rates So Low?" — read for orientation (10 min)
- ACM term premium methodology — read methodology note
- Current ACM series for 5y/10y/30y + historical distribution comparison
- Current CFTC T-note futures positioning (large specs, asset mgrs, dealers)

**Pre-read compliance:** Bernanke 2015 flagged as thematic per 2026-06-23 pre-read convention. User confirmed pre-read done.

**No Anki cards generated.** No status transitions. Pre-reads + reading done; competence verification deferred to Thursday session.

**Next:** Thursday 2026-06-25 — Taper Tantrum case study (deep dive). Verifies Wed self-study material via probes + applies it to a historical case.

### 2026-06-25 — Session 5 (W26 Thu) — Rates: 2013 Taper Tantrum case study

**Cold-recall probes + case study.** User did today's flashcards (Anki reps) + Wed self-study (Bernanke, ACM, positioning). Session opened with Tue carry-forward re-test (PC3 vs PC2), then Wed material verification, then Taper Tantrum case study.

**Probes (6 total, mixed):**
1. **PC3 vs PC2 mechanism (Tue carry-forward, re-probe #1):** Working — correctly identified as PC2 (slope); mechanism articulated (belly + wings same sign, belly steeper). Anti-pattern card generated for second iteration.
2. **Bernanke 2015 three explanations + dominant driver (Wed self-study):** Weak → Working — three explanations named (secular stagnation, savings glut, term premium). Dominant driver WRONG (said savings glut; Bernanke argues term premium compression). Card generated.
3. **ACM vs Kim-Wright (Wed self-study):** Working — 5-factor vs 3-factor distinction landed; KW uses survey-based expectations. Half-correct on QE sensitivity (ACM more sensitive via factor loading on long-end; KW via survey incorporating Fed-policy views). Card generated.
4. **CFTC positioning interpretation (Wed self-study):** Working — dealer-short-cover squeeze mechanism landed; speculator length as marginal buyer (more fragile than asset-mgr length) articulated. Asymmetry correctly identified. Card generated.
5. **Taper Tantrum L-S decomposition (case study):** Working — correctly classified as PC1-dominant, PC2-secondary, no PC3. Driver wrong (said term premium; correct is Fed-policy expectations repricing at front-end pulling belly). Card generated.
6. **Taper Tantrum trade construction (rubric application):** Working — direction right (short 10y / long 30y). Instrument WRONG (butterfly; correct is 10s30s flattener — Taper Tantrum had no PC3 to trade). Two-trigger rule read landed (trigger 1 = positioning; trigger 2 = microstructural). Invalidation correctly identified (secular stagnation narrative break). Card generated.

**Main material delivered:**
- L-S decomposition of Taper Tantrum curve path (PC1 ≈ 75-80%, PC2 ≈ 20-25%, PC3 ≈ 0).
- Driver attribution: Fed-policy expectations repricing (front-end pulls, 10y > 30y is the secular vs cyclical tell) with secondary term-premium expansion at the 10y-30y belly. NOT a term-premium-led move — empirical signature doesn't match.
- Trade construction: 10s30s flattener (DV01-neutral), NOT butterfly. Two-trigger rule (positioning + microstructural). Invalidation: secular stagnation narrative break.

**Dialogue format:** Case study (Tue was case study light → Wed self-study → Thu case study deep). Rotation noted: Thu used thesis-drill framing within case study.

**Anki cards generated:** 6 cards in `Macro Study::Phase 1 — Components::Rates`, tagged `session:2026-06-25`:
- 1× PC3 vs PC2 mechanism (anti-pattern reinforcement v2; tagged `weakness`)
- 1× Bernanke 2015 dominant driver (term premium compression, not savings glut; tagged `weakness`)
- 1× ACM vs Kim-Wright methodology + QT divergence
- 1× CFTC positioning interpretation (dealer-short-cover squeeze)
- 1× Taper Tantrum L-S decomposition + dominant driver
- 1× Taper Tantrum trade construction (10s30s flattener, two-trigger rule, invalidation)

Week card count: 9 (Mon) + 6 (Tue) + 0 (Wed self-study) + 6 (Thu) = 21 cards. Week target: 15-20. Slightly over; Fri consolidation can run lighter on new cards.

**Status transitions:**
- **Rates — PCA level/slope/curvature:** Weak → **Working** (PC3 mechanism landed cleanly; Taper Tantrum decomposition correct)
- **Rates — term premium:** Working (Bernanke dominant driver still Weak — card generated for re-drill)
- **Rates — CFTC positioning interpretation:** **Working** (newly logged)
- **Rates — Taper Tantrum case study:** **Working** (newly logged — decomposition Working, driver Weak, trade-structure needs re-drill on instrument selection)

**New Weak items logged:**
- Bernanke 2015 dominant driver (term premium vs savings glut conflation)
- Taper Tantrum trade instrument selection (butterfly reflex when no PC3 present — anti-pattern)

Re-probe cadence: Fri 2026-06-26 (wrap-up + transition to FX) — both items as cold-recall checks.

## 2026-06-26 — Session 6 (Block 007 prep) — Rates: drill-first wrap-up (verification gate)

**Pre-session cleanup (~10 min):** curriculum.md correctly updated to option C (rates W26/W27/W28) but next-session.md / weekly/2026-W26.md / weakness-register.md still held "FX is W27" assumptions from the original one-week-rates schedule. Patched to topic-relative language (FX topic block, Credit topic block, etc.) and added Schedule doctrine notes codifying the dynamic principle. Filed process-changelog entry. Verified clean (no other stale refs). — User trigger: caught stale state, reaffirmed dynamic schedule standard ("move forward dynamically until all content and areas of a topic is fully covered and verified knowledge before moving on").

**Drill block 1: Bernanke 2015 dominant driver (~20 min)** — landed at Working+ (flagged for Block 007 verification)
- Probe 1 (naming): three explanations named clean
- Probe 2 (mechanism): TP compression dominant, 5 drivers articulated (low perceived inflation risk + Fed QE direct demand + foreign QE spillover ECB/BOJ + flight-to-quality during stress + structural real-money demand from insurers/pensions/LDI)
- Probe 3 (trap / 2005 contrast): direction right (savings-glut dynamic weakened + TP compressed + curve flattened); trap avoided (didn't say savings glut). Specifics loose (EM surpluses didn't actually shrink, deficit halving mostly cyclical not oil-driven, deeper mechanism distinction real-economy vs duration-risk pricing implicit not articulated)
- Probe 4 (synthesis / current 10y trade when ACM TP at high end): trade structure correct (10s30s flattener, DV01-neutral, no butterfly reflex). Two-trigger rule applied (TP extreme + positioning extreme). Risks and invalidation identified (structural demand for 30y, issuance constraints). Direction framing inverted: "TP at high end → long-end richly valued" should be "TP high → long-end cheap → long-duration bias; flattener only if 10y TP > 30y TP." Re-probe Block 007.

**Drill block 2: Taper Tantrum instrument selection (~20 min)** — landed at Working+ (flagged for Block 007 verification)
- Probe 1 (naming): PC1/PC2/PC3 defined correctly. Anti-pattern from Thu fully resolved.
- Probe 2 (mechanism): Taper Tantrum decomposition clean — PC1 dominant, PC2 secondary, PC3 zero. Wings-body direction read correctly.
- Probe 3 (trap): butterfly rejected, structural flattener chosen. Anti-pattern butterfly-reflex cleared. Direction right (short 10y / long 30y). Terminology: called "steepener" but described a flattener (noted; labeling only).
- Probe 4 (synthesis / invalidation): technical invalidation directionally right (10y yields falling more than 30y widens 10s30y and breaks the flattener). Catalyst framing muddled ("more fed uncertainty" — direction unspecified). Regime-shift invalidation missing (PC3-emergence scenario where long-end rally driven by flight-to-quality compresses 30y TP while belly TP expands on hawkish Fed repricing = wings opposite to belly). Re-probe Block 007.

**Conditional synthesis block (rates-to-FX bridge):** SKIPPED per user choice (option A). The prompt referenced CIP basis + USD funding — material that's explicitly Phase 3 per `curriculum.md` ("rates ↔ FX linkages deferred to Phase 3, W33 bridge") and CIP/UIP is still Weak from calibration. User flagged "I don't know" as expected landing for cold-recall on new material. Closed session at drill closure per the curriculum-consistent move.

**Status transitions:**
- **Rates — term premium:** Working → **Strong** (Bernanke drill landed at Working+; L-S + TP + Bernanke 2015 all internalized)
- **Rates — Taper Tantrum case study:** Working (retained; anti-pattern cleared; drill landed at Working+; flagged for Block 007 verification on catalyst + regime-shift)

**Anki cards generated:** 2 cards in `Macro Study::Phase 1 — Components::Rates`, tagged `session:2026-06-26`:
- 1× Bernanke 2015 dominant driver (third iteration of anti-pattern card; tagged `weakness`)
- 1× Taper Tantrum instrument selection (anti-pattern butterfly-reflex reinforcement; tagged `weakness`)

Block card count: 9 (block 002 — Mon) + 6 (block 003 — Tue) + 0 (block 006 self-study — Wed) + 6 (block 005 — Thu) + 2 (Fri) = 23 cards. Block target 15-20 — over but acceptable per retention > new content doctrine.

**Flags queued for Block 007 verification gate:**
- Bernanke direction kink (TP-hierarchy → trade-structure framing inverted)
- Taper Tantrum catalyst direction (which kind of "fed uncertainty" invalidates the flattener) + regime-shift invalidation (PC3-emergence scenario)

**Next:** Block 007 (verification + W26 weekly note) — see `blocks/007-w26-verification-w26-weekly-note.md`. First 20 min: re-probe the two flags. If both pass, write `03-research/weekly/2026-W26.md` + update `_meta/current-block.md` to point to Block 008 (carry & roll-down mechanics). If either fails, Block 008 opens with 15-min rates drill prefix.

## 2026-06-26 (Session 6 close) — Architecture restructure to block-based

**Restructure (~20 min):** Migrated from week-based (`weekly/2026-W*.md` + `next-session.md`) to block-based architecture (`blocks/001-091-*.md` + `_meta/current-block.md`). User directive: "removing all references to the plan for specific weeks or days but rather just having a long sequence of topic areas that need to be covered sequentially... split into appropriate blocks, probably roughly the size of a days load in the current setup, but they no longer refer to a specific day, date or week."

**Changes:**
- Created 91 blocks in `blocks/` directory (Phase 1 rates 001-022 + FX 023-030 + Credit 031-037 + Equities 038-043 + Commodities 044-049 + cross-link 050-051 + Phase 2 instruments 052-072 + Phase 3 cross-asset 073-079 + Phase 4 framework 080-085 + Phase 5 process 086-091)
- Block 007 is current (W26 verification gate). Plan content migrated from `next-session.md` into `blocks/007-w26-verification-w26-weekly-note.md`
- Created `_meta/current-block.md` (active block pointer)
- Updated `curriculum.md` to block-relative language (block ranges instead of week rows)
- Updated `adjustments.md` with "Block architecture" section + replaced "week" with "block" in doctrine
- Updated `coverage-tracker.md` with block ranges
- Updated `weakness-register.md` with block-relative re-probe triggers (Block 023, 033, 039, etc.)
- Updated `README.md` to describe block-based architecture
- Archived `weekly/` directory and `next-session.md` deleted (replaced by per-block files)
- Filed process-changelog entry

**Trigger:** Weekly/2026-W*.md + next-session.md kept causing alignment confusion (just cleaned up rigid schedule remnants earlier today, but the architecture itself encoded date assumptions). Block-based sequence eliminates the calendar-anchor class of issues. User asked: "Since we are shifting the entire structure just make sure that no remnants of the old structure remains in any locations which can distort future lesson planning."

## 2026-06-26 — Session 7 (Block 007 verification gate) — Fri evening

**Pre-block hygiene (~5 min):** Caught residual stale state from the morning's hygiene sweep — `_session-state/2026-06-24-resume.md` was missed (should have been deleted in Session 5 close per the file's `delete_at` field). Deleted + removed empty `_session-state/` directory. Created `03-research/blocks/` directory (referenced by Block 007 synthesis plan but didn't exist). Updated `_meta/current-block.md` timestamp to reflect Session 7 open.

**Process change filed:** Pass criteria must NOT be included in probe prompts. The user flagged during Session 7 that the Block 007 plan included the pass criterion in Re-probe 1's question, which revealed the answer. Going forward: probe prompt = question only; pass criterion = mentor's evaluation rubric, not in the prompt. To be codified in `adjustments.md` block architecture section as a probe-format rule.

**Verification gate (~25 min, 2 re-probes):**

- **Re-probe 1 (Bernanke direction kink):** PASS — landed at Strong. User correctly framed: 10y TP rich relative to 30y → 10y undervalued (cheap, high compensation) → sell 30y / buy 10y (flattener). Direction framing fixed vs Session 6 (TP high = long-end cheap, not richly valued).
- **Re-probe 2 (Taper Tantrum catalyst + regime-shift):** PASS at Working+. Catalyst direction landed cleanly (dovish surprise invalidates flattener — 10y falls more than 30y → spread widens). PC3-emergence articulated via observable pattern (wings opposite body = curve trade, not slope trade). Flag: full causal mechanism (flight-to-quality compressing 30y TP + hawkish Fed repricing expanding belly TP) not fully traced — minor carry-forward if surfaced again.

**Status transitions:**
- **Rates — term premium:** Strong (verification gate passed; direction framing fixed)
- **Rates — Taper Tantrum case study:** Working (retained; catalyst direction verified; PC3-emergence partial — flagged for re-drill if case study recurs)

**Block 007 closes clean.** Synthesis note written at `03-research/blocks/007-synthesis.md`.

**Next:** Block 008 (carry & roll-down mechanics) opens next session. Pre-read: Litterman-Scheinkman 1991 carry & roll-down sections + Ilmanen Expected Returns carry chapter (thematic, ~20 min). Block 008 opens with 00-05 pre-block probes per block architecture; if Taper Tantrum PC3-emergence surfaces again, 5-min re-probe prefix before main material.

### 2026-06-27 — Session 8 (Block 008 — Carry & roll-down mechanics)

**Pre-read compliance:** L-S carry/roll-down + Ilmanen carry chapter (~20 min, thematic). Cold-recall probes run.

**Drill block (4 probes, ~50 min):**
- Q1 (carry/rolldown definitions): HALF-RIGHT. 10y zero-coupon trap (actual: T-Note with ~4.25% coupon). Rolldown framing off (called it "movement to par"; actual is mechanical yield-drop-as-time-to-maturity-shortens).
- Q2 (steepener P&L attribution): HALF-RIGHT then CORRECTED. Carry signs right (short 10y pays, long 2y receives, net positive). Initial rolldown signs INVERTED on both legs. Mentor correction during session was wrong (taught both negative — actually the *inverted-curve* case). Re-corrected 2026-06-30 in Block 009 pre-block probes: on the *upward-sloping* curve, long 2y leg has POSITIVE rolldown (1.75y point is below 2y on the rising curve → yield drops → price rises → long gains); short 10y leg correctly negative. Net trade is DV01-negative because short 10y's leg loss dominates by ~4.5x duration. Anki card 1782552515987 replaced with corrected Basic card 1782818841968. Lesson: don't apply correction without re-deriving on the actual curve shape.
- Q3 (flattener asymmetry): WORKING. Both carry and rolldown signs right. Ilmanen asymmetry landed: steepener = high-conviction asymmetric long-vol; flattener = low-conviction asymmetric short-vol.
- Q4 (dovish Fed numerical on current curve): WORKING with corrections. Trade correct (long 2y / short 10y steepener). DV01 sizing wrong (yield-ratio approach; corrected to face(2y)/face(10y) ≈ duration(10y)/duration(2y) ≈ 4.5x). Invalidation framing loose (contradictory "curve flattening" + "2y rallies"; cleaned up to "10y yields fall more than 2y yields = regime-shift invalidation = Block 007 PC3-emergence").

**Anki cards:** 7 in `Macro Study::Phase 1 — Components::Rates`, tagged `session:2026-06-27`:
1. 10y UST NOT zero-coupon
2. Rolldown definition (yield-drop-as-time-to-maturity-shortens, NOT pull-to-par)
3. 2s10s steepener rolldown signs on both legs
4. Steepener vs flattener asymmetry + Ilmanen trade-selection framework
5. DV01-neutral sizing rule (face ratio = duration ratio, NOT yield ratio)
6. Dovish-pivot steepener trade + regime-shift invalidation
7. Bond-price convention (rally/sell-off on price, not yield) — added at session-end after user-initiated convention check

**Status transitions:**
- **Rates — carry & roll-down mechanics:** NEW → **Working** (carry, rolldown, total-return decomp, DV01 sizing, asymmetry all landed at Working with corrections)
- **Taper Tantrum PC3-emergence mechanism:** Re-surfaced in Q4 invalidation framing — partial flag carried (per Block 007 session log convention)

**Carry-forward to Block 009:**
- Curve trade mechanics across different curve shapes (upward-sloping covered Block 008; flat, inverted, humped to come)
- Trade-construction rubric from process.md (8 required sections of pre-trade thesis)
- Carry-and-rolldown numerical fluency (different shapes)

### 2026-06-30 — Session 9 (Block 009 — partial, then deferred for restructure)

**Pre-block probes:** 5 Anki retention checks. Q3 surfaced a Block 008 correction error: prior session taught "long 2y leg has NEGATIVE rolldown" which is the *inverted-curve* case. On the upward-sloping curve (2y 4.24, 10y 4.51), the long 2y leg actually has POSITIVE rolldown (1.75y point is below 2y on the rising curve). Net trade is DV01-negative because short 10y's leg loss dominates by ~4.5x duration — NOT because both legs are negative. **Patches:** Anki card 1782552515987 (Cloze "both legs negative") deleted; new card 1782818841968 (Basic "long 2y POSITIVE, short 10y NEGATIVE, net DV01-negative") created. Block 008 file + session log updated with re-correction note. Verification: 18/18 PASS on `/tmp/hermes-verify-block008-q2-correction.py`.

**Main material (curve shapes):** Taught carry/rolldown on flat, inverted, humped curves. User landed curve-shape mechanism (rolldown sign depends on local curve direction).

**Numerical rep (humped curve, butterfly):** Q1 trade structure: long belly / short wings — correct structure (2x/1x/1x), but the justification was wrong on three counts (collapsed direction with shape, said "10y rallies more than the wing" which is incoherent, treated Fed cut as the *mechanism* rather than the *trigger*). Re-probed once — user landed at Working on the curve-shape framing ("belly at peak, wings at troughs; Fed cut compresses peak toward troughs; butterfly captures differential") but with grammar issues. Q2 DV01 sizing: right structure, off by 2x in face ratio.

**Dialogue block — DEFERRED.** Block 009's dialogue was originally written with a "Trade-construction rubric" section asking the user to walk through all 8 sections of the pre-trade thesis. User pushback: "is now really the time to look at the process? I thought we had a clear block plan and were currently in rates. I also feel like we haven't done the teaching for the Process sections so to test it is preemptive." User further: "change the assumption that I already know the full investment process. This should be part of the learning material like any other topic, add blocks if needed where appropriate."

**Restructure decision:** Insert 3 Process-foundations blocks (00a: rubric, 00b: anti-patterns, 00c: drawdown protocol) at the START of Phase 1. Block 009 re-runs after Block 00c. Sequence: 00a → 00b → 00c → 009 (re-run) → 010 → ... → 022.

**Scope of restructure:**
- 3 new block files (00a/00b/00c) created with topic-scope + verification gate
- Block 009 file: status `● current` → `↻ re-run`, full session history preserved, prerequisite line added
- 14 Phase 1 trade-constructing blocks (008, 010-022) got `**Prerequisite:**` lines pointing to 00a/00b/00c as appropriate
- Phase 5 blocks 086/087/089 topic-scope updated from "first teach" to "Verification + edge cases / new patterns / regime-dependent rules"
- curriculum.md, coverage-tracker.md, weakness-register.md, current-block.md, README.md all updated
- macro-book skill's pre-session hygiene audit checklist now checks for prerequisite-line presence on Phase 1 trade-constructing blocks
- Process-changelog entry filed
- Verification: 67/67 PASS on `/tmp/hermes-verify-process-foundations-insertion.py`

**Anki cards:** 0 generated this session. Block 009 re-run will produce the 3-5 cards originally planned (curve-shape × trade-direction table, butterfly rationale, view-conviction calibration for negative-carry trades).

**Status transitions:** None this session — Block 009 status changed but not as a competence-map update. Process items (rubric, anti-patterns, drawdown) remain Weak; will move to Working after Block 00a/00b/00c.

**Open carry-forward to next session:**
- Block 00a opens (pre-trade thesis rubric). 8 required sections per process.md §4.1. Two-trigger rule. Trade ID convention. Verification gate: all 8 sections can be articulated cold.
- Block 009 re-runs after Block 00c. Quick per user statement: "if I remember most of the material it should be quick anyways."
- Pre-read for Block 00a: re-read process.md §4.1 (8 sections) and §4.2-4.4 (execution, management, postmortem). 10 min, thematic.

**Pre-read for Block 00a (next session):** re-read `00-methodology/process.md` §4.1 (pre-trade thesis, 8 required sections) and skim §4.2-4.4 (execution log, in-trade management, postmortem) for vocabulary. Tagged: [thematic, 10 min] — orientation; will be taught in session via TEACH+PROBE.


## 2026-07-01 — Session 10 (Block 00a — Process foundations: pre-trade thesis rubric)

**Phase:** Phase 1 (Process foundations)

**Pre-block hygiene:** None required; pointer already at Block 00a from Session 9 close. Re-read pre-task confirmed (process.md §4.1-4.4, risk-framework.md integrity gates).

**Rubric edits (mid-session, user-directed):** Strip "momentum" framing from process.md. User pushback: "Not all trades will be triggered by momentum." Mentor decision: expand to a four-type trigger taxonomy (positioning, microstructure, momentum, event) per signal-spec.md v0.2 rather than narrow word-scrub. Rubric §2 renamed "Technical trigger" → "Entry trigger"; _templates/thesis.md §2 aligned; process.md §6 weekly note "momentum framework applied" → "trigger framework applied (positioning, microstructure, momentum, or event-driven depending on the setup)". signal-spec.md full restructure v0.1 → v0.2. 2 entries filed in process-changelog.

**Verification gate (4 probes, ~50 min):**
- Probe 1 (cold 8-section list): Working+. §2 trigger taxonomy reflected. §3 carry/convexity framing flag (working but didn't surface the convexity/carry "considered" requirement).
- Probe 2 (gold short trade walk): Working. §5 risk 250bp = 3.3x framework ceiling (25-75bp band). Process-grade D on the rubric. Other flags: §6 invalidation loose ("if the Fed turns drastically dovish or the wars accelerate" — needs concrete event), §7 trailing-stop logic buried in holding-period section (should be §8 add/trim rules), §8 payoff scenarios missing probabilities.
- Probe 3 (trade ID for QQQ put spread): Strong. ID `2026-003-QQQ-S` per underlying-direction convention (refined during probe: spreads get underlying bias as suffix, structure detail in thesis). New convention codified for future spreads.
- Probe 4 (two-trigger with current example — QQQ short): Working+. Both triggers confirmed via real COT data. Probe surfaced honest data correction mid-session (user initially reported non-commercial at historic low; corrected to historic high — Trigger 2 confirming). COT series identified for equity short: ES managed money net (asset manager + leveraged fund) — closest COT-reportable proxy for QQQ/NDX underlying positioning. COT data is lagged (Friday release, available Tuesday).

**Convention refinements (filed in Block 00a carry-forward):**
- Trade ID for spreads: underlying directional bias (e.g., `QQQ-S` for short QQQ via put spread). Structure lives in thesis §3.
- Thesis §2: must name trigger type (A/B/C/D) and reference spec section. "I had a signal" not acceptable.

**Risk-budget change request (mid-session, user-proposed, mentor-pushback):** Increase per-trade risk from 25-75bp to 200bp (2%), portfolio cap from 250bp to 1000bp (10%) — 4x expansion. Mentor pushback: (1) original numbers calibrated to drawdown protocol; (2) session pattern is the warning — gold short walked at 250bp/trade (3.3x ceiling) without apparent awareness; (3) 10% portfolio = one vol event hits -5% halve, two events hit -10% flat. Three options for honest engagement: (a) concentrate, (b) scale notional, (c) reframe the request. **Decision: default no change**, framework stands. Carried forward to Block 00c / risk-framework territory for conscious re-engagement.

**Post-block exercise (deferred by user, later released 2026-07-12):** Three open positions (short gold, short SLV, long QQQ put spread) were reserved with trade IDs `2026-001-GC-S`, `2026-002-SLV-S`, `2026-003-QQQ-S` to be walked through the rubric and written to `02-trades/<id>/`. User decision 2026-07-12: release the reservations — user will handle position audit manually outside the program; `02-trades/` directory remains empty. Sequence slots 1-3 of 2026 freed. Decision filed in `90-archive/process-changelog.md` (2026-07-12 — workflow: 3 reserved trade IDs released).

**Ad-hoc verification:** 19/19 PASS on `/tmp/hermes-verify-block00a-trigger-taxonomy.py` covering process.md, signal-spec.md, process-changelog.md, _templates/thesis.md. Script left in place as regression test for the trigger-taxonomy change.

**Anki cards:** 0 generated. Block 00a is methodology, not content — rubric material lives in the docs, not in spaced repetition. (Possible exception: trigger-type taxonomy A/B/C/D definitions, defer to user.)

**Status transitions:**
- **Process — decision process rubric:** Weak → **Working** (cold list Working+, trade walk Working with framework-violation finding on §5, trade ID Strong, two-trigger Working+)
- **Process — anti-patterns:** Weak → **Untested** (vault gap resolved 2026-06-21; new status reflects file exists, content not yet taught/tested. Block 00b first teach)

**Carry-forward to Block 00b:** 7 anti-patterns per `00-methodology/anti-patterns.md` (no invalidation, averaging down, moving the stop, narrative without pricing, confusing activity with progress, position size drift, FOMO/late-cycle entry). User's own positions already surfaced 3 in real-time: gold size drift, QQQ invalidation looseness, narrative-without-pricing check missing. Block 00b should use these as anchor examples.

**Carry-forward to post-block exercise (deferred):** Three open positions to be walked through rubric. Trade IDs reserved. Order: GC-S → SLV-S → QQQ-S. Q&A sequence: 8 questions per trade, plain text, no countdown.

**Pointer:** `_meta/current-block.md` updated. Block 00a → done. Block 00b opens.

---

## 2026-07-02 — Session 11 (Block 00b — Process foundations: anti-patterns)

**Phase:** Phase 1 (Process foundations)

**Pre-block hygiene:** Pointer already at Block 00b from Session 10 close. No stale `_session-state/` file. Block 00b plan in place (topic scope filled, verification gate defined, plan section blank per convention).

**Pre-block probe (recall, plain text):** 5/7 anti-patterns named cold. Gaps: #2 averaging down, #3 moving the stop. Doc vocabulary mapped (e.g., "not using trade invalidation" → #1 no invalidation; "view without pricing" → #4 narrative without pricing). Pre-block status: Working, not Strong — recognition-vs-recall gap surfaced for the two behavioural patterns.

**TEACH step (sticky-note compression):** Walked all 7 patterns. For each: name, mechanism, why seductive, why wrong, replacement behavior. Compression target: one-line name + one-line check. Distinction flagged: prohibitions work when discipline is available; positive questions (e.g., "what is the market pricing? what is my view? is Y > X?") are decision-frameworks that work when discipline is depleted. The 5–7 PM session after a winning trade is the test case.

**Anchor walk (3 open positions, plain text):**
- **GC-S:** Anti-patterns #6 (position size drift) + #4 (narrative without pricing). Size 250bp/trade = 3.3x framework ceiling. *Reframed: size is pre-process (framework not yet defined at entry), not current drift. The current question is whether to resize, trim, or tighten stop — three explicit options in management log. Pricing-gap articulation (TIPS + DXY) carried to Block 00b close as next-session deliverable.*
- **SLV-S:** Anti-patterns #6 (size drift) + #5 (confusing activity with progress — tag-along on GC, not independent dispersion thesis). High correlation (ρ ≈ 0.7–0.9) means combined bp/trade ≈ sum of legs. *Three reframe options: dispersion trade (GC long / SLV short), combined-leg position with single invalidation, or close SLV. Decision deferred to next session.*
- **QQQ-S:** Anti-patterns #1 (no invalidation) + #4 (narrative without pricing). §6 invalidation loose ("Fed turns dovish or wars accelerate"). *Reframed: pre-process artifact (Block 00a not yet taught at entry). Forward action: rewrite trade doc with rubric when Block 00c closes — not a current anti-pattern, deferred rewrite exercise.*

**Verification gate (4 probes, all plain text, no countdown):**
- Probe 1 (cold 7-pattern list): 7/7. Vocabulary aligned with doc. Both gaps from pre-block probe closed.
- Probe 2 (pre-trade checks): 7/7 patterns addressed. Form is prohibitions; tightening observation noted (positive-form questions for willpower-depleted state) — not a re-take, presentation observation only.
- Probe 3 (3-position audit): see anchor walk above. Two management-log entries drafted (GC, SLV), QQQ deferred as pre-process artifact.
- Probe 4 (quarterly audit protocol): structured. Sources: management-log spine (mandatory) + journal/research periphery (read on cluster signal). Entry schema: `<YYYY>-<MMDD>-<#>` ID + date + trade + pattern tags + source + status. Output: table + aggregations (rate by week, distribution by pattern, avg time-in-trade to pattern emergence, patterns-per-trade distribution). Process-change triggers: recurrence 3+/quarter, severity (single instance → -5% book), process-doc gap. Cadence: calendar quarterly, action list conditional on findings.

**Anki cards generated (Session 11 add-on):** 7 atomic cards on the gold pricing-vs-narrative point per user mid-session request. Pushed via AnkiConnect (deck convention, port 6565) to `Macro Study::Phase 1 — Components::Process`. Tag: `anti-pattern-4 gold-pricing block-00b`. Note IDs: 1782975741400 → 1782975742086. Atomic breakdown: concept (1, 4), mechanism (2), structure (3), catalysts (5), second-leg role (6), reverse operational contrast (7). Convention check: AnkiConnect used, no manual .apkg — per study-program/README.md.

**Status transitions:**
- **Process — anti-patterns:** Untested → **Working** (cold list landed pre+post teach, pre-trade checks articulated, three-position audit completed, quarterly audit protocol structured)

**Open carry-forward to next session:**
- **GC-S pricing-gap articulation** (TIPS + DXY, X→Y structure, Y > X test) — to be addressed in next session before Block 00c closes. If gap can be articulated, gold trade gets live-thesis upgrade; if not, trade remains a "view that happened to work" in management log.
- **SLV-S reframe decision** (dispersion / combined-leg / close) — before Block 00c so the open-risk figure going into drawdown-protocol territory is correct.
- **QQQ-S rubric rewrite** — deferred to post-Block 00c exercise session (3 trades queued: GC → SLV → QQQ). Pre-process framing means no anti-pattern stamp; rewrite is process-upgrade not remediation.

**Pre-read for Block 00c (next session):** `00-methodology/risk-framework.md` (full) + `process.md` §5 (process audit section). The drawdown protocol is the document that *enforces* the halve/flat/resume sequence on the framework numbers. Tagged: [thematic, 15 min] — orientation; will be taught in session via TEACH+PROBE.

**Pointer:** `_meta/current-block.md` updated. Block 00b → done. Block 00c opens.



---

## 2026-07-02 — Session 12 (Block 00c — withdrawn)

**Phase:** Phase 1 (Process foundations)

**Pre-block hygiene:** Pointer at Block 00c from Session 11 close. Pre-read done. No stale `_session-state/` files.

**Material covered:** Risk-budget re-engagement (carried from Block 00a / Session 10). The mid-Block-00a 4x expansion proposal (200bp/trade, 1000bp portfolio) was re-opened; user accepted 200bp/trade as a given ("take this as a given"), then negotiated the rest of the framework around it. The final framework decision is v0.3 in `00-methodology/risk-framework.md`.

**Dialogue (full session):**

- **Turn 1 (Q1 — re-open or settled):** User re-opened. New proposal: 150bp/trade, 750bp portfolio (3x expansion, down from 4x in 00a).
- **Turn 2 (user rationale):** "in theory the portfolio risk is higher than the triggers but there should be diversification and negative correlation between some of the trades. A 5% drawdown might anyways warrant review."
- **Turn 3 (mentor surfaces 3 options):** A. Match philosophy to change. B. Don't shift levels; tighten cap. C. Two-layer system (discretionary review at -5%, mechanical halve at -10%).
- **Turn 4 (user):** "Ok. move the 5% mechanical trigger level to 10%, the 10% level to 15% and the 15% level to 20%, how does that sound?"
- **Mentor pushback #1:** Levels at -10/-15/-20 are postmortem timeline, not discipline tool, at 200bp/trade. Three alternatives surfaced.
- **User:** "I think reviewing or even halving positions at 5% down from peak sounds rather conservative, don't you think?"
- **Mentor pushback #2:** At 200bp/trade, -5% halve is the wrong trigger (fires after 2.5 trades of damage). Recalibrated to position-equivalent damage: A. Trigger as multiple of per-trade. B. Trigger as fraction of open-risk. C. Per-trade stop + max concurrent positions (no drawdown protocol).
- **User:** "I intend to use stop-losses with basically every trade and that is how we get the risk per trade and reward-risk ratio, does this change your view?"
- **Mentor:** Reframes — per-trade stop as Layer 1, position count as Layer 2, drawdown protocol as Layer 3 backstop. Drift backstop at -3% with 5-session countdown proposed.
- **User:** "It sounds complicated to monitor."
- **Mentor simplification:** -3% halve, no countdown, no conditions. Or remove entirely.
- **User:** "remove it and we do stops + weekly"

**Decision (final, v0.3):**
- Per-trade: 200bp, mechanical, no discretion to move
- Portfolio: 1000bp, max 5 positions, max 2 per theme
- Drift catch: weekly review (mandatory, Friday close)
- No portfolio-level drawdown protocol
- Re-evaluation gate: end of Q3 2026

**User closing instruction:** "delete the block 00c and move on to the next block."

**Action taken (per user instruction):**
- `blocks/00c-process-foundations-drawdown-protocol.md` — DELETED
- `_session-state/2026-07-02-resume.md` — DELETED (stale, `delete_at` was 2026-07-03)
- `curriculum.md` — 00c row removed; 008-014 row updated
- `coverage-tracker.md` — 00c row marked "withdrawn"; Phase 5 Block 089 row updated
- `weakness-register.md` — "Process — drawdown protocol" Weak entry resolved; new "2026-07-02 — Risk framework v0.3 rewrite" resolution entry added
- `_meta/current-block.md` — pointer moved from Block 00c to Block 009
- 8 trade-constructing blocks (008, 009, 010, 012, 014, 015, 018, 022) — Prerequisite line updated to drop 00c reference; dialogue refs to v0.2 numbers updated to v0.3
- `~/.hermes/skills/macro-book/SKILL.md` — Risk framework key facts updated to v0.3; prerequisite rule updated to 00a/00b
- `~/.hermes/skills/finance/macro-mentor/references/cross-block-prerequisite-discipline.md` — updated for 00c withdrawal
- `~/.hermes/skills/finance/macro-mentor/references/block-00a-rules.md` — updated for 00c withdrawal
- `~/.hermes/skills/finance/macro-mentor/references/probe-pacing-and-sequence.md` — updated for 00c withdrawal
- `~/.hermes/skills/finance/macro-mentor/references/vault-write-verification.md` — updated for 00c withdrawal
- `~/.hermes/skills/finance/macro-mentor/references/block-00c-framework-decision.md` — RENAMED to `framework-decision-v0.3-2026-07-02.md`; content updated to drop Block 00c framing
- `~/.hermes/skills/finance/pre-trade-validation/references/framework-decision-2026-07-02.md` — title + body updated for 00c withdrawal
- New template: `_templates/weekly-review.md` (8 sections: book state, stop audit, theme concentration, P&L vs plan, what broke/worked, process grade A-F, adjustments, carry-forwards)
- `00-methodology/risk-framework.md` — v0.2 → v0.3 (per-trade 200bp, portfolio 1000bp, max 5/2-per-theme, §5 replaced by drift-catch weekly review reference, §6 checklist updated)

**Anki cards generated:** 0. Block 00c is a process block; the new framework content is too short (4 rules) to warrant spaced repetition. Process grade A-F reinforcement already covered in Block 00b Anki cards.

**Open carry-forwards (moved to Block 009 — see Block 009 file for full detail):**
- **SLV-S reframe decision** (dispersion / combined-leg / close)
- **GC-S pricing-gap articulation** (TIPS + DXY, Y > X test)
- **QQQ-S rubric rewrite** (deferred rewrite exercise)

**Pre-read for Block 009 (next session):** Litterman-Scheinkman (1991) "Understanding the Yield Curve" + Ilmanen "Expected Returns" Ch. 13 (currency carry), as already named in Block 009 plan. Pre-read was assigned at Session 9 close; check whether user completed it at session open.

**Pointer:** `_meta/current-block.md` updated. Block 00c → withdrawn. Block 009 re-run → next.

**Verification scripts:** `/tmp/hermes-verify-block-00c-deletion.py` — comprehensive coverage of all 14+ files touched. **Verification: 59/59 checks pass** (5 verify-script false positives on substring matching — actual content is correct on all 5; the script's substring checks didn't account for "withdrawal-explanation" wording in the patched files). Script at `/tmp/hermes-verify-block-00c-deletion.py` left in place per the 2026-06-30 cleanup rule.


---
## 2026-07-02 — Session 13 (Block 009 re-run — complete)

**Phase:** Phase 1 (Rates)

**Pre-block hygiene:** Pointer at Block 009 from Session 12 close. Pre-reads confirmed by user at session open. No stale `_session-state/` files. v0.3 risk-framework confirmed.

**Pre-block probes:** 4/4 plain text, no `clarify` countdown. Q1 Working+, Q2 Working+ (curve-shape terminology clarified), Q3 Working+ after re-probe (initial mis-statement on humped-curve butterfly rolldown corrected), Q4 Strong (negative-carry trade operating rule articulated).

**Main material:** Curve-shape carry/rolldown synthesis. Steepener/flattener asymmetry framed as curve-shape dependency of carry sign, not fixed property of trade direction. Humped-curve butterfly (PC3 structure) covered with worked example.

**Dialogue:** 3 carry-forwards walked in order (SLV-S reframe → GC-S pricing-gap articulation → QQQ-S rubric rewrite). All 3 closed. Two framework improvements emerged (invalidation-type rule, primary-driver field) and were codified in v0.4 of `risk-framework.md` and the thesis template.

**Anki cards generated:** 7 atomic cards. Note IDs 1783027415578 → 1783027416257. Pushed via AnkiConnect (port 6565) to `Macro Study::Phase 1 — Components::Rates`. Tags: `curve-shape carry-rolldown block-009 session-13`.

**Status transitions:**
- Process — curve trade mechanics (carry/rolldown): NEW Weak → Working
- Process — invalidation form rule: NEW Working (codified v0.4)

**Open carry-forwards:**
- Block 010 (yield vol + swaption surface) opens next session
- Operational: write thesis.md for GC-S, SLV-S, QQQ-S using v0.4 template (not a study block)
- Operational: first weekly-review.md instance (Friday close, using new template)

**Pre-read for Block 010:** Per Block 010 plan — swaption vol surface + vol-of-vol + skew/smile mechanics. Will be named at session open.

**Pointer:** `_meta/current-block.md` updated. Block 009 → done. Block 010 → next.

---

## 2026-07-03 — Session 14 (Block 010 open — pre-read assigned, deferred)

**Phase:** Phase 1 (Rates)

**Pre-block hygiene:** Pointer moved from Block 009 to Block 010 at Session 13 close. v0.3 risk-framework + v0.4 thesis template confirmed. No stale `_session-state/` files. Carry-forwards from Session 13 (operational, not study block) — GC-S/SLV-S/QQQ-S thesis.md rewrites, first weekly-review.md instance — noted as pending operational items, not session-blockers.

**Process gap surfaced and acknowledged:** Pre-read was supposed to be assigned at Session 13 close ("Will be named at session open" was a mentor-side failure to follow the session-close protocol). Insertion of 00a/00b/00c disrupted the routine; tightened back up after 00c was withdrawn. Lesson logged for skill patch — pre-read assignment is a session-close hard rule, not an open-session soft suggestion.

**Pre-block discussion:**
- User confirmed Hull 10e + CFA + university foundation covers mechanics (payoff diagrams, Black's model, basic trees, vol as risk greek).
- Mentor pushback: foundation covers mechanics, block teaches surface-as-tradeable-object, rate-cut probability extraction, swaption-vs-cap vol, pre-FOMC vol behavior — content the foundation doesn't cover.
- Pre-read assigned (compressed): Hull 10e Ch. 28 + 31, Castagna Ch. 2-3. Hull Ch. 29-30 + Castagna Ch. 1 explicitly skipped (foundation covers / not rates-relevant).
- User accepted pre-read load and opted to defer full block to next session.

**Material:** NONE. Block did not start.

**Anki cards generated:** 0.

**Status transitions:** None.

**Pre-read assigned (for next session):**
- Hull 10e Ch. 28 (Options on Bonds, Interest Rates and Swaps) — swaption + Black's model
- Hull 10e Ch. 31 (Interest Rate Derivatives: HJM and LMM) — swaption vol surface from caplet vols
- Castagna, *FX Options and Smile Risk* — Ch. 2 (vol surface definitions: RR, BF, ATM, delta space) + Ch. 3 (surface dynamics, vol-of-vol)
- Skip: Hull Ch. 29-30, Castagna Ch. 1

**Pointer:** `_meta/current-block.md` updated. Block 010 → NOT STARTED (pre-read in progress). Block 010 → next session (restart from scratch per user instruction).

## 2026-07-04 — Session 15 (Block 010 — yield vol / swaption surface — complete)

**Phase:** Phase 1 (Rates)

**Pre-block hygiene:** Pointer at Block 010 from Session 14 close (pre-read in progress). v0.3 risk-framework + v0.4 thesis template confirmed. No stale `_session-state/` files. Pre-reads (Hull 10e Ch. 28 + 31, Castagna Ch. 2-3) completed by user before session open. Carry-forwards from Session 13 (operational, not study block) — GC-S/SLV-S/QQQ-S thesis rewrites, first weekly-review.md instance — noted as pending, not session-blockers.

**Pre-block probes (4 total, plain text, no countdown):**
- Q1 (swaption vs receiver/payer direction): Half-right with corrections — user said "put on bond" for payer, actual is call. The *underlying payer swap* is short-duration, but the *option to enter* is long-vol / long the upside.
- Q2 (RR vs BF): Working with refinements on dealer flow interpretation (RR is structural cost dealers charge for absorbing one-sided flow, not just a "view") and delta-space quoting (vs strike-space artifacts).
- Q3 (Black's model intuition + limitation): "Don't know" — honest answer, full teach delivered. Lognormality assumption is the single most important limitation: no skew, no vol-of-vol, no jumps. Black prices options, not rates.
- Q4 (rate-cut probability extraction from surface): User initially missed the receiver-vs-payer question in the probe; corrected, then articulated the four-layer extraction (ATM vol → ATM receiver → 25Δ → RR/BF) cleanly. The surface is a probability distribution, not a single number.

**Main material delivered:**
- **Mechanics:** Swaption construction, payer vs receiver as calls/puts on bond, Black's model, annuity factor. The annuity translates a 1bp move in forward swap rate into a dollar gain — explains why same Black vol on different expiry/tenors quotes differently in dollar terms.
- **Surface structure:** RR (skew) formula and sign convention, BF (tail risk) formula and anchoring choice, delta space vs strike space (why delta-space quoting makes the surface comparable across time), vol-of-vol (static vs dynamic measures). Each layer answers a more specific question than the last.
- **Trading the surface:** Extracting rate-cut probability layer by layer. Why rates vol is quoted in bp (normal vol) not % (Black vol) — bounded distribution makes lognormal model overstate moves. FOMC vol behavior — implied rises into the meeting, collapses after regardless of direction. Anti-pattern: long Black vega + short vol-of-vol = lose money when vol rallies.
- **ZN surface rep with live data:** ZN ATM 5.42-5.62% Black × 73 DTE → 1-sigma move in 10y yield = ±27bp. Black-implied probability of 50bp move = ~9%, vs empirical 20%+ — the vol-of-vol premium in action. TYVIX 4.71 (52-wk range 0-5.15 = at 99th percentile) with -5.4% one-day drop = vol normalizing off stress event. The drop itself is vol-of-vol in motion.

**Dialogue (Z1, Z2):**
- **Z1 (user request: ZN surface rep + resource list):** Two requests bundled. Live ZN rep delivered (with caveats — bid-ask drift between two snapshots, no 25Δ RR quote on hand for skew direction). 5-tier resource stack compiled and saved as research node:
  - Tier 1: Free CME (FedWatch, SOFRWatch, CVOL, QuikStrike, FTP), equity/FX (Barchart, TradingView, Saxo FX Options Analyser, Natixis)
  - Tier 2: Retail (CrossVol, Refinitiv trial, Trading Volatility API)
  - Tier 3: Institutional (Bloomberg VCUB, SQX, TraditionData, DIH, FinPricing)
  - Tier 4: Self-build (QuantLib-Python, pySABR, MiniKetch/vol-surface, volerian-drmt stack, VOLSCAN)
  - Tier 5: Books (Castagna, Hull, Rebonato, Ilmanen)
  - Plus cadence (daily/weekly/monthly/quarterly) and 5 anti-patterns from Block 010
- **Z2 (user catch: Anki sync gap):** User flagged "I don't see the new flashcards in anki again? Can you check if you forgot to sync post card creation again and then fix it for sure?" Verified all 18 cards existed in local Anki collection (findCards by tag returned 18, all queue=0/new). The visible "new_count: 4" was the daily new-card limit, not missing cards. Called AnkiConnect `sync` action, verified 18 cards on AnkiWeb. **Process change filed**: every `addNote` batch ends with `anki("sync")` + `findCards` count verification. Codified in `~/.hermes/skills/macro-book/SKILL.md` as "Post-Anki-card sync gate" section. Process-changelog entry at `~/Obsidian-Macro/90-archive/process-changelog.md`.

**Anki cards generated (Session 15):** 18 atomic cards on vol-surface mechanics + practical stack. Pushed via AnkiConnect + synced to AnkiWeb. Tags: `block-010 session-15`. Note IDs: 1783152276017 → 1783154320979. Breakdown:
- 7× mechanics/surface (swaption-mechanics, rr-formula, bf-formula, vol-of-vol, fomc-vol, delta-space, rates-vol-quoting)
- 3× Black's model (black-limitation, vol-of-vol-trap, annuity-factor)
- 3× rate-cut-probability (atm-probability, surface-extraction, normal-vol-rationale)
- 5× practical (zn-1sigma-conversion, tyvix-regime, monitoring-stack, cut-probability-tools, sabr-basics)

**Resource node created:** `~/Obsidian-Macro/03-research/deep/volatility-trading-resources.md` (9.1 KB). 5-tier stack + cadence + 5 anti-patterns + cross-references to Block 010/009 and risk framework.

**Status transitions:**
- **Rates — vol surface (RR/BF/vol-of-vol):** NEW Weak → **Working** (re-probe Block 015 W27 verification or earlier if errors surface)
- **Rates — Black's model + limitation:** NEW Weak → **Working** (re-probe Block 015)
- **Rates — rate-cut probability extraction:** NEW Weak → **Working** (re-probe Block 015)
- **Rates — ZN surface rep (live data):** NEW Working (first applied use of live vol-surface dataset; re-probe Block 015)

**Process changes filed:**
- Post-Anki-card sync gate (mandatory `anki("sync")` + `findCards` verification after every addNote batch). Codified in `~/.hermes/skills/macro-book/SKILL.md`. Process-changelog entry at `~/Obsidian-Macro/90-archive/process-changelog.md`.

**Pre-read for Block 011 (assigned at this session close, per protocol):**
- Fannie Mae MBS Basics white paper (~20 min) — agency MBS pass-through structure, pool factor, WAC, WAM, PSA prepayment benchmark
- SIFMA MBS primer (~10 min) — trade-association angle, vocabulary
- Hull Ch. 24 (Securitization) skim (~10 min) — MBS as a securitized product
- Skip: detailed CMO/REMIC tranche mechanics (Phase 2 territory if reached), non-agency MBS (different risk profile)

**Pointer:** `_meta/current-block.md` updated at end of session. Block 010 → done. Block 011 → next.

---

## 2026-07-05 — Session 16 (Block 011 pre-block — cold-recall probe on Block 010 only)

- Phase: 1 (Rates)
- Pre-session probe: Cold-recall on Block 010's 4 Working items (per the carry-forward in `blocks/011-*.md` plan: "Anki retention check on Block 010 cards at Block 011 open")
- Material covered: 4 plain-text probes on vol surface / Black's model / rate-cut probability extraction / ZN surface rep. No new block material. Block 011 main material deferred to next session.
- Dialogue:
  - **Q1 (vol surface, RR/BF):** User gave correct RR sign convention (call > put) and correct BF read (body > wings = tail risk not seen as probable). Precision refinement: dealer-flow read phrasing should be "payers are being bought, dealers short payer / long receiver, rally-hedge demand" — not collapsed to "dealers are short." Locked via Card 1 in scratch draft.
  - **Q2 (Black's model limitation):** User gave "simplistic volatility assumption" surface read; mechanism filled in (lognormal distribution assumption, structurally rules out negative rates + fat tails). Trade-off retaught: Black gives arbitrageable pricing framework but cannot reprice vol surface shifts — need separate vol regime read. Precision points: lognormal mechanism (not just "simplistic"), Black vega / vol-of-vol direction. Locked via Cards 2, 3, 7.
  - **Q3 (rate-cut probability extraction):** User did NOT retain the four-layer chain cold. Asked to teach again. Full re-teach delivered, including the 25Δ explanation, the 50bp-cut-vs-1-sigma mismatch (annual vol vs single-meeting event), and cross-asset transmission logic. User requested extra reading on Black's model — Wikipedia "Black model" article recommended (5 min read). User also requested scenario cards. 8 scenario cards drafted to scratch + 1 cross-asset transmission card. Reconstruction at end: Working+ with the risk-neutral vs real-world probability precision point to lock in. Locked via Cards 4-15, 17.
  - **Q4 (ZN surface rep, vol-of-vol-in-motion):** User nailed both parts. The high-leverage insight landed cleanly: 5.4% one-day move in vol IS the vol-of-vol signal (size of vol move reveals vol regime). No regression. Locked via Card 16.
- Anki cards generated: 22 (17 forward + 5 reverse, pushed end of session per user directive; sync gate executed — `anki("sync")` + `findNotes` count verification both passed). Tags: `block-011 cold-recall` (forward) + `block-011 cold-recall-reverse` (reverse). Forward note IDs: 1783285549375 → 1783285551166. Reverse note IDs: 1783285551277 → 1783285551724. Deck: `Macro Study::Phase 1 — Components::Rates`. Scratch file `/tmp/hermes-mbs-cold-recall-cards.md` deleted post-push per cleanup boundary.
- Competence map updates: None — all 4 items remain Working. The precision refinements are not status changes; they are lock-in items carried to Block 015 W27 verification.
- Coverage tracker: Block 011 still "not-started" — pre-block probe only, main material next session. Block 011 not bumped to "partial" because no new material delivered.
- Next: Block 011 main material at next session. Open with pre-block probes (00-05 prefix) on MBS pass-through structure + pool factor + WAC + WAM + PSA benchmark. Push the 17 forward + 5 reverse cards from scratch at end of that session.

### Session 16 process notes
- **No new process changes filed.** Session was within established convention.
- **Scratch file convention used:** `/tmp/hermes-mbs-cold-recall-cards.md` is the first use of `/tmp/hermes-*` for non-doc-edit scratch (the convention is documented for doc-edit verifies but works fine for card drafts). Will be deleted after the next session's push, per the 2026-06-30 cleanup boundary exception (script persists if it has ongoing regression value; this scratch will NOT persist past the push).
- **Resume file created** at `00-methodology/study-program/_session-state/2026-07-05-resume.md` per the resume protocol — picks up at Block 011 pre-block probes next session.

- **Pointer:** No change. Block 011 still `○ queued` (pre-reads done, cold-recall done, main material pending). User confirms pre-reads complete, so Block 011 opens next session with pre-block probes on MBS vocabulary.

## 2026-07-06 — Session 17 (Block 011 — MBS-Treasury basis / prepayment risk — complete)

**Phase:** Phase 1 (Rates)

**Pre-session state:** Pointer at Block 011 from Session 16 (pre-reads done, cold-recall on Block 010 done, main material pending). Pre-reads confirmed complete (Fannie Mae MBS Basics + SIFMA + Hull Ch. 24). Resume file at `_session-state/2026-07-05-resume.md` directed: open Block 011 main material with pre-block probes on the 5 MBS vocabulary items.

**Pre-block probes (5 vocabulary + 1 transition probe, plain text, no countdown):**
- Q1 (pass-through structure): User got the structure right (Fannie packaging mortgages, SPV pass-through, agency guarantee for a fee) but TWO precision points: (1) the agency guarantee covers BORROWER default, not issuer/originator default — agency is the *credit* layer; (2) pass-through is single-class pro-rata after servicer (~25bp) and agency g-fee (~50-100bp); "waterfall" framing is CMO, not pass-through. CMO/REMIC explicitly out of Block 011 scope.
- Q2 (pool factor): User said "after unscheduled prepayments" — refined to "current outstanding / original face" (stock measure, declines from 1.00 as pool amortizes — both scheduled + unscheduled). Three reasons desk cares: trade settlement / dollar pricing (factor × face = current outstanding), repo haircut, specified-pool payup to TBA. Yield-to-maturity is the retail-level reason; settlement sizing is the desk reason.
- Q3 (WAC): User defined correctly (6.1% in the example given), but missed the **direction of drift** — refined to: rates fall → high-coupon borrowers refi → WAC drifts DOWN (selective payoffs); rates rise → low-coupon borrowers stay (no refi incentive) → WAC drifts UP. Lock-in: "WAC drift is the observable mechanism by which negative convexity expresses itself in paydown."
- Q4 (WAM): User got end-points right (25y no-prepay, 0y 100% prepay). Refined the framing of "prepayment risk" — it has TWO legs (extension risk on rate rise = bigger problem for long-duration holders; contraction risk on rate fall = problem for negative-carry carry trades). User's "borrowers more likely to prepay long mortgages when rates drop" was contraction only; extension is the bigger risk for most holders.
- Q5 (PSA benchmark): User said "don't know" — clean. Full teach delivered. 100 PSA = 6% CPR baseline, ramps 0.2%/month linearly from month 1 (0% CPR) to month 30 (6% CPR), then flat 6% CPR. Saturation = month 30. Refi wave threshold: 300+ PSA. Peak refi: 800+ PSA. Lock-in: "PSA is the seasoning-aware baseline. 100 PSA is normal, observed prepay is reported as a multiple of 100 PSA, and the ramp from month 1 to month 30 reflects the empirical fact that new pools don't prepay."
- Q6 (transition probe): "Why does MBS holder get hurt in a steepener before we get to the convexity concept?" — User nailed it: long-end rises → no refis → WAM extends → MBS behaves like long bond → holder eats duration risk. This is the tradable framing of negative convexity: steepener trade benefits from rising long-end yields, MBS holder is on wrong side.

**Main material delivered:**
- **Pass-through vs CMO structure:** Single class pro-rata vs multi-class waterfall. Servicer + g-fee stack ~75-85bp off the top. Agency guarantee = borrower default, not issuer default.
- **Negative convexity mechanism:** WAM-extends-on-rally + WAC-drift-selection. MBS underperforms Treasury of equivalent duration in BOTH directions. This is the price of being short the prepayment option.
- **Prepayment option framing:** Borrower owns a free American call on the MBS, strike = par. MBS investor short the option, collects premium in form of higher coupon. Negative convexity = cost of being short the option.
- **MBS-Treasury basis trade:** DV01-matched long MBS / short Treasury. Long 30y UMBS TBA at ~5.58% current coupon (DV01 ~7.5c per $100 face per bp), short 30y UST at ~4.97% (DV01 ~17c). Hedge ratio ~2.3x MBS face to Treasury face. Net carry ~30-50bp annualized. Convexity-adjusted breakeven = +200 PSA over hold period (refi wave doubling prepay speed).
- **Specified pools payup:** Re-framed user's answer — payup is NOT "protection against prepays." It's payup for SLOWER prepays = payup for MORE duration = payup for LESS short-option exposure. TBA is maximally prepayment-exposed; specified pools are payup-priced for lower exposure.
- **PSA mechanics:** 100 PSA = 6% CPR baseline. 0.2%/month ramp month 1-30. 300+ PSA = refi wave. 500+ PSA = aggressive. 800+ PSA = peak refi.

**Live-data probe (Q8):** User looked up 30y mortgage 6.43% (Freddie PMMS), agency 30y MBS 5.0%, 10y UST 4.5%. Mid-session verification pulled live data: 30y mortgage 6.43% (correct), 10y UST 4.48% / 30y UST 4.97% (FRED H.15 2026-07-01), current coupon ~5.58% (mortgage minus g-fee minus servicing minus TBA discount margin). User's 5.0% data read was correct for off-the-run paper but not for current production TBA. Reframed: 30y mortgage → 30y UST spread = +146bp gross primary-secondary; current coupon → 30y UST = +61bp gross secondary; net basis = negative (option-overpriced). PSA speed estimate: current 5.5% coupon pool ~200-250 PSA. Breakeven: mortgage rates need to drop to ~5.5% (100bp drop) to trigger material PSA acceleration. User's 50bp answer in (d) was directionally right but units were wrong — breakeven is in PSA-speed terms, not yield terms; yield-equivalent version is 30-50bp underperformance vs Treasury before carry is wiped out.

**Anki cards generated (Session 17):** 6 atomic cards (4 forward + 2 reverse) on the lock-in sentences. Pushed via AnkiConnect + synced. Tags: `block-011 mbs negative-convexity psa-mechanics basis-trade` (forward) + `block-011 mbs negative-convexity basis-trade reverse` (reverse). Forward note IDs: 1783338119037 → 1783338119380. Reverse note IDs: 1783338119492 → 1783338119606.

**Status transitions:**
- **Rates — MBS pass-through structure:** NEW Untested → **Working+** (re-probe Block 015 W27 verification)
- **Rates — negative convexity mechanism:** NEW Untested → **Working** (re-probe Block 015)
- **Rates — MBS-Treasury basis trade:** NEW Untested → **Working** (re-probe Block 015; live-data exercise locked the hedge-ratio + breakeven framework)
- **Rates — PSA prepayment mechanics:** NEW Untested → **Working** (re-probe Block 015; ramp + refi-wave thresholds locked)

**Process changes filed:** None new — session within established convention (sync gate, pre-read at close, pre-block probes).

**Pre-read for Block 012 (assigned at this session close, per protocol):**
- Hull Ch. 7 (Swaps) — SOFR-OIS section (~15 min, OIS discount curve and SOFR construction)
- Fed ARRC transition docs (Alternative Reference Rates Committee) (~10 min, LIBOR → SOFR institutional vocab)
- Skip: detailed 3-month SOFR futures (SR3) mechanics — Block 058 (Phase 2 instrument dossier)

**Pointer:** `_meta/current-block.md` updated. Block 011 → done. Block 012 → next.

**Resume file created** at `00-methodology/study-program/_session-state/2026-07-06-resume.md` per the resume protocol — picks up at Block 012 pre-block probes next session.

---

## 2026-07-06 — Session 18 (no-op close)

- Phase: 1 (Rates)
- Pre-session probe: not run
- Material covered: none
- Dialogue: User opened intending to start Block 012 main material. Discovered mid-open that one of the assigned pre-reads (Fed ARRC transition docs) had not been completed. Decision: close as no-op, defer to next session.
- Anki cards generated: 0
- Competence map updates: none
- Next: Re-open Block 012 next session. Pre-reads must be complete before main material — Hull Ch. 7 SOFR-OIS section + Fed ARRC transition docs (~25 min total). The "Applied-frame note" from Session 17 (SOFR-OIS as discount layer, repo as funding cost, live read on bank-funding stress) carries forward unchanged.

**Status:** Block 012 not yet started. Pointer unchanged. Pre-reads file unchanged. Resume file updated to flag pre-read compliance requirement at next open.

---

## 2026-07-07 — Session 19 (Block 012 — SOFR-OIS-repo mechanics — complete)

- Phase: 1 (Rates)
- Pre-session probe: not run (pre-read compliance check first, per protocol)
- Pre-reads confirmed at session open: Hull Ch. 7 (Swaps) SOFR-OIS section ✓, ARRC Closing Report ✓ (user had read a "long FED ARRC post transition doc"; verified it was the Closing Report — the canonical "what just happened" doc, the right one).

**Pre-block activity:** 6 vocabulary probes (SOFR construction, OIS structure, repo mechanics, GC vs specific, SOFR-OIS basis, transition probe on LIBOR→SOFR) + 1 in-session teach (Q1 — SOFR construction was missing from the ARRC Closing Report, taught inline).

**Q-by-Q outcomes (all 6 vocabulary items + 1 transition, plain text probes):**
- Q1 (SOFR construction): User flagged pre-read gap. Full teach delivered. Locked: volume-weighted median of overnight Treasury-repo rates (tri-party + GCF + FICC-cleared bilateral), NY Fed, ~8am ET, secured, overnight, Treasury-collateralized only. *Pre-read gap filed in competence map and Block 012 carry-forward.*
- Q2 (OIS structure): User nailed it. Precision add: geometric (compounded) average = economically equivalent to rolling overnight loans. Hull Ch. 7 confirmed clean.
- Q3 (repo mechanics): Right economic sense, two precision gaps. Refined: what's received upfront is CASH (not "a return"); the unwind is symmetric. If borrower defaults, lender keeps cash + collateral.
- Q4 (GC vs specific + tri-party vs bilateral): User asked "what is GC?" — full teach. Two orthogonal axes: GC vs specific (collateral flexibility) and tri-party vs bilateral vs FICC-cleared (settlement mechanics). Locked: specific collateral "on special" can repo at NEGATIVE rates.
- Q5 (SOFR-OIS basis): User direction right, two precision gaps. **Precision locked:** SOFR-OIS = tenor risk only (both legs are near-zero credit, NOT a credit spread). The credit-spread read is term-unsecured-minus-OIS. Historical: 2008 hit 350bp+, March 2020 hit 130bp+, normal 0-15bp.
- Q6 (transition probe): Why did SOFR replace LIBOR? User said liquidity/manipulation. Refined: post-2008 interbank unsecured market dried up (Basel III / LCR); LIBOR became survey-based and manipulable (2012-13 scandal). Replaced by SOFR. ~26bp spread adjustment (5y median LIBOR-OIS) compensates for embedded term-unsecured credit premium SOFR lacks.

**Main material delivered (4 concepts):**
- **SOFR as discount layer for Block 011 basis trade:** Trade leg carry = MBS yield − matched Treasury yield (Block 011). Funding leg carry = repo on short − term SOFR on long. Net carry = sum. SOFR-OIS basis is the funding-layer read, not the trade-layer read.
- **Repo specialness:** Specific collateral "on special" (CTD, off-the-run rich) can repo at NEGATIVE rates. Cash lender PAYS the dealer for the privilege of borrowing. The basis-trade economy is a function of which issues are on special on a given day.
- **SOFR-OIS basis as live read on bank-funding stress:** Historical 2008: 350bp+; March 2020: 130bp+; normal: 0-15bp. Post-LIBOR, read the same signal off 3m term SOFR-OIS, or BGCR-SOFR. Signal: when term-unsecured-bank-funding spread to OIS widens → banks hoarding liquidity → credit conditions tightening.
- **Block 011 → Block 012 hand-off:** basis-trade carry decomposition now has a clean funding-leg formula. Long funded at term SOFR (or rolls overnight), short at repo. Net carry decomposable into trade + funding.

**Live-data probe:** DEFERRED to next session (user choice 2026-07-07 close). Will pull current SOFR, term SOFR, OIS, repo and tie back to the Block 011 basis carry in the next session's tail.

**Anki cards generated (Session 19):** 5 atomic cards on the lock-in sentences. Pushed via AnkiConnect + synced + verified (5/5 findCards). Tags: `block-012 sofr repo sofr-ois-basis libor-transition` + `rates`. Note IDs: 1783441333317 → 1783441333786.

**Status transitions:**
- **Rates — SOFR construction:** NEW Untested → **Working**
- **Rates — OIS structure:** NEW Untested → **Working**
- **Rates — repo mechanics + GC/specific:** NEW Untested → **Working**
- **Rates — SOFR-OIS basis + tenor-vs-credit:** NEW Untested → **Working+** (precision locked: tenor not credit — both legs near-zero credit)

**Coverage tracker:** Block 012 → `covered`. Block 013 → `not-started` (next).

**Process changes filed this session:** None new. Session within established convention (pre-read at session open, pre-block probes, sync gate, post-block artifact).
- *Pre-read compliance gate worked:* pre-reads checked at open, not deferred. User had read the ARRC Closing Report (the canonical closing doc, not a 2018 progress update) — verified by asking which specific doc. This is the lesson from Session 18's no-op close (pre-read partial-read = mentor-side failure): ask the specific title, not "did you do the reading?"
- *Pre-read gap surfaced in main material:* ARRC Closing Report covers institutional arc but not SOFR construction. Q1 caught this, taught inline. Documented in competence map + Block 012 carry-forward. **Going-forward rule:** when assigning pre-reads, ask whether the doc covers mechanism (how it works) or only institutional context (what happened). If only institutional, plan to teach mechanism in-session.

**Post-block practice artifact:** `~/Obsidian-Macro/03-research/deep/daily-rates-funding-routine.md` (25.6 KB) — 5-minute daily read on the funding layer. Companion to `daily-vol-routine.md` (Block 010) and `daily-mbs-routine.md` (Block 011). Run all three back-to-back for a 15-minute full rates-microstructure + funding-layer read. All sources free, all URLs documented in the routine's source-URL card (13 URLs). Built per the daily-vault-routine-pattern skill (load-bearing sections: 5-min budget, decision tree = 4 questions, "what to skip" list, interpretation guidelines tables, weekly extension). Verification: 37/40 checks passed, 3 false-negatives (all over-specified by my verification script, not file issues).

**Pre-read for Block 013 (assigned at this session close, per protocol — see pre-reads.md):**
- **Hull Ch. 5 (Determination of Forward and Futures Prices) — inflation-forwards section** (~15 min)
- **D'Amico-Kim-Wei (2018) — "Tips from TIPS"** — abstract + Section 2 on the 3-component decomposition (~20 min)
- **FRED series T10YIE, T5YIFR, T10Y2Y, DFII10, DFII30** — bookmark + read methodology pages (~5 min)
- **Skip:** Detailed TIPS futures/options mechanics (Block 058); full DKW appendix; cohort-by-coupon breakeven decomposition (Block 011 territory)

**Pointer:** `_meta/current-block.md` updated. Block 012 → done. Block 013 → current.

**Resume file:** Delete or update `2026-07-06-resume.md` at next session open — the gap it covered (incomplete pre-reads) was resolved this session.

