====== Security Definition Request ======
===== Enabling Security Definition Requests =====
To receive Security Definitions as responses to Security Definition Requests, the initiating FIX session **Logon** message must have **Tag 372 (RefMsgType)** set to `"c"` (Enable security definitions requests).
Requests that are not enabled will be rejected with a Security Definition containing **SecurityResponseType = Reject Security Proposal (Tag 323=5)**.
===== Definition of Securities =====
The T4 FIX API provides a mechanism to list the securities available for trading and market data streaming.
All Security Definition Request messages (**Tag 35=c**) are successfully responded with one or more **Security Definition** messages.
For outrights, spreads, options and multi-legged strategies, result sets contain:
* Exchange identifier
* Contract identifier
* Market identifier
* Pricing
* Minimum trading volumes
* Minimum price amount (including Variable Tick Tables)
* Quantity leg ratios
* Buy/sell sides
* Put/Call type
* Strikes
The **Security Definition Request** may interrogate the T4 FIX API for:
* Available exchanges
* Contracts within an exchange
* Markets for a specific contract
**SecurityRequestType (Tag 321)** is always set to request the list of securities (**Tag 321=3**).
Returned record sets are determined by the combination of:
* **SecurityType (Tag 167)**
* **SecurityExchange (Tag 207)**
* **Symbol (Tag 55)**
* **SecurityID (Tag 48)**
===== Identifiers =====
* **Exchange** — Unique Exchange ID (**Tag 207 - SecurityExchange**)
* **Contract** — Contract ID (**Tag 55 - Symbol**)
* **Market** — Unique Market ID (**Tag 48 - SecurityID**)
===== Supported Use Cases =====
- **List Exchanges (Get Exchange IDs)**
Set SecurityType (Tag 167). Returns all Exchange IDs in Tag 207 with description.
- **List Contracts within an Exchange (Get Contract IDs)**
Requires SecurityType (Tag 167) and SecurityExchange (Tag 207). Optional PutOrCall (Tag 201) for options.
Returns all Contract IDs (Tag 55) with description (Tag 107).
- **List Current Markets of a Specific Contract (Get Market IDs)**
Requires SecurityType (Tag 167), SecurityExchange (Tag 207), Symbol (Tag 55).
Optional SecuritySubType (Tag 762) to filter results. Returns Market IDs in Tag 48.
- **List a Specific Current Market (Get Market ID)**
Same as above, but includes SecurityID (Tag 48) for the specific market.
- **List Expired Markets for a Specific Maturity**
Requires SecurityType (Tag 167), SecurityExchange (Tag 207), Symbol (Tag 55),
SecurityRequestType = REQUEST_LIST_SECURITIES_ONLY_EXPIRED, MaturityMonthYear (Tag 200).
- **List All Only Expired Markets**
Requires SecurityType (Tag 167), SecurityExchange (Tag 207), Symbol (Tag 55),
SecurityRequestType = REQUEST_LIST_SECURITIES_ONLY_EXPIRED.
===== Interactive Usage =====
Security Definition Requests are **progressive and incremental**:
* Send a request → process all responses → send the next request.
* **Batching is not supported** — may cause performance issues or disconnection.
* Avoid re-requesting all instruments on every FIX session logon — cache definitions where possible.
* New market discovery should match contract expiration cycles (e.g., quarterly for CME equities).
===== Message Dictionary =====
^ Tag ^ Field Name ^ Req'd ^ Comments |
| *Standard Header* | Y | MsgType = c |
| 320 | SecurityReqID | Y | Unique identifier for this request. |
| 321 | SecurityRequestType | Y | 3 = REQUEST_LIST_SECURITIES (Active markets), 4 = REQUEST_LIST_SECURITIES_ONLY_EXPIRED (Expired markets only)|
| 167 | SecurityType | N | FUT = Futures, OPT = Options, STK = Stock, SYN = Synthetic, BIN = Binary Option |
| 207 | SecurityExchange | N | T4 Exchange ID |
| 55 | Symbol | N | T4 Contract ID |
| 48 | SecurityID | N | T4 Market ID |
| 201 | PutOrCall | N | 0 = Put, 1 = Call |
| 200 | MaturityMonthYear | N | Format YYYYMM00 or YYYYMM |
| 762 | SecuritySubType | N | Further describes the security (see valid values list) |
| *Standard Trailer* | Y | |
===== Valid Values for SecuritySubType (Tag 762) =====
^ Code ^ Description ^
| 0 | None (Outrights) |
| 1 | Calendar Spread |
| 2 | RT Calendar Spread |
| 3 | Inter Contract Spread |
| 4 | Butterfly Spread |
| 5 | Condor Spread |
| 6 | Pack Spread |
| 7 | Bundle Spread |
| 8 | Inter Exchange Spread |
| 9 | Crack Spread |
| 10 | Spark Spread |
| 11 | Crush Spread |
| 12 | Reverse Crush Spread |
| 13 | Strip |
| 14 | Straddle |
| 15 | Strangle |
| 16 | Guts |
| 17 | Synthetics |
| 18 | Combo |
| 19 | Vertical Spread |
| 20 | Horizontal Spread |
| 21 | Diagonal Spread |
| 22 | Ratio Spread |
| 23 | Back Spread |
| 24 | Covered Call |
| 25 | Covered Put |
| 26 | Married Put |
| 27 | Collar |
| 28 | Fence |
| 29 | Conversion |
| 30 | Reverse Conversion |
| 31 | Box Spread |
| 32 | Jelly Roll |
| 33 | Iron Condor |
| 34 | Iron Butterfly |
| 35 | Ladder |
| 36 | Seagull |
| 37 | Strip (Option Strategy) |
| 38 | Strap |
| 39 | Synthetic Long Stock |
| 40 | Synthetic Short Stock |
| 41 | Synthetic Long Future |
| 42 | Synthetic Short Future |
| 43 | Reversal |
| 44 | Risk Reversal |
| 45 | Calendar Butterfly |
| 46 | Calendar Condor |
| 47 | Calendar Straddle |
| 48 | Calendar Strangle |
| 49 | Diagonal Butterfly |
| 50 | Diagonal Condor |
| 51 | Diagonal Straddle |
| 52 | Diagonal Strangle |
| 53 | Horizontal Butterfly |
| 54 | Horizontal Condor |
| 55 | Horizontal Straddle |
| 56 | Horizontal Strangle |
| 57 | Ratio Butterfly |
| 58 | Ratio Condor |
| 59 | Ratio Straddle |
| 60 | Ratio Strangle |
| 61 | Vertical Butterfly |
| 62 | Vertical Condor |
| 63 | Vertical Straddle |
| 64 | Vertical Strangle |
| 65 | Box (Synthetic Arbitrage) |
| 66 | Diagonal Box |
| 67 | Horizontal Box |
| 68 | Ratio Box |
| 69 | Vertical Box |
| 70 | Inter Contract Strip |
====== Sample Messages ======
Requesting all exchanges
>> 10/15/2012 4:22:27 PM [FIXSECURITYDEFINITIONREQUEST] 34=2|49=T4Example|56=T4|52=20121015-21:22:27.673|320=sc-10/15/2012 4:22:27 PM|321=3|167=FUT|
[FIXSECURITYDEFINITIONREQUEST]
[MsgSeqNum] 34 = 2
[SenderCompID] 49 = T4Example
[TargetCompID] 56 = T4
[SendingTime] 52 = 20121015-21:22:27.673
[SecurityReqID] 320 = sc-10/15/2012 4:22:27 PM
[SecurityRequestType] 321 = 3 (REQUEST_LIST_SECURITIES)
[SecurityType] 167 = FUT (FUTURE)
Requesting all contracts for a specific exchange
>> 10/15/2012 4:22:39 PM [FIXSECURITYDEFINITIONREQUEST] 34=3|49=T4Example|56=T4|52=20121015-21:22:39.638|320=sc-10/15/2012 4:22:39 PM|321=3|167=FUT|207=CME_Eq|
[FIXSECURITYDEFINITIONREQUEST]
[MsgSeqNum] 34 = 3
[SenderCompID] 49 = T4Example
[TargetCompID] 56 = T4
[SendingTime] 52 = 20121015-21:22:39.638
[SecurityReqID] 320 = sc-10/15/2012 4:22:39 PM
[SecurityRequestType] 321 = 3 (REQUEST_LIST_SECURITIES)
[SecurityType] 167 = FUT (FUTURE)
[SecurityExchange] 207 = CME_Eq
Requesting all markets for a specific contract
>> 10/15/2012 4:23:22 PM [FIXSECURITYDEFINITIONREQUEST] 34=7|49=T4Example|56=T4|52=20121015-21:23:22.117|320=sc-10/15/2012 4:23:22 PM|321=3|55=ES|167=OPT|201=1|207=CME_EqOp|
[FIXSECURITYDEFINITIONREQUEST]
[MsgSeqNum] 34 = 7
[SenderCompID] 49 = T4Example
[TargetCompID] 56 = T4
[SendingTime] 52 = 20121015-21:23:22.117
[SecurityReqID] 320 = sc-10/15/2012 4:23:22 PM
[SecurityRequestType] 321 = 3 (REQUEST_LIST_SECURITIES)
[Symbol] 55 = ES
[SecurityType] 167 = OPT (OPTION)
[PutOrCall] 201 = 1 (CALL)
[SecurityExchange] 207 = CME_EqOp
Requesting a specific market
>> 10/15/2012 4:40:18 PM [FIXSECURITYDEFINITIONREQUEST] 34=4|49=T4Example|56=T4|52=20121015-21:40:18.421|320=sc-10/15/2012 4:40:18 PM|321=3|55=ES|167=FUT|207=CME_Eq|48=CME_20121200_ESZ2|
[FIXSECURITYDEFINITIONREQUEST]
[MsgSeqNum] 34 = 4
[SenderCompID] 49 = T4Example
[TargetCompID] 56 = T4
[SendingTime] 52 = 20121015-21:40:18.421
[SecurityReqID] 320 = sc-10/15/2012 4:40:18 PM
[SecurityRequestType] 321 = 3 (REQUEST_LIST_SECURITIES)
[Symbol] 55 = ES
[SecurityType] 167 = FUT (FUTURE)
[SecurityExchange] 207 = CME_Eq
[SecurityID] 48 = CME_20121200_ESZ2
[[developers:legacy_fix_api|T4 FIX API Home]]