Skip to main content

What you’ll get

A cross-venue pair from the latest graph run, the ordered proof steps that relate its two contracts, and a decision: whether the lead priced on that pair could be filled at a profit when the books were read. On 2026-09-17 the only liquid cross-venue lead was a Brewers–Pirates total (Kalshi ↔ Polymarket, equivalent), proven in four steps and not executable at the prices on offer.

Prerequisites

  • An API key in ROUTEUR_API_KEY
  • Python 3 with requests
1

Find a cross-venue pair

Either start from the leads, which come with the depth check already done:
Or start from a market you already care about and ask for its relations to the other venue. Cross-venue relations come first:
2

Fetch the proof

Either market may be given first; the trail is stated from the left one’s side.
The steps and provenance, observed 2026-09-17 12:40 UTC (both contracts’ full terms are in left and right, left out here):
3

Read the steps and decide

This script does all three: picks the first liquid cross-venue lead (or, when there is none, the first cross-venue relation of VENUE/MARKET_ID), prints the proof, and decides from depth.
Python
Output observed 2026-09-17 12:52 UTC:
The proof holds; the prices do not pay. Yes at 54¢ plus No at 45¢ is 99¢ for a guaranteed $1, and 3.2¢ of estimated fees turn a 1¢ gross edge into a 2.2¢ loss.

Read the result

Pitfalls

  • limited_by: informational is never executable, however good the numbers look. It means the relation rests on a settlement the venues could resolve differently: economic releases that get delayed or cancelled. Treat it as a note about prices, not a trade.
  • A proof is per contract version. When either venue edits its rules, the pair’s rules_hash changes and the next run must prove it again. Until then GET /v1/relations/… returns 404 relation_not_found: “the latest graph does not relate their current contract versions”. A relation that was there an hour ago and is gone now is worth reading as a warning, not a bug. See Rule-change watch.
  • depth.observed_at is the graph run’s time, not now. On 2026-09-17 it was 12:10 UTC for a request at 12:52. Books move; size again before you act, with Slippage at size.
  • Postponement settles differently. Every cross-venue evidence line says so. An equivalent pair is equivalent when the game is played; a rain-out can pay one leg and void the other.
  • cross_venue=True is a 400. Send cross_venue=true; requests encodes Python booleans with a capital letter.
  • Relations: the three steps behind every proof, and what each relation bounds.
  • Leads: how a two-leg purchase pays $1 in every outcome, and how fees are estimated.
  • Liquid opportunities: every lead, gap and strategy match, ranked by edge × volume.
  • Rule-change watch: know when a contract version changes under a proof.