WC Group Repricer
A Groups-category skill for the 2026 World Cup built on market dynamics, not winner-picking:
- Repricing timing — enter group favorites at pre-tournament asks; exit after qualification becomes "obvious" and retail money reprices the leg up. "Obvious" is read from the market itself (the leg crossing a configured price threshold) — no sports model required. (Strategy family credit: group-stage repricing ideas circulating on X.)
- Group-set coherence — within a group's winner set (mutually exclusive, exhaustive), trade prices that sum incoherently back toward 1. Mutual exclusivity is confirmed from market text (a complete 4-leg "win Group X" set) — if it can't be confirmed, the set is alerted, never arbed.
- Elo anchor (tiebreak only) — a static Elo table decides which leg of an incoherent set is the mispriced one. It never picks winners standalone.
Safety rails
- Sim-first. Default venue is
$SIM; real trading requires--liveand--venue polymarketand a claimed, wallet-linked Simmer agent.--liveand--dry-runare mutually exclusive. - Budget = open exposure, not daily spend: new trades are rejected if
open_exposure + cost > DAILY_BUDGET_USD. State updates are lock-protected (fcntl.flock). - Dry-run never touches live state (separate
state_dry.json) and routes through the SDK paper engine rather than stubbing success. - Prices are passed raw to the SDK (no pre-rounding); edges are computed vs the ask when the
venue exposes one (falls back to mid on
$SIM— see Known limitations). - One position per market; every trade carries
skill_slug+ a publicreasoningstring.
Configuration (env — all knobs Autoresearch-mutable)
| Var | Default | Meaning |
|---|---|---|
| TRADING_VENUE | sim | sim or polymarket (with --live) |
| MAX_TRADE_USD | 5 | per-leg cap |
| DAILY_BUDGET_USD | 50 | open-exposure cap |
| ENTRY_MAX_ASK | 0.55 | buy a group favorite only at/below this |
| EXIT_REPRICE | 0.78 | trim a held leg at/above this |
| MIN_COHERENCE_GAP | 0.05 | min |sum−1| on a confirmed 4-leg set |
| MAX_SLIPPAGE_PCT | 0.03 | skip legs whose context slippage exceeds this |
Usage
python scripts/group_repricer.py --dry-run # default; sim paper pass
python scripts/group_repricer.py --status # show positions/exposure
python scripts/group_repricer.py --live --venue polymarket # real money (after sim record)
Requires SIMMER_API_KEY.
Known limitations (v0.1)
$SIM(LMSR) has no order book — ask/spread/depth gates only bind on the real venue; sim validates logic, not microstructure.- Market discovery uses a text search for "win Group X" sets; the canonical WC tag/series slug is unverified upstream — discovery may need the paginated sports-markets workaround at launch.
- Coherence legs are entered sequentially, not atomically; partial-fill unwind is basic.
- The exit threshold (
EXIT_REPRICE) is the strategy's most sensitive knob — it ships at a reasonable default and is meant to be tuned in sim / by Autoresearch, not trusted blindly. - Real-venue depth (L2) checks are a TODO hook; v0.1 uses the context slippage gate.
- Platform per-leg stop-losses can fire on temporarily-down legs of a coherent set — review auto-risk settings before running live.
No performance claims are made or implied. This skill describes what it does, not what it returns.
Scan to join WeChat group