Poly Kalshi Arb
Find arbitrage opportunities between Polymarket and Kalshi prediction markets
Install / Use
npx skills add AlexM800/poly-kalshi-arbInstalls into whichever agent you are using.
README
Polymarket-Kalshi Arbitrage Finder
Scans Polymarket and Kalshi prediction markets to find arbitrage opportunities.
Note: This bot only finds and displays opportunities. It does not execute trades.
What is Arbitrage?
When the same event is priced differently on two platforms, you can profit by betting on both outcomes:
Example: "Will X happen?"
Polymarket: YES = 2.2¢
Kalshi: NO = 86¢
─────
Total cost: 88.2¢
Payout (guaranteed): $1.00
Profit: 11.8%
Since either YES or NO must happen, you get $1 back no matter what.
Sample Output
╭─────┬─────────────────────────────┬────────────────────────────┬────────┬─────────┬──────────╮
│ # │ Market │ Strategy │ Qty │ Profit │ Max $ │
├─────┼─────────────────────────────┼────────────────────────────┼────────┼─────────┼──────────┤
│ 1 │ Will X win the election? │ YES@P(2.2%) + NO@K(86.0%) │ 22 │ 11.8% │ $2.60 │
│ │ K: https://kalshi.com/... │ YES@P(2.2%) + NO@K(88.0%) │ 32 │ 9.8% │ $3.14 │
│ │ P: https://polymarket.com/..│ YES@P(2.2%) + NO@K(89.0%) │ 44 │ 8.8% │ $3.87 │
╰─────┴─────────────────────────────┴────────────────────────────┴────────┴─────────┴──────────╯
- Qty - Contracts available at that price level
- Profit - Guaranteed profit percentage
- Max $ - Maximum profit in dollars at that level
Requirements
- Python 3.11+
- Kalshi API key (API key + RSA private key)
- Polymarket API credentials
Quick Start
git clone https://github.com/AlexM800/poly-kalshi-arb.git
cd poly-kalshi-arb
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
cp .env.example .env
# Edit .env with your API credentials
python3 -m src.main
Configuration
Copy .env.example to .env and fill in your credentials:
| Variable | Description |
|----------|-------------|
| KALSHI_API_KEY_ID | Your Kalshi API key ID |
| KALSHI_PRIVATE_KEY_PATH | Path to RSA private key (.pem) |
| POLY_API_KEY | Polymarket API key (optional) |
| POLY_SECRET | Polymarket secret (optional) |
| POLY_PASSPHRASE | Polymarket passphrase (optional) |
| POLL_INTERVAL_SECONDS | How often to scan (default: 30) |
| MIN_PROFIT_THRESHOLD | Minimum profit to show (default: 0.02 = 2%) |
| FUZZY_MATCH_THRESHOLD | Market title match threshold (default: 95) |
How It Works
- Fetches all open markets from both platforms
- Matches similar markets using fuzzy text matching
- Fetches orderbooks for matched pairs
- Calculates arbitrage across all price levels
- Displays opportunities ≥2% profit
Runs continuously, refreshing every 30 seconds. Press Ctrl+C to stop.
Related Skills
node-connect
385.5kDiagnose OpenClaw Android, iOS, or macOS node pairing, QR/setup code, route, auth, and connection failures.
blender-python-addon
40.5kBlender Python add-on rules for operators, panels, properties, registration, testing, and API-safe scripting
flutter-development-guidelines-cursorrules-prompt-file
40.5kCursor rules for Flutter development with MVVM architecture, Riverpod state management, Material widgets, and Dart style guidelines.
commit-push-pr
140.7kCommit, push, and open a PR
