Skills markets
git clone https://github.com/openclaw/skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/openclaw/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/antonelli182/sports-skills-markets" ~/.claude/skills/clawdbot-skills-markets && rm -rf "$T"
skills/antonelli182/sports-skills-markets/SKILL.mdMarkets Orchestration
Bridges ESPN live schedules (NBA, NFL, MLB, NHL, WNBA, CFB, CBB) with Kalshi and Polymarket prediction markets. Before writing queries, consult
references/api-reference.md for supported sport codes, command parameters, and price normalization formats.
Quick Start
sports-skills markets get_todays_markets --sport=nba sports-skills markets search_entity --query="Lakers" --sport=nba sports-skills markets compare_odds --sport=nba --event_id=401234567 sports-skills markets get_sport_markets --sport=nfl sports-skills markets get_sport_schedule --sport=nba sports-skills markets normalize_price --price=0.65 --source=polymarket sports-skills markets evaluate_market --sport=nba --event_id=401234567
Python SDK:
from sports_skills import markets markets.get_todays_markets(sport="nba") markets.search_entity(query="Lakers", sport="nba") markets.compare_odds(sport="nba", event_id="401234567") markets.get_sport_markets(sport="nfl") markets.get_sport_schedule(sport="nba", date="2025-02-26") markets.normalize_price(price=0.65, source="polymarket") markets.evaluate_market(sport="nba", event_id="401234567")
CRITICAL: Before Any Query
CRITICAL: Before calling any orchestration command, verify:
- A
code is provided for sport-aware commands (sport
,get_todays_markets
,compare_odds
,get_sport_markets
).evaluate_market - Price sources are identified correctly before normalization:
= American odds,espn
= 0-1 probability,polymarket
= 0-100 integer.kalshi
Important Notes
- Sport context is passed through.
maps automatically to the correct Polymarket sport code and Kalshi series ticker.--sport=nba - Both platforms use sport-aware search. Polymarket uses
→ series_id; Kalshi usessport
,KXNBA
, etc.KXNFL - Prices are normalized. Everything is converted to implied probability for comparison.
Workflows
Today's NBA Dashboard
sports-skills markets get_todays_markets --sport=nba
Returns each game with ESPN info, DraftKings odds, matching Kalshi markets, and matching Polymarket markets.
Find Arb on a Specific Game
- Get the ESPN event ID:
get_sport_schedule --sport=nba - Compare odds:
compare_odds --sport=nba --event_id=<id> - If arbitrage detected, response includes allocation percentages and guaranteed ROI.
Full Bet Evaluation
evaluate_market --sport=nba --event_id=<id>- Fetches ESPN odds and matching prediction market price
- Pipes through
: devig → edge → Kellybetting.evaluate_bet - Returns fair probability, edge, EV, Kelly fraction, and recommendation
Examples
Example 1: Today's games with prediction market odds User says: "What NBA games are on today and what are the prediction market odds?" Actions:
- Call
Result: Unified dashboard with each game's ESPN info and Kalshi/Polymarket pricesget_todays_markets(sport="nba")
Example 2: Cross-platform team search User says: "Find me Lakers markets on Kalshi and Polymarket" Actions:
- Call
Result: All Lakers markets across both exchanges with prices and volumesearch_entity(query="Lakers", sport="nba")
Example 3: Odds comparison for a specific game User says: "Compare the odds for this Celtics game across ESPN and Polymarket" Actions:
- Get event_id from
get_sport_schedule(sport="nba") - Call
Result: Normalized side-by-side comparison with automatic arbitrage checkcompare_odds(sport="nba", event_id="<id>")
Example 4: Full market evaluation User says: "Is there edge on the Chiefs game?" Actions:
- Get event_id from
get_sport_schedule(sport="nfl") - Call
Result: Fair probability, edge percentage, EV, Kelly fraction, and bet recommendationevaluate_market(sport="nfl", event_id="<id>")
Example 5: Browse all markets for a sport User says: "Show me all NFL prediction markets" Actions:
- Call
Result: All open NFL markets across Kalshi and Polymarketget_sport_markets(sport="nfl")
Example 6: Price conversion User says: "Convert a Polymarket price of 65 cents to American odds" Actions:
- Call
Result: Common structure with implied probability (0.65), American odds (-185.7), and decimal (1.54)normalize_price(price=0.65, source="polymarket")
Commands that DO NOT exist — never call these
— does not exist. Useget_odds
to see odds across sources.compare_odds— does not exist on the markets module. Usesearch_markets
instead.search_entity— does not exist. Useget_schedule
instead.get_sport_schedule
If a command is not listed in
references/api-reference.md, it does not exist.
Troubleshooting
Error: No markets returned for a sport Cause: Sport code may be missing or incorrect Solution: Check
references/api-reference.md for valid sport codes. Use the exact code (e.g., nba, epl, laliga)
Error:
compare_odds returns no data for an event
Cause: The event_id is incorrect or the game has not been indexed yet
Solution: Call get_sport_schedule(sport=...) to retrieve the correct event_id first
Error: One source shows warnings in the response Cause: Kalshi or Polymarket is temporarily unavailable Solution: The module returns partial results — use what is available. Retry the unavailable source separately using the kalshi or polymarket skill directly
Error:
normalize_price returns unexpected American odds value
Cause: Wrong source parameter — Kalshi uses 0-100 integers, Polymarket uses 0-1 decimals
Solution: Verify the source. Kalshi price of 65 requires source="kalshi", Polymarket price of 0.65 requires source="polymarket"