Files
weatherbot/README.md
T
alteregoeth-ai 560c5d02cb Update README.md
2026-03-04 00:40:52 -06:00

167 lines
4.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🌤 Weather Trading Bot — Polymarket
Automated weather market trading bot for Polymarket. Finds mispriced temperature outcomes using Open-Meteo forecasts.
No SDK. No black box. Pure Python.
---
## Versions
### `bot_v1.py` — Base Bot
The foundation. Scans 6 cities, fetches forecasts from Open-Meteo, finds matching temperature buckets on Polymarket, and enters trades when the market price is below the entry threshold.
No math, no complexity. Just the core logic — good for understanding how the system works.
### `bot_v2.py` — Kelly + EV Edition *(current)*
Everything in v1, plus:
- **Expected Value** — skips trades where the math doesn't work
- **Kelly Criterion** — sizes positions based on edge strength, not a flat %
- **Live monitor** — updates `simulation.json` every 10s so the dashboard stays current
- **Auto-exit** — closes positions when price hits the exit threshold
~400 lines of pure Python.
### `bot_v3.py` — Coming Soon
- Auto-cycle every hour — continuously scans and opens new positions
- Forecast monitoring every 10 minutes — closes positions if the forecast changes and EV goes negative
- Historical calibration — uses 10 years of weather data to validate probabilities
---
## How It Works
Polymarket runs markets like *"Will the highest temperature in NYC be between 4041°F on March 4?"* These markets are often mispriced — the forecast says 78% likely, but the market is trading at 8 cents.
The bot:
1. Fetches 4-day forecasts from **Open-Meteo** (free, no API key)
2. Finds the matching temperature bucket on Polymarket
3. Calculates Expected Value — skips the trade if EV is negative
4. Calculates Kelly Criterion — sizes the position based on edge strength
5. Runs a full $1,000 simulation against real market prices before you risk anything
---
## Kelly + EV Logic
**Expected Value** — is this trade mathematically profitable?
```
EV = (our_probability × net_payout) (1 our_probability)
```
**Kelly Criterion** — how much of the balance to bet?
```
Kelly % = (p × b q) / b
```
We use fractional Kelly (25%) and cap each position at 10% of balance.
---
## Installation
```bash
git clone https://github.com/alteregoeth-ai/weatherbot
cd weatherbot
pip install requests
```
Add your settings to `config.json`:
```json
{
"entry_threshold": 0.15,
"exit_threshold": 0.45,
"locations": "NYC,Chicago,Seattle,Atlanta,Dallas,Miami",
"max_trades_per_run": 5,
"min_hours_to_resolution": 2
}
```
---
## Usage
### bot_v1.py
```bash
# Scan markets and show signals
python bot_v1.py
```
### bot_v2.py
```bash
# Paper mode — shows signals + Kelly/EV analysis, no trades
python bot_v2.py
# Simulation mode — executes trades, updates virtual $1,000 balance
python bot_v2.py --live
# Live monitor — updates dashboard every 10s
python bot_v2.py --monitor
# Show open positions and PnL
python bot_v2.py --positions
# Reset simulation back to $1,000
python bot_v2.py --reset
```
---
## Dashboard
Run a local server in the bot folder:
```bash
python -m http.server 8000
```
Then open `http://localhost:8000/sim_dashboard.html` in your browser.
- Balance chart with floating +/- labels on each trade
- Open positions with Kelly %, EV, and price progress bar
- Full trade history with W/L tracking
- Refreshes every 10 seconds automatically
---
## Configuration
| Parameter | Default | Description |
|-----------|---------|-------------|
| `entry_threshold` | `0.15` | Buy below this price |
| `exit_threshold` | `0.45` | Sell above this price |
| `locations` | `NYC,...` | Cities to scan |
| `max_trades_per_run` | `5` | Max trades per run |
| `min_hours_to_resolution` | `2` | Skip if resolves too soon |
---
## Live Trading
The bot runs in simulation mode by default. To execute real trades, add Polymarket CLOB integration:
```bash
pip install py-clob-client
```
Then replace the paper mode block in `bot_v2.py` with your CLOB buy function. Full guide in the article linked below.
---
## APIs Used
| API | Auth | Purpose |
|-----|------|---------|
| Open-Meteo | None | Weather forecasts |
| Polymarket Gamma | None | Market data |
| Polymarket CLOB | Wallet key | Live trading (optional) |
---
## Disclaimer
This is not financial advice. Prediction markets carry real risk. Run the simulation thoroughly before committing real capital.