Agent skill · data analytics · machina-sports
kalshi
Kalshi prediction markets — events, series, markets, trades, and candlestick data. Public API, no auth required for reads. US-regulated exchange (CFTC). Covers football (EPL, UCL, La Liga), basketball, baseball, tennis, NFL, hockey event contracts. Use when: user asks about Kalshi-specific markets, event contracts, CFTC-regulated prediction markets, or candlestick/OHLC price history on sports outcomes. Don't use when: user asks about actual match results, scores, or statistics — use the sport-specific skill: football-data (soccer), nfl-data (NFL), nba-data (NBA), wnba-data (WNBA), nhl-data (NHL), mlb-data (MLB), tennis-data (tennis), golf-data (golf), cricket-data (cricket), cfb-data (college football), cbb-data (college basketball), or fastf1 (F1). Don't use for general "who will win" questions unless Kalshi is specifically mentioned — try polymarket first (broader sports coverage). Don't use for news — use sports-news instead.
Why this skill is useful
Provides specific commands and workflows for accessing Kalshi prediction market data that the AI wouldn't reliably generate on its own.
What it needs
About 4k tokens when loaded. Last updated 2026-08-06. 201 stars on the source repository.
What this skill does
Kalshi — Prediction Markets Before writing queries, consult references/api-reference.md for sport codes, series tickers, and command parameters. Quick Start Prefer the CLI — it avoids Python import path issues: Python SDK (alternative): CRITICAL: Before Any Query CRITICAL: Before calling any market endpoint, verify: The sport parameter is always passed to searchmarkets and gettodaysevents for single-game markets. Prices are on a 0-100 integer scale (20 = 20% implied probability) — do not treat as American odds. status="open" is used when querying markets to exclude settled/closed markets. Without the sport parameter: Important Notes On Kalshi, "Football" = NFL. For football/soccer (EPL, La Liga, etc.), use sport codes: epl, ucl, laliga, bundesliga, seriea, ligue1, mls, worldcup. Prices are probabilities. A lastprice of 20 means 20% implied probability. Scale is 0-100 (not 0-1 like Polymarket). Always use status="open" when querying markets, otherwise results include settled/closed markets. Shared interface with Polymarket: searchmarkets(sport=...), gettodaysevents(sport=...), and getsportsconfig() work the same way on both platforms. Workflows Sport Market Search (Recommended) 1. searchmarkets --sport=nba — finds all open NBA markets. 2. Optionally add --query="Lakers" to filter by keyword. 3. Results include yesbid, nobid, volume for each market. Today's Events 1. gettodaysevents --sport=nba — open events with nested markets. 2. Present events with prices (price = implied probability, 0-100 scale). Futures Market Check 1. getmarkets --seriesticker=<ticker> --status=open 2. Sort by lastprice descending. 3. Present top contenders with probability and volume. Market Price History 1. Get market ticker from searchmarkets --sport=nba. 2. getmarketcandlesticks --seriesticker=<s> --ticker=<t> --startts=<start> --endts=<end> --periodinterval=60 3. Present OHLC with volume. Commands See references/api-reference.md for the full command list with parameters. …
How to use it
Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:
@skills machina-sports/kalshi