The market graph is an early access feature and is not included in standard plans. To request access, email support@probalytics.io.
Shape
The market graph links markets whose outcomes depend on each other, within a platform and across Kalshi and Polymarket. It covers five domains:crypto, sports, finance, weather, and elections. Every relation comes with a price rule that consistent prices must satisfy.
Market
One node per market.id is the Probalytics market ID and joins to markets.id.
Sports markets also carry
game_id, segment, unit, tie_push, and settlement facts (tie, postponed, cancelled, stopped, player_out). A column a domain does not use is null.
Underlying
One observable number:key, domain, asset, feed, measure, obs_start, obs_end, markets. Markets on the same underlying ask about the same number, which is what makes exact relations possible.
OutcomeSet
The options of one event.kind is:
brackets— ranges tiling a line; exactly one wins, prices sum to 1selection— options covering every outcome; exactly one wins, prices sum to 1exclusive— at most one wins; prices sum to at most 1
members, resolved, and winners.
RELATION
Relations
IMPLIES edges are stored only to the nearest neighbour: a 150-rung threshold ladder is 149 edges, and the full chain is a path query. MUTEX edges are likewise stored to the nearest conflicting market on each side. Brackets of one event are exclusive through their OutcomeSet, not pairwise edges.
Sports holds_if values:
completed— the platforms settle a disrupted game differently, so the edge is guaranteed when the game is played to completionplayed— they also settle a player who does not play differentlyplayed_second_half— one side is a Kalshi “(Protected)” prop
holds_if values (seated, call_stands, official_count, winner_inaugurated) mark edges where the platforms settle on different results.
Coverage
The graph covers the full history of Kalshi and Polymarket markets in the five domains, open and resolved. Each Kalshi series or Polymarket event family belongs to exactly one domain, so no market appears twice. Markets outside the five domains are not included; markets inside a domain that could not be modelled are included with
coverage set.
The graph is rebuilt from the markets dataset roughly every 30 minutes.
Querying the graph
The graph is served over the REST API with the same API key as other endpoints. Requests from accounts without access return403.
Preconfigured queries
Cypher
{"rows": [...]}. Each request runs one read-only statement and returns at most 10,000 rows. Queries time out after 30 seconds; when the server is busy with other Cypher queries it returns 429, so retry with backoff.
Example queries:
UNION ALL is not supported; run separate queries instead. Combine graph results with orderbook or markets data in SQL by market id to check price rules against live prices.