Differences
This shows you the differences between two versions of the page.
| Next revision | Previous revision | ||
| developers:predictionmarkets [2026/04/29 19:45] – created chad | developers:predictionmarkets [2026/05/18 20:01] (current) – [Example: Lost (Long Position, Settles at 0)] chris | ||
|---|---|---|---|
| Line 1: | Line 1: | ||
| - | Comin soon | + | ====== 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 " | ||
| + | * **0** -- The event did not occur; the " | ||
| + | |||
| + | 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' | ||
| + | * **Order Type** -- '' | ||
| + | * **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: | ||
| + | - The order update represents a closing fill (opposite side of the open position). | ||
| + | - Price is exactly **0** or **1**. | ||
| + | - Order type is '' | ||
| + | |||
| + | <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. | ||
| + | </ | ||
| + | |||
| + | ===== 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 [[developers: | ||
| + | |||
| + | ==== 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. | ||
| + | |||
| + | <code javascript> | ||
| + | // [TBD -- WebSocket order update JSON/ | ||
| + | // Fields to highlight: | ||
| + | // | ||
| + | // | ||
| + | // | ||
| + | // | ||
| + | // | ||
| + | </ | ||
| + | |||
| + | ==== Example: Lost (Long Position, Settles at 0) ==== | ||
| + | |||
| + | <code javascript> | ||
| + | // [TBD -- WebSocket order update JSON/ | ||
| + | // Fields to highlight: | ||
| + | // | ||
| + | // | ||
| + | // | ||
| + | // | ||
| + | // | ||
| + | </ | ||
| + | |||
| + | ==== Example: Won (Short Position, Settles at 0) ==== | ||
| + | |||
| + | <code javascript> | ||
| + | // [TBD -- WebSocket order update JSON/ | ||
| + | // Fields to highlight: | ||
| + | // | ||
| + | // | ||
| + | // | ||
| + | // | ||
| + | // | ||
| + | </ | ||
| + | |||
| + | ===== 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: | ||
| + | |||
| + | ==== Key FIX Tags ==== | ||
| + | |||
| + | ^ Tag ^ Field Name ^ Settlement Value ^ | ||
| + | | 35 | MsgType | ||
| + | | 39 | OrdStatus | ||
| + | | 54 | Side | Opposite of open position (1=Buy, 2=Sell) | | ||
| + | | 44 | Price | 0 or 1 | | ||
| + | | 40 | OrdType | ||
| + | | 32 | LastQty | ||
| + | | 150 | ExecType | ||
| + | | 55 | Symbol | ||
| + | |||
| + | ==== Example: Won (Long Position, Settles at 1) ==== | ||
| + | |||
| + | < | ||
| + | << 8 : 1=ExampleAccount01=FIX.4.29=45210=17811=9FF38429-7D9F-4679-ABFE-1E878588FE0514=117=9FF38429-7D9F-4679-ABFE-1E878588FE05_0_T21=131=132=134=11635=837=9FF38429-7D9F-4679-ABFE-1E878588FE0538=139=248=XKLSH_POp KXBTC15M-26MAY181515-1549=test50=T4FIX52=20260518-19: | ||
| + | [9=452|35=8] EXECUTION: KXBTC15M SELL 1@1 | Order=9FF38429-7D9F-4679-ABFE-1E878588FE05 | Filled=1/ | ||
| + | </ | ||
| + | |||
| + | ==== Example: Lost (Long Position, Settles at 0) ==== | ||
| + | |||
| + | < | ||
| + | << 8 : 1=ExampleAccount018=FIX.4.29=45210=17811=9FF38429-7D9F-4679-ABFE-1E878588FE0514=117=9FF38429-7D9F-4679-ABFE-1E878588FE05_0_T21=131=132=134=11635=837=9FF38429-7D9F-4679-ABFE-1E878588FE0538=139=248=XKLSH_POp KXBTC15M-26MAY181515-1549=test50=T4FIX52=20260518-19: | ||
| + | [9=452|35=8] EXECUTION: KXBTC15M SELL 1@1 | Order=9FF38429-7D9F-4679-ABFE-1E878588FE05 | Filled=1/ | ||
| + | </ | ||
| + | |||
| + | ==== Example: Won (Short Position, Settles at 0) ==== | ||
| + | |||
| + | < | ||
| + | << 8 : 1=ExampleAccount018=FIX.4.29=45210=06811=5AA0C947-59AF-4ED7-809E-44852D51D8E414=117=5AA0C947-59AF-4ED7-809E-44852D51D8E4_0_T21=131=032=134=16135=837=5AA0C947-59AF-4ED7-809E-44852D51D8E438=139=248=XKLSH_POp KXBTC15M-26MAY181600-0049=test50=T4FIX52=20260518-20: | ||
| + | [9=452|35=8] EXECUTION: KXBTC15M BUY 1@0 | Order=5AA0C947-59AF-4ED7-809E-44852D51D8E4 | Filled=1/ | ||
| + | </ | ||
| + | |||
| + | ===== 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: | ||
| + | </ | ||
| + | |||