| name | description | allowed-tools | version |
|---|---|---|---|
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".
|
Read,Write,Bash,Glob,Grep,WebFetch |
1.0.0 |
Identifies potential arbitrage opportunities across Polymarket and Kalshi prediction markets.
Finds discrepancies in contract prices for the same event across Polymarket and Kalshi prediction markets, calculating potential profit after fees.
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.
Tools: Read, Write, Bash, Glob, Grep, WebFetch
Environment: None required
Packages:
pip install requests pandasRun the Polymarket data fetcher:
python {baseDir}/scripts/fetch_polymarket.pyThis fetches active markets and current prices from Polymarket CLOB API, saving results to polymarket_data.json.
Run the Kalshi data fetcher:
python {baseDir}/scripts/fetch_kalshi.pyThis fetches open markets from Kalshi API, saving results to kalshi_data.json.
Run the arbitrage analyzer:
python {baseDir}/scripts/detect_arbitrage.pyThis compares prices across platforms using fuzzy string matching (70% similarity threshold), calculates arbitrage strategies, and outputs opportunities sorted by profit percentage.
Create the summary report:
python {baseDir}/scripts/generate_report.pyGenerates a formatted markdown report with top opportunities and risk warnings.
- 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:
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.
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%)
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
- 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
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.pyOr invoke this skill to generate and execute all scripts automatically.