Status: shadow (not auto-copy) · Source: audit · Current version: 2
· Legacy tag: audit_version=v2, run_id ending -ensemble
Many voices, one call. Instead of one model, Chorus runs 6 independent LLMs (via Hermes + OpenRouter) over the same shared candidate list, then pools and sizes their views. Where the models genuinely agree, it bets; where they disagree, the bet shrinks toward silence.
How it works (shrinkage + Kelly)
- Filter (deterministic) → shared candidate list.
- Fan-out: each of the 6 models independently researches every candidate and returns
P(YES)+ keep/reject. - Pool: geometric mean of odds across models.
- Shrinkage (calibration): pull the pool toward the market price by the raw cross-model dispersion — tight agreement keeps its edge; wide/bimodal disagreement shrinks to ~the market (≈0 edge). Raw dispersion (not spread/√n) on purpose: model errors are correlated (majorities hallucinate together), so the pool is not n independent samples.
- Size: fractional Kelly on the net-of-spread edge, capped per pick, with a 15% cluster cap + cash reserve. No abstention gate.
Why it exists
The single-model strategies (Keel/Tracer) take one noisy draw; that single-sample variance is why their stated EV was anti-predictive. Pooling independent models + shrinkage attacks the optimizer's curse directly: a confident-but-wrong majority (e.g. 4/6 models hallucinating "Starmer resigns") shrinks to ~0 edge and gets ~$0, instead of becoming the biggest bet.
Status
Shadow-tracked in the v2 Audit Lab (CLV + calibration) — not cleared for auto-copy. Note: Chorus uses Kelly sizing, deliberately different from Keel's entry-band guardrails; reconciling the two (apply Keel's empirical guardrails on top of the Chorus probability) is the open question before any graduation.
Version history
- v1 (Jun 22 runs) — direction-consensus gate (required 5/6 agreement; too conservative, 0 picks).
- v2 (Jun 23+) — gate replaced by disagreement-shrinkage + fractional Kelly (quarter-Kelly).
- v3 (Jul 1+) — half-Kelly sizing (
KELLY_FRACTION0.25 → 0.5) to deploy more capital per edge.
Known issue: the Chorus Cloud Run jobs ran with
SKIP_PUSH=1, so their HTML reports were built but never deployed —report_urldead-ends. Fix: dropSKIP_PUSH=1+ add thegh-tokensecret to the Chorus job.