# Quarter Start

> Run the Quarter-Ahead Scan for the trading journal (CLAUDE.md Section 13, at /Users/latuconsinafr/Personal/Trading/Journals/CLAUDE.md). Global, MCP-only, context only. Invoke at the start of a new quarter.

- Skill: `latuconsinafr/quarter-start` (Agent Skill)
- Install (CLI): `npx skillmds@latest add latuconsinafr/quarter-start`
- Raw SKILL.md: https://api.skillmd.com/api/skills/latuconsinafr/quarter-start/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: latuconsinafr (https://skillmd.com/u/latuconsinafr)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/latuconsinafr/quarter-start

---


# Quarter-Ahead Scan (global, MCP-only)

**Replaces the old project-local `/quarter-start`** (now archived at
`Journals/.claude/skills-legacy/quarter-start/`). Same reasoning as `week-start/SKILL.md`'s
header. `CLAUDE.md` at `/Users/latuconsinafr/Personal/Trading/Journals/CLAUDE.md` remains the
rulebook.

**If anything this session suggests a rule should change**, per CLAUDE.md §20.14: add it to
CLAUDE.md §21.3, do not act on it — **this skill cannot adopt rule changes itself.** That's
`quarter-end`'s job alone, and only for items already sitting in §21.3 with evidence attached.

**Context only, persists nothing to `journal_rollups`** — same as `month-start`: checked the old
system first, it never wrote a file here either. **It does, as of 2026-08-25, produce a real
quarterly fundamental digest** (`write_fundamental_digest`, timeframe `1Q`) — quarterly is
fundamental-only: there's no distinct "quarterly candle" chart resolution, so this session re-reads
the *monthly* chart and refreshes `month-start`'s `1M` technical score in place (an upsert, not a
new heatmap column) rather than producing a score of its own. **As of 2026-08-30, the same re-read
also writes/refreshes validated levels** (`write_level`, timeframe `1M`) for any zone from Step 3.2
that clears §3.3's validation bar — same upsert-in-place framing as the technical score: a
quarterly pass can confirm, extend, or invalidate a level `month-start` already logged. Still no
verdict, thesis, or hypothetical — those only originate from `/sod`.

## Step 0 — confirm the MCP server is reachable, then resolve the active set

Call `get_account_state` first. If it fails, stop and explain `just run` needs to be running. Then
call **`get_active_instruments`** — do not assume a fixed instrument set below.

## Step 1 — resolve the quarter

Use the current `YYYY-Qn`, unless the pilot gives one explicitly.

## Step 2 — get the required chart

**Clean 1M (monthly) chart, per active instrument — required, same blocking pattern as
`sod/SKILL.md` Step 3.** No distinct quarterly chart exists; this is a deliberate quarterly
re-examination of the same monthly resolution `month-start` and `week-start` already look at more
often. Check `charts/[DATE]/quarter-start/` on disk first; ask only for what's missing.

## Step 3 — run the scan

1. Scan for major known macro events across the quarter — central bank calendars, known
   geopolitical or election dates.
2. **Re-read the 1M chart with quarterly perspective** — same §3 checklist rigor as `/sod`, at
   monthly resolution. This corrects/confirms the existing `1M` cell in place (Step 4's
   `write_technical_score` upserts by pair+date+timeframe) — it is not a new, separate quarterly
   reading. Cross-check against **`get_journal_rollups`** (`period: "monthly"`, recent `limit`) for
   continuity.
3. **Quarterly fundamental digest, per active currency** (§4, timeframe `1Q`) — the broadest
   research cadence short of yearly: multi-month policy trajectory, not just this quarter's
   calendar. §19 sources only.

## Step 4 — write through MCP

1. **`write_calendar_event`** — for each relevant event surfaced in Step 3.1. Leave `timeUtc`
   unset and say so if unverified.
2. **`write_technical_score`** — once per active instrument, `timeframe: "1M"`, from Step 3.2.
   This upserts the same cell `month-start`/`week-start`'s context reads point at — correcting it
   in place with a quarterly perspective, not creating a `1Q` row (no such technical timeframe
   exists; see the header note).
3. **`write_level`** — `timeframe: "1M"`, one per zone from Step 3.2 that clears §3.3's validation
   bar: named prior turns, each with a date and a wick.
   - The date must be exact, obtained by counting bars from the nearest labeled gridline — never
     "approx," and sparse gridlines are never a reason to skip writing a level.
   - Apply the same counting *effort* to every pair this session — do not verify one more
     carefully than the others. But decide *per pair, not for the session as a whole*: if one
     pair's turn can't be dated, that one is unvalidated — it does not mean skipping every other
     pair that *can* be dated. Partial coverage is the normal, correct outcome, not a fallback.
   - A stated tolerance ("±1-2 days") is not exact and does not pass; an unvalidated pair doesn't
     get written with a hedge, it doesn't get written.
   - Do this by reading the image and counting candles — never by writing or running a script,
     pixel-measurement tool, or any automated axis calibration; that's a fragile detour, not
     extra rigor, and a bug in one is never a reason to write zero levels instead.
   - A zone without nameable turns stays prose-only in `write_technical_score`'s `technicalBasis`.
4. **`write_fundamental_digest`** — once per **non-metal** active currency only, `timeframe:
   "1Q"`, from Step 3.3. **Never call this for XAU/XAG** — the tool itself rejects a metal
   `currency` value now (a real mistake, happened more than once, now a hard schema error); it
   forces a 0-10 currency-strength scale onto something §4 explicitly wants read on a different
   -10..+10 risk-sentiment scale instead.
   - **`write_risk_sentiment`, once per metal active currency, `timeframe: "1Q"`, from Step
     3.3 — as of 2026-09-03 this is the correct write for metals, not a prose-only fallback.**
     Same `timeframe` parameter as `write_fundamental_digest`, so a quarterly call no longer
     collides with `/sod`'s daily call for the same currency, and it auto-populates the metal's
     heatmap cell the same way, once the paired currency has a score at this exact date+timeframe.
   Nothing else gets written this session.

