This is an old revision of the document!
THIS PAGE IS UNDER CONSTRUCTION
Prediction Markets
Prediction markets on the T4 platform are binary-outcome instruments that settle at either 0 or 1 (expressed as a price). This page explains how to interpret settlement messages so your application can correctly determine the outcome of a prediction market trade.
Overview
Unlike traditional futures contracts, prediction market instruments resolve to one of two discrete values at expiration:
- 1 – The event occurred; the “Yes” side wins.
- 0 – The event did not occur; the “No” side wins.
When a prediction market settles, the T4 platform generates a synthetic order update on the opposite side of your position at the settlement price. Your application should watch for this message to determine whether a held position resolved in or out of the money.
Settlement Mechanics
How Settlement Works
At market expiration, T4 will evaluate the outcome and issue a closing order update for each open position. The message will always be:
- Side – Opposite of your open position (long positions receive a sell; short positions receive a buy).
- Price – Either 0 (lost) or 1 (won), expressed in the instrument's native price format. See System Price Format.
- Order Type –
[TBD – settlement order type tag/value] - Quantity – Equal to your open position size.
Outcome Matrix
| Your Position | Settlement Price | Outcome |
|---|---|---|
| Long | 1 | Won – event occurred |
| Long | 0 | Lost – event did not occur |
| Short | 1 | Lost – event occurred |
| Short | 0 | Won – event did not occur |
Identifying a Settlement Message
Your application should identify a settlement message by checking for the following combination of fields in an order update:
- The instrument is a prediction market type. See Market Data & Definitions for how to identify prediction market instruments.
- The order update represents a closing fill (opposite side of the open position).
- Price is exactly 0 or 1.
- Order type is
[TBD].
Note: Settlement messages are generated by the platform and do not represent a resting order in the book. They will not appear in the order book feed and should be treated as system-generated close events.
WebSocket API
Settlement is communicated via the standard order update message on the Trading API WebSocket feed. Subscribe to the account feed and watch for order updates matching the criteria above.
For full message field definitions see Message Reference and Order Routing.
Example: Won (Long Position, Settles at 1)
The following is an example order update received when a long position of 1 contract settles in the money.
// [TBD -- WebSocket order update JSON/Protobuf example] // Fields to highlight: // side: Sell // price: 1 // order_type: [TBD settlement type] // qty: 1 // status: [TBD]
Example: Lost (Long Position, Settles at 0)
// [TBD -- WebSocket order update JSON/Protobuf example] // Fields to highlight: // side: Sell // price: 0 // order_type: [TBD settlement type] // qty: 1 // status: [TBD]
Example: Won (Short Position, Settles at 0)
// [TBD -- WebSocket order update JSON/Protobuf example] // Fields to highlight: // side: Buy // price: 0 // order_type: [TBD settlement type] // qty: 1 // status: [TBD]
FIX API
Settlement is communicated via an Execution Report (tag 35=8) on the FIX session. The report will reflect the closing fill at the settlement price.
For full FIX tag definitions see FIX API.
Key FIX Tags
| Tag | Field Name | Settlement Value |
|---|---|---|
| 1 | Account | Account holding the position being settled |
| 8 | BeginString | FIX protocol version in use |
| 9 | BodyLength | Number of bytes in message body |
| 10 | CheckSum | Three-digit checksum for message validation |
| 11 | ClOrdID | Client-assigned order identifier for the settlement order |
| 14 | CumQty | Cumulative quantity filled so far |
| 17 | ExecID | Unique identifier for this execution |
| 21 | HandlInst | Order handling instruction (automated, no intervention) |
| 31 | LastPx | Price of the last fill; 0 or 1 for settlement |
| 32 | LastQty | Position size being closed |
| 34 | MsgSeqNum | Sequence number of this message in the session |
| 35 | MsgType | 8 (Execution Report) |
| 37 | OrderID | Identifier assigned by broker/exchange for the settlement order |
| 38 | OrderQty | Total quantity of the settlement order |
| 39 | OrdStatus | [TBD] |
| 40 | OrdType | [TBD – settlement order type] |
| 44 | Price | 0 or 1 |
| 48 | SecurityID | Identifier for the underlying contract/instrument |
| 49 | SenderCompID | Identifier of the sending firm/system |
| 50 | SenderSubID | Sub-identifier of the sending system |
| 52 | SendingTime | Timestamp the message was sent |
| 54 | Side | Opposite of open position (1=Buy, 2=Sell) |
| 55 | Symbol | Prediction market instrument identifier |
| 56 | TargetCompID | Identifier of the receiving firm/system |
| 59 | TimeInForce | Duration the settlement order remains valid |
| 60 | TransactTime | Timestamp of the actual transaction/execution |
| 97 | LocateReqd | Whether a locate was required (relevant for short positions) |
| 107 | SecurityDesc | Human-readable name/description of the contract |
| 151 | LeavesQty | Remaining quantity left to be filled (0 once fully settled) |
| 167 | SecurityType | Type of instrument (e.g., option) being settled |
| 200 | MaturityMonthYear | Contract expiration month/year |
| 201 | PutOrCall | Indicates whether contract is a put or call |
| 204 | CustOrderCapacity | Capacity in which the order was entered (customer/firm) |
| 207 | SecurityExchange | Exchange where the contract is listed/settled |
| 447 | PartyIDSource | Source/type of identifier used for the party |
| 448 | PartyID | Identifier of the party involved in settlement (e.g., administrator) |
| 452 | PartyRole | Role of the identified party in the settlement process |
| 453 | NoPartyIDs | Number of party ID entries included in the message |
Example: Won (Long Position, Settles at 1)
<< 8 : 1=ExampleAccount| 8=FIX.4.2 | 9=451 | 10=180 | 11=CB7ED23B-1D2F-4652-BE77-DF16DB3ED854 | 14=1 | 17=CB7ED23B-1D2F-4652-BE77-DF16DB3ED854_0_T | 21=1 | 31=0 | 32=1 | 34=70 | 35=8 | 37=CB7ED23B-1D2F-4652-BE77-DF16DB3ED854 | 38=1 | 39=2 | 48=Contract Ticker | 49=test | 50=T4FIX | 52=20260827-15:15:45.148 | 54=2 | 55=Market | 56=TradeBook | 59=0 | 60=20260827-15:15:45.147 | 97=Y | 107=Example Contract Name | 150=F | 151=0 | 167=OPT | 200=202608 | 201=1 | 204=0 | 207=Exchange Name | 447=D | 448=Administrator | 452=44 | 453=1 | [9=451|35=8] EXECUTION: Market **SELL 1@1** | Order=CB7ED23B-1D2F-4652-BE77-DF16DB3ED854 | Filled=1/1@0 | Remaining=0 | Status=Filled
Example: Lost (Long Position, Settles at 0)
<< 8 : 1=ExampleAccount| 8=FIX.4.2 | 9=451 | 10=180 | 11=CB7ED23B-1D2F-4652-BE77-DF16DB3ED854 | 14=1 | 17=CB7ED23B-1D2F-4652-BE77-DF16DB3ED854_0_T | 21=1 | 31=0 | 32=1 | 34=70 | 35=8 | 37=CB7ED23B-1D2F-4652-BE77-DF16DB3ED854 | 38=1 | 39=2 | 48=Contract Ticker | 49=test | 50=T4FIX | 52=20260827-15:15:45.148 | 54=2 | 55=Market | 56=TradeBook | 59=0 | 60=20260827-15:15:45.147 | 97=Y | 107=Example Contract Name | 150=F | 151=0 | 167=OPT | 200=202608 | 201=1 | 204=0 | 207=Exchange Name | 447=D | 448=Administrator | 452=44 | 453=1 | [9=451|35=8] EXECUTION: Market **SELL 1@0** | Order=CB7ED23B-1D2F-4652-BE77-DF16DB3ED854 | Filled=1/1@0 | Remaining=0 | Status=Filled
Example: Won (Short Position, Settles at 0)
<< 8 : 1=ExampleAccount| 8=FIX.4.2 | 9=451 | 10=180 | 11=CB7ED23B-1D2F-4652-BE77-DF16DB3ED854 | 14=1 | 17=CB7ED23B-1D2F-4652-BE77-DF16DB3ED854_0_T | 21=1 | 31=0 | 32=1 | 34=70 | 35=8 | 37=CB7ED23B-1D2F-4652-BE77-DF16DB3ED854 | 38=1 | 39=2 | 48=Contract Ticker | 49=test | 50=T4FIX | 52=20260827-15:15:45.148 | 54=2 | 55=Market | 56=TradeBook | 59=0 | 60=20260827-15:15:45.147 | 97=Y | 107=Example Contract Name | 150=F | 151=0 | 167=OPT | 200=202608 | 201=1 | 204=0 | 207=Exchange Name | 447=D | 448=Administrator | 452=44 | 453=1 | [9=451|35=8] EXECUTION: Market **BUY 1@0** | Order=CB7ED23B-1D2F-4652-BE77-DF16DB3ED854 | Filled=1/1@0 | Remaining=0 | Status=Filled
P&L Calculation
Settlement P&L for a prediction market position is straightforward:
- P&L per contract = (Settlement Price - Entry Price) * Contract Multiplier * Quantity
- For a long at entry price 0.60 settling at 1: (1 - 0.60) * [multiplier] * qty = profit
- For a long at entry price 0.60 settling at 0: (0 - 0.60) * [multiplier] * qty = loss
Note: Confirm the contract multiplier for each prediction market instrument via the Instruments API.