Install
openclaw skills install @kvzsolt/mlb-live-traderPaper-first live MLB moneyline evaluation and bounded Simmer execution.
openclaw skills install @kvzsolt/mlb-live-traderMLB Live Trader evaluates in-progress MLB full-game moneylines by comparing ESPN's live win probability with the executable Simmer/Polymarket price.
🚨 Framework, not a production trading system. Read DISCLAIMER.md before connecting real funds. Paper mode is the default; real orders require
--live. Default hard bounds include 2% of bankroll and $25 maximum per trade, 3 trades per run, $35 per game, and $100 daily/portfolio exposure.
This is a template. The signal and execution plumbing are deterministic, but the defaults are not a validated trading edge. Measure calibration, latency, fills, and drawdown out of sample before changing limits.
The monofile entrypoint performs:
scan → identify → score → EV gate → Kelly size → safeguards → execute
It rejects pregame/final games, props, stale or incomplete quotes, ambiguous market wording, suspended games, missing play-by-play, uncertain doubleheaders, duplicate signals, existing game positions, and orders below the venue minimum. It never imports a CLOB client or sends orders directly to Polymarket.
simmer_sdk.sizing.size_position() for fractional-Kelly sizing, then enforce hard bankroll, order, game, daily, portfolio, spread, slippage, liquidity, and trade-count caps.source=sdk:mlb-live-trader and skill_slug=mlb-live-trader.python -m venv .venv
. .venv/bin/activate
pip install 'simmer-sdk>=0.22.2,<0.23'
export SIMMER_API_KEY='sk_live_...'
Install the published skill:
npx clawhub@latest install mlb-live-trader
# Validate configuration without an API request
python mlb_live_trader.py --config
# One paper cycle using real market data; cannot place a real order
python mlb_live_trader.py
# Continuous paper loop
python mlb_live_trader.py --loop
# Read-only status output
python scripts/status.py
python scripts/status.py --live
# Explicit real-money opt-in
python mlb_live_trader.py --live
Use --set KEY=VALUE to persist safe tuning changes in config.json. Never place credentials in that file. For example:
python mlb_live_trader.py --set min_ev=0.07 --set max_position_usd=15
--no-safeguards disables only Simmer context/discipline checks. Hard EV, price, minimum-share, spread, exposure, idempotency, and SDK preflight controls remain active.
0.250.050.900.02$25$35$100$100390 seconds0.080.035The complete set of managed settings is declared under tunables in clawhub.json.
scripts/status.py is read-only. It reports the execution mode, strategy-tagged positions, paper summary or live portfolio, and local idempotency state. It must never place, cancel, redeem, or modify orders and never prints credentials.
Run it first when a live order is blocked:
python scripts/status.py --live
The strategy writes .mlb-live-trader-state.json beside the entrypoint with mode 0600. It contains signal IDs, market/order IDs, reserved spend, and timestamps—not secrets. A process lock prevents overlapping runs. Delete the state only when deliberately resetting idempotency and daily-spend history.
scripts/status.py --live.ESPN's public site feed is undocumented and can change, lag, omit fields, or correct plays. Never replace missing feed values with guessed probabilities.
npx clawhub@latest publish . --slug mlb-live-trader --version 1.0.0
npx clawhub@latest inspect mlb-live-trader
Verify that ClawHub reports Moderation: CLEAN and test a fresh install before enabling managed execution.