← Назад

name: weather-bot description: Use when the user asks about the Polymarket weather bot, weather trading, temperature markets, weather-bot deployment, PM2 weather-bot, scanning markets, resolution, forecaster, Open-Meteo, Gamma API, weather dashboard, dry run, bet sizing, edge detection, CLOB orders, or anything related to the polymarket-weather-bot project at /home/app/polymarket-weather-bot/.

Polymarket Weather Bot Skill

Π‘ΠΎΡ‚ для автоматичСской Ρ‚ΠΎΡ€Π³ΠΎΠ²Π»ΠΈ Π½Π° ΠΏΠΎΠ³ΠΎΠ΄Π½Ρ‹Ρ… Ρ€Ρ‹Π½ΠΊΠ°Ρ… Polymarket. Π‘ΠΊΠ°Π½ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‚Π΅ΠΌΠΏΠ΅Ρ€Π°Ρ‚ΡƒΡ€Π½Ρ‹Π΅ Ρ€Ρ‹Π½ΠΊΠΈ ΠΏΠΎ 60 Π³ΠΎΡ€ΠΎΠ΄Π°ΠΌ, ΠΏΡ€ΠΎΠ³Π½ΠΎΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ‡Π΅Ρ€Π΅Π· Open-Meteo/WeatherAPI, Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ edge ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π°Π΅Ρ‚ Π»ΠΈΠΌΠΈΡ‚Π½Ρ‹Π΅ ΠΎΡ€Π΄Π΅Ρ€Π° Ρ‡Π΅Ρ€Π΅Π· CLOB API.

РасполоТСниС ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°

/home/app/polymarket-weather-bot/

АрхитСктура (ΠΌΠΎΠ΄ΡƒΠ»ΠΈ)

Π€Π°ΠΉΠ» НазначСниС
bot.py Π’ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π°: FastAPI + APScheduler, Π²Π΅Π±-Π΄Π°ΡˆΠ±ΠΎΡ€Π΄
scanner.py Gamma API β€” Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΠΏΠΎΠ³ΠΎΠ΄Π½Ρ‹Π΅ Ρ€Ρ‹Π½ΠΊΠΈ (49 highest + 8 lowest temp)
forecaster.py Open-Meteo/WeatherAPI β€” ΠΏΡ€ΠΎΠ³Π½ΠΎΠ· + вСроятностная модСль (norm CDF)
analyzer.py Поиск edge: model_prob vs market_price, Ρ‚ΠΈΡ€Ρ‹ weak/medium/strong
executor.py CLOB ΠΎΡ€Π΄Π΅Ρ€Π° Ρ‡Π΅Ρ€Π΅Π· py-clob-client, retry + idempotency guard
resolver.py Resolution: фактичСская ΠΏΠΎΠ³ΠΎΠ΄Π° β†’ outcome β†’ P&L
risk.py Kill switch, Π»ΠΈΠΌΠΈΡ‚Ρ‹ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ, cooldown, max daily loss
db.py SQLite: thread-local connections, WAL, ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ
config.py ВсС настройки + CITY_COORDS (Π΅Π΄ΠΈΠ½Ρ‹ΠΉ источник Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ²)
cancel_stale.py Π£Ρ‚ΠΈΠ»ΠΈΡ‚Π° ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ старых ΠΎΡ€Π΄Π΅Ρ€ΠΎΠ²

ΠšΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡ

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² .env ΠΈ config.py:

ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Π’Π΅ΠΊΡƒΡ‰Π΅Π΅ ОписаниС
DRY_RUN true Бимуляция Π±Π΅Π· Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΎΡ€Π΄Π΅Ρ€ΠΎΠ²
BET_SIZE $1.0 Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ставки
BANKROLL $100 ΠžΠ±Ρ‰ΠΈΠΉ Π±Π°Π½ΠΊΡ€ΠΎΠ»Π»
MIN_EDGE 5% ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ edge для Π²Ρ…ΠΎΠ΄Π°
MIN_VOLUME $1000 ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΠ±ΡŠΡ‘ΠΌ Ρ€Ρ‹Π½ΠΊΠ°
SCAN_INTERVAL_SEC 900 Π‘ΠΊΠ°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 15 ΠΌΠΈΠ½
RESOLVE_CHECK_SEC 600 ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° resolution ΠΊΠ°ΠΆΠ΄Ρ‹Π΅ 10 ΠΌΠΈΠ½
MAX_DAILY_LOSS $20 Kill switch ΠΏΡ€ΠΈ Π΄Π½Π΅Π²Π½ΠΎΠΌ ΡƒΠ±Ρ‹Ρ‚ΠΊΠ΅
MAX_OPEN_POSITIONS 20 ΠœΠ°ΠΊΡΠΈΠΌΡƒΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚Ρ‹Ρ… ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΉ

Π”Π΅ΠΏΠ»ΠΎΠΉ ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅

# PM2
pm2 restart weather-bot
pm2 logs weather-bot --lines 30
pm2 monit

# Π”Π°ΡˆΠ±ΠΎΡ€Π΄
https://dashboard.szhub.space/weather-bot/

# API endpoints
GET  /api/status          # Бтатус Π±ΠΎΡ‚Π°
GET  /api/trades          # Бписок Ρ‚Ρ€Π΅ΠΉΠ΄ΠΎΠ²
GET  /api/markets         # АктивныС Ρ€Ρ‹Π½ΠΊΠΈ
GET  /api/stats/today     # Бтатистика дня
GET  /api/stats/history   # Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅
GET  /api/stats/resolution # Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ resolution
POST /api/scan            # Запуск сканирования
POST /api/resolve         # Запуск resolution

Π‘Π”

SQLite: /home/app/polymarket-weather-bot/data/weather-bot.db

Π’Π°Π±Π»ΠΈΡ†Ρ‹: markets, trades, forecasts, daily_stats, bot_state, forecast_cache

ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ β€” автоматичСскиС Ρ‡Π΅Ρ€Π΅Π· _run_migrations() Π² db.py ΠΏΡ€ΠΈ стартС.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

ЧастыС Π·Π°Π΄Π°Ρ‡ΠΈ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Π³ΠΎΡ€ΠΎΠ΄

  1. Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² config.py β†’ CITY_COORDS (slug, lat, lon, tz, name)
  2. Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ slug Π² scanner.py β†’ POLYMARKET_CITIES (ΠΈ/ΠΈΠ»ΠΈ LOWEST_TEMP_CITIES)
  3. Π“ΠΎΡ‚ΠΎΠ²ΠΎ β€” CITIES_BY_NAME сгСнСрируСтся автоматичСски

ΠŸΠ΅Ρ€Π΅Π²Π΅ΡΡ‚ΠΈ Π² LIVE Ρ€Π΅ΠΆΠΈΠΌ

  1. .env: DRY_RUN=false
  2. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ PRIVATE_KEY, PROXY_ADDRESS, TRADE_PROXY
  3. pm2 restart weather-bot

ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ P&L

cd /home/app/polymarket-weather-bot && source venv/bin/activate
python -c "from resolver import get_resolution_stats; import json; print(json.dumps(get_resolution_stats(), indent=2))"

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡŽ Π‘Π”

Π’ db.py β†’ _run_migrations() Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ tuple Π² список migrations:

("table_name", "column_name", "COLUMN_TYPE"),