For the complete documentation index, see llms.txt. This page is also available as Markdown.

Prediction Markets

Integrate non-sports Prediction Markets through your existing TRADE connection

Prediction Markets are available through TRADE using your existing RabbitMQ connection. No separate feed, queue, or endpoint is required.

Content is sourced from Kalshi and covers a range of non-sports categories. Prediction Market fixtures follow the Outright League message structure — the prediction category acts as the competition container, and each prediction question is represented as a fixture.


Provider

Field
Value

Providers

Kalshi, Polymarket

Status

Live

Delivery

TRADE RabbitMQ

Message family

Outright League


Categories

The following prediction categories are available for subscription:

  • Politics

  • Economics

  • Crypto

  • Companies

  • Financials

  • Science & Technology

  • Climate & Weather

  • Health

  • Entertainment

  • Social

  • Mentions


Message Mapping

Prediction Markets use the Outright League message family. The mapping to standard TRADE concepts is as follows:

TRADE concept
Prediction Markets mapping

Sport

Predictions

Competition / League

Prediction category

Fixture

One prediction question

FixtureName

Full prediction question text

Participants

Not used

Livescore

Not applicable


Market Types

Two market types are supported for Prediction Markets.

Predictions Yes/No (Market ID 3455)

A single Yes/No pair against the fixture question. Used when the fixture resolves to one binary outcome.

Parameter
Value

Market ID

3455

Bets

Yes / No

Line

Not used

Example: FixtureName: "Will the Fed raise interest rates before June 2025?" → Bets: Yes | No

Multiple Selection Predictions Yes/No (Market ID 3456)

One Yes/No pair per selectable option. Used when the fixture contains multiple possible outcomes.

Parameter
Value

Market ID

3456

Bets

Yes / No per line

Line

One selectable option per line

ParticipantId

Selection identifier where applicable

Example: FixtureName: "Who will be the next Fed Chair?"

Selection
Bet 1
Bet 2

Donald Trump

Yes

No

Jerome Powell

Yes

No


Prediction Data Fields

Kalshi prediction markets carry additional metadata across both the fixture and market messages. Use these fields to display resolution context and trading activity alongside your odds.

Fixture-level — Rules

The ExtraData array on the fixture and on each entry in Participants includes a Rules key. This is the human-readable resolution criteria defined by Kalshi — the exact conditions under which the market settles Yes or No (or a specific bet wins). Rules is delivered once at fixture level and is not repeated in market update messages.

Key
Type
Description

Rules

string

Resolution criteria for this market or participant, as defined by Kalshi

Market-level — MarketPredictionData

Carried under PredictionData on each market in the Outright League Market message. Use Volume to show overall market activity.

Field
Data Type
Description

Volume

double

OPTIONAL: Aggregate trading volume for this market

Bet-level — BetPredictionData

Carried under PredictionData on each bet. Use Volume to indicate bet-level trading depth. Use StartDate and EndDate to control when a bet is available for display.

Field
Data Type
Description

Volume

double

OPTIONAL: Total contracts traded for this bet

Liquidity

double

OPTIONAL: Available liquidity for this bet. Provided by Polymarket; null for Kalshi

StartDate

DateTime

The date from which this bet is open for trading

EndDate

DateTime

The date after which this bet closes


Message Flow

  1. Subscribe through the existing TRADE integration flow.

  2. TRADE distributes the Outright League Fixture message for each prediction question.

  3. TRADE distributes Outright League Market updates as prices change.

  4. TRADE distributes the Outright League Settlement message when the market is resolved.


Odds

Prediction Market odds are normalized from provider stake values:

Odds = 1 / Stake (cents)

Odds are delivered already normalized — no additional conversion is required.


Settlement

While underlying exchanges utilize different resolution mechanisms, LSports abstracts these into a unified settlement logic. Drive settlement logic from the Outright League Settlement message.

  • Finalization — Settlement is only triggered when the provider reaches a finalized, undisputed state. Intermediate or contested statuses are delivered as Not Settled.

  • Winning/Losing — The definitive outcome from the provider dictates the winning side. These are translated into standard LSports settlement values: Winner (ID: 2) or Loser (ID: 1) alongside Bet Status = 3.

  • Multi-selection events — For mutually exclusive markets, exactly one Yes line wins. All other lines in the market resolve as Yes = Loser (1) and No = Winner (2).

  • Split Resolutions — In rare scenarios where an exchange settles an outcome at 50/50, LSports delivers the settlement as HalfWon / HalfLost.


Rendering

Market ID 3455 — Render a single Yes / No pair against the fixture question.

Market ID 3456 — Render one Yes / No pair per selection line. Use Line as the display label and ParticipantId as the logical identifier where provided.


Integration Notes

No new connection required — Prediction Markets are delivered through the existing TRADE RabbitMQ infrastructure. No new queue, vhost, or endpoint is needed.

Livescore does not apply — Prediction Markets have no live score phase. Do not expect in-play score progression or scoreboard-driven state changes.

Reconnection — After reconnecting, request a snapshot before resuming normal consumption.

Start date fix — Fixtures now use the real start date as defined by the provider. Previously, start dates defaulted to 2040. This change is not backward compatible — auto settlement will not apply to existing fixtures that were created with the 2040 placeholder date.


Last updated

Was this helpful?