360 Secure SkillHub
360 安全技能中心

Prediction Market Watcher

通过 Python 脚本连接 Kalshi 与 Polymarket 的 API,其中 Polymarket 目前只读,支持查看持仓与余额、扫描市场机会、检查结算状态,以及手动或自动下单;内置每日预算、持仓数量和单笔下注上限等风险规则,并建议用定时任务在结算前提醒。

m-lwatcher
m-lwatcher
热度 34.23
最近更新 2026-05-18 11:33:18
分类:自动化依赖:代码执行 / 读写文件 / 第三方 API应用场景:财务 / 个人理财 / 市场分析 / 报告撰写 ...

安装技能

复制下面的话术发给你的 Agent,它会通过 secure-skills 检索并安装该技能。

执行命令安装此 skill: npx secure-skills-cli add prediction-market-watcher
Metadata
name
prediction-market-watcher
description
Monitor, analyze, and trade on Kalshi and Polymarket prediction markets. Use when the user wants to check open positions, scan for value bets, place bets, check settlement status, or get a portfolio summary on Kalshi or Polymarket. Also use proactively when a bet is approaching settlement time.

Prediction Market Watcher

Connects to Kalshi (and Polymarket) to track positions, scan markets, and place bets.

Setup

Kalshi (live trading, US):

  • API key + RSA private key required
  • Config lives at kalshi-agent/config.json in the workspace
  • Key file: kalshi-agent/kalshi.key
  • Scripts use kalshi_client.py with RSA-PSS signed requests

Polymarket (coming soon — read-only via public API for now)

Common Tasks

Check portfolio / open positions

cd ~/workspace/kalshi-agent && python3 kalshi_agent.py --status
cd ~/workspace/kalshi-agent && python3 kalshi_agent.py --positions

Check a specific market

from kalshi_client import KalshiClient
import json
c = KalshiClient('KEY_ID', 'kalshi.key')
market = c.get('/trade-api/v2/markets/TICKER_HERE')
print(json.dumps(market, indent=2))

Key fields: yes_bid_dollars, yes_ask_dollars, floor_strike, cap_strike, close_time, rules_primary

Check BTC/crypto price vs bet range

  • Fetch live price via web search or Brave API
  • Compare against floor_strike / cap_strike from market data
  • Settlement uses CF Benchmarks RTI (60s avg before close) — not Coinbase/Google price

Scan for opportunities

cd ~/workspace/kalshi-agent && python3 kalshi_agent.py --scan

Place a bet (manual)

order = c.create_order(ticker="TICKER", side="yes", action="buy", count=N, limit_price=CENTS)
  • limit_price is in cents (e.g. 8 = $0.08)
  • count = number of $1 contracts
  • Always check risk_state.json limits before placing

Settlement reminders

  • Use a cron job scheduled ~15 min before close_time
  • Message Katie on Telegram with: current price, range, whether we're in/out, time remaining

Risk Rules (from risk.py)

  • Max $20/day budget
  • Max 5 open positions
  • Max single bet: $5 (high confidence), $3 (medium), $1 (low)
  • Check can_bet() before any auto-place

API Base URL

https://api.elections.kalshi.com/trade-api/v2/

Key endpoints:

  • GET /portfolio/positions → open positions (use /trade-api/v2/portfolio/positions)
  • GET /markets/{ticker} → single market detail
  • GET /markets?status=open&limit=100 → scan markets
  • GET /portfolio/balance → balance + portfolio value
  • POST /portfolio/orders → place order

See references/kalshi-api.md for full endpoint reference.

Polymarket (read-only)

Public REST API — no auth needed for reads:

GET https://gamma-api.polymarket.com/markets?active=true&limit=20

See references/polymarket-api.md for details.