On this page
Cross-Platform Arbitrage
Artery's normalized response wrapper makes cross-provider price diffs trivial. This recipe walks through detecting Dutch-book opportunities on the same real-world event listed on both Polymarket and Kalshi.
Artery does not ship a built-in arbitrage signal engine yet (it's on the roadmap). This recipe shows the do-it-yourself pattern that uses today's data endpoints.
Architecture
- Find the same event on both platforms
Search both via Artery's unified search:
ts
const [poly, kalshi] = await Promise.all([ fetch(`${ART}/v1/polymarket/search?q=BTC%20100k%20Dec`, headers).then((r) => r.json()), fetch(`${ART}/v1/kalshi/markets?event_ticker=KXBTC-26DEC`, headers).then((r) => r.json()), ]);Match by event description heuristically — Future versions will offer a cross-provider event correlation index.
- Pull current prices
ts
const [polyPrice, kalshiBook] = await Promise.all([ fetch(`${ART}/v1/polymarket/clob/price?token_id=${tokenId}&side=BUY`, headers).then((r) => r.json()), fetch(`${ART}/v1/kalshi/markets/${ticker}/orderbook`, headers).then((r) => r.json()), ]); // Normalize to YES probability ∈ [0, 1] const polyYesAsk = parseFloat(polyPrice.native.price); const kalshiYesAsk = kalshiBook.native.yes_ask_dollars; - Detect the edge
ts
if (polyYesAsk + (1 - kalshiYesBid) < 1) { // Buy YES on Polymarket, buy NO on Kalshi → guaranteed payoff = 1 // Edge before fees = 1 - (polyYesAsk + (1 - kalshiYesBid)) }Net edge after fees:
ts
const polyFeeBps = polyMarket.native.taker_base_fee; // from /clob/markets const kalshiFee = round(0.07 * count * price * (1 - price)); // Kalshi formula - Execute (planned)
Order endpoints are planned. Today's pattern is monitor + alert; a future release will let you atomically place both legs through Artery's batch endpoint.
Watch out for
- Settlement risk: Polymarket settles via Optimistic Oracle (UMA); Kalshi via CFTC-regulated DCM rules. The same event can settle YES on one platform and NO on the other. - Fee asymmetry: Polymarket taker fees are platform-wide; Kalshi fees are per-series and can change. - Geo-block: Kalshi is US-only — your bot's egress IP matters. - Liquidity: Apparent spreads vanish if your size moves the book.
Roadmap preview
The forthcoming L3 Arbitrage Signal Engine will surface these as a
streaming arbitrage_signal event over the WebSocket bus, with cross-platform
event correlation pre-computed. See PRD section 6.5.