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.
Unlike traditional futures contracts, prediction market instruments resolve to one of two discrete values at expiration:
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.
At market expiration, T4 will evaluate the outcome and issue a closing order update for each open position. The message will always be:
[TBD – settlement order type tag/value]| 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 |
Your application should identify a settlement message by checking for the following combination of fields in an order update:
[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.
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.
| 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 | Order Status |
| 40 | OrdType | 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 | Name 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 |
<< 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
<< 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
<< 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
Settlement P&L for a prediction market position is straightforward:
Note: Confirm the contract multiplier for each prediction market instrument via the Instruments API.