FIX Integration
European Equities - FIX 4.2 Specification
Overview
This document outlines the FIX interface for OCXL (OneChronos UK MTF) and OCXE (OneChronos EU MTF), collectively referred to as the “OneChronos MTF,” covering both order entry and drop-copy functionality. OneChronos FIX is a modern adaptation of the FIX 4.2 protocol. However, not all messages, fields, or field values from FIX 4.2 are supported. If a message is referenced in FIX 4.2 but not included in this document, it is not supported.
If you are not familiar with the FIX protocol, please refer to our FIX Primer before proceeding.
Supporting Documentation
This document should be read in conjunction with the latest OneChronos MTF User Manual.
Connectivity
To discuss market connectivity, contact [email protected].
- Certification Environment: Available via WireGuard or IPsec VPN.
- UAT and Production Connections: Made via private cross-connect in our data centers.
- All FIX connections use TCP/IP .
Market Hours
- Monday - Friday, 09:00 - 17:30 CET (Central European Time)
- Excluding market holidays (see OneChronos website for details)
- Orders submitted outside trading hours are rejected
- No support for Good-Til-Cancel (GTC) orders - all open orders are cancelled at market close, on the same day. Subscribers receive an execution report for every open order with ExecType(150) = C (Expired).
- OneChronos follows continuous trading and does not facilitate opening, closing, or other scheduled (or unscheduled) auction periods.
Trading Conditions
- OneChronos MTF commences trading once the relevant security has opened for trading in the primary listing market.
- Trading will commence only after the running of any opening auction for that primary listing, and throughout continuous trading.
- Trading ceases when the primary listing market enters its closing auction, or when trading is no longer possible on that market, as the book has transitioned into a non-trading state.
- OneChronos will not permit trading in securities subject to regulatory suspensions and where no European Best Bid Offer (EBBO) is available (see OneChronos MTF User Manual for EBBO definition used).
- OneChronos does not automatically halt trading when the primary market suspends trading. It will be evaluated on a case-by-case basis, respecting that OneChronos offers a price formation mechanism type and does not rely solely on primary reference price information to match buyers and sellers.
- OneChronos will stop trading in securities when there is an EBBO crossed market (bid > offer). However, in an EBBO locked market (bid = offer), OneChronos will continue to execute orders. Subscribers can request OneChronos to configure their port settings to opt out of executing in a locked market if they prefer not to match orders under those conditions.
Order Types
OneChronos supports limit and pegged order types;
- OrdType (tag #40 = 2): Limit Order
- OrdType (tag #40 = P): Pegged Order
Only limit orders with ExpressiveBidURI field are eligible for Expressive Bidding (for future use).
Please ask your sales representative for more information on Expressive Bidding.
All Messages
General Notes
To ensure correctness and an easy interop OneChronos uses a FIX engine and order management system programmatically generated from a formal specification. The specification is written in Imandra Protocol Language (IPL). Excerpts of the model that pertain to field and message validation are included in this documentation.
Standard Header
The "Standard Header" is included at the beginning of every FIX message. The first three tags (BeginString, BodyLength, and type) must appear in that exact order.
BeginString
A delimiter identifying the start of a new FIX message. BeginString must be the first field present in every FIX message.
Required
YType
stringValidation
it == "FIX.4.2"BodyLength
Message length, in bytes, of all characters up to and including the delimiter preceding the CheckSum field. BodyLength must be the second field present in every FIX message.
Required
YType
intMsgSeqNum
The message sequence number, per the rules governing message sequence numbers.
Required
YType
intMsgType
The type of the FIX message. MsgType must be the third field present in every FIX message.
Required
YType
stringEnum values
HEARTBEAT: 0- Message is a
Heartbeat. TEST_REQUEST: 1- Message is a
TestRequest. RESEND_REQUEST: 2- Message is a
ResendRequest. REJECT: 3- Message is a
Reject. SEQUENCE_RESET: 4- Message is a
SequenceReset. LOGOUT: 5- Message is a
Logout. EXECUTION_REPORT: 8- Message is a
ExecutionReport. ORDER_CANCEL_REJECT: 9- Message is an
OrderCancelReject. LOGON: A- Message is a
Logon. ORDER_SINGLE: D- Message is a
NewOrderSingle. ORDER_CANCEL_REQUEST: F- Message is a
OrderCancelRequest. ORDER_CANCEL_REPLACE_REQUEST: G- Message is a
OrderCancelReplaceRequest. BUSINESS_MESSAGE_REJECT: j- Message is a
BusinessMessageReject. TRADE_BUST: UCC- Trade Cancel/Correction (optional, at the port level)
PossDupFlag
A flag indicating whether a message is a possible session level retransmission, per the message delivery rules.
Required
NType
booleanEnum values
POSSIBLE_DUPLICATE: Y- Message is a possible retransmission.
ORIGINAL_TRANSMISSION: N- Message is guaranteed to be an original transmission.
SenderCompID
OneChronos will assign this identifier as part of customer onboarding. Messages sent to OneChronos must always include Subscriber"s assigned SenderCompID.
Required
YType
stringSendingTime
The time of message transmission (always in UTC). OneChronos supports UTC timestamps at nanosecond precision.
Required
YType
utctimestampTargetCompID
The logical mirror of SenderCompID. Messages received from OneChronos will always have this field set to the SenderCompID assigned to you by us.
Required
YType
stringPossResend
A flag indicating whether a message is a possible business level retransmission, per the message delivery rules. For messages sent to OneChronos, any value other than "N" will trigger a rejection. OneChronos will never populate this field.
Required
NType
booleanEnum values
POSSIBLE_DUPLICATE: Y- Message is a possible retransmission.
ORIGINAL_TRANSMISSION: N- Message is guaranteed to be an original transmission.
OnBehalfOfCompID
Trading partner company ID used when sending messages via a third party.
Required
NType
stringOrigSendingTime
Required by the FIX spec for orders where PossDupFlag=Y.
Required
NType
utctimestampDeliverToCompID
When a Subscriber populates OnBehalfOfCompId any message sent in response by OneChronos will populate this field with the value of OnBehalfOfCompId specified by Subscriber.
Required
NType
stringStandard Trailer
The "Standard Trailer" is included at the end of every FIX message. CheckSum must appear as the last field.
CheckSum
A message checksum. Always the last field in the message.
Required
YType
intAdministrative Messages
With the exception of the Reject message (MsgType 35=3), which is outbound-only, all other administrative messages can be both inbound and outbound.
Heartbeat (0)
The Heartbeat message helps monitor the communication link during inactivity. It can be sent by either the Subscriber or the MTF.
- The heartbeat interval (HeartBtInt) is set in the Logon (A) message.
- If HeartBtInt = 0, no automatic heartbeats are sent.
- Heartbeats should be sent when the agreed interval passes without other messages.
TestReqID
Must be present if sent in response to a TestRequest message.
Required
NType
stringTestRequest (1)
TestRequest messages are used to explicitly request a Heartbeat from the counterparty when none is received. Applications should send a TestRequest whenever the agreed upon heartbeat interval plus one second (HeartBtInt+1) has elapsed without the receipt of a message, Heartbeat or otherwise. If a Heartbeat is not received promptly thereafter, the FIX session should be disconnected on the network level without attempting to send another message. Logon and message recovery procedures can proceed thereafter. A TestRequest can be sent by Subscriber to OneChronos, or by OneChronos to Subscriber.
TestReqID
An identifier for use with TestRequest and Heartbeat messages.
Required
YType
stringResendRequest (2)
A ResendRequest message can be issued by either the Subscriber or OneChronos to request the retransmission of messages. This is used when:
- A gap in sequence numbers is detected.
- A message is lost by the receiving application.
- As part of the initialization process.
BeginSeqNo
Message sequence number of first message in range to be resent.
Required
YType
intEndSeqNo
Message sequence number of last message in range to be resent. If request is for a single message BeginSeqNo = EndSeqNo. If request is for all messages subsequent to a particular message, EndSeqNo = "0" (representing infinity).
Required
YType
intReject (3)
This Reject message can only be issued by OneChronos when a Subscriber's message violates session-level rules (e.g., incorrect message type, invalid CheckSum).
- Used by OneChronos to indicate session-level validation errors.
- Business-level rejections are handled separately via ExecutionReport-BusinessReject.
- Reject messages should not occur outside of FIX certification.
- Requires Investigation before resending messages to avoid repeated errors.
RefSeqNum
The sequence number of the message being referenced.
Required
YType
intText
Free form text. Subscribers can populate this field for internal use; OneChronos may populate this field to provide additional context to Subscriber when sending a rejection.
Required
NType
stringRefTagID
Always present when the rejection was triggered by a specific tag. If multiple tags are invalid, RefTagID will be populated for the first invalid tag.
Required
NType
intRefMsgType
Always present when type is parsable on the message being rejected.
Required
NType
stringSessionRejectReason
An error code indicating why a message was rejected on the session level.
Required
YType
intEnum values
INVALID_TAG_NUMBER: 0- One or more tag numbers fall outside of the legal tag range [1, 29999].
REQUIRED_TAG_MISSING: 1- A required tag is missing.
TAG_NOT_DEFINED_FOR_THIS_MESSAGE_TYPE: 2- A tag that is valid for some message types but invalid for the given message type was present.
UNDEFINED_TAG: 3- An unknown tag was included in the message.
TAG_SPECIFIED_WITHOUT_A_VALUE: 4- A tag was present without a value.
VALUE_IS_INCORRECT: 5- The referenced value is of the correct data type, but invalid.
INCORRECT_DATA_FORMAT_FOR_VALUE: 6- The referenced value does not have the correct data type.
COMPID_PROBLEM: 9- Either the
SenderCompIDorTargetCompIDis invalid. SENDINGTIME_ACCURACY_PROBLEM: 10- The differential between
SendingTimeand message receipt by OneChronos is too large. INVALID_MSGTYPE: 11- The message specifies a
typeoutside of the OneChronos FIX specification.
SequenceReset (4)
This message can be sent by either the Subscriber or OneChronos to adjust the incoming sequence number. It operates in two modes based on the GapFillFlag:
- GapFill Mode (GapFillFlag = 'Y'): Used to fill gaps in sequence numbers without resending messages.
- Reset Mode (GapFillFlag = 'N' or absent): Resets the sequence number to a new value.
NewSeqNo
The next expected sequence number, per the rules governing message sequence numbers.
Required
YType
intGapFillFlag
Indicates whether a SequenceReset is of type SequenceReset-Gap-Fill or SequenceReset-Reset. See Message Delivery for additional details.
Required
NType
booleanEnum values
GAP_FILL_MESSAGE_MSGSEQNUM_FIELD_VALID: Y- Message is a
SequenceReset-Gap-Fill; this is the correct value to use for message recovery/non disaster situations. SEQUENCE_RESET_IGNORE_MSGSEQNUM: N- Message is a
SequenceReset-Reset; reset the counterparty"s sequence expected incoming sequence number, without performing message recovery.
Logout (5)
The Logout message is used to initiate or confirm the termination of a FIX session by either the Subscriber or the OneChronos MTF. A proper logout exchange ensures an orderly disconnection, while an unexpected disconnection without this message indicates an abnormal condition.
- Subscribers can log out at any time.
- OneChronos initiates logout only as part of the daily sequence number reset.
Text
Free form text. Subscribers can populate this field for internal use; OneChronos may populate this field to provide additional context to Subscriber when sending a rejection.
Required
NType
stringLogon (A)
Subscribers initiate a logon request by sending a Logon message immediately after establishing a TCP connection. This must be done before sending any other messages.
If the Logon request is valid, OneChronos responds with a reciprocal Logon and waits one second before processing additional messages to prevent in-flight ResendRequest issues. Subscribers should not send business messages during this waiting period.
After synchronization, OneChronos sends a Heartbeat to signal that normal messaging can resume. For further details, see the FIX Primer document.
EncryptMethod
An enum value representing the type of Layer 6 encryption that should be used for the FIX dialogue. Required by the FIX standard, but not used by OneChronos.
Required
YType
intValidation
it == EncryptMethod.NONEEnum values
NONE: 0- Do not use encryption.
HeartBtInt
The desired interval, in seconds, between heartbeats. See Heartbeats for additional details.
Required
YType
intValidation
it >= 5 && it <= 180BusinessMessageReject (j)
BusinessMessageReject messages are sent when a field validation is violated in a FIX message (e.g., incorrect field length).
RefSeqNum
The sequence number of the message being referenced.
Required
NType
intText
Free form text. Subscribers can populate this field for internal use; OneChronos may populate this field to provide additional context to Subscriber when sending a rejection.
Required
NType
stringRefMsgType
Always present when type is parsable on the message being rejected.
Required
YType
stringBusinessRejectReason
An error code indicating why a message was rejected by a BusinessMessageReject
Required
YType
intEnum values
OTHER: 0- Order violates one or more aspects of the venue order entry field specification
APPLICATION_NOT_AVAILABLE: 4- In production and UAT environments, this status code indicates that the FIX gateway is temporarily unavailable and not accepting business messages. In certification, this status code and Tag 58 indicate what FIX business logic validations failed.
THROTTLE_LIMIT_EXCEEDED: 99- Throttle limit exceeded
From Subscriber
NewOrderSingle (D)
NewOrderSingle messages are sent by Subscriber to OneChronos to initiate a new order. OneChronos supports OrdType=LIMIT and OrdType=PEGGED orders.
Account
A client supplied account identifier.
Required
NType
stringValidation
case it
{None: true}
{Some account:
strLen(account) <= 32}ClOrdID
A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs.
Required
YType
stringValidation
(strLen(it) > 0) && (strLen(it) <= 32)Currency
Trading currency of the instrument, i.e. GBX for pence listed instruments and GBP for pound listed instruments.
Required
YType
stringExecInst
Execution instruction for order handling; required for Pegged orders (40=P), not allowed on limit orders (40=2)
Required
NType
ExecInstValidation
case it
{None: true}
{Some execInst: subset(execInst, {|MidPricePeg, NearTouchPeg, FarTouchPeg|})}Enum values
MID_PRICE_PEG: M- Execute at a price equal to or more favorable than the midpoint of the EBBO.
NEAR_TOUCH_PEG: R- Execute at a price equal to or more favorable than the EBB in the case of a buy order or the EBO in the case of a sell order.
FAR_TOUCH_PEG: P- Execute at a price equal to or more favorable than the EBO in the case of a buy order or the EBB in the case of a sell order.
HandlInst
HandlInst is required by FIX, but not used by OneChronos.
Required
YType
HandlInstEnum values
AUTOMATED_EXECUTION_NO_INTERVENTION: 1- Required by FIX, but not used by OneChronos.
IDSource
Values supported by OneChronos; 4 = ISIN Number
Required
YType
stringEnum values
ISIN_NUMBER: 4- ISIN Number
OrderQty
The number of shares for the order.
Required
YType
QtyValidation
it > 0.0OrdType
The type of an order.
Required
YType
OrdTypeEnum values
LIMIT: 2- Order is eligible for execution at a price equal to or more favorable than
Price. PEGGED: P- Order is eligible for execution at a price equal to or more favorable than a computed price per the peg instructions given in
ExecInstandPegDifference.
Price
Instrument price per unit of quantity. When Price is present Price >0.0
Required
YType
floatValidation
it > 0.0SecurityID
Instrument ID (ISIN)
Required
YType
stringSide
The side of an order.
Required
YType
SideEnum values
BUY: 1- Order is a buy.
SELL: 2- Order is a sell.
Symbol
The symbol (ticker) of the instrument being traded. Echoed from order.
Required
NType
stringTimeInForce
A field governing how long an order will remain active for.
Required
YType
TimeInForceEnum values
DAY: 0- Order will remain active throughout the regular trading session.
Good For Auction (GFA): 3- Order will be canceled after participating in one auction.
Good Till Time (GTT): 6- Order will remain active only during the same trading day, until the time specified by
ExpireTime.
TransactTime
A UTC timestamp indicating when a transaction occurred. OneChronos logs events at nanosecond precision.
Required
YType
UTCTimestampMinQty
The minimum permissible fill quantity for an order.
Required
NType
QtyValidation
case it
{None: true}
{Some qty: qty > 0.0}ExpireTime
When TimeInForce=6 Good Till Time, ExpireTime must be populated with the desired expiry time.
Required
NType
UTCTimestampSecurityExchange
Market Identification Code. MIC code for the listing market for the ISIN
Required
YType
ExchangePegDifference
Number of ticks, signed positive or negative, applied to the reference price for a pegged order.
Required
NType
integerNoPartyIDs
Tag 453 (NoPartyIDs) is optional. However, if it is populated with a value greater than 0, each party group entry must include tags 448 (PartyID), 447 (PartyIDSource), 452 (PartyRole), and 2376 (PartyRoleQualifier). A maximum of 3 party group entries is supported per message.
Required
NType
integerOrderCapacity
Designates the capacity of the firm placing the order.
Required
YType
stringEnum values
Agency: A- Maps to "AOTC"
Principal: P- Maps to "DEAL"
RisklessPrincipal: R- Maps to "MTCH"
OrderOrigination
DEA Flag indicator. Other values are unsupported and will be rejected.
Required
YType
integerEnum values
NonDEA: 0- Maps to "NonDEA" (Default)
DEA: 5- Maps to "DEA"
SelfMatchPreventionID
When set to any value in the interval [3,65535] the order will not match against an order with the same value for SelfMatchPreventionID.
Value 1 is not supported. Orders containing SelfMatchPreventionID = 1 will be rejected. When SelfMatchPreventionID is present SelfMatchPreventionID >=0 and SelfMatchPreventionID != 1 and SelfMatchPreventionID <=65535
Order-level SMP always overrides the port-level SMP setting. If Tag 2362 is present on an order, its value takes precedence over any SMP mode configured at the session/port.
Required
NType
intValidation
case it
{None: true}
{Some id:
(id >= 0) && (id != 1) && (id <= 65535)}OrderAttributeTypes
The presence of a supported value indicates that condition applies to the order.
Required
NType
MultipleValueIntEnum values
Liquidity Provision Activity (for future use): 2- The order was submitted as part of a market making strategy, or is submitted as part of another activity.
Algorithmic order: 4- The order submitted to the dealer/investment firm resulted from an algorithm.
AnalyticsTags
An optional Subscriber supplied comma separated list of identifiers. Tags are echoed back on fills and used as filter/query parameters in analytics reports. If specified, the rules outlined in the section on Identifiers apply.
When Analytics Tags is present: String Length(AnalyticsTags) <=32
Required
NType
stringValidation
case it
{None: true}
{Some analyticsTags:
strLen(analyticsTags) <= 32}ExpressiveBidURI
The Expressive Bid URI (for future use).
Required
NType
stringExpressiveBidArgument1
Expressve Bid argument 1 (for future use).
Required
NType
stringExpressiveBidArgument2
Expressve Bid argument 2 (for future use).
Required
NType
stringExpressiveBidArgument3
Expressve Bid argument 3 (for future use).
Required
NType
stringExpressiveBidArgument4
Expressve Bid argument 4 (for future use).
Required
NType
stringLegID
The ID associated with a multi-symbol expressive bid (for future use).
Required
NType
intValidation
case it
{None: true}
{Some id: id < 255}BasketID
The ID associated with a multi-symbol expressive bid (for future use).
Required
NType
stringValidation
case it
{None: true}
{Some id:
strLen(id) <= 32}Message Validations
state.orderEntry.isConnected
state.portSettings.dropCopyDisconnect.rejectNew ==> state.orderEntry.isDropCopyConnected
isUnusedClOrdId(this.ClOrdID)
isMarketHours()
contains_peg_exec_inst(this.ExecInst) <==> (this.OrdType == OrdType.Pegged)
this.IDSource == IDSource.ISINNumber
(this.TimeInForce == GoodTillTime) ==> present(this.ExpireTime)
(this.TimeInForce != GoodTillTime) ==> !present(this.ExpireTime)
isValidExpireTime(this.ExpireTime)
present(this.MinQty) ==> (case this.MinQty
{Some minQty: minQty <= this.OrderQty}
{None: true}
)
present(this.PegDifference) ==> contains_peg_exec_inst(this.ExecInst)
!isMaxOrderSizeExceeded(this.OrderQty)
validExecInst(this.ExecInst)
!state.portSettings.allowExpressiveBidding ==> (!present(this.ExpressiveBidArgument3) && !present(this.ExpressiveBidArgument4) && !present(this.LegID) && !present(this.BasketID))
MiFID II Short Code Identifier Ranges
The Parties component is composed of the fields: NoPartyIDs, PartyID, PartyIDSource, PartyRole and PartyRoleQualifier. These fields when grouped together with the combinations represented below are used to populate the fields required for MiFID II: Combinations outside validations below will be rejected.
Client - Legal Entity (LEI)
Client - Natural Person
No Client on order (NONE)
Aggregation of multiple client orders (AGGR)
Client pending allocation (PNAL)
Investment Decision Maker - Natural Person
Investment Decision Maker - Algorithm
No Investment Decision Maker (NONE)
Executing Trader - Natural Person
Executing Trader - Algorithm
Executing Trader on behalf of client (NORE)
| Party Identifier | PartyID (448) | PartyIDSource (447) | PartyRole (452) | PartyRoleQualifier (2376) | OrderCapacity (528) |
|---|---|---|---|---|---|
| Client - Legal Entity (LEI) | Shortcode | P | 3 | 23 | Allow all |
| Client - Natural Person | Shortcode | P | 3 | 24 | Allow all |
| No Client on order (NONE) | 0 | P | 3 | - | DEAL (P) |
| Aggregation of multiple client orders (AGGR) | 1 | P | 3 | - | Allow all |
| Client pending allocation (PNAL) | 2 | P | 3 | - | Allow all |
| Investment Decision Maker - Natural Person | Shortcode | P | 122 | 24 | Allow all |
| Investment Decision Maker - Algorithm | Shortcode | P | 122 | 22 | Allow all |
| No Investment Decision Maker (NONE) | 0 | P | 122 | - | MTCH(R) or AOTC(A) |
| Executing Trader - Natural Person | Shortcode | P | 12 | 24 | Allow all |
| Executing Trader - Algorithm | Shortcode | P | 12 | 22 | Allow all |
| Executing Trader on behalf of client (NORE) | 3 | P | 12 | - | Allow all |
OrderCancelRequest (F)
An OrderCancelRequest is used to request the cancellation of the remaining quantity of an existing order.
- Sent by the Subscriber to cancel an order previously submitted via NewOrderSingle.
- If accepted, OneChronos confirms the cancellation with an ExecutionReport message.
- If rejected, an OrderCancelReject message is returned.
ClOrdID
A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs.
Required
YType
stringValidation
(strLen(it) > 0) && (strLen(it) <= 32)Currency
Trading currency of the instrument, i.e. GBX for pence listed instruments and GBP for pound listed instruments.
Required
YType
stringIDSource
Values supported by OneChronos; 4 = ISIN Number
Required
YType
stringEnum values
ISIN_NUMBER: 4- ISIN Number
OrderID
When OrderIDis present stringLength(OrderID) >0 and stringLength(OrderID) <=32.
Required
NType
stringValidation
case it
{None: true}
{Some orderId:
(strLen(orderId) > 0) && (strLen(orderId) <= 32)}OrderQty
The number of shares for the order.
Required
NType
QtyValidation
it > 0.0OrigClOrdID
The ClOrdID of the previous order in a FIX cancel/replace chain. Clients should always set OrigClOrdID to the most recent non-rejected ClOrdID sent; when populating OrigClOrdID OneChronos will always use the last accepted ClOrdID. Echoed from order.
Required
NType
stringValidation
case it
{None: true}
{Some orderId:
(strLen(orderId) > 0) && (strLen(orderId) <= 32)}SecurityID
Instrument ID (ISIN)
Required
YType
stringSide
The side of an order.
Required
YType
CharValidation
it == state.SideEnum values
BUY: 1- Order is a buy.
SELL: 2- Order is a sell.
Symbol
The symbol (ticker) of the instrument being traded. Echoed from order.
Required
NType
stringValidation
it == state.SymbolTransactTime
A UTC timestamp indicating when a transaction occurred. OneChronos logs events at nanosecond precision.
Required
YType
UTCTimestampSecurityExchange
Market Identification Code. MIC code for the listing market for the ISIN
Required
YType
ExchangeAnalyticsTags
An optional Subscriber supplied comma separated list of identifiers. Tags are echoed back on fills and used as filter/query parameters in analytics reports. If specified, the rules outlined in the section on Identifiers apply.
When Analytics Tags is present: String Length(AnalyticsTags) <=32
Required
NType
stringMessage Validations
state.orderEntry.isConnected
isUnusedClOrdId(this.ClOrdID)
isLegalCancelOrder(this.OrderID, this.OrigClOrdID)
isMarketHours()
isLegalStateForCancelOrModify(state.OrdStatus)
this.IDSource == IDSource.ISINNumber
OrderCancelReplaceRequest (G)
The OrderCancelReplaceRequest allows subscribers to modify certain attributes of an open order.
- Only orders submitted via NewOrderSingle can be modified.
- Changes are confirmed with an ExecutionReport or rejected with an OrderCancelReject.
- Only specific fields can be modified—refer to the field validations below for details.
Account
A client supplied account identifier.
Required
NType
stringValidation
case it
{None: true}
{Some account:
(strLen(account) > 0) && (strLen(account) <= 32)}ClOrdID
A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs.
Required
YType
stringValidation
(strLen(it) > 0) && (strLen(it) <= 32)Currency
Trading currency of the instrument, i.e. GBX for pence listed instruments and GBP for pound listed instruments.
Required
YType
stringExecInst
Execution instruction for order handling; required for Pegged orders (40=P), not allowed on limit orders (40=2)
Required
NType
ExecInstValidation
it == state.ExecInstEnum values
MID_PRICE_PEG: M- Execute at a price equal to or more favorable than the midpoint of the EBBO.
NEAR_TOUCH_PEG: R- Execute at a price equal to or more favorable than the EBB in the case of a buy order or the EBO in the case of a sell order.
FAR_TOUCH_PEG: P- Execute at a price equal to or more favorable than the EBO in the case of a buy order or the EBB in the case of a sell order.
HandlInst
HandlInst is required by FIX, but not used by OneChronos.
Required
YType
HandlInstEnum values
AUTOMATED_EXECUTION_NO_INTERVENTION: 1- Required by FIX, but not used by OneChronos.
IDSource
Values supported by OneChronos; 4 = ISIN Number
Required
YType
stringEnum values
ISIN_NUMBER: 4- ISIN Number
OrderQty
The number of shares for the order.
Required
NType
QtyValidation
isLegalModifyQty(it)OrdType
The type of an order.
Required
YType
OrdTypeValidation
it == state.OrdTypeEnum values
LIMIT: 2- Order is eligible for execution at a price equal to or more favorable than
Price. PEGGED: P- Order is eligible for execution at a price equal to or more favorable than a computed price per the peg instructions given in
ExecInstandPegDifference.
OrigClOrdID
The ClOrdID of the previous order in a FIX cancel/replace chain. Clients should always set OrigClOrdID to the most recent non-rejected ClOrdID sent; when populating OrigClOrdID OneChronos will always use the last accepted ClOrdID. Echoed from order.
Required
YType
stringValidation
(strLen(it) > 0) && (strLen(it) <= 32)Price
Instrument price per unit of quantity. When Price is present Price >0.0
Required
YType
floatValidation
it > 0.0SecurityID
Instrument ID (ISIN)
Required
YType
stringSide
The side of an order.
Required
YType
CharValidation
it == state.SideEnum values
BUY: 1- Order is a buy.
SELL: 2- Order is a sell.
Symbol
The symbol (ticker) of the instrument being traded. Echoed from order.
Required
NType
stringValidation
it == state.SymbolTimeInForce
A field governing how long an order will remain active for.
Required
YType
TimeInForceValidation
it == state.TimeInForceEnum values
DAY: 0- Order will remain active throughout the regular trading session.
Good For Auction (GFA): 3- Order will be canceled after participating in one auction.
Good Till Time (GTT): 6- Order will remain active only during the same trading day, until the time specified by
ExpireTime.
TransactTime
A UTC timestamp indicating when a transaction occurred. OneChronos logs events at nanosecond precision.
Required
YType
UTCTimestampMinQty
The minimum permissible fill quantity for an order.
Required
NType
QtyValidation
case it
{None: true}
{Some qty: qty > 0.0}ExpireTime
When TimeInForce=6 Good Till Time, ExpireTime must be populated with the desired expiry time.
Required
NType
UTCTimestampValidation
it == state.ExpireTimeSecurityExchange
Market Identification Code. MIC code for the listing market for the ISIN
Required
YType
ExchangePegDifference
Number of ticks, signed positive or negative, applied to the reference price for a pegged order.
Required
NType
integerAnalyticsTags
An optional Subscriber supplied comma separated list of identifiers. Tags are echoed back on fills and used as filter/query parameters in analytics reports. If specified, the rules outlined in the section on Identifiers apply.
When Analytics Tags is present: String Length(AnalyticsTags) <=32
Required
NType
stringValidation
case it
{None: true}
{Some _analyticsTags: it == state.AnalyticsTags}ExpressiveBidURI
The Expressive Bid URI (for future use).
Required
NType
stringExpressiveBidArgument1
Expressve Bid argument 1 (for future use).
Required
NType
stringExpressiveBidArgument2
Expressve Bid argument 2 (for future use).
Required
NType
stringExpressiveBidArgument3
Expressve Bid argument 3 (for future use).
Required
NType
stringExpressiveBidArgument4
Expressve Bid argument 4 (for future use).
Required
NType
stringLegID
The ID associated with a multi-symbol expressive bid (for future use).
Required
NType
intValidation
case it
{None: true}
{Some _: it == state.LegID}BasketID
The ID associated with a multi-symbol expressive bid (for future use).
Required
NType
stringValidation
case it
{None: true}
{Some _: it == state.BasketID}Message Validations
state.orderEntry.isConnected
isUnusedClOrdId(this.ClOrdID)
this.OrigClOrdID == state.ClOrdID
isMarketHours()
isLegalStateForCancelOrModify(state.OrdStatus)
present(this.MinQty) ==> (case this.MinQty
{None: true}
{Some minQty: minQty <= this.OrderQty}
)
present(this.PegDifference) ==> contains_peg_exec_inst(this.ExecInst)
!isMaxOrderSizeExceeded(this.OrderQty)
this.IDSource == IDSource.ISINNumber
!state.portSettings.allowExpressiveBidding ==> (!present(this.ExpressiveBidArgument3) && !present(this.ExpressiveBidArgument4))
To Subscriber
ExecutionReport (8)
Execution reports provide real-time updates on order status and execution details. Sent by OneChronos to Subscribers, they serve the following purposes:
- Acknowledge order entry and cancellations
- Confirm modifications (e.g., cancel/replace requests)
- Communicate order status updates
- Report partial and complete fills
- Reject invalid orders
- Provide post-trade fee details
Account
A client supplied account identifier.
Required
NType
stringValidation
it == state.AccountAvgPx
An average price computed across all fills for an order.
Required
YType
PriceClOrdID
A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs.
Required
YType
stringValidation
it == state.ClOrdIDCumQty
The aggregate filled quantity computed across all fills for an order.
Required
YType
QtyValidation
it >= 0.0Currency
Trading currency of the instrument, i.e. GBX for pence listed instruments and GBP for pound listed instruments.
Required
YType
stringExecID
A unique ID for each execution report sent from OneChronos to Subscriber.
Required
YType
stringExecInst
Execution instruction for order handling; required for Pegged orders (40=P), not allowed on limit orders (40=2)
Required
NType
ExecInstValidation
it == state.ExecInstEnum values
MID_PRICE_PEG: M- Execute at a price equal to or more favorable than the midpoint of the EBBO.
NEAR_TOUCH_PEG: R- Execute at a price equal to or more favorable than the EBB in the case of a buy order or the EBO in the case of a sell order.
FAR_TOUCH_PEG: P- Execute at a price equal to or more favorable than the EBO in the case of a buy order or the EBB in the case of a sell order.
ExecTransType
Identifies the type of a transaction.
Required
YType
ExecTransTypeValidation
it == ExecTransType.NewEnum values
NEW: 0- A new execution report.
CANCEL: 1- Cancellation of a previously sent execution report.
IDSource
Values supported by OneChronos; 4 = ISIN Number
Required
YType
stringEnum values
ISIN_NUMBER: 4- ISIN Number
LastMkt
The market of the last fill; always OCXL or OCXE.
Required
NType
ExchangeValidation
case it
{None: true}
{Some lastMkt:
(lastMkt in [Exchange.OCXE, Exchange.OCXL]) && (it == state.LastMkt)}LastPx
The price of the last fill.
Required
NType
PriceLastShares
The quantity of the last fill.
Required
NType
QtyOrderID
When OrderIDis present stringLength(OrderID) >0 and stringLength(OrderID) <=32.
Required
YType
stringValidation
it == state.OrderIDOrderQty
The number of shares for the order.
Required
YType
QtyValidation
it == state.OrderQtyOrdStatus
The state of the order. State transitions are governed per the FIX order state transition rules.
Required
YType
OrdStatusEnum values
NEW: 0- Order is acknowledged.
PARTIALLY_FILLED: 1- Order is partially filled.
FILLED: 2- Order is fully filled.
CANCELED: 4- Order was successfully canceled.
REPLACED: 5- Order was replaced.
PENDING_CANCEL: 6- Order is awaiting Cancellation.
REJECTED: 8- Order was rejected.
EXPIRED: C- Order is expired.
PENDING_REPLACE: E- Order is in a pending replace state.
OrdType
The type of an order.
Required
YType
OrdTypeValidation
it == state.OrdTypeEnum values
LIMIT: 2- Order is eligible for execution at a price equal to or more favorable than
Price. PEGGED: P- Order is eligible for execution at a price equal to or more favorable than a computed price per the peg instructions given in
ExecInstandPegDifference.
OrigClOrdID
The ClOrdID of the previous order in a FIX cancel/replace chain. Clients should always set OrigClOrdID to the most recent non-rejected ClOrdID sent; when populating OrigClOrdID OneChronos will always use the last accepted ClOrdID. Echoed from order.
Required
NType
stringPrice
Instrument price per unit of quantity. When Price is present Price >0.0
Required
YType
floatValidation
it == state.PriceSecurityID
Instrument ID (ISIN)
Required
YType
stringSide
The side of an order.
Required
YType
SideValidation
it == state.SideEnum values
BUY: 1- Order is a buy.
SELL: 2- Order is a sell.
Symbol
The symbol (ticker) of the instrument being traded. Echoed from order.
Required
NType
stringValidation
it == state.SymbolText
Free form text. Subscribers can populate this field for internal use; OneChronos may populate this field to provide additional context to Subscriber when sending a rejection.
Required
NType
stringTimeInForce
A field governing how long an order will remain active for.
Required
YType
TimeInForceValidation
it == state.TimeInForceEnum values
DAY: 0- Order will remain active throughout the regular trading session.
Good For Auction (GFA): 3- Order will be canceled after participating in one auction.
Good Till Time (GTT): 6- Order will remain active only during the same trading day, until the time specified by
ExpireTime.
TransactTime
A UTC timestamp indicating when a transaction occurred. OneChronos logs events at nanosecond precision.
Required
YType
UTCTimestampOrdRejReason
An error code indicating why a NewOrderSingle (type=ORDER_SINGLE) was rejected.
Required
NType
OrdRejReasonEnum values
BROKER_OPTION: 0- Order violates one or more aspects of the venue order entry specification not enumerated by
OrdRejReason. UNKNOWN_SYMBOL: 1- Order references an unknown symbol.
EXCHANGE_CLOSED: 2- Order received outside of market hours.
ORDER_EXCEEDS_LIMIT: 3- Order violates venue or user configured risk limits.
DUPLICATE_ORDER: 6- Order specifies a
ClOrdIDthat is currently in use. INVALID_EXPRESSIVE_BID_URI: 9- The expressive bid URI and/or arguments associated with an
OrderSinglewas invalid. (For future use)
MinQty
The minimum permissible fill quantity for an order.
Required
NType
QtyValidation
it == state.MinQtyExpireTime
When TimeInForce=6 Good Till Time, ExpireTime must be populated with the desired expiry time.
Required
NType
UTCTimestampValidation
it == state.ExpireTimeExecType
The type of an ExecutionReport. See the section on FIX order state transitions for additional details.
Required
YType
ExecTypeEnum values
NEW: 0- Report is an
ExecutionReport-Acknowledgement. PARTIAL_FILL: 1- Report is an
ExecutionReport-PartialFill. FILL: 2- Report is an
ExecutionReport-Fill. CANCELED: 4- Execution report is an
ExecutionReport-CancelorExecutionReport-UnsolicitedCancel. REPLACED: 5- Execution report is an
ExecutionReport-Replace. PENDING_CANCEL: 6- Execution report is an
ExecutionReport-PendingCancel. REJECTED: 8- Execution report is an
ExecutionReport-BusinessReject. EXPIRED: C- Report is an
ExecutionReport-Expired. PENDING_REPLACE: E- Report is an
ExecutionReport-PendingReplace.
LeavesQty
Remaining quantity open for further execution. LeavesQty must be 0.0 or LeavesQty must be leavesQty().
Required
YType
QtyValidation
(it == 0.0) || (it == leavesQty())SecurityExchange
Market Identification Code. MIC code for the listing market for the ISIN
Required
YType
ExchangePegDifference
Number of ticks, signed positive or negative, applied to the reference price for a pegged order.
Required
NType
integerValidation
it == state.PegDifferenceContraBroker
Identifies the CCP of the subscriber for the trade; currently XCLR, ECCX, LCHL. Value SELF indicates a self-match where clearing is suppressed (default behavior). Optionally, clients can request to override the suppression of clearing on self-match executions with a venue-enabled session (port) setting. In these instances, the field will be populated with the CCP of the subscriber for the trade and the execution is sent to the CCP.
Required
NType
stringEnum values
XCLR: XCLR- SIX x-clear
ECCX: ECCX- Cboe Clear Europe NV
LCHL: LCHL- LCH Ltd
SELF: SELF- Self-match clearing suppression
NoContraBrokers
The number of ContraBroker msgFields contained in the message.
Required
NType
integerNoPartyIDs
Tag 453 (NoPartyIDs) is optional. However, if it is populated with a value greater than 0, each party group entry must include tags 448 (PartyID), 447 (PartyIDSource), 452 (PartyRole), and 2376 (PartyRoleQualifier). A maximum of 3 party group entries is supported per message.
Required
NType
integerTradeID
This is a value that is unique, consistent and persistent per ISO10383 segment MIC and per trading day. TradeID is the same across all fills, ensuring compliance with TVTIC reporting. It identifies the entire transaction, unique per trade.
Required
NType
stringOrderOrigination
DEA Flag indicator. Other values are unsupported and will be rejected.
Required
YType
integerEnum values
NonDEA: 0- Maps to "NonDEA" (Default)
DEA: 5- Maps to "DEA"
SelfMatchPreventionID
When set to any value in the interval [3,65535] the order will not match against an order with the same value for SelfMatchPreventionID.
Value 1 is not supported. Orders containing SelfMatchPreventionID = 1 will be rejected. When SelfMatchPreventionID is present SelfMatchPreventionID >=0 and SelfMatchPreventionID != 1 and SelfMatchPreventionID <=65535
Order-level SMP always overrides the port-level SMP setting. If Tag 2362 is present on an order, its value takes precedence over any SMP mode configured at the session/port.
Required
NType
intOrderAttributeTypes
The presence of a supported value indicates that condition applies to the order.
Required
NType
MultipleValueIntEnum values
Liquidity Provision Activity (for future use): 2- The order was submitted as part of a market making strategy, or is submitted as part of another activity.
Algorithmic order: 4- The order submitted to the dealer/investment firm resulted from an algorithm.
TradeLiquidityIndicator
Indicates the trade classification associated with the execution. This field currently takes the value F, execution on the OneChronos periodic auction mechanism. This field is only populated on Execution Reports corresponding to partial or full fills.
Required
NType
stringEnum values
PERIODIC_AUCTION: F- Execution on the OneChronos periodic auction mechanism
AnalyticsTags
An optional Subscriber supplied comma separated list of identifiers. Tags are echoed back on fills and used as filter/query parameters in analytics reports. If specified, the rules outlined in the section on Identifiers apply.
When Analytics Tags is present: String Length(AnalyticsTags) <=32
Required
NType
stringValidation
it == state.AnalyticsTagsAuctionID
A unique identifier assigned by OneChronos to each auction.
Required
NType
intAuctionSubID
Order identifier supplied by OneChronos.
Required
NType
intCancelReason
An indicator code detailing why an an order was canceled
Required
NType
CancelReasonEnum values
UNSPECIFIED: 0- Unspecified - no additional information is available
USER_INITIATED: 1- The user initiated the cancel
GOOD_FOR_AUCTION: 2- The cancelation was sent as the result of a Good For Auction order expiring either partially filled or unfilled.
TIME_IN_FORCE: 4- The cancelation was sent as the result of an order expiring due to a time in force constraint.
HALT: 5- The cancelation was sent as the result of either a venue wide or trading symbol specific trading halt.
ORDER_ENTRY_DISCONNECT: 6- The cancelation was sent as the result of an order entry FIX session disconnect when cancel on disconnect behavior is configured.
DROP_COPY_DISCONNECT: 7- The cancelation was sent as the result of a drop copy FIX session disconnect when cancel on disconnect behavior is configured.
PRICE_COLLAR_DEVIATION: C- The cancelation was sent due to a rejection of the order, resulting from a price being outside of a given EBBO percentage tolerance.
SUSPENDED: S- The cancelation was sent as the result of a suspension.
Message Validations
state.orderEntry.isConnected
this.IDSource == IDSource.ISINNumber
(this.ExecType in [ExecType.PartialFill, ExecType.Fill]) ==> (present(this.LastMkt) && present(this.LastPx) && present(this.LastShares) && (case this.ContraBroker
{None: false}
{Some cb:
cb in ["XCLR", "ECCX", "LCHL", "SELF"]}
) && (case this.NoContraBrokers
{None: false}
{Some cb: cb == 1}
) && present(this.AuctionID) && present(this.AuctionSubID))
!(this.ExecType in [ExecType.PartialFill, ExecType.Fill]) ==> !(present(this.ContraBroker) || present(this.NoContraBrokers) || present(this.AuctionID) || present(this.AuctionSubID))
(this.ExecType != ExecType.New) ==> !present(this.SelfMatchPreventionID)
(this.ExecType == ExecType.New) ==> (this.AvgPx == 0.0)
(this.ExecType == ExecType.Replaced) ==> present(this.OrigClOrdID)
((this.ExecType == ExecType.Rejected) ==> present(this.OrdRejReason)) && ((this.ExecType != ExecType.Rejected) ==> !present(this.OrdRejReason))
(this.OrdStatus in [OrdStatus.Canceled, OrdStatus.Expired, OrdStatus.Rejected]) ==> (this.LeavesQty == 0.0)
!(this.OrdStatus in [OrdStatus.Canceled, OrdStatus.Expired, OrdStatus.Rejected]) ==> (this.LeavesQty == (this.OrderQty - this.CumQty))
(this.ExecType in [ExecType.New, ExecType.Canceled, ExecType.Rejected, ExecType.Replaced, ExecType.PendingCancel, ExecType.PendingReplace]) ==> ((this.LastPx == (Some 0.0)) && (this.LastShares == (Some 0.0)))
((this.ExecType == ExecType.Canceled) ==> present(this.CancelReason)) && ((this.ExecType != ExecType.Canceled) ==> !present(this.CancelReason))
(this.ExecType in [ExecType.Fill, ExecType.PartialFill]) ==> present(this.TradeLiquidityIndicator)
present(this.AuctionID) && present(this.AuctionSubID)
(this.ExecType in [ExecType.Fill, ExecType.PartialFill]) ==> present(this.TradeID)
OrderCancelReject (9)
OrderCancelReject messages are sent from OneChronos to Subscriber in response to OrderCancelRequest messages that are invalid on a business logic level, or that reference orders in a non-cancelable state.
Account
A client supplied account identifier.
Required
NType
stringValidation
it == state.AccountClOrdID
A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs.
Required
YType
stringValidation
it == state.ClOrdIDOrderID
When OrderIDis present stringLength(OrderID) >0 and stringLength(OrderID) <=32.
Required
YType
stringOrdStatus
The state of the order. State transitions are governed per the FIX order state transition rules.
Required
YType
OrdStatusValidation
it == state.OrdStatusEnum values
NEW: 0- Order is acknowledged.
PARTIALLY_FILLED: 1- Order is partially filled.
FILLED: 2- Order is fully filled.
CANCELED: 4- Order was successfully canceled.
REPLACED: 5- Order was replaced.
PENDING_CANCEL: 6- Order is awaiting Cancellation.
REJECTED: 8- Order was rejected.
EXPIRED: C- Order is expired.
PENDING_REPLACE: E- Order is in a pending replace state.
OrigClOrdID
The ClOrdID of the previous order in a FIX cancel/replace chain. Clients should always set OrigClOrdID to the most recent non-rejected ClOrdID sent; when populating OrigClOrdID OneChronos will always use the last accepted ClOrdID. Echoed from order.
Required
NType
stringText
Free form text. Subscribers can populate this field for internal use; OneChronos may populate this field to provide additional context to Subscriber when sending a rejection.
Required
NType
stringCxlRejReason
An error code indicating why a OrderCancelRequest (type=ORDER_CANCEL_REQUEST) was rejected.
Required
YType
CxlRejReasonEnum values
TOO_LATE_TO_CANCEL: 0- Cancellation request received after order was filled in entirety.
UNKNOWN_ORDER: 1- The
ClOrdIDreferenced in theOrderCancelRequestis unknown. BROKER_OPTION: 2- The request could not be processed and a more specific reason is not available.
ORDER_ALREADY_IN_PENDING_STATUS: 3- A cancellation request was already received for the order referenced.
INVALID_EXPRESSIVE_BID_URI: 4- Invalid Expressive Bid URI. (For future use)
CxlRejResponseTo
Indicates the type of order cancel request that a OrderCancelReject is in response to.
Required
YType
CxlRejResponseToEnum values
ORDER_CANCEL_REQUEST: 1- A response to an
OrderCancelRequest (F) ORDER_CANCEL_REPLACE_REQUEST: 2- A response to an
OrderCancelReplaceRequest (G)
Message Validations
state.orderEntry.isConnected
TradeCancelCorrect (UCC)
TradeCancelCorrect messages are sent to Subscriber to report trade breaks. Only full breaks (cancellations) ExecTransType=CANCEL are supported.
ClOrdID
A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs.
Required
YType
stringValidation
it == state.ClOrdIDCurrency
Trading currency of the instrument, i.e. GBX for pence listed instruments and GBP for pound listed instruments.
Required
YType
stringExecID
A unique ID for each execution report sent from OneChronos to Subscriber.
Required
YType
stringExecRefID
A reference to the original ExecID used for messages where ExecTransType=CANCEL.
Required
YType
stringExecTransType
Identifies the type of a transaction.
Required
YType
ExecTransTypeValidation
it in [ExecTransType.Cancel]Enum values
NEW: 0- A new execution report.
CANCEL: 1- Cancellation of a previously sent execution report.
IDSource
Values supported by OneChronos; 4 = ISIN Number
Required
YType
stringEnum values
ISIN_NUMBER: 4- ISIN Number
LastMkt
The market of the last fill; always OCXL or OCXE.
Required
YType
ExchangeLastPx
The price of the last fill.
Required
YType
PriceLastShares
The quantity of the last fill.
Required
YType
QtyOrderID
When OrderIDis present stringLength(OrderID) >0 and stringLength(OrderID) <=32.
Required
YType
stringValidation
it == state.OrderIDOrigTime
The original sending time of an ExecutionReport.
Required
YType
UTCTimestampSecurityID
Instrument ID (ISIN)
Required
YType
stringSide
The side of an order.
Required
YType
SideValidation
it == state.SideEnum values
BUY: 1- Order is a buy.
SELL: 2- Order is a sell.
Symbol
The symbol (ticker) of the instrument being traded. Echoed from order.
Required
NType
stringValidation
it == state.SymbolTransactTime
A UTC timestamp indicating when a transaction occurred. OneChronos logs events at nanosecond precision.
Required
YType
UTCTimestampSecurityExchange
Market Identification Code. MIC code for the listing market for the ISIN
Required
YType
ExchangeTradeLiquidityIndicator
Indicates the trade classification associated with the execution. This field currently takes the value F, execution on the OneChronos periodic auction mechanism. This field is only populated on Execution Reports corresponding to partial or full fills.
Required
YType
stringEnum values
PERIODIC_AUCTION: F- Execution on the OneChronos periodic auction mechanism
Message Validations
state.orderEntry.isConnected
this.IDSource == IDSource.ISINNumber
(OrderEntry in state.portSettings.tradeBustReporting) || (DropCopy in state.portSettings.tradeBustReporting)
Order State Transitions
OneChronos uses a subset of the legal FIX order state transitions. When an order
is in multiple states at once (e.g. PENDING_CANCEL and PARTIALLY_FILLED) the
FIX rules of precedence are used to determine which state is reported in the
OrdStatus field of an ExecutionReport.
(highest precedence)PENDING_CANCEL: 12PENDING_REPLACE: 11FILLED: 8CANCELED: 5PARTIALLY_FILLED: 4NEW: 2REJECTED: 2PENDING_NEW: 2
Note that values are non-consecutive to maintain parity with the FIX 4.2 specification.
The following are legal transitions (from the perspective of OneChronos sending
ExecutionReport messages). States that can only transition to themselves
and for which no further messages will be sent (with the exception of trade
breaks, when configured) are labeled TERMINAL.
NEWPARTIALLY_FILLEDFILLEDEXPIREDCANCELEDPENDING_CANCEL
PARTIALLY_FILLEDPARTIALLY_FILLEDFILLEDEXPIREDCANCELEDPENDING_CANCEL
FILLEDTERMINAL
EXPIREDTERMINAL
CANCELEDTERMINAL
PENDING_CANCELFILLEDCANCELED
REJECTEDTERMINAL
PENDING_NEWNEWREJECTED
Drop Copy
OneChronos offers two types of FIX drop copy:
- Order-by-Order: All business level messages (including trade breaks, if configured) are forwarded to the drop copy session
- Fills Only: Only
ExecutionReport-FillandExecutionReport-PartialFillmessages are forwarded to the drop copy session
Drop copy functionality is configured on the port/session level.
Port Settings
The following parameters can be configured on the FIX port/session level:
Order Entry Port Settings
Cancel On Disconnect
Orders in an active auction are canceled at the first available opportunity, which may not be immediate.
Cancel on Halt
Cancels all orders for halted symbols, including all legs of combinatorial orders.
Fat Finger Percent Delta
Rejects orders exceeding a percentage deviation from EBBO. Default max deviation is 40%.
Parameters:
- Name:
maxPctDeltaDescription: Rejects orders exceeding a percentage deviation from EBBO.Type:numberDefault Value:40.0Validation:
this.maxPctDelta >= 0.000001 && this.maxPctDelta <= 40.0
Maximum Notional Value
Limits the notional value of a single order. Default max value is USD 200M.
Parameters:
- Name:
maxValueDescription: Limits the notional value of a single order.Type:numberDefault Value:$200MValidation:
this.maxValue >= 1.0 && this.maxValue <= 200,000,000
Maximum Order Shares
The maximum number of shares allowed for a single order.
Parameters:
- Name:
maxValueDescription: Max shares for a single order.Type:integerDefault Value:100,000,000Validation:
this.maxValue >= 1 && this.maxValue <= 100,000,000
Self-Match Prevention
Self-match prevention (anti-internalization) behavior. When disabled, all Subscriber orders are free to match against all other Subscriber orders. When enabled and set to SUBSCRIBER, orders will not match against other orders from the same Subscriber. When set to ON_BEHALF_OF_COMP_ID, orders will not match against other orders from the same OnBehalfOfCompID. When set to SENDER_COMP_ID, orders will not match against other orders from the same SenderCompID. Note that in all cases Tag 2362 SelfMatchPreventionID takes precedence over this port setting.
Parameters:
- Name:
selfMatchPreventionType:enumDefault Value:SENDER_COMP_IDEnum values:SUBSCRIBER: 0Subscriber-level self match preventionON_BEHALF_OF_COMP_ID: 1OnBehalfOfCompID-level self match preventionSENDER_COMP_ID: 2Session/SenderCompID self match prevention
Timestamp Accuracy
Defines the precision of timestamps sent in FIX messages. These settings provide flexibility for order management, risk controls, and session handling within the OneChronos FIX environments.
Parameters:
- Name:
timestampPrecisionType:enumDefault Value:NanoEnum values:NANO: 2Nanosecond timestamp reporting
Drop Copy Port Settings
Drop Copy Type
Controls the type of drop copy reports that are sent to Subscriber.
Parameters:
- Name:
drop_copy_typeDescription: The type of drop copy reports that are sent.Type:enumDefault Value:FILLS_ONLYEnum values:ORDER_BY_ORDER: 0All business level messages (including trade breaks, if configured) are forwarded to the drop copy session.FILLS_ONLY: 1OnlyExecutionReport-FillandExecutionReport-PartialFillmessages are forwarded to the drop copy session.
Symbology
OneChronos accepts ISIN to identify a stock, the Subscriber:
- must set IDSource (22) = ISIN (4);
- must set SecurityID (48) = the ISIN;
- must set SecurityExchange (207) = Market Identification Code of the listing market for the ISIN;
- must set the Currency (15) = currency in which the stock is traded;
- may optionally set the Symbol (55)
Repeating Party Group
The Parties component block is used to identify and convey information on the entities both central and peripheral to the financial transaction represented by the FIX message containing the Parties Block.
The following messages contain the Parties component:
The Parties component block is used to identify and convey information on the entities both central and peripheral to the financial transaction represented by the FIX message containing the Parties block.
PartyIDSource
Defines the source or type of the PartyID. P = Short Code Identifier
Required
YType
charPartyID
The short code representing the client or decision maker represented by this block. The value depends on 452 (PartyRole). Applicable to PartyRole 3 (ClientID).
Required
YType
stringEnum values
NONE: 0- No client for this order
AGGR: 1- An aggregation of multiple client orders
PNAL: 2- Clients are pending allocation. Applicable to PartyRole 12 (Executing Trader)
NORE: 3- Execution decision taken by the client of the Subscriber
PartyRole
Specifies the role of the party identified by tag #448 (PartyID).
Required
YType
integerEnum values
ClientID: 3- Firm identifier used in third party-transactions or for investor identification in intermediary transactions.
ExecutingTrader: 12- Trader or broker id associated with Executing Firm who actually executes the trade.
InvestorId: 122- Identifies beneficiary or broker acting on behalf of beneficiary. This field is mandatory for various exchanges either pre or post trade.
PartyRoleQualifier
Further qualifies the PartyRole (tag #452).
Required
YType
integerEnum values
No Qualifier: 0- No Qualifier
Algorithm: 22- Algorithm
LEI: 23- Legal Entity Identifier
Natural Person: 24- Natural Person
Changelog
Updates to the FIX specification are documented here.
| Version | Description | Date |
|---|---|---|
| 1.0 | Initial version of FIX v4.2 specification | 2025-03-14 |
| 1.1 | Updated locked market trading conditions behaviour | 2025-03-15 |
| 1.2 | Updated supported Symbology | 2025-05-14 |
| 1.3 | Updated Tag 207 = mic code of listing market of the ISIN | 2025-06-25 |
| 1.4 | Updated Tags 15,22,48,207 = Req’d for 35=D,G,F,8,UCC messages | 2025-07-09 |
| 1.5 | Updated Tag 453 (NoPartyIDs) dependencies and clarified definitions for Tags 447, 452, and 2376 | 2025-10-09 |
| 1.6 | Updated Tag 44 = Req’d, Tag 20007 CancelReason modified = 2 Good for Auction (GFA), modified C = Price Collar Deviation, S = Suspended, Risk Management & Order Controls Default = Yes | 2025-10-23 |
| 1.7 | Clarified Tag 2362 (SelfMatchPreventionID) behaviour to reference OnBehalfOfCompID/SenderCompID | 2025-11-18 |
| 1.8 | Port settings updated. (1) Cancel on halt default set to true. (2) Short Selling removed. (3) Allow test symbols removed. Drop copy connection handling settings removed & drop copy trade break reporting port setting removed. Added OrdRejReasons to tag 103. Defined TradeLiquidityIndicator in tag 9730. | 2025-12-04 |
| 1.9 | Standardized Tag 373 (SessionRejectReason) enums to official FIX nomenclature; no protocol impact. ExecutionReports now populate Tag 375 (ContraBroker) with CCP. Added “SELF” to Tag 375 for self-match clearing suppression and clarified population on trade ExecutionReports only; added port override. | 2025-12-15 |
| 1.10 | Removed ExecRefID (19) from ExecutionReport (35=8); remains required for TradeCancelCorrect (35=UCC). Clarified support for nanosecond timestamp precision; updated Timestamp Accuracy and time-field descriptions (e.g. SendingTime (52), TransactTime (60), OrigTime (42)). Corrected Tag 8015 (OrderAttributeTypes) requirement to reflect conditional usage. | 2025-12-30 |
| 1.11 | Removed LCHS from Tag 375 (ContraBroker) valid values. Replaced with LCHL. Clarified open orders treatment at market close (Subscribers will receive an execution report with ExecType(150) = C (Expired)). | 2026-01-29 |
| 1.12 | Introduced optional venue-enabled session (port) setting allowing self-match executions to be submitted to CCP clearing; when enabled, Tag 375 will reflect the subscriber’s CCP instead of SELF. Removed support for Tag 2362 = 1 (OnBehalfOfCompID self-match prevention). Orders containing 2362 = 1 will be rejected. | 2026-02-13 |
| 1.13 | Update for Tab 9730=F rather than =P in previous version | 2026-04-14 |
| 1.14 | Updated Tag 211 (PegDifference) for pegged orders from a signed price amount to a signed tick count. Changed type from float to integer and clarified that the effective pegged price is calculated by applying the signed tick count to the applicable tick size. | 2026-04-25 |