Weather Bot (polymarket-weather-bot)
Polymarket weather prediction bot — автоматические ставки на температуру.
Статус
- PM2:
weather-bot (порт 3201)
- Режим: LIVE (DRY_RUN=false) — запущен 21 May
- Модель: v2 — GFS+ECMWF 82-member ensemble + Kelly Criterion + Brier calibration
- CLOB SDK:
py-clob-client-v2 v1.0.1 (CLOB V2 migration 28 Apr 2026)
- Города: 60
- Wallet: $25 USDC on Polygon
Текущие фильтры (21 May — LIVE)
DRY_RUN=false — реальные ордера
BLOCK_YES_SIDE=true — YES side заблокирован (WR 42.9%)
- Price range: 72-85¢ (sweet spot 75-84¢ = 85.6% WR)
MIN_EDGE=0.08, MAX_EDGE=0.18 (Laplace k=5 shrinkage)
MAX_PER_MARKET=3, MAX_OPEN_POSITIONS=7 — макс $21 deployed
KELLY_BANKROLL=$25, KELLY_FRACTION=0.20
SCAN_INTERVAL=300s (5 min)
- Laplace k=5: max model prob 94.6% (was 98.8% → overconfident)
- Strong tier УБРАН (14 May) — 66% WR, -$22 all-time. Только medium+weak.
- Dashboard показывает только LIVE трейды (dry_run=0), старая DRY_RUN стата скрыта
Стата
- 1-4 May (без фильтров): 298 trades, WR 73.8%, PnL +$14.54
- Бэктест с фильтрами: WR 81.8%, PnL +$19.26
- 10 May — applied calibration (k=5, MIN_EDGE=8%, MAX_EDGE=18%, scan 5min)
- 10-14 May (post-cal): 357 trades, WR 78.2%, PnL +$9.32 (medium: 78.8% WR, strong: 66% WR)
- 14 May — убран strong tier, .env синхронизирован (MIN_EDGE=0.08, MAX_EDGE=0.18)
Auto-Gamma
- ВЫКЛЮЧЕН (
AUTO_GAMMA_ENABLED=false)
- WR 13.3% (2W/13L), PnL -$29.48
- TODO при включении: убрать SOL/PUTs, time stop 4-6h, min conf 92+
Стата (21 May — first live trades)
- 5 LIVE ордеров размещены: Madrid, Chicago, Paris, Wellington ($3.00 each), Toronto ($2.49)
- Balance: $25.15 → $19.15
Tech Stack
- Python 3.12, SQLite, Open-Meteo API, Polymarket CLOB V2 API
- SDK:
py-clob-client-v2 v1.0.1 (старый py-clob-client 0.34.6 НЕ РАБОТАЕТ — archived)
- Dashboard:
dashboard.szhub.space/weather-bot/
- Resolver: Phase 1 CLOB API (
winner field), Phase 2 Open-Meteo fallback
- Proxy: SOCKS5 (Canada geoblock bypass)
Грабли
- Open-Meteo Archive ±0.5°F shift →
RESOLVE_MIN_HOURS=18
datetime.utcnow() → datetime.now(UTC) (deprecated)
- Thread-local SQLite + WAL mode (concurrent access)
- CLOB V2 migration (28 Apr 2026):
py-clob-client → py-clob-client-v2. create_or_derive_api_creds() → create_or_derive_api_key(). cancel() → cancel_order(). BUY constant → Side.BUY. Старый SDK = order_version_mismatch на каждый ордер.
- Polymarket min 5 shares: при ценах $0.73-0.85 минимум $3.65-4.25.
MAX_PER_MARKET=$1 → все ордера скипаются. Fix: $3 (Kelly сайзит $1-3, min 5 shares проходит при Kelly≥$2.70).
- py-clob-client BalanceAllowanceParams:
params=None крашит (library bug). Fix: BalanceAllowanceParams(asset_type=AssetType.COLLATERAL).
- DRY_RUN→LIVE: old simulated trades block live.
get_active_trades() без live_only считает 52 DRY_RUN трейда → "max positions reached". Fix: live_only=not DRY_RUN в risk.py и executor.py.