nixtla-arbitrage-detector
Detects arbitrage opportunities between Polymarket and Kalshi prediction markets.Use when a user wants to find price discrepancies for the same event on different platforms.Trigger with "find arbitrage", "detect market inefficiencies", "compare Polymarket and Kalshi prices".
When & Why to Use This Skill
The nixtla-arbitrage-detector is a specialized financial analysis tool designed to identify profitable arbitrage opportunities between Polymarket and Kalshi prediction markets. By automating real-time data retrieval, event matching through fuzzy logic, and precise profit calculation (including fee adjustments), this skill helps users detect market inefficiencies and capitalize on price discrepancies across different prediction platforms.
Use Cases
- Identifying risk-free profit opportunities by comparing 'Yes/No' contract prices for the same political or economic event across decentralized and regulated exchanges.
- Automating the monitoring of high-volatility prediction markets to capture temporary price misalignments before they are corrected by the market.
- Generating comprehensive arbitrage reports that rank potential trades by net profit percentage, helping traders prioritize the most lucrative opportunities.
- Analyzing sentiment differences between different user bases (Polymarket vs. Kalshi) by detecting significant price gaps on identical event outcomes.
| name | nixtla-arbitrage-detector |
|---|---|
| description | | |
| allowed-tools | "Read,Write,Bash,Glob,Grep,WebFetch" |
| version | "1.0.0" |
Arbitrage Detector
Identifies potential arbitrage opportunities across Polymarket and Kalshi prediction markets.
Purpose
Finds discrepancies in contract prices for the same event across Polymarket and Kalshi prediction markets, calculating potential profit after fees.
Overview
Scans Polymarket and Kalshi for matching events. Fetches current prices for each event. Calculates the potential profit from buying on one platform and selling on the other, factoring in fees. Outputs a list of arbitrage opportunities ranked by potential profit.
Prerequisites
Tools: Read, Write, Bash, Glob, Grep, WebFetch
Environment: None required
Packages:
pip install requests pandas
Instructions
Step 1: Fetch Polymarket Data
Run the Polymarket data fetcher:
python {baseDir}/scripts/fetch_polymarket.py
This fetches active markets and current prices from Polymarket CLOB API, saving results to polymarket_data.json.
Step 2: Fetch Kalshi Data
Run the Kalshi data fetcher:
python {baseDir}/scripts/fetch_kalshi.py
This fetches open markets from Kalshi API, saving results to kalshi_data.json.
Step 3: Detect Arbitrage Opportunities
Run the arbitrage analyzer:
python {baseDir}/scripts/detect_arbitrage.py
This compares prices across platforms using fuzzy string matching (70% similarity threshold), calculates arbitrage strategies, and outputs opportunities sorted by profit percentage.
Step 4: Generate Report
Create the summary report:
python {baseDir}/scripts/generate_report.py
Generates a formatted markdown report with top opportunities and risk warnings.
Output
- polymarket_data.json: Raw market data from Polymarket
- kalshi_data.json: Raw market data from Kalshi
- arbitrage_opportunities.csv: All detected opportunities with profit calculations
- arbitrage_report.md: Formatted summary report
Error Handling
Error:
Polymarket API ErrorSolution: Check Polymarket API status at status.polymarket.com. Retry after 30 seconds.Error:
Kalshi API ErrorSolution: Check Kalshi API status. May need API authentication for some endpoints.Error:
No matching events foundSolution: Lower the similarity threshold (default 0.7) or manually map event names.Error:
Insufficient data to calculate arbitrageSolution: Ensure both platforms have YES and NO prices > 0.
Examples
Example 1: Profitable Arbitrage Found
Scenario: Same election event on both platforms
Event: "Will candidate X win the 2024 election?"
Polymarket: YES = 0.45, NO = 0.55
Kalshi: YES = 0.52, NO = 0.48
Strategy: Buy Polymarket YES + Kalshi NO
Cost: 0.45 * 1.02 + 0.48 * 1.01 = 0.459 + 0.485 = 0.944
Guaranteed Return: $1.00
Profit: $0.056 (5.9%)
Example 2: No Arbitrage
Scenario: Prices are efficiently aligned
Event: "Will it rain tomorrow in NYC?"
Polymarket: YES = 0.50, NO = 0.50
Kalshi: YES = 0.50, NO = 0.50
Cost of any strategy > $1.00 after fees
Result: No profitable arbitrage
Resources
- Polymarket data fetcher:
{baseDir}/scripts/fetch_polymarket.py - Kalshi data fetcher:
{baseDir}/scripts/fetch_kalshi.py - Arbitrage analyzer:
{baseDir}/scripts/detect_arbitrage.py - Report generator:
{baseDir}/scripts/generate_report.py
Usage
Run the complete workflow:
# 1. Fetch data from both platforms
python {baseDir}/scripts/fetch_polymarket.py
python {baseDir}/scripts/fetch_kalshi.py
# 2. Detect arbitrage opportunities
python {baseDir}/scripts/detect_arbitrage.py
# 3. Generate report
python {baseDir}/scripts/generate_report.py
Or invoke this skill to generate and execute all scripts automatically.