Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

kalshi-predictit-arb Python client

Live cross-venue arbitrage scanner: entity-resolved Kalshi vs PredictIt political markets, priced in both directions with real fee drag, reporting worst-case net profit across settlement outcomes.

Built and operated by Team Takatini. Docs + live sample: https://mastertyrone.github.io/kalshi-predictit-arb/

Install

pip install requests eth-account

Quickstart

from kalshi_predictit_arb import ArbScanner

scanner = ArbScanner()  # reads X402_WALLET_KEY from the environment
for opp in scanner.opportunities(q="governor", limit=10):
    d = opp["best_direction"]
    print(opp.get("event"), "->", d["net_yield_c"], "c worst-case net")

Each call costs $0.02 USDC on Base, settled via the x402 v2 exact scheme. Your key only signs an EIP-712 TransferWithAuthorization offline — it is never transmitted, logged, or stored anywhere but your machine. ArbScanner refuses any charge above its per-call cap (default $0.02, the exact API price) and any non-Base / non-USDC payment requirement.

What "net" means

No phantom arbs. Every pair is gated on state, district, office, party, numeric strike, and cycle year (candidate-vs-party mismatches are hard-rejected), then charged:

  • Kalshi taker fee: ceil(7 * P * (1-P)) cents per contract per leg
  • PredictIt: 10% of winning-leg profit + 5% withdrawal drag
  • executable = True only at >= 1c worst-case net after all fee drag

The response also walks the Kalshi book to $100/$500/$1000 (VWAP + depth). PredictIt publishes no public depth — size that leg within its $850/contract position limit.

API

  • ArbScanner(private_key=None, max_usd_per_call=0.02) — key from arg or X402_WALLET_KEY env var.
  • .scan(q=None, limit=10, mode="opportunities") — full response dict.
  • .opportunities(q=None, limit=10) — executable opps, best net first.

q filters by keyword (default scans major races), limit 1–25, mode="all" includes below-bar pairs for research.

Using with DRADIS

There's no DRADIS Raptor for this feed. DRADIS keeps paid, wallet-signing data sources out of its core, and it has no way to load a Raptor from outside its own repo, so we don't ship one. If you run DRADIS and want this signal, run this client alongside it as a separate tool. It's a read-only signal and doesn't feed DRADIS's trading decisions.

About

Python client for the kalshi-predictit-arb x402 API — Kalshi vs PredictIt political-market arbitrage with real fee drag. Built and operated by Team Takatini.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages