Information about the ALI protocol, the Market Data protocol for trading and reference pricing purposes on Base Exchange.
| Version | Compatible with previous version |
Change Description | Date |
|---|---|---|---|
| 3.0 | No | Added Cross Trade; Added UpperPrice and LowerPrice fields to VCM Reference Price; Stock directory: removed SecuritySubType, SecurityGroup, MaxOrderQty fields |
08/11/2026 |
| 2.0 | No | Removed ParticipantDirectory message; Stock directory: - changed PriceDecimals to PriceIncrement, - added MaxOrderVolume, - changed SecuritySubType data type from alpha to integer, - changed SecurityGroup type from alpha to integer; Add Order: changed FirmId to FirmCode, length 4; Order Executed: changed AggressorFirmId to Aggressor FirmCode, length 4 |
07/21/2025 |
| 1.0 | - | Original version | 11/08/2024 |
ALI is a native market data protocol in binary format, designed with a focus on simplicity and performance. Market data messages include instruments available daily, instrument status, market status, order books and trade data.
The ALI protocol consists of a unidirectional communication channel between the market data gateway and the client application, mediated by a lower-level protocol, BaseUDP. Outbound messages, that is, from the market data gateway to the client, are always sequenced and delivered through one of the Market Data multicast channels.
In case of message loss by the client, the user may send a retransmission request to one of the ALI retransmission instances, again using the BaseUDP protocol, specifying the messages required for resync. If the client lost too many messages or wishes for an updated snapshot there is also the option to request the latest snapshot available, through the BaseTCP protocol.
All field lengths are expressed in bytes.
Alpha fields allow uppercase and lowercase ASCII characters. Fixed-width Alpha fields are right-padded with spaces.
Numeric fields are binary formatted, big-endian numbers, unsigned values.
The Price field is a Numeric field with 4 implied decimal places.
| Name | Length | Values | Notes |
|---|---|---|---|
| Type | 1 | Alpha | S = System Event |
| Timestamp | 8 | Integer | Nanoseconds since midnight |
| Event Code | 1 | Alpha | O = Start of Messages; S = Start of System hours; E = End of System hours; C = End of Messages |
| Name | Length | Values | Notes |
|---|---|---|---|
| Type | 1 | Alpha | R = Stock Directory |
| Timestamp | 8 | Integer | Nanoseconds since midnight |
| SecurityId | 2 | Integer | SecurityId uniquely assigned to the security symbol for the day |
| Symbol | 8 | Alpha | Denotes the security symbol for the issue in the execution system |
| RoundLotSize | 4 | Integer | Denotes the number of shares that represent a round lot for the issue |
| PriceIncrement | 4 | Integer | Price increment |
| SecurityType | 1 | Alpha | Identifies the security class for the issue |
| Authenticity | 1 | Alpha | P = Live/Production, T = Test |
| VCMThreshold | 2 | Integer | VCM Triggering Threshold |
| MaxOrderVolume | 8 | Integer | Maximum order volume allowed for a security |
| Name | Length | Values | Notes |
|---|---|---|---|
| Type | 1 | Alpha | H = Stock Trading Action |
| Timestamp | 8 | Integer | Nanoseconds since midnight |
| SecurityId | 2 | Integer | SecurityId identifying the security |
| TradingState | 1 | Alpha | H = Halted, T = Trading |
| Reason | 1 | Alpha | B = status change from listing market, O = operational status change |
| Name | Length | Values | Notes |
|---|---|---|---|
| Type | 1 | Alpha | P = VCM Reference Price |
| Timestamp | 8 | Integer | Nanoseconds since midnight |
| SecurityId | 2 | Integer | SecurityId identifying the security |
| VCMReferencePrice | 4 | Integer | VCM Reference Price |
| LowerPrice | 4 | Integer | Lower price band |
| UpperPrice | 4 | Integer | Upper price band |
| Name | Length | Values | Notes |
|---|---|---|---|
| Type | 1 | Alpha | V = VCM Trigger |
| Timestamp | 8 | Integer | Nanoseconds since midnight |
| SecurityId | 2 | Integer | SecurityId identifying the security |
| CoolingOffStartTime | 8 | Integer | Time when the cooling off period starts (nanoseconds since midnight) |
| CoolingOffEndTime | 8 | Integer | Time when the cooling off period ends (nanoseconds since midnight) |
| VCMReferencePrice | 4 | Integer | Reference Price for the cooling off period |
| VCMLowerPrice | 4 | Integer | Lower price band during cooling off period |
| VCMUpperPrice | 4 | Integer | Upper price band during cooling off period |
| Name | Length | Values | Notes |
|---|---|---|---|
| Type | 1 | Alpha | A = Add Order |
| Timestamp | 8 | Integer | Nanoseconds since midnight |
| OrderRefNum | 8 | Integer | Unique order reference number |
| Side | 1 | Alpha | B = Buy Order, S = Sell Order |
| Quantity | 4 | Integer | Total shares associated with the order |
| SecurityId | 2 | Integer | SecurityId identifying the security |
| Price | 4 | Integer | Display price of the new order |
| FirmCode | 4 | Integer | Market participant identifier |
| Name | Length | Values | Notes |
|---|---|---|---|
| Type | 1 | Alpha | U = Order Replace |
| Timestamp | 8 | Integer | Nanoseconds since midnight |
| OrigOrderRefNum | 8 | Integer | Original order reference number |
| NewOrderRefNum | 8 | Integer | New order reference number |
| Quantity | 4 | Integer | New displayed quantity |
| Price | 4 | Integer | New display price |
| Name | Length | Values | Notes |
|---|---|---|---|
| Type | 1 | Alpha | D = Order Delete |
| Timestamp | 8 | Integer | Nanoseconds since midnight |
| OrderRefNum | 8 | Integer | Reference number of the canceled order |
| Name | Length | Values | Notes |
|---|---|---|---|
| Type | 1 | Alpha | E = Order Executed |
| Timestamp | 8 | Integer | Nanoseconds since midnight |
| OrderRefNum | 8 | Integer | Unique order reference number |
| Quantity | 4 | Alpha | Number of shares executed |
| MatchNumber | 8 | Integer | Unique execution Match Number |
| AggressorFirmCode | 4 | Integer | Aggressor participant firm identifier |
| Name | Length | Values | Notes |
|---|---|---|---|
| Type | 1 | Alpha | c = Order Executed |
| Timestamp | 8 | Integer | Nanoseconds since midnight |
| SecurityId | 2 | Integer | SecurityId identifying the security |
| Price | 4 | Integer | Display price of the new order |
| Quantity | 4 | Integer | Total shares associated with the order |
| MatchNumber | 8 | Integer | Unique execution Match Number |
| FirmCode | 4 | Integer | Market participant identifier |
| Name | Length | Values | Notes |
|---|---|---|---|
| Type | 1 | Alpha | B = Broken Trade |
| Timestamp | 8 | Integer | Nanoseconds since midnight |
| MatchNumber | 8 | Integer | Match Number of the execution that was broken |