← Back

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 false LIVE — реальные ордера
BET_SIZE $1.0 Базовый размер ставки (реальный min ~$3.50)
BANKROLL $25 Банкролл для risk limits
DASH_USER rick Basic Auth логин дашборда
DASH_PASS wb2026secure Basic Auth пароль дашборда
KELLY_BANKROLL $25 Банкролл для Kelly sizing ($1.33-$3 ставки)
MIN_EDGE 8% Минимальный edge (with k=5 shrinkage, sweet spot 8-18%)
MAX_EDGE 18% Максимальный edge (18%+ = model disagrees too much)
BLOCK_YES_SIDE true YES заблокирован (42.9% WR, -$13.49)
MIN_BUY_PRICE $0.72 Мин цена покупки (<72¢ = 55-68% WR)
MAX_BUY_PRICE $0.85 Макс цена покупки (>85¢ R:R < 0.18:1)
MIN_VOLUME $1000 Минимальный объём рынка
SCAN_INTERVAL_SEC 1800 Сканирование каждые 30 мин (1 round/day)
RESOLVE_CHECK_SEC 1800 Проверка resolution каждые 30 мин
MAX_DAILY_LOSS $20 Kill switch при дневном убытке
MAX_OPEN_POSITIONS 10 Максимум открытых позиций (макс ~$30 deployed)

Деплой и управление

# 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 при старте.

Wallet Architecture (CLOB V2 + pUSD)

Кошелёк Адрес Роль
EOA 0x1aec730EDA0EC7BCcF2bbA5D14aa809c8AA722d1 Подписывает транзакции
Gnosis Safe 0x3643914646900cA7A5df15B8f5d1Cc5E32728c1a wc.address, SIGNATURE_TYPE=2, держит USDC.e
Poly Proxy 0x1566a0dF379873C559cFf9Cf35C9e77EB30F5627 counterfactual, wc.get_poly_proxy_address()

Collateral flow (CLOB V2, после 28 Apr 2026):

⚠️ Грабли:

Ключевые решения

Документация

Файл Описание
docs/COMPETITIVE_ANALYSIS.md Конкурентный анализ: 15 конкурентов, SWOT, actionable выводы
docs/SCREENER_SPEC.md Спека Polymarket Screener (5-я вкладка)
docs/DEVELOPER_PROGRAM.md Builder Program ресёрч, SaaS стратегия

Частые задачи

Добавить новый город

  1. Добавить в config.pyCITY_COORDS (slug, lat, lon, tz, name)
  2. Добавить slug в scanner.pyPOLYMARKET_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"),

Git / Repo (30 May)