robertsben333-cmyk

earnings-edge-hunt-sonnet

Stage E-S. The US earnings edge hunt run exactly as stage E runs it, except that the hunters are Sonnet instead of Opus; the orchestrating session and the sweep stay on Opus. Writes to its own edge-sonnet/ directory and places no orders. Use when asked to run stage E-S, the Sonnet edge hunt, or the Sonnet-hunter comparison of stage E.

robertsben333-cmyk 0 1 Updated 3w ago
GitHub

Install

npx skillscat add robertsben333-cmyk/claude-research/earnings-edge-hunt-sonnet

Install via the SkillsCat registry.

SKILL.md

Stage E-S — stage E with Sonnet hunters

Superseded on 2026-10-01 by stage E-P (earnings-edge-panel) on the same Routine. Kept so
the E-S runs already on disk (<RUN>/edge-sonnet/) stay reproducible; nothing fires it.

This stage asks one question: does the hunter model change the ranking? Everything
else is stage E. It is an overlay, not a copy: you follow
.claude/skills/earnings-edge-hunt/SKILL.md step by step, and this file lists the only
places where you do something different. A copied skill would drift from the live one
within a week, and then the comparison would measure the drift rather than the model.

Read CLAUDE.md first, then the stage E skill in full, then come back here.

The overrides, and nothing else

Stage E does Stage E-S does instead Why
writes to <RUN>/edge/ writes to <RUN>/edge-sonnet/, every file, same layout (universe.json, baselines/, sweep.json, hunts/, edge-scores.json, edge-note.md) Stage E fires the same afternoon into <RUN>/edge/. Writing there would overwrite the live book's research.
launches unpriced-hunter (Opus) launches unpriced-hunter-sonnet The variable under test. The definition is generated byte for byte from unpriced-hunter.md with only name, model and description replaced (scripts/sync_hunter_core.py), so the brief, the hunter core, LESSONS.md and the output contract are identical.
launches edge-sweep (Opus) the same edge-sweep, on Opus The sweep decides which names get hunted and with what priority. Holding it on Opus keeps the universe comparable, so a difference in the ranking is the hunters' and not the screen's.
step 0b sells yesterday's book, step 7 buys today's neither. No alpaca_trade.py call of any kind, not mode, not plan, not status. Stage E already trades the one paper account. A second book on it would stack exposure and break open's refusal logic, and the edge client-order prefix would make the two indistinguishable at the broker.
runs the V2 shadow ledger (step 6c) and edge_grounded_score.py (step 5b) skips the shadow ledger; RUNS edge_grounded_score.py --run <RUN>/edge-sonnet (since 2026-10-01) The shadow ledger is one shared file over every 8-K; stage E already feeds it, and a second ingest would double-count. The grounded score only READS that ledger and writes edge-scores-grounded.json into this run's own directory, so the V2 column exists for the Sonnet hunters too. The dashboard's V2 glob (research/*/*/*/edge/) does not match edge-sonnet/, on purpose. Same forward-only rule: before the first print or not at all.
run-log headings Edge hunt — … headings Edge hunt (Sonnet) — … Both stages append to the same _run-log.md.
publish messages edge hunt: … edge hunt sonnet: … So git log separates the two.

Every --run <RUN>/edge and -o <RUN>/edge/... in the stage E skill becomes
<RUN>/edge-sonnet. edge_score.py, edge_resolve.py and edge_postmortem.py take the
directory as an argument and do not care what it is called. Never pass --scan or a glob
that matches edge-sonnet to anything under alpaca_trade.py; its default
research/*/*/*/edge glob does not match this directory, and that is on purpose.

Seal your own baselines. Do not read or copy anything from <RUN>/edge/, even when it
exists: stage E's files may be half-written while you run, and a baseline you did not seal
before your own hunters launched is not sealed for them. Same scripts, same flags
(edge_universe.py --window, no --include-unknown, share classes folded), so the two
universes should agree; if they do not, say so in the run log.

Budget. The same edge_hunt caps apply: one sweep plus up to nineteen hunters, in the same
waves and at the same concurrency as stage E. Shed names by budget.edge_degrade_order exactly as stage E does.
There is no 16:00 ET entry deadline, because nothing is bought, but finish the same day:
a sealed baseline is only comparable with stage E's if it was struck the same afternoon.

If unpriced-hunter-sonnet comes back "not found", use the stage E skill's fallback
(launch general-purpose with the body pasted in) and pass model: sonnet on that
launch
. Without it the fallback inherits the session's Opus and the run silently tests
nothing. Record in the run log which form ran.

Provenance

Step 2b of the stage E skill runs here with --market US-S and <RUN>/edge-sonnet as the
run, so provenance.json names unpriced-hunter-sonnet and its version. The sonnet
alias has no observed model in scripts/provenance.py's timeline, so the file says
not_recorded for the hunters rather than guessing; that is the honest state.

The chat reply

Step 5c applies unchanged, with this directory and label:

python3 scripts/score_report.py --run <RUN>/edge-sonnet --label "Stage E-S"

Paste its output verbatim at the top of your closing reply: impact_sum (the key),
impact_scaled and V2 for every name. Below it, the same three numbers from stage E's own
files when they exist (python3 scripts/score_report.py --run <RUN>/edge --label "Stage E"),
so the two hunter models sit side by side in the reply.

What the note must add

Everything stage E's note says, plus three lines at the top:

  1. This is stage E-S: Sonnet hunters, Opus sweep and orchestration, no orders.
  2. If research/<…>/edge/edge-scores.json exists by the time you write the note, the
    names both stages ranked, and the Spearman ρ between the two impact_sum columns over
    them, and between the two impact_scaled columns. If it does not exist yet, say so; do not wait for it.
  3. That one day is an anecdote twice over: neither ranking has a resolved outcome yet, and
    agreement between the two is not evidence that either is right.

Finish with python3 scripts/update_index.py and scripts/publish.sh "edge hunt sonnet: <what> for <YYYY-MM-DD>". It pushes to main. This is research, not investment advice.