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.

8

BeginString

A delimiter identifying the start of a new FIX message. BeginString must be the first field present in every FIX message.

Required

Y

Type

string

Validation

it == "FIX.4.2"
9

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

Y

Type

int
34

MsgSeqNum

The message sequence number, per the rules governing message sequence numbers.

Required

Y

Type

int
35

MsgType

The type of the FIX message. MsgType must be the third field present in every FIX message.

Required

Y

Type

string

Enum 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)
43

PossDupFlag

A flag indicating whether a message is a possible session level retransmission, per the message delivery rules.

Required

N

Type

boolean

Enum values

POSSIBLE_DUPLICATE: Y
Message is a possible retransmission.
ORIGINAL_TRANSMISSION: N
Message is guaranteed to be an original transmission.
49

SenderCompID

OneChronos will assign this identifier as part of customer onboarding. Messages sent to OneChronos must always include Subscriber"s assigned SenderCompID.

Required

Y

Type

string
52

SendingTime

The time of message transmission (always in UTC). OneChronos supports UTC timestamps at nanosecond precision.

Required

Y

Type

utctimestamp
56

TargetCompID

The logical mirror of SenderCompID. Messages received from OneChronos will always have this field set to the SenderCompID assigned to you by us.

Required

Y

Type

string
97

PossResend

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

N

Type

boolean

Enum values

POSSIBLE_DUPLICATE: Y
Message is a possible retransmission.
ORIGINAL_TRANSMISSION: N
Message is guaranteed to be an original transmission.
115

OnBehalfOfCompID

Trading partner company ID used when sending messages via a third party.

Required

N

Type

string
122

OrigSendingTime

Required by the FIX spec for orders where PossDupFlag=Y.

Required

N

Type

utctimestamp
128

DeliverToCompID

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

N

Type

string

Standard Trailer

The "Standard Trailer" is included at the end of every FIX message. CheckSum must appear as the last field.

10

CheckSum

A message checksum. Always the last field in the message.

Required

Y

Type

int

Administrative 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.
For more details, refer to the Heartbeats section of our FIX Primer Document.

112

TestReqID

Must be present if sent in response to a TestRequest message.

Required

N

Type

string

TestRequest (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.

112

TestReqID

An identifier for use with TestRequest and Heartbeat messages.

Required

Y

Type

string

ResendRequest (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.
A ResendRequest follows the procedures outlined in the FIX Message Recovery section of the FIX Primer document and can be sent by either the Subscriber or OneChronos.

7

BeginSeqNo

Message sequence number of first message in range to be resent.

Required

Y

Type

int
16

EndSeqNo

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

Y

Type

int

Reject (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.

45

RefSeqNum

The sequence number of the message being referenced.

Required

Y

Type

int
58

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

N

Type

string
371

RefTagID

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

N

Type

int
372

RefMsgType

Always present when type is parsable on the message being rejected.

Required

N

Type

string
373

SessionRejectReason

An error code indicating why a message was rejected on the session level.

Required

Y

Type

int

Enum 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 SenderCompID or TargetCompID is invalid.
SENDINGTIME_ACCURACY_PROBLEM: 10
The differential between SendingTime and message receipt by OneChronos is too large.
INVALID_MSGTYPE: 11
The message specifies a type outside 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.
For more details, refer to the Sequence Reset section of our FIX Primer Document.

36

NewSeqNo

The next expected sequence number, per the rules governing message sequence numbers.

Required

Y

Type

int
123

GapFillFlag

Indicates whether a SequenceReset is of type SequenceReset-Gap-Fill or SequenceReset-Reset. See Message Delivery for additional details.

Required

N

Type

boolean

Enum 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.
For more details, please request our FIX Primer document

58

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

N

Type

string

Logon (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.

98

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

Y

Type

int

Validation

it == EncryptMethod.NONE

Enum values

NONE: 0
Do not use encryption.
108

HeartBtInt

The desired interval, in seconds, between heartbeats. See Heartbeats for additional details.

Required

Y

Type

int

Validation

it >= 5 && it <= 180

BusinessMessageReject (j)

BusinessMessageReject messages are sent when a field validation is violated in a FIX message (e.g., incorrect field length).

45

RefSeqNum

The sequence number of the message being referenced.

Required

N

Type

int
58

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

N

Type

string
372

RefMsgType

Always present when type is parsable on the message being rejected.

Required

Y

Type

string
380

BusinessRejectReason

An error code indicating why a message was rejected by a BusinessMessageReject

Required

Y

Type

int

Enum 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.

1

Account

A client supplied account identifier.

Required

N

Type

string

Validation

case it                   
  {None: true}            
  {Some account:          
    strLen(account) <= 32}
11

ClOrdID

A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs.

Required

Y

Type

string

Validation

(strLen(it) > 0) && (strLen(it) <= 32)
15

Currency

Trading currency of the instrument, i.e. GBX for pence listed instruments and GBP for pound listed instruments.

Required

Y

Type

string
18

ExecInst

Execution instruction for order handling; required for Pegged orders (40=P), not allowed on limit orders (40=2)

Required

N

Type

ExecInst

Validation

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.
21

HandlInst

HandlInst is required by FIX, but not used by OneChronos.

Required

Y

Type

HandlInst

Enum values

AUTOMATED_EXECUTION_NO_INTERVENTION: 1
Required by FIX, but not used by OneChronos.
22

IDSource

Values supported by OneChronos; 4 = ISIN Number

Required

Y

Type

string

Enum values

ISIN_NUMBER: 4
ISIN Number
38

OrderQty

The number of shares for the order.

Required

Y

Type

Qty

Validation

it > 0.0
40

OrdType

The type of an order.

Required

Y

Type

OrdType

Enum 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 ExecInst and PegDifference.
44

Price

Instrument price per unit of quantity. When Price is present Price >0.0

Required

Y

Type

float

Validation

it > 0.0
48

SecurityID

Instrument ID (ISIN)

Required

Y

Type

string
54

Side

The side of an order.

Required

Y

Type

Side

Enum values

BUY: 1
Order is a buy.
SELL: 2
Order is a sell.
55

Symbol

The symbol (ticker) of the instrument being traded. Echoed from order.

Required

N

Type

string
59

TimeInForce

A field governing how long an order will remain active for.

Required

Y

Type

TimeInForce

Enum 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.
60

TransactTime

A UTC timestamp indicating when a transaction occurred. OneChronos logs events at nanosecond precision.

Required

Y

Type

UTCTimestamp
110

MinQty

The minimum permissible fill quantity for an order.

Required

N

Type

Qty

Validation

case it                
  {None: true}         
  {Some qty: qty > 0.0}
126

ExpireTime

When TimeInForce=6 Good Till Time, ExpireTime must be populated with the desired expiry time.

Required

N

Type

UTCTimestamp
207

SecurityExchange

Market Identification Code. MIC code for the listing market for the ISIN

Required

Y

Type

Exchange
211

PegDifference

Number of ticks, signed positive or negative, applied to the reference price for a pegged order.

Required

N

Type

integer
453

NoPartyIDs

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

N

Type

integer
528

OrderCapacity

Designates the capacity of the firm placing the order.

Required

Y

Type

string

Enum values

Agency: A
Maps to "AOTC"
Principal: P
Maps to "DEAL"
RisklessPrincipal: R
Maps to "MTCH"
1724

OrderOrigination

DEA Flag indicator. Other values are unsupported and will be rejected.

Required

Y

Type

integer

Enum values

NonDEA: 0
Maps to "NonDEA" (Default)
DEA: 5
Maps to "DEA"
2362

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

N

Type

int

Validation

case it                                     
  {None: true}                              
  {Some id:                                 
    (id >= 0) && (id != 1) && (id <= 65535)}
8015

OrderAttributeTypes

The presence of a supported value indicates that condition applies to the order.

Required

N

Type

MultipleValueInt

Enum 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.
20001

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

N

Type

string

Validation

case it                         
  {None: true}                  
  {Some analyticsTags:          
    strLen(analyticsTags) <= 32}
20004

ExpressiveBidURI

The Expressive Bid URI (for future use).

Required

N

Type

string
20009

ExpressiveBidArgument1

Expressve Bid argument 1 (for future use).

Required

N

Type

string
20010

ExpressiveBidArgument2

Expressve Bid argument 2 (for future use).

Required

N

Type

string
20011

ExpressiveBidArgument3

Expressve Bid argument 3 (for future use).

Required

N

Type

string
20012

ExpressiveBidArgument4

Expressve Bid argument 4 (for future use).

Required

N

Type

string
20028

LegID

The ID associated with a multi-symbol expressive bid (for future use).

Required

N

Type

int

Validation

case it              
  {None: true}       
  {Some id: id < 255}
20029

BasketID

The ID associated with a multi-symbol expressive bid (for future use).

Required

N

Type

string

Validation

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.












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.

11

ClOrdID

A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs.

Required

Y

Type

string

Validation

(strLen(it) > 0) && (strLen(it) <= 32)
15

Currency

Trading currency of the instrument, i.e. GBX for pence listed instruments and GBP for pound listed instruments.

Required

Y

Type

string
22

IDSource

Values supported by OneChronos; 4 = ISIN Number

Required

Y

Type

string

Enum values

ISIN_NUMBER: 4
ISIN Number
37

OrderID

When OrderIDis present stringLength(OrderID) >0 and stringLength(OrderID) <=32.

Required

N

Type

string

Validation

case it                                              
  {None: true}                                       
  {Some orderId:                                     
    (strLen(orderId) > 0) && (strLen(orderId) <= 32)}
38

OrderQty

The number of shares for the order.

Required

N

Type

Qty

Validation

it > 0.0
41

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

N

Type

string

Validation

case it                                              
  {None: true}                                       
  {Some orderId:                                     
    (strLen(orderId) > 0) && (strLen(orderId) <= 32)}
48

SecurityID

Instrument ID (ISIN)

Required

Y

Type

string
54

Side

The side of an order.

Required

Y

Type

Char

Validation

it == state.Side

Enum values

BUY: 1
Order is a buy.
SELL: 2
Order is a sell.
55

Symbol

The symbol (ticker) of the instrument being traded. Echoed from order.

Required

N

Type

string

Validation

it == state.Symbol
60

TransactTime

A UTC timestamp indicating when a transaction occurred. OneChronos logs events at nanosecond precision.

Required

Y

Type

UTCTimestamp
207

SecurityExchange

Market Identification Code. MIC code for the listing market for the ISIN

Required

Y

Type

Exchange
20001

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

N

Type

string

Message 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.

1

Account

A client supplied account identifier.

Required

N

Type

string

Validation

case it                                              
  {None: true}                                       
  {Some account:                                     
    (strLen(account) > 0) && (strLen(account) <= 32)}
11

ClOrdID

A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs.

Required

Y

Type

string

Validation

(strLen(it) > 0) && (strLen(it) <= 32)
15

Currency

Trading currency of the instrument, i.e. GBX for pence listed instruments and GBP for pound listed instruments.

Required

Y

Type

string
18

ExecInst

Execution instruction for order handling; required for Pegged orders (40=P), not allowed on limit orders (40=2)

Required

N

Type

ExecInst

Validation

it == state.ExecInst

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.
21

HandlInst

HandlInst is required by FIX, but not used by OneChronos.

Required

Y

Type

HandlInst

Enum values

AUTOMATED_EXECUTION_NO_INTERVENTION: 1
Required by FIX, but not used by OneChronos.
22

IDSource

Values supported by OneChronos; 4 = ISIN Number

Required

Y

Type

string

Enum values

ISIN_NUMBER: 4
ISIN Number
38

OrderQty

The number of shares for the order.

Required

N

Type

Qty

Validation

isLegalModifyQty(it)
40

OrdType

The type of an order.

Required

Y

Type

OrdType

Validation

it == state.OrdType

Enum 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 ExecInst and PegDifference.
41

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

Y

Type

string

Validation

(strLen(it) > 0) && (strLen(it) <= 32)
44

Price

Instrument price per unit of quantity. When Price is present Price >0.0

Required

Y

Type

float

Validation

it > 0.0
48

SecurityID

Instrument ID (ISIN)

Required

Y

Type

string
54

Side

The side of an order.

Required

Y

Type

Char

Validation

it == state.Side

Enum values

BUY: 1
Order is a buy.
SELL: 2
Order is a sell.
55

Symbol

The symbol (ticker) of the instrument being traded. Echoed from order.

Required

N

Type

string

Validation

it == state.Symbol
59

TimeInForce

A field governing how long an order will remain active for.

Required

Y

Type

TimeInForce

Validation

it == state.TimeInForce

Enum 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.
60

TransactTime

A UTC timestamp indicating when a transaction occurred. OneChronos logs events at nanosecond precision.

Required

Y

Type

UTCTimestamp
110

MinQty

The minimum permissible fill quantity for an order.

Required

N

Type

Qty

Validation

case it                
  {None: true}         
  {Some qty: qty > 0.0}
126

ExpireTime

When TimeInForce=6 Good Till Time, ExpireTime must be populated with the desired expiry time.

Required

N

Type

UTCTimestamp

Validation

it == state.ExpireTime
207

SecurityExchange

Market Identification Code. MIC code for the listing market for the ISIN

Required

Y

Type

Exchange
211

PegDifference

Number of ticks, signed positive or negative, applied to the reference price for a pegged order.

Required

N

Type

integer
20001

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

N

Type

string

Validation

case it                                           
  {None: true}                                    
  {Some _analyticsTags: it == state.AnalyticsTags}
20004

ExpressiveBidURI

The Expressive Bid URI (for future use).

Required

N

Type

string
20009

ExpressiveBidArgument1

Expressve Bid argument 1 (for future use).

Required

N

Type

string
20010

ExpressiveBidArgument2

Expressve Bid argument 2 (for future use).

Required

N

Type

string
20011

ExpressiveBidArgument3

Expressve Bid argument 3 (for future use).

Required

N

Type

string
20012

ExpressiveBidArgument4

Expressve Bid argument 4 (for future use).

Required

N

Type

string
20028

LegID

The ID associated with a multi-symbol expressive bid (for future use).

Required

N

Type

int

Validation

case it                      
  {None: true}               
  {Some _: it == state.LegID}
20029

BasketID

The ID associated with a multi-symbol expressive bid (for future use).

Required

N

Type

string

Validation

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
All execution reports share common fields, with additional fields included based on the order state. Certain fields (e.g. CCP attribution via Tag 375) are populated only on Execution Reports representing actual trades and are not included on acknowledgements, cancels, replaces, or other non-trade execution events.

1

Account

A client supplied account identifier.

Required

N

Type

string

Validation

it == state.Account
6

AvgPx

An average price computed across all fills for an order.

Required

Y

Type

Price
11

ClOrdID

A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs.

Required

Y

Type

string

Validation

it == state.ClOrdID
14

CumQty

The aggregate filled quantity computed across all fills for an order.

Required

Y

Type

Qty

Validation

it >= 0.0
15

Currency

Trading currency of the instrument, i.e. GBX for pence listed instruments and GBP for pound listed instruments.

Required

Y

Type

string
17

ExecID

A unique ID for each execution report sent from OneChronos to Subscriber.

Required

Y

Type

string
18

ExecInst

Execution instruction for order handling; required for Pegged orders (40=P), not allowed on limit orders (40=2)

Required

N

Type

ExecInst

Validation

it == state.ExecInst

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.
20

ExecTransType

Identifies the type of a transaction.

Required

Y

Type

ExecTransType

Validation

it == ExecTransType.New

Enum values

NEW: 0
A new execution report.
CANCEL: 1
Cancellation of a previously sent execution report.
22

IDSource

Values supported by OneChronos; 4 = ISIN Number

Required

Y

Type

string

Enum values

ISIN_NUMBER: 4
ISIN Number
30

LastMkt

The market of the last fill; always OCXL or OCXE.

Required

N

Type

Exchange

Validation

case it                                                                  
  {None: true}                                                           
  {Some lastMkt:                                                         
    (lastMkt in [Exchange.OCXE, Exchange.OCXL]) && (it == state.LastMkt)}
31

LastPx

The price of the last fill.

Required

N

Type

Price
32

LastShares

The quantity of the last fill.

Required

N

Type

Qty
37

OrderID

When OrderIDis present stringLength(OrderID) >0 and stringLength(OrderID) <=32.

Required

Y

Type

string

Validation

it == state.OrderID
38

OrderQty

The number of shares for the order.

Required

Y

Type

Qty

Validation

it == state.OrderQty
39

OrdStatus

The state of the order. State transitions are governed per the FIX order state transition rules.

Required

Y

Type

OrdStatus

Enum 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.
40

OrdType

The type of an order.

Required

Y

Type

OrdType

Validation

it == state.OrdType

Enum 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 ExecInst and PegDifference.
41

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

N

Type

string
44

Price

Instrument price per unit of quantity. When Price is present Price >0.0

Required

Y

Type

float

Validation

it == state.Price
48

SecurityID

Instrument ID (ISIN)

Required

Y

Type

string
54

Side

The side of an order.

Required

Y

Type

Side

Validation

it == state.Side

Enum values

BUY: 1
Order is a buy.
SELL: 2
Order is a sell.
55

Symbol

The symbol (ticker) of the instrument being traded. Echoed from order.

Required

N

Type

string

Validation

it == state.Symbol
58

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

N

Type

string
59

TimeInForce

A field governing how long an order will remain active for.

Required

Y

Type

TimeInForce

Validation

it == state.TimeInForce

Enum 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.
60

TransactTime

A UTC timestamp indicating when a transaction occurred. OneChronos logs events at nanosecond precision.

Required

Y

Type

UTCTimestamp
103

OrdRejReason

An error code indicating why a NewOrderSingle (type=ORDER_SINGLE) was rejected.

Required

N

Type

OrdRejReason

Enum 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 ClOrdID that is currently in use.
INVALID_EXPRESSIVE_BID_URI: 9
The expressive bid URI and/or arguments associated with an OrderSingle was invalid. (For future use)
110

MinQty

The minimum permissible fill quantity for an order.

Required

N

Type

Qty

Validation

it == state.MinQty
126

ExpireTime

When TimeInForce=6 Good Till Time, ExpireTime must be populated with the desired expiry time.

Required

N

Type

UTCTimestamp

Validation

it == state.ExpireTime
150

ExecType

The type of an ExecutionReport. See the section on FIX order state transitions for additional details.

Required

Y

Type

ExecType

Enum 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-Cancel or ExecutionReport-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.
151

LeavesQty

Remaining quantity open for further execution. LeavesQty must be 0.0 or LeavesQty must be leavesQty().

Required

Y

Type

Qty

Validation

(it == 0.0) || (it == leavesQty())
207

SecurityExchange

Market Identification Code. MIC code for the listing market for the ISIN

Required

Y

Type

Exchange
211

PegDifference

Number of ticks, signed positive or negative, applied to the reference price for a pegged order.

Required

N

Type

integer

Validation

it == state.PegDifference
375

ContraBroker

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

N

Type

string

Enum values

XCLR: XCLR
SIX x-clear
ECCX: ECCX
Cboe Clear Europe NV
LCHL: LCHL
LCH Ltd
SELF: SELF
Self-match clearing suppression
382

NoContraBrokers

The number of ContraBroker msgFields contained in the message.

Required

N

Type

integer
453

NoPartyIDs

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

N

Type

integer
1003

TradeID

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

N

Type

string
1724

OrderOrigination

DEA Flag indicator. Other values are unsupported and will be rejected.

Required

Y

Type

integer

Enum values

NonDEA: 0
Maps to "NonDEA" (Default)
DEA: 5
Maps to "DEA"
2362

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

N

Type

int
8015

OrderAttributeTypes

The presence of a supported value indicates that condition applies to the order.

Required

N

Type

MultipleValueInt

Enum 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.
9730

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

N

Type

string

Enum values

PERIODIC_AUCTION: F
Execution on the OneChronos periodic auction mechanism
20001

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

N

Type

string

Validation

it == state.AnalyticsTags
20005

AuctionID

A unique identifier assigned by OneChronos to each auction.

Required

N

Type

int
20006

AuctionSubID

Order identifier supplied by OneChronos.

Required

N

Type

int
20007

CancelReason

An indicator code detailing why an an order was canceled

Required

N

Type

CancelReason

Enum 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.

1

Account

A client supplied account identifier.

Required

N

Type

string

Validation

it == state.Account
11

ClOrdID

A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs.

Required

Y

Type

string

Validation

it == state.ClOrdID
37

OrderID

When OrderIDis present stringLength(OrderID) >0 and stringLength(OrderID) <=32.

Required

Y

Type

string
39

OrdStatus

The state of the order. State transitions are governed per the FIX order state transition rules.

Required

Y

Type

OrdStatus

Validation

it == state.OrdStatus

Enum 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.
41

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

N

Type

string
58

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

N

Type

string
102

CxlRejReason

An error code indicating why a OrderCancelRequest (type=ORDER_CANCEL_REQUEST) was rejected.

Required

Y

Type

CxlRejReason

Enum values

TOO_LATE_TO_CANCEL: 0
Cancellation request received after order was filled in entirety.
UNKNOWN_ORDER: 1
The ClOrdID referenced in the OrderCancelRequest is 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)
434

CxlRejResponseTo

Indicates the type of order cancel request that a OrderCancelReject is in response to.

Required

Y

Type

CxlRejResponseTo

Enum 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.

11

ClOrdID

A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs.

Required

Y

Type

string

Validation

it == state.ClOrdID
15

Currency

Trading currency of the instrument, i.e. GBX for pence listed instruments and GBP for pound listed instruments.

Required

Y

Type

string
17

ExecID

A unique ID for each execution report sent from OneChronos to Subscriber.

Required

Y

Type

string
19

ExecRefID

A reference to the original ExecID used for messages where ExecTransType=CANCEL.

Required

Y

Type

string
20

ExecTransType

Identifies the type of a transaction.

Required

Y

Type

ExecTransType

Validation

it in [ExecTransType.Cancel]

Enum values

NEW: 0
A new execution report.
CANCEL: 1
Cancellation of a previously sent execution report.
22

IDSource

Values supported by OneChronos; 4 = ISIN Number

Required

Y

Type

string

Enum values

ISIN_NUMBER: 4
ISIN Number
30

LastMkt

The market of the last fill; always OCXL or OCXE.

Required

Y

Type

Exchange
31

LastPx

The price of the last fill.

Required

Y

Type

Price
32

LastShares

The quantity of the last fill.

Required

Y

Type

Qty
37

OrderID

When OrderIDis present stringLength(OrderID) >0 and stringLength(OrderID) <=32.

Required

Y

Type

string

Validation

it == state.OrderID
42

OrigTime

The original sending time of an ExecutionReport.

Required

Y

Type

UTCTimestamp
48

SecurityID

Instrument ID (ISIN)

Required

Y

Type

string
54

Side

The side of an order.

Required

Y

Type

Side

Validation

it == state.Side

Enum values

BUY: 1
Order is a buy.
SELL: 2
Order is a sell.
55

Symbol

The symbol (ticker) of the instrument being traded. Echoed from order.

Required

N

Type

string

Validation

it == state.Symbol
60

TransactTime

A UTC timestamp indicating when a transaction occurred. OneChronos logs events at nanosecond precision.

Required

Y

Type

UTCTimestamp
207

SecurityExchange

Market Identification Code. MIC code for the listing market for the ISIN

Required

Y

Type

Exchange
9730

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

Y

Type

string

Enum 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.

  • PENDING_CANCEL: 12
    (highest precedence)
  • PENDING_REPLACE: 11
  • FILLED: 8
  • CANCELED: 5
  • PARTIALLY_FILLED: 4
  • NEW: 2
  • REJECTED: 2
  • PENDING_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.

  • NEW
    • PARTIALLY_FILLED
    • FILLED
    • EXPIRED
    • CANCELED
    • PENDING_CANCEL
  • PARTIALLY_FILLED
    • PARTIALLY_FILLED
    • FILLED
    • EXPIRED
    • CANCELED
    • PENDING_CANCEL
  • FILLED
    • TERMINAL
  • EXPIRED
    • TERMINAL
  • CANCELED
    • TERMINAL
  • PENDING_CANCEL
    • FILLED
    • CANCELED
  • REJECTED
    • TERMINAL
  • PENDING_NEW
    • NEW
    • REJECTED

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-Fill and ExecutionReport-PartialFill messages 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

Enabled by default: Y

Orders in an active auction are canceled at the first available opportunity, which may not be immediate.

Cancel on Halt

Enabled by default: Y

Cancels all orders for halted symbols, including all legs of combinatorial orders.

Fat Finger Percent Delta

Enabled by default: Y

Rejects orders exceeding a percentage deviation from EBBO. Default max deviation is 40%.

Parameters:

  • Name:
    maxPctDelta
    Description: Rejects orders exceeding a percentage deviation from EBBO.
    Type:
    number
    Default Value:
    40.0

    Validation:

    this.maxPctDelta >= 0.000001 && this.maxPctDelta <= 40.0

Maximum Notional Value

Enabled by default: Y

Limits the notional value of a single order. Default max value is USD 200M.

Parameters:

  • Name:
    maxValue
    Description: Limits the notional value of a single order.
    Type:
    number
    Default Value:
    $200M

    Validation:

    this.maxValue >= 1.0 && this.maxValue <= 200,000,000

Maximum Order Shares

Enabled by default: Y

The maximum number of shares allowed for a single order.

Parameters:

  • Name:
    maxValue
    Description: Max shares for a single order.
    Type:
    integer
    Default Value:
    100,000,000

    Validation:

    this.maxValue >= 1 && this.maxValue <= 100,000,000

Self-Match Prevention

Enabled by default: N

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:
    selfMatchPrevention
    Type:
    enum
    Default Value:
    SENDER_COMP_ID
    Enum values:
    • SUBSCRIBER: 0
      Subscriber-level self match prevention
    • ON_BEHALF_OF_COMP_ID: 1
      OnBehalfOfCompID-level self match prevention
    • SENDER_COMP_ID: 2
      Session/SenderCompID self match prevention

Timestamp Accuracy

Enabled by default: Y

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:
    timestampPrecision
    Type:
    enum
    Default Value:
    Nano
    Enum values:
    • NANO: 2
      Nanosecond timestamp reporting

Drop Copy Port Settings

Drop Copy Type

Enabled by default: Y

Controls the type of drop copy reports that are sent to Subscriber.

Parameters:

  • Name:
    drop_copy_type
    Description: The type of drop copy reports that are sent.
    Type:
    enum
    Default Value:
    FILLS_ONLY
    Enum values:
    • ORDER_BY_ORDER: 0
      All business level messages (including trade breaks, if configured) are forwarded to the drop copy session.
    • FILLS_ONLY: 1
      Only ExecutionReport-Fill and ExecutionReport-PartialFill messages 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.

447

PartyIDSource

Defines the source or type of the PartyID. P = Short Code Identifier

Required

Y

Type

char
448

PartyID

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

Y

Type

string

Enum 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
452

PartyRole

Specifies the role of the party identified by tag #448 (PartyID).

Required

Y

Type

integer

Enum 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.
2376

PartyRoleQualifier

Further qualifies the PartyRole (tag #452).

Required

Y

Type

integer

Enum 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.

VersionDescription
Date
1.0Initial version of FIX v4.2 specification2025-03-14
1.1Updated locked market trading conditions behaviour2025-03-15
1.2Updated supported Symbology2025-05-14
1.3Updated Tag 207 = mic code of listing market of the ISIN2025-06-25
1.4Updated Tags 15,22,48,207 = Req’d for 35=D,G,F,8,UCC messages2025-07-09
1.5Updated Tag 453 (NoPartyIDs) dependencies and clarified definitions for Tags 447, 452, and 23762025-10-09
1.6Updated 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 = Yes2025-10-23
1.7Clarified Tag 2362 (SelfMatchPreventionID) behaviour to reference OnBehalfOfCompID/SenderCompID2025-11-18
1.8Port 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.9Standardized 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.10Removed 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.11Removed 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.12Introduced 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.13Update for Tab 9730=F rather than =P in previous version2026-04-14
1.14Updated 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