Show pageOld revisionsBacklinksBack to top This page is read only. You can view the source, but not change it. Ask your administrator if you think this is wrong. ====== 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 [[developers:systempricing|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 [[developers:websocket:markets|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]''. <WRAP callout> **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. </WRAP> ===== 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 [[developers:fixapi:start|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 | 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 | ==== Example: Won (Long Position, Settles at 1) ==== <code> << 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 </code> ==== Example: Lost (Long Position, Settles at 0) ==== <code> << 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 </code> ==== Example: Won (Short Position, Settles at 0) ==== <code> << 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 </code> ===== 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 <WRAP callout> **Note:** Confirm the contract multiplier for each prediction market instrument via the [[developers:markets|Instruments API]]. </WRAP> developers/predictionmarkets.txt Last modified: 2026/08/27 19:07by chris