OpenChart
Free Desktop charting with Claude or Codex. Describe alerts, research chart moves, and choose your data providers.
Research first, execute second. Edge detection and risk-gated execution for Kalshi markets.
FinanceGitHub @ai-automation-toolsOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
Multi-agent edge-detection and execution system for prediction markets and sports betting on Kalshi and Polymarket US. Research first, execute second.
Taken from the repository README
Loading the full README.
Read the full README ↗Scans thousands of Kalshi markets, cross-references 12 sportsbooks and free data APIs, prices fair value with a normal-CDF model, and executes Kelly-sized limit orders — every bet cleared through 21 risk gates and logged with fill-accurate accounting for closing-line-value tracking.
| Category | Coverage | Data sources |
|---|---|---|
| 🏟️ Sports betting | NFL, NBA, MLB, NHL, NCAAB/NCAAF, UFC, soccer/MLS, F1, NASCAR, PGA, IPL, esports: 31 game filters, plus 8 futures filters | The Odds API (12 sportsbooks), ESPN, NHL/MLB Stats, NWS |
| 🏆 Championship futures | Super Bowl, NBA Finals, Stanley Cup, World Series, PGA Tour — priced with N-way de-vig | Sportsbook outright odds |
| 📈 Prediction markets | Crypto (BTC, ETH, XRP, SOL, DOGE), S&P 500 + VIX, weather (13 cities), politics | CoinGecko, Yahoo Finance, NWS |
The betting logic data-flow diagram, every box linked to the code it describes, is on the homepage; docs/diagrams/ is its source.
Fair value is a sport-specific normal-CDF model over a weighted-median consensus of 12 sportsbooks (sharp books like Pinnacle/Circa weighted 3×, recreational 0.7×), then adjusted by team-stats win%, sharp-money line movement, weather, pitcher matchups, rest/back-to-back fatigue, and book-disagreement signals. Sports Guide → breaks down each signal and the de-vig math.
[!IMPORTANT] Every scan defaults to preview mode. No money is risked until you pass
--execute. Each scan row shows a Gate column (R18) that previews whether it will pass the static risk gates —okif all clear, or a short label (score,conf,no-fav,pred-off,live-off, etc.) for the failing gate.
Every order runs the gates in order. Gates 2b, 8 and 9 trim the size; every other gate rejects. The thresholds live in .env, and the defaults are in the AGENTS.md gate table.
| # | Gate | Action |
|---|---|---|
| 1 | Daily loss limit | Reject |
| 2 | Open position count | Reject |
| 2b | Total and per-sport open exposure, as a fraction of equity | Reject + cap |
| 3 | Edge threshold, per sport or global, plus the exchange fee | Reject |
| 3.05 | Claimed edge above MAX_EDGE (a model or matching bug) | Reject |
| 3.5 | Market price floor (lottery-ticket filter) | Reject |
| 3.55 | Market price ceiling (cost/payout ratio) | Reject |
| 3.6 | Bid/ask spread and 24h volume (liquidity) | Reject |
| 3.7 | Days to event, game markets only (futures exempt) | Reject |
| 4 | Composite score | Reject |
| 4.5 | Minimum confidence | Reject |
| 4.6 | Cheap NO bets need high edge and high confidence | Reject |
| 4.6b | Edge floor on every NO bet | Reject |
| 4.7 | Prediction categories (crypto, weather, SPX, mentions, companies, politics) off unless ALLOW_PREDICTION_BETS=true | Reject |
| 4.8 | Games already in progress off unless ALLOW_LIVE_BETS=true | Reject |
| 5 | Already holding this market |
All limits configurable via .env. Every gate traces to a documented calibration finding — the per-rule history (why the price floor, the NO-side guard, the per-sport edge floors, one-way confidence bumps, and the prediction-market block exist) lives in Architecture → Risk Management.
Bet size scales with edge, divided by batch count to control total exposure. Edge is soft-capped above 15% before sizing (trusted_edge()) to damp Kelly on likely-overstated signals — raw edge remains in gates and reports.
bet = max(unit, (kelly_frac / batch) * trusted_edge(edge) * bankroll)
Result is capped by max bet ($100), the bet-ratio cap, and available bankroll. Architecture → Position Sizing has the full edge→contracts worked example and every KELLY_* knob.
bankroll is the balance summed across Kalshi's exchange shards (sharded 2026-08-24: Crypto → 2, Tennis & Baseball → 3). Cash does not follow the markets, so the executor moves the shortfall to an order's shard before placing it — see Architecture → Exchange shards.
# 0. Clone repo and enter project
git clone https://github.com/ai-automation-tools/edge-radar.git
cd Edge-Radar
# 1. Create + activate virtual environment
python -m venv .venv
# macOS/Linux (bash/zsh):
source .venv/bin/activate
# Windows PowerShell:
# .venv\Scripts\Activate.ps1
# 2. Install dependencies and create env file
python -m pip install --upgrade pip
pip install -r requirements.txt
cp .env.example .env
# 3. Verify environment (API keys, dependencies)
python scripts/doctor.py
# 4. Preview opportunities (no money risked)
python scripts/scan.py sports --filter nba
# 5. Execute with risk controls
python scripts/scan.py sports --filter nba --execute --unit-size 1 --max-bets 5
# 6. Settle bets and view P&L
python scripts/kalshi/kalshi_settler.py report --detail --save
[!TIP] All scanners share the same flags:
--execute,--unit-size,--max-bets,--pick,--ticker,--save,--date,--exclude-open. Use--date tomorrow --exclude-opento avoid double-betting.
| Guide | What it covers |
|---|---|
| Setup Guide | First-time install, API keys + RSA private key generation, .env wiring, safe rollout plan (dry-run → low-stakes → normal), automation, ongoing monitoring, troubleshooting |
Expand any section for copy-paste CLI examples by workflow.
python scripts/scan.py sports --filter nhl
python scripts/scan.py sports --filter mlb --execute --unit-size 1 --max-bets 10
python scripts/scan.py sports --filter mlb --date tomorrow --exclude-open
python scripts/scan.py sports --filter nba --save
python scripts/scan.py futures --filter nba-futures
python scripts/scan.py futures --filter mlb-futures --execute --unit-size 2 --max-bets 5
python scripts/scan.py futures --filter nba-futures --save
python scripts/scan.py prediction --filter crypto
python scripts/scan.py prediction --filter weather
python scripts/scan.py prediction --filter crypto --execute --unit-size 1 --max-bets 5
python scripts/kalshi/kalshi_executor.py status --save
python scripts/kalshi/risk_check.py --report positions --save
python scripts/kalshi/kalshi_settler.py settle
python scripts/kalshi/kalshi_settler.py report --detail --save
python scripts/backtest/backtester.py
python scripts/backtest/backtester.py --simulate --save
python scripts/backtest/backtester.py --sport mlb --confidence high --min-edge 0.10
Analyzes settled trades for win rate, ROI, profit factor, Sharpe ratio, equity curves, max drawdown, and calibration — broken down by sport, category, confidence level, and edge bucket. The --simulate flag runs what-if scenarios across edge thresholds, confidence tiers, and categories; --save exports reports.
Edge-Radar ships with two slash commands for Claude Code:
| Skill | Definition | Description |
|---|---|---|
/edge-radar | skills/edge-radar/SKILL.md | Unified command center — scan, bet, status, settle, risk, detail, backtest across Kalshi sports, futures, and prediction markets. |
/edge-radar-analysis | skills/edge-radar-analysis/SKILL.md | Post-hoc performance report — trade ledger + slices by sport, category, side, edge bucket, confidence, price, calibration, longshots, streaks, daily P&L. |
The skill source of truth lives in
skills/. Claude Code loads them from.claude/skills/, which on Windows are directory junctions toskills/(git-ignored, sincecore.symlinks=false). After a fresh clone, recreate the junctions once:pwsh -File scripts/setup/link_skills.ps1.
Prefer copy-paste recipes over slash commands? The Prompt Library has 35 ready-to-use natural-language prompts — daily scans, execution sessions, live/prop betting, futures, portfolio routines, and backtesting — grouped by workflow.
/edge-radar status # Balance, positions, P&L
/edge-radar scan nba # Preview NBA opportunities
/edge-radar bet mlb --unit-size 1 # Scan + execute on confirm
/edge-radar settle # Settle + P&L report
/edge-radar-analysis 30 --save # 30-day performance report to reports/Performance/
Routes natural language to the correct scanner, enforces all risk gates, always previews before executing. All CLI flags work inline.
[!NOTE] Requires Claude Code CLI, Desktop, or IDE extension.
Gemini CLI / OpenAI Codex — add the skill content to your
GEMINI.mdorAGENTS.mdfor equivalent functionality.
Pre-built scripts scan all sports, rank by composite score, and execute with Kelly sizing. See the Automation Guide.
# Install all scheduled tasks at once
python scripts/schedulers/automation/install_windows_task.py install all
| Task | Schedule | Description |
|---|---|---|
daily-summary | 4:50 AM PT | Morning P&L digest — yesterday settled + open exposure + today pending + 7d context. Emailed at 5:00 AM PT (U2, 2026-04-30) |
scan | 8:00 AM ET | Preview scan — saves report, no bets |
execute | 8:00 AM ET | Scan + execute — places live orders |
settle | 11:00 PM ET | Settle bets, update P&L |
next-day | 9:00 PM ET | Scan + execute tomorrow's games |
calibration | 2:00 AM, 1st of month | 30-day calibration report — Brier, calibration curve, prescriptive recommendations |
Reports save to reports/Sports/schedulers/ with full execution details.
Want the complete pipeline — emails, midday/late runs, weekly calibration/backtest/analysis — beyond the installer's core tasks? See the owner's live task-schedule — the full ~20-task roster the repo owner actually runs (documented as a recommended starting point), with copy-paste .bat/.sh templates and schtasks registration.
| Guide | Description |
|---|---|
| Documentation Index | Central index and map linking all guides, references, and specifications |
| Setup Guide | Install, API keys, .env, safe rollout, automation, and monitoring — the single end-to-end operator guide |
| Automation Guide | Windows Task Scheduler for daily betting — one-command installer for the core tasks |
| Task Schedule (owner's live setup) | The full ~20-task automation pipeline the repo owner runs — recommended template, with .bat/.sh templates and schtasks setup |
| Scripts Reference | Every script, flag, and example |
| Kalshi Coverage & Guides | Coverage matrix — which sports/markets are configured and what bet types |
| Sports Guide | Edge detection model, consensus de-vig, daily workflow |
All external data is free. Only Kalshi requires a funded account.
| API | Purpose |
|---|---|
| Kalshi | Market data + order execution (API key + RSA signing) |
| The Odds API | 12 US sportsbook odds (500 free req/mo) |
| ESPN | NBA, NFL, NCAAB, NCAAF standings + line movement |
| NHL Stats API | Standings, goal differential, last 10 record |
| MLB Stats API | Standings, run differential, pitcher stats |
| NWS | Hourly forecasts for 61 NFL/MLB outdoor venues |
| CoinGecko | Crypto prices + 24h volatility |
| Yahoo Finance | S&P 500 + VIX implied volatility |
| Reject |
| 6 | Per-event cap | Reject |
| 6b | Opposing side already held or resting on the game (futures exempt) | Reject |
| 7 | Same matchup bet within the series-dedup window | Reject |
| 8 | Bet size cap | Cap |
| 9 | Bet ratio cap against the batch median | Cap |
| NFL, NBA, NHL, MLB, golf championships |
| Prediction Markets | Crypto, weather, S&P 500, politics |
| Architecture | Pipeline, edge models, risk gates, data flow, and project structure |
| MLB Filtering | 10 filter categories for MLB picks |
| Roadmap | Open enhancement work |
| Changelog | Full project history |