Skip to main content
A lead is a pair of contracts that, because of a proven relation, pays at least $1 whatever happens. This page covers which legs a relation allows, every field a lead reports, how fees and order-book depth are estimated, and what each limited_by value means. You need it when reading GET /v1/opportunities, the leads stream topic or the lead.executable webhook. Leads are observations from the latest graph run, not quotes: prices move between the run and your order.

The idea

If “49ers over 10.5 points” implies “49ers over 3.5 points”, then buying No on the first and Yes on the second pays $1 in every score: At 5¢ and 90¢ the pair costs 95¢ for a guaranteed $1. The 5¢ left over, less fees, is the edge.

Which legs a relation allows

A lead is kept only when the two asks together cost less than $1.

What a lead reports

A one-cent gap at the top of the book, eaten by three cents of fees: a typical lead. The fields:

Fees

Issues you will see

Depth: sizing against live books

After each graph run, the best leads by net edge (150 by default) are checked against the venues’ live order books. Both legs’ ask ladders are walked together: pairs are taken while the next pair’s two asks plus both unit fees still cost less than $1. Kalshi legs are whole contracts with a minimum of one; Polymarket legs use the market’s own minimum order size, in shares. Kalshi fees are rounded up to the cent per leg. informational is set on every economics lead. The CPI and Fed relations are proven on the scheduled release, and the venues settle a delayed or cancelled release by different rules. Until a guard confirms the release happened as scheduled, these leads are listed for information only. See Cross-venue pairs.
Only leads with depth.executable could be filled at a profit when the books were read. Everything else is priced from top-of-book asks and may be too thin to fill. On the run above, 36 leads existed and one was executable, for a net of one cent on a thin tennis market that the default floors hide.

Listing leads

GET /v1/opportunities returns the latest run’s leads, executable ones first by depth.net_usd, then the rest by net_edge_usd. Responses are cached for one minute. Both legs have to pass the liquidity floors: a lead is only as good as its thinner side. With the defaults, the run above lists 4 leads; with include_thin=true, 36.
An empty list is the usual answer, and an honest one. The one executable lead on this run was on a thin market, so it appears only with include_thin=true.

Being told

  • The leads topic of the live stream pushes every lead of each finished run, in the order above.
  • The lead.executable webhook fires when a run finds a lead whose books could be filled at a profit of at least your subscription’s minimum. Economics leads never alert.