115 lines
5.5 KiB
Markdown
115 lines
5.5 KiB
Markdown
# K4LSH1_OPS
|
||
|
||
Multi-coin LLM-driven 15-minute binary options trading bot on Kalshi. Three independent bots trade DOGE, SOL, and ETH simultaneously using a two-tier LLM decision engine.
|
||
|
||
## Architecture
|
||
|
||
```
|
||
┌─────────────────────────────────────────────────────────────────┐
|
||
│ K4LSH1_OPS FLEET │
|
||
├──────────┬──────────┬───────────────────────────────────────────┤
|
||
│ DOGE 🐶 │ SOL 🔮 │ ETH 💎 ← 3 independent processes │
|
||
│ .154 │ .71 │ .189 ← proxy-backed Binance intel │
|
||
│ doge.db │ sol.db │ eth.db ← isolated tick/decision DBs │
|
||
└──────────┴──────────┴───────────────────────────────────────────┘
|
||
│ │
|
||
▼ ▼
|
||
┌──────────────┐ ┌──────────────────┐
|
||
│ qwen3.5:4b │ borderline│ ornith:latest │
|
||
│ MacBook │──────────▶ │ GamingPC .186 │
|
||
│ (0.4s gate) │ escalate │ RTX 3070 (0.86s)│
|
||
└──────────────┘ └──────────────────┘
|
||
│
|
||
▼
|
||
┌──────────────────────────────────────────────┐
|
||
│ Kalshi V2 API (api.elections.kalshi.com) │
|
||
│ /portfolio/events/orders — bid/ask format │
|
||
└──────────────────────────────────────────────┘
|
||
```
|
||
|
||
## Data Inputs Per Decision
|
||
|
||
Every 5-minute decision cycle feeds the LLM a full market snapshot:
|
||
|
||
| Source | Data | Frequency |
|
||
|--------|------|-----------|
|
||
| Kraken | Spot price (per coin) | 20s tick |
|
||
| Binance (via proxy) | 24h change, 24h range, 24h volume | 5min cached |
|
||
| Kraken OHLC | 1m/5m/15m/1h/2h multi-timeframe trend | per cycle |
|
||
| SQLite ticks | RSI(14) on 1m and 5m timeframes | per cycle |
|
||
| Kalshi orderbook | YES/NO ask, spread, depth imbalance | per cycle |
|
||
| Fear&Greed Index | Market sentiment (0-100) | 5min cached |
|
||
| Mempool.space | BTC fast fee (sat/vB) | 5min cached |
|
||
| Orders DB | Per-coin 24h win rate, recent performance | per cycle |
|
||
| Volatility calc | Market regime (choppy/trending/normal) | per cycle |
|
||
|
||
## Decision Engine
|
||
|
||
### Two-Tier LLM Voting
|
||
|
||
1. **Fast gate** — `qwen3.5:4b` on MacBook (0.4s). Handles clear signals. If confident (≥0.70) → trade immediately.
|
||
2. **Deep verify** — `ornith:latest` on GamingPC RTX 3070 (0.86s). Called when gate is borderline (<0.70 or unclear). Final verdict.
|
||
|
||
### Safety Gates (checked before any order)
|
||
|
||
- **RSI contrarian** — RSI > 85 → auto-fade DOWN, RSI < 15 → auto-fade UP (no LLM needed)
|
||
- **BTC macro correlation** — Won't short alts when BTC 24h > +0.5% unless conf > 0.78
|
||
- **Adaptive confidence** — Win rate adjusts minimum confidence (loses → tighter, wins → relaxed)
|
||
- **Self-adapting overrides** — qwen analyzes last 20 resolved bets every 10 min, tunes thresholds
|
||
- **Daily loss cap** — Hard stop at configurable daily loss limit
|
||
- **Market expiration guard** — Verifies market open before placing order
|
||
|
||
### Position Sizing
|
||
|
||
- Max $1.00 per trade (configurable via `max_spend_cents`)
|
||
- Confidence-scaled contracts: <0.70 = x1, 0.70-0.80 = x2, 0.80-0.90 = x3, >0.90 = x4
|
||
- Auto-capped so `contracts × price ≤ max_spend`
|
||
- Taker at ask when ≤ 55¢, maker at 50¢ when book is thin
|
||
|
||
### Hedge Engine
|
||
|
||
Scans every cycle for open positions where buying the opposite side locks ≥8¢ profit. Auto-executes counter-orders.
|
||
|
||
## Files
|
||
|
||
| File | Purpose |
|
||
|------|---------|
|
||
| `bot.py` | Main bot — decision engine, Kalshi client, order placement |
|
||
| `dashboard.py` | Flask dashboard — fleet view at `/fleet`, single-coin at `/` |
|
||
| `test_bot.py` | Unit tests — momentum, RSI, hedge, decision logic, LLM parsing |
|
||
| `config.json` | Base config (shared defaults) |
|
||
| `doge.json` / `sol.json` / `eth.json` | Per-coin configs with proxies, LLM URLs, DB paths |
|
||
|
||
## Quick Start
|
||
|
||
```bash
|
||
# Launch all 3 bots
|
||
cd ~/kalshi-bot
|
||
.venv/bin/python bot.py --config doge.json --lock doge &
|
||
.venv/bin/python bot.py --config sol.json --lock sol &
|
||
.venv/bin/python bot.py --config eth.json --lock eth &
|
||
|
||
# Launch dashboard
|
||
.venv/bin/python dashboard.py
|
||
|
||
# Run tests
|
||
.venv/bin/python test_bot.py
|
||
```
|
||
|
||
## Dashboard
|
||
|
||
- **Fleet view**: `http://localhost:5053/fleet` — all 3 coins, color-coded, PNL, decision trace
|
||
- **Single coin**: `http://localhost:5053` — controls, orderbook, momentum chart
|
||
- **API**: `GET /api/fleet` — all coins JSON, `GET /api/state` — single coin state
|
||
|
||
## Infrastructure
|
||
|
||
| Component | Host | Purpose |
|
||
|-----------|------|---------|
|
||
| MacBook | localhost:11434 | qwen3.5:4b fast gate |
|
||
| GamingPC | 10.30.20.186:11434 | ornith:latest deep verify (RTX 3070) |
|
||
| proxy1 | 10.30.20.154:3128 | DOGE Binance intel (Brazil exit) |
|
||
| proxy2 | 10.30.20.71:3128 | SOL Binance intel (EU exit) |
|
||
| proxy3 | 10.30.20.189:3128 | ETH Binance intel (Brazil exit) |
|
||
| Gitea | 10.30.20.149:3000 | Code repo |
|