FIX Integration
FX - FIX 4.2 Specification
Order Types
OneChronos supports limit and pegged order types.
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
- Tag
- 8
- Type
string
- Description
- A delimiter identifying the start of a new FIX message.
BeginString
must be the first field present in every FIX message. - Required
Y
- Validation
it == "FIX.4.2"
BodyLength
- Tag
- 9
- Type
int
- Description
- 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
MsgSeqNum
- Tag
- 34
- Type
int
- Description
- The message sequence number, per the rules governing message sequence numbers.
- Required
Y
MsgType
- Tag
- 35
- Type
string
- Description
- The type of the FIX message.
MsgType
must be the third field present in every FIX message. - Required
Y
- Enum values
HEARTBEAT: 0
Message is aHeartbeat
.TEST_REQUEST: 1
Message is aTestRequest
.RESEND_REQUEST: 2
Message is aResendRequest
.REJECT: 3
Message is aReject
.SEQUENCE_RESET: 4
Message is aSequenceReset
.LOGOUT: 5
Message is aLogout
.EXECUTION_REPORT: 8
Message is aExecutionReport
.ORDER_CANCEL_REJECT: 9
Message is anOrderCancelReject
.LOGON: A
Message is aLogon
.ORDER_SINGLE: D
Message is aNewOrderSingle
.ORDER_CANCEL_REQUEST: F
Message is aOrderCancelRequest
.ORDER_CANCEL_REPLACE_REQUEST: G
Message is aOrderCancelReplaceRequest
.BUSINESS_MESSAGE_REJECT: j
Message is aBusinessMessageReject
.TRADE_BUST: UCC
Message is aTradeBust
.
PossDupFlag
- Tag
- 43
- Type
boolean
- Description
- A flag indicating whether a message is a possible session level retransmission, per the message delivery rules.
- Required
N
- Enum values
POSSIBLE_DUPLICATE: Y
Message is a possible retransmission.ORIGINAL_TRANSMISSION: N
Message is guaranteed to be an original transmission.
SenderCompID
- Tag
- 49
- Type
string
- Description
- OneChronos will assign this identifier as part of customer onboarding. Messages sent to OneChronos must always include Subscriber's assigned
SenderCompID
. - Required
Y
SendingTime
- Tag
- 52
- Type
utctimestamp
- Description
- The time of message transmission (always in UTC). OneChronos supports UTC timestamps at second, millisecond, or microsecond precision.
- Required
Y
TargetCompID
- Tag
- 56
- Type
string
- Description
- 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
PossResend
- Tag
- 97
- Type
boolean
- Description
- 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
- Enum values
POSSIBLE_DUPLICATE: Y
Message is a possible retransmission.ORIGINAL_TRANSMISSION: N
Message is guaranteed to be an original transmission.
OnBehalfOfCompID
- Tag
- 115
- Type
string
- Description
- Must be a valid NSCC MPID if present. Populating
OnBehalfOfCompID
will override the default port level MPID. - Required
N
OrigSendingTime
- Tag
- 122
- Type
utctimestamp
- Description
- Required by the FIX spec for orders where
PossDupFlag=Y
. - Required
N
DeliverToCompID
- Tag
- 128
- Type
string
- Description
- When a Subscriber populates
OnBehalfOfCompId
any message sent in response by OneChronos will populate this field with the value ofOnBehalfOfCompId
specified by Subscriber. - Required
N
Standard Trailer
The "Standard Trailer" is included at the end of every FIX message.CheckSum
must appear as the last field.CheckSum
- Tag
- 10
- Type
int
- Description
- A message checksum per the checksum calculation instructions.
- Required
Y
Administrative Messages
Heartbeat (0)
Heartbeat
messages should be sent whenever the HeartBtInt
agreed to via login procedures has elapsed without another another message being sent. See the section on bidirectional heartbeats for additional information.TestReqID
- Tag
- 112
- Type
string
- Description
- Must be present if sent in response to a TestRequest message.
- Required
N
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.TestReqID
- Tag
- 112
- Type
string
- Description
- An identifier for use with
TestRequest
andHeartbeat
messages. - Required
Y
ResendRequest (2)
Request that one or more messages be retransmitted, per the procedures outlined in the section on FIX message Recovery. AResendRequest
can be sent by Subscriber to OneChronos, or by OneChronos to Subscriber.BeginSeqNo
- Tag
- 7
- Type
int
- Description
- Message sequence number of first message in range to be resent.
- Required
Y
EndSeqNo
- Tag
- 16
- Type
int
- Description
- 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
Reject (3)
Reject
messages are used by OneChronos to indicate that a message received from Subscriber is invalid on the session level. Whereas business level rejections via ExecutionReport-BusinessReject
are typical, Reject
messages should not be received outside of FIX certification. Transmitting additional messages without further investigation is not recommended.RefSeqNum
- Tag
- 45
- Type
int
- Description
- The sequence number of the message being referenced.
- Required
Y
Text
- Tag
- 58
- Type
string
- Description
- 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
RefTagID
- Tag
- 371
- Type
int
- Description
- 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
RefMsgType
- Tag
- 372
- Type
string
- Description
- Always present when
type
is parsable on the message being rejected. - Required
N
SessionRejectReason
- Tag
- 373
- Type
int
- Description
- An error code indicating why a message was rejected on the session level.
- Required
Y
- 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_MESSAGE: 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_WITHOUT_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: 6
The referenced value does not have the correct data type.COMP_ID_PROBLEM: 9
Either theSenderCompID
orTargetCompID
is invalid.SENDING_TIME_ACCURACY_PROBLEM: 10
The differential betweenSendingTime
and message receipt by OneChronos is too large.INVALID_MESSAGE_TYPE: 11
The message specifies atype
outside of the OneChronos FIX specification.
SequenceReset (4)
Used by the sending application to modify the incoming sequence number of the application facing the sender. Further details are available in the section on sequence resets.NewSeqNo
- Tag
- 36
- Type
int
- Description
- The next expected sequence number, per the rules governing message sequence numbers.
- Required
Y
GapFillFlag
- Tag
- 123
- Type
boolean
- Description
- Indicates whether a
SequenceReset
is of typeSequenceReset-Gap-Fill
orSequenceReset-Reset
. See Message Delivery for additional details. - Required
N
- Enum values
GAP_FILL_MESSAGE_MSGSEQNUM_FIELD_VALID: Y
Message is aSequenceReset-Gap-Fill
; this is the correct value to use for message recovery/non disaster situations.SEQUENCE_RESET_IGNORE_MSGSEQNUM: N
Message is aSequenceReset-Reset
; reset the counterparty's sequence expected incoming sequence number, without performing message recovery.
Logout (5)
Logout
messages are used to initiate or acknowledge the orderly termination of a FIX session. Subscribers can initiate a logout at will. Under normal operating conditions OneChronos will only initiate a logout as part of the daily sequence number reset. See Logout for additional information.Text
- Tag
- 58
- Type
string
- Description
- 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
Logon (A)
Clients must send aLogon
message to OneChronos immediately after establishing a TCP connection and before sending any other messages. If the Logon
request is valid OneChronos will reply with a reciprocal Logon
and wait one second before sending additional messages to ensure that no ResendRequest
messages from Subscriber are in-flight. Clients should not send any business messages during this one second period. After the synchronization period has elapsed OneChronos will send a Heartbeat
to indicate that the waiting period has ended. See the section on Login Procedures for additional information.EncryptMethod
- Tag
- 98
- Type
int
- Description
- 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
- Validation
it == EncryptMethod.NONE
- Enum values
NONE: 0
Do not use encryption.
HeartBtInt
- Tag
- 108
- Type
int
- Description
- The desired interval, in seconds, between heartbeats. See Heartbeats for additional details.
- Required
Y
- Validation
it >= 5 && it <= 180
BusinessMessageReject (j)
BusinessMessageReject
messages are sent when a field validation is violated in a FIX message. (e.g. field length constraint)RefSeqNum
- Tag
- 45
- Type
int
- Description
- The sequence number of the message being referenced.
- Required
N
Text
- Tag
- 58
- Type
string
- Description
- 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
RefMsgType
- Tag
- 372
- Type
string
- Description
- Always present when
type
is parsable on the message being rejected. - Required
Y
BusinessRejectReason
- Tag
- 380
- Type
int
- Description
- An error code indicating why a message was rejected by a BusinessMessageReject
- Required
Y
- Enum values
OTHER: 0
Order violates one or more aspects of the venue order entry field specificationAPPLICATION_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
- Tag
- 1
- Type
string
- Description
- A client supplied account identifier.
- Required
N
- Validation
case it {None: true} {Some account: strLen(account) <= 32}
ClOrdID
- Tag
- 11
- Type
string
- Description
- A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs.
- Required
Y
- Validation
strLen(it) > 0 && strLen(it) <= 32
ExecInst
- Tag
- 18
- Type
ExecInst
- Description
- Order handling instructions; multiple instructions can be specified in a space delimited list.
- Required
N
- Validation
it in {| MidPricePeg, None |}
- Enum values
MID_PRICE_PEG: M
Execute at a price equal to or more favorable than the midpoint of the NBBO.PRIMARY_PEG: R
Execute at a price equal to or more favorable than the NBB in the case of a buy order or the NBO in the case of a sell order.MARKET_PEG: P
Execute at a price equal to or more favorable than the NBO in the case of a buy order or the NBB in the case of a sell order.CONDITIONAL: c
Conditional indication.FIRM_UP: u
Firm up associated with a conditional invitation.OPT_IN_TRIGGER_CONDITIONAL_INVITE: d
Opt-in to triggering conditional invitations. Can only be used on firm orders targeting a user defined Nexus, not base.OPT_OUT_MATCH_WITH_FIRM_UP: j
Opt-out of matching with firm up orders in OneChronos auctions. Can only be used on firm orders.
HandlInst
- Tag
- 21
- Type
HandlInst
- Description
HandlInst
is required by FIX, but not used by OneChronos.- Required
Y
- Enum values
AUTOMATED_EXECUTION_NO_INTERVENTION: 1
Required by FIX, but not used by OneChronos.
OrderQty
- Tag
- 38
- Type
Qty
- Description
- The number of shares for the order.
- Required
Y
- Validation
it > 0.0
OrdType
- Tag
- 40
- Type
OrdType
- Description
- The type of an order.
- Required
Y
- Enum values
LIMIT: 2
Order is eligible for execution at a price equal to or more favorable thanPrice
.PEGGED: P
Order is eligible for execution at a price equal to or more favorable than a computed price per the peg instructions given inExecInst
andPegDifference
.
Price
- Tag
- 44
- Type
Price
- Description
- The limit price of an order.
- Required
N
- Validation
case it {None: true} {Some price: price > 0.0}
Rule80A
- Tag
- 47
- Type
Rule80A
- Description
- The capacity of an order. For US equities, order capacity is in reference to Rule 80A.
- Required
Y
- Enum values
AGENCY_SINGLE_ORDER: A
Broker is executing in an pure agency capacity.PRINCIPAL: P
Broker is executing as a principal in the transaction.RISKLESS_PRINCIPAL: R
Broker is executing as a riskless principal in the transaction.
Side
- Tag
- 54
- Type
Side
- Description
- The side of an order.
- Required
Y
- Enum values
BUY: 1
Order is a buy.SELL: 2
Order is a long sell.
Symbol
- Tag
- 55
- Type
string
- Description
- The symbol (ticker) of the instrument being traded. See Symbology for additional details.
- Required
Y
- Validation
strLen(it) > 0 && strLen(it) <= 6
TimeInForce
- Tag
- 59
- Type
TimeInForce
- Description
- A field governing how long an order will remain active for.
- Required
Y
- Enum values
DAY: 0
Order will remain active throughout the regular trading session.IMMEDIATE_OR_CANCEL: 3
Order will be canceled after participating in one auction.FILL_OR_KILL: 4
Order will be canceled unless it can be filled in entirety in one auction; partial fills are not allowed.GOOD_TILL_DATE: 6
Order will remain active until the time specified byExpireTime
.
TransactTime
- Tag
- 60
- Type
UTCTimestamp
- Description
- A UTC timestamp indicating when a transaction occurred. Internally, OneChronos logs events at microsecond or higher precision but disseminates time msgFields with millisecond precision. Subscribers desiring microsecond precision timestamps can enable them on a port level.
- Required
Y
MinQty
- Tag
- 110
- Type
Qty
- Description
- The minimum permissible fill quantity for an order.
- Required
N
- Validation
case it {None: true} {Some qty: qty > 0.0}
ExpireTime
- Tag
- 126
- Type
UTCTimestamp
- Description
- When
TimeInForce=GOOD_TILL_DATE
ExpireTime
must be populated with the desired expiry time. - Required
N
PegDifference
- Tag
- 211
- Type
PriceOffset
- Description
- Amount (signed) added to the price of the peg for a pegged order.
- Required
N
- Validation
case it {None: true} {Some qty: qty > 0.0}
AnalyticsTags
- Tag
- 20001
- Type
string
- Description
- An optional Subscriber/Customer 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.
- Required
N
- Validation
case it {None: true} {Some analyticsTags: strLen(analyticsTags) <= 32}
ExpressiveBidURI
- Tag
- 20004
- Type
string
- Description
- The Expressive Bid URI.
- Required
N
ExpressiveBidArgument1
- Tag
- 20009
- Type
string
- Description
- Expressve Bid argument 1.
- Required
N
ExpressiveBidArgument2
- Tag
- 20010
- Type
string
- Description
- Expressve Bid argument 2.
- Required
N
ExpressiveBidArgument3
- Tag
- 20011
- Type
string
- Description
- Expressve Bid argument 3.
- Required
N
ExpressiveBidArgument4
- Tag
- 20012
- Type
string
- Description
- Expressve Bid argument 4.
- Required
N
Message Validations
state.orderEntry.isConnected
state.portSettings.dropCopyDisconnect.rejectNew ==>
state.orderEntry.isDropCopyConnected
isUnusedClOrdId(this.ClOrdID)
isMarketHours()
this.ExecInst == (Some MidPricePeg) <==> this.OrdType == OrdType.Pegged
isValidSymbol(this.Symbol)
this.OrdType == Pegged ==> present(this.ExecInst)
this.OrdType == OrdType.Limit ==> present(this.Price)
this.TimeInForce == GoodTillDate ==> present(this.ExpireTime)
this.TimeInForce != GoodTillDate ==> !present(this.ExpireTime)
this.TimeInForce in [FillOrKill] ==> !present(this.MinQty) ||
(case this.MinQty
{None: true}
{Some x: x == this.OrderQty})
isValidExpireTime(this.ExpireTime)
present(this.MinQty) ==> (case this.MinQty
{Some minQty: minQty <= this.OrderQty }
{None: true })
present(this.PegDifference) ==> this.ExecInst in {|MidPricePeg, PrimaryPeg, MarketPeg|}
!present(this.ExpressiveBidURI)
&&
!present(this.ExpressiveBidArgument1)
&&
!present(this.ExpressiveBidArgument2)
&&
!present(this.ExpressiveBidArgument3)
&&
!present(this.ExpressiveBidArgument4)
OrderCancelRequest (F)
Subscribers may request that an order entered viaNewOrderSingle
be canceled by sending OneChronos an OrderCancelRequest
. Cancellations are accepted via an ExecutionReport
message and rejected via OrderCancelReject
.ClOrdID
- Tag
- 11
- Type
string
- Description
- A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs.
- Required
Y
- Validation
strLen(it) > 0 && strLen(it) <= 32
OrderID
- Tag
- 37
- Type
string
- Description
- An identifier assigned by OneChronos to all orders entered via
NewOrderSingle
. In contexts where anOrderID
is required but not available, e.g., when sending anOrderCancelReject
in response to an unknown order, OrderID will be populated withNONE
. - Required
N
- Validation
case it {None: true} {Some orderId: strLen(orderId) > 0 && strLen(orderId) <= 32}
OrderQty
- Tag
- 38
- Type
Qty
- Description
- The number of shares for the order.
- Required
N
OrigClOrdID
- Tag
- 41
- Type
string
- Description
- The
ClOrdID
of the previous order in a FIX cancel/replace chain. Clients should always setOrigClOrdID
to the most recent non-rejectedClOrdID
sent; when populatingOrigClOrdID
OneChronos will always use the last acceptedClOrdID
. - Required
N
- Validation
case it {None: true} {Some orderId: strLen(orderId) > 0 && strLen(orderId) <= 32}
Side
- Tag
- 54
- Type
Side
- Description
- The side of an order.
- Required
Y
- Validation
it == state.Side
- Enum values
BUY: 1
Order is a buy.SELL: 2
Order is a long sell.
Symbol
- Tag
- 55
- Type
string
- Description
- The symbol (ticker) of the instrument being traded. See Symbology for additional details.
- Required
Y
- Validation
it == state.Symbol
TransactTime
- Tag
- 60
- Type
UTCTimestamp
- Description
- A UTC timestamp indicating when a transaction occurred. Internally, OneChronos logs events at microsecond or higher precision but disseminates time msgFields with millisecond precision. Subscribers desiring microsecond precision timestamps can enable them on a port level.
- Required
Y
AnalyticsTags
- Tag
- 20001
- Type
string
- Description
- An optional Subscriber/Customer 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.
- Required
N
Message Validations
state.orderEntry.isConnected
isUnusedClOrdId(this.ClOrdID)
isLegalCancelOrder(this.OrderID, this.OrigClOrdID)
isMarketHours()
isLegalStateForCancelOrModify(state.OrdStatus)
OrderCancelReplaceRequest (G)
Subscribers may request that an order entered viaNewOrderSingle
be modified by sending OneChronos an OrderCancelReplaceRequest
. Modifications are accepted via an ExecutionReport
message and rejected via OrderCancelReject
. Only a subset of the Order's fields can be modified. See the field validations below to determine which fields are eligible for modification.Account
- Tag
- 1
- Type
string
- Description
- A client supplied account identifier.
- Required
N
- Validation
case it {None: true} {Some account: strLen(account) > 0 && strLen(account) <= 32}
ClOrdID
- Tag
- 11
- Type
string
- Description
- A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs.
- Required
Y
- Validation
strLen(it) > 0 && strLen(it) <= 32
ExecInst
- Tag
- 18
- Type
ExecInst
- Description
- Order handling instructions; multiple instructions can be specified in a space delimited list.
- Required
N
- Validation
it == state.ExecInst
- Enum values
MID_PRICE_PEG: M
Execute at a price equal to or more favorable than the midpoint of the NBBO.PRIMARY_PEG: R
Execute at a price equal to or more favorable than the NBB in the case of a buy order or the NBO in the case of a sell order.MARKET_PEG: P
Execute at a price equal to or more favorable than the NBO in the case of a buy order or the NBB in the case of a sell order.CONDITIONAL: c
Conditional indication.FIRM_UP: u
Firm up associated with a conditional invitation.OPT_IN_TRIGGER_CONDITIONAL_INVITE: d
Opt-in to triggering conditional invitations. Can only be used on firm orders targeting a user defined Nexus, not base.OPT_OUT_MATCH_WITH_FIRM_UP: j
Opt-out of matching with firm up orders in OneChronos auctions. Can only be used on firm orders.
HandlInst
- Tag
- 21
- Type
HandlInst
- Description
HandlInst
is required by FIX, but not used by OneChronos.- Required
Y
- Enum values
AUTOMATED_EXECUTION_NO_INTERVENTION: 1
Required by FIX, but not used by OneChronos.
OrderQty
- Tag
- 38
- Type
Qty
- Description
- The number of shares for the order.
- Required
N
- Validation
isLegalModifyQty(it)
OrdType
- Tag
- 40
- Type
OrdType
- Description
- The type of an order.
- Required
Y
- Validation
it == state.OrdType
- Enum values
LIMIT: 2
Order is eligible for execution at a price equal to or more favorable thanPrice
.PEGGED: P
Order is eligible for execution at a price equal to or more favorable than a computed price per the peg instructions given inExecInst
andPegDifference
.
OrigClOrdID
- Tag
- 41
- Type
string
- Description
- The
ClOrdID
of the previous order in a FIX cancel/replace chain. Clients should always setOrigClOrdID
to the most recent non-rejectedClOrdID
sent; when populatingOrigClOrdID
OneChronos will always use the last acceptedClOrdID
. - Required
Y
- Validation
strLen(it) > 0 && strLen(it) <= 32
Price
- Tag
- 44
- Type
Price
- Description
- The limit price of an order.
- Required
N
Rule80A
- Tag
- 47
- Type
Rule80A
- Description
- The capacity of an order. For US equities, order capacity is in reference to Rule 80A.
- Required
Y
- Validation
it == state.Rule80A
- Enum values
AGENCY_SINGLE_ORDER: A
Broker is executing in an pure agency capacity.PRINCIPAL: P
Broker is executing as a principal in the transaction.RISKLESS_PRINCIPAL: R
Broker is executing as a riskless principal in the transaction.
Side
- Tag
- 54
- Type
Side
- Description
- The side of an order.
- Required
Y
- Validation
it == state.Side
- Enum values
BUY: 1
Order is a buy.SELL: 2
Order is a long sell.
Symbol
- Tag
- 55
- Type
string
- Description
- The symbol (ticker) of the instrument being traded. See Symbology for additional details.
- Required
Y
- Validation
it == state.Symbol
TimeInForce
- Tag
- 59
- Type
TimeInForce
- Description
- A field governing how long an order will remain active for.
- Required
Y
- Validation
it == state.TimeInForce
- Enum values
DAY: 0
Order will remain active throughout the regular trading session.IMMEDIATE_OR_CANCEL: 3
Order will be canceled after participating in one auction.FILL_OR_KILL: 4
Order will be canceled unless it can be filled in entirety in one auction; partial fills are not allowed.GOOD_TILL_DATE: 6
Order will remain active until the time specified byExpireTime
.
TransactTime
- Tag
- 60
- Type
UTCTimestamp
- Description
- A UTC timestamp indicating when a transaction occurred. Internally, OneChronos logs events at microsecond or higher precision but disseminates time msgFields with millisecond precision. Subscribers desiring microsecond precision timestamps can enable them on a port level.
- Required
Y
MinQty
- Tag
- 110
- Type
Qty
- Description
- The minimum permissible fill quantity for an order.
- Required
N
- Validation
case it {None: true} {Some qty: qty > 0.0}
ExpireTime
- Tag
- 126
- Type
UTCTimestamp
- Description
- When
TimeInForce=GOOD_TILL_DATE
ExpireTime
must be populated with the desired expiry time. - Required
N
- Validation
it == state.ExpireTime
PegDifference
- Tag
- 211
- Type
PriceOffset
- Description
- Amount (signed) added to the price of the peg for a pegged order.
- Required
N
AnalyticsTags
- Tag
- 20001
- Type
string
- Description
- An optional Subscriber/Customer 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.
- Required
N
- Validation
case it {None: true} {Some _analyticsTags: it == state.AnalyticsTags}
ExpressiveBidURI
- Tag
- 20004
- Type
string
- Description
- The Expressive Bid URI.
- Required
N
ExpressiveBidArgument1
- Tag
- 20009
- Type
string
- Description
- Expressve Bid argument 1.
- Required
N
ExpressiveBidArgument2
- Tag
- 20010
- Type
string
- Description
- Expressve Bid argument 2.
- Required
N
ExpressiveBidArgument3
- Tag
- 20011
- Type
string
- Description
- Expressve Bid argument 3.
- Required
N
ExpressiveBidArgument4
- Tag
- 20012
- Type
string
- Description
- Expressve Bid argument 4.
- Required
N
Message Validations
state.orderEntry.isConnected
isUnusedClOrdId(this.ClOrdID)
this.OrigClOrdID == state.ClOrdID
isMarketHours()
isLegalStateForCancelOrModify(state.OrdStatus)
this.OrdType == OrdType.Limit ==> present(state.Price)
present(this.MinQty) ==> (
case this.MinQty
{ None: true }
{ Some minQty: minQty <= this.OrderQty })
present(this.PegDifference) ==> this.ExecInst in {|MidPricePeg, PrimaryPeg, MarketPeg|}
!present(this.ExpressiveBidURI)
&&
!present(this.ExpressiveBidArgument1)
&&
!present(this.ExpressiveBidArgument2)
&&
!present(this.ExpressiveBidArgument3)
&&
!present(this.ExpressiveBidArgument4)
To Subscriber
ExecutionReport (8)
Execution reports are sent by OneChronos to Subscriber to acknowledge order entry and cancellation, communicate fills (both partial and complete), and notify Subscriber when the state of an order changes due to venue or order specific lifecycle events. The following msgFields are common to all execution reports. Order state specific reports contain additional msgFields, as indicated below this section.Account
- Tag
- 1
- Type
string
- Description
- A client supplied account identifier.
- Required
Y
- Validation
it == state.Account
AvgPx
- Tag
- 6
- Type
Price
- Description
- An average price computed across all fills for an order.
- Required
Y
ClOrdID
- Tag
- 11
- Type
string
- Description
- A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs.
- Required
Y
- Validation
it == state.ClOrdID
CumQty
- Tag
- 14
- Type
Qty
- Description
- The aggregate filled quantity computed across all fills for an order.
- Required
Y
- Validation
it >= 0.0
ExecID
- Tag
- 17
- Type
string
- Description
- A unique ID for each execution report sent from OneChronos to Subscriber.
- Required
Y
ExecInst
- Tag
- 18
- Type
ExecInst
- Description
- Order handling instructions; multiple instructions can be specified in a space delimited list.
- Required
N
- Validation
it == state.ExecInst
- Enum values
MID_PRICE_PEG: M
Execute at a price equal to or more favorable than the midpoint of the NBBO.PRIMARY_PEG: R
Execute at a price equal to or more favorable than the NBB in the case of a buy order or the NBO in the case of a sell order.MARKET_PEG: P
Execute at a price equal to or more favorable than the NBO in the case of a buy order or the NBB in the case of a sell order.CONDITIONAL: c
Conditional indication.FIRM_UP: u
Firm up associated with a conditional invitation.OPT_IN_TRIGGER_CONDITIONAL_INVITE: d
Opt-in to triggering conditional invitations. Can only be used on firm orders targeting a user defined Nexus, not base.OPT_OUT_MATCH_WITH_FIRM_UP: j
Opt-out of matching with firm up orders in OneChronos auctions. Can only be used on firm orders.
ExecTransType
- Tag
- 20
- Type
ExecTransType
- Description
- Identifies the type of a transaction.
- Required
Y
- Validation
it == ExecTransType.New
- Enum values
NEW: 0
A new execution report.CANCEL: 1
Cancellation of a previously sent execution report.
LastPx
- Tag
- 31
- Type
Price
- Description
- The price of the last fill.
- Required
N
LastShares
- Tag
- 32
- Type
Qty
- Description
- The quantity of the last fill.
- Required
N
OrderID
- Tag
- 37
- Type
string
- Description
- An identifier assigned by OneChronos to all orders entered via
NewOrderSingle
. In contexts where anOrderID
is required but not available, e.g., when sending anOrderCancelReject
in response to an unknown order, OrderID will be populated withNONE
. - Required
Y
- Validation
it == state.OrderID
OrderQty
- Tag
- 38
- Type
Qty
- Description
- The number of shares for the order.
- Required
Y
- Validation
it == state.OrderQty
OrdStatus
- Tag
- 39
- Type
OrdStatus
- Description
- The state of the order. State transitions are governed per the FIX order state transition rules.
- Required
Y
- 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.
OrdType
- Tag
- 40
- Type
OrdType
- Description
- The type of an order.
- Required
Y
- Validation
it == state.OrdType
- Enum values
LIMIT: 2
Order is eligible for execution at a price equal to or more favorable thanPrice
.PEGGED: P
Order is eligible for execution at a price equal to or more favorable than a computed price per the peg instructions given inExecInst
andPegDifference
.
OrigClOrdID
- Tag
- 41
- Type
string
- Description
- The
ClOrdID
of the previous order in a FIX cancel/replace chain. Clients should always setOrigClOrdID
to the most recent non-rejectedClOrdID
sent; when populatingOrigClOrdID
OneChronos will always use the last acceptedClOrdID
. - Required
N
Price
- Tag
- 44
- Type
Price
- Description
- The limit price of an order.
- Required
N
- Validation
it == state.Price
Rule80A
- Tag
- 47
- Type
Rule80A
- Description
- The capacity of an order. For US equities, order capacity is in reference to Rule 80A.
- Required
Y
- Validation
it == state.Rule80A
- Enum values
AGENCY_SINGLE_ORDER: A
Broker is executing in an pure agency capacity.PRINCIPAL: P
Broker is executing as a principal in the transaction.RISKLESS_PRINCIPAL: R
Broker is executing as a riskless principal in the transaction.
Side
- Tag
- 54
- Type
Side
- Description
- The side of an order.
- Required
Y
- Validation
it == state.Side
- Enum values
BUY: 1
Order is a buy.SELL: 2
Order is a long sell.
Symbol
- Tag
- 55
- Type
string
- Description
- The symbol (ticker) of the instrument being traded. See Symbology for additional details.
- Required
Y
- Validation
it == state.Symbol
Text
- Tag
- 58
- Type
string
- Description
- 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
TimeInForce
- Tag
- 59
- Type
TimeInForce
- Description
- A field governing how long an order will remain active for.
- Required
Y
- Validation
it == state.TimeInForce
- Enum values
DAY: 0
Order will remain active throughout the regular trading session.IMMEDIATE_OR_CANCEL: 3
Order will be canceled after participating in one auction.FILL_OR_KILL: 4
Order will be canceled unless it can be filled in entirety in one auction; partial fills are not allowed.GOOD_TILL_DATE: 6
Order will remain active until the time specified byExpireTime
.
TransactTime
- Tag
- 60
- Type
UTCTimestamp
- Description
- A UTC timestamp indicating when a transaction occurred. Internally, OneChronos logs events at microsecond or higher precision but disseminates time msgFields with millisecond precision. Subscribers desiring microsecond precision timestamps can enable them on a port level.
- Required
Y
FutSettDate
- Tag
- 64
- Type
LocalMktDate
- Description
- Specific date of trade settlement
- Required
N
TradeDate
- Tag
- 75
- Type
LocalMktDate
- Description
- Indicates date of trade
- Required
N
OrdRejReason
- Tag
- 103
- Type
OrdRejReason
- Description
- An error code indicating why a
NewOrderSingle
(type=ORDER_SINGLE
) was rejected. - Required
N
- Enum values
BROKER_OPTION: 0
Order violates one or more aspects of the venue order entry specification not enumerated byOrdRejReason
.UNKNOWN_SYMBOL: 1
Order references an unknownSymbol
orSymbolSfx
.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 aClOrdID
that is currently in use.INVALID_EXPRESSIVE_BID_URI: 9
The expressive bid URI and/or arguments associated with anOrderSingle
was invalid.
MinQty
- Tag
- 110
- Type
Qty
- Description
- The minimum permissible fill quantity for an order.
- Required
N
- Validation
it == state.MinQty
ExpireTime
- Tag
- 126
- Type
UTCTimestamp
- Description
- When
TimeInForce=GOOD_TILL_DATE
ExpireTime
must be populated with the desired expiry time. - Required
N
- Validation
it == state.ExpireTime
ExecType
- Tag
- 150
- Type
ExecType
- Description
- The type of an
ExecutionReport
. See the section on FIX order state transitions for additional details. - Required
Y
- Enum values
NEW: 0
Report is anExecutionReport-Acknowledgement
.PARTIAL_FILL: 1
Report is anExecutionReport-PartialFill
.FILL: 2
Report is anExecutionReport-Fill
.CANCELED: 4
Execution report is anExecutionReport-Cancel
orExecutionReport-UnsolicitedCancel
.REPLACED: 5
Execution report is anExecutionReport-Replace
.PENDING_CANCEL: 6
Execution report is anExecutionReport-PendingCancel
.REJECTED: 8
Execution report is anExecutionReport-BusinessReject
.EXPIRED: C
Report is anExecutionReport-Expired
.PENDING_REPLACE: E
Report is anExecutionReport-PendingReplace
.
LeavesQty
- Tag
- 151
- Type
Qty
- Description
- The remaining (unfilled) quantity of an order open for additional fills. If
OrdStatus
isCANCELED
,EXPIRED
, orREJECTED
LeavesQty=0
. Otherwise,LeavesQty=OrderQty - CumQty
. - Required
Y
- Validation
it == 0.0 || it == leavesQty()
PegDifference
- Tag
- 211
- Type
PriceOffset
- Description
- Amount (signed) added to the price of the peg for a pegged order.
- Required
N
- Validation
it == state.PegDifference
TradeLiquidityIndicator
- Tag
- 9730
- Type
string
- Description
- An indicator code containing alphanumeric strings (up to four characters) that represent the type of the trade (e.g. conditional firm up) and associated fee.
- Required
N
AnalyticsTags
- Tag
- 20001
- Type
string
- Description
- An optional Subscriber/Customer 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.
- Required
N
- Validation
it == state.AnalyticsTags
OmniverseTags
- Tag
- 20003
- Type
string
- Description
- An optional string passing back the the Omniverse arguments of an order
- Required
N
AuctionID
- Tag
- 20005
- Type
int
- Description
- A unique identifier assigned by OneChronos to each auction.
- Required
N
AuctionSubID
- Tag
- 20006
- Type
int
- Description
- A unique identifier assigned by OneChronos to each atomic symbol within a given auction. Any given
AuctionID
can have zero or more values ofAuctionSubID
associated with it. - Required
N
CancelReason
- Tag
- 20007
- Type
CancelReason
- Description
- An indicator code detailing why an an order was canceled
- Required
N
- Enum values
UNSPECIFIED: 0
Unspecified - no additional information is availableUSER_INITIATED: 1
The user initiated the cancelIOC: 2
The cancelation was sent as the result of an Immediate or Cancel (IOC) order expiring either partially filled or unfilled.FOK: 3
The cancelation was sent as the result of a Fill or Kill (FOK) order expiring 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.CONDITIONAL_INVITATION: 8
The cancelation was sent as the result of a conditional invitation.
LastNexusID
- Tag
- 20008
- Type
string
- Description
- The NexusID associated with a fill. If the order was filled in Base, this field is left empty.
- Required
N
Message Validations
state.orderEntry.isConnected
this.ExecType in [ExecType.PartialFill, ExecType.Fill] ==>
present(this.LastPx) &&
present(this.LastShares) &&
present(this.FutSettDate) &&
present(this.TradeDate) &&
present(this.TradeLiquidityIndicator) &&
present(this.AuctionID) &&
present(this.AuctionSubID)
!(this.ExecType in [ExecType.PartialFill, ExecType.Fill]) ==>
!(
present(this.AuctionID) ||
present(this.AuctionSubID)) ||
present(this.FutSettDate) ||
present(this.TradeDate) ||
present(this.TradeLiquidityIndicator)
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)
present(this.OmniverseTags) ==> this.ExecType in [
ExecType.Fill, ExecType.PartialFill,
ExecType.New, ExecType.Replaced, ExecType.PendingReplace,
ExecType.Canceled, ExecType.PendingCancel
]
present(this.LastNexusID) ==> this.ExecType in [ExecType.Fill, ExecType.PartialFill]
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
- Tag
- 1
- Type
string
- Description
- A client supplied account identifier.
- Required
N
- Validation
it == state.Account
ClOrdID
- Tag
- 11
- Type
string
- Description
- A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs.
- Required
Y
- Validation
it == state.ClOrdID
OrderID
- Tag
- 37
- Type
string
- Description
- An identifier assigned by OneChronos to all orders entered via
NewOrderSingle
. In contexts where anOrderID
is required but not available, e.g., when sending anOrderCancelReject
in response to an unknown order, OrderID will be populated withNONE
. - Required
Y
OrdStatus
- Tag
- 39
- Type
OrdStatus
- Description
- The state of the order. State transitions are governed per the FIX order state transition rules.
- Required
Y
- 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.
OrigClOrdID
- Tag
- 41
- Type
string
- Description
- The
ClOrdID
of the previous order in a FIX cancel/replace chain. Clients should always setOrigClOrdID
to the most recent non-rejectedClOrdID
sent; when populatingOrigClOrdID
OneChronos will always use the last acceptedClOrdID
. - Required
N
Text
- Tag
- 58
- Type
string
- Description
- 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
CxlRejReason
- Tag
- 102
- Type
CxlRejReason
- Description
- An error code indicating why a
OrderCancelRequest
(type=ORDER_CANCEL_REQUEST
) was rejected. - Required
Y
- Enum values
TOO_LATE_TO_CANCEL: 0
Cancellation request received after order was filled in entirety.UNKNOWN_ORDER: 1
TheClOrdID
referenced in theOrderCancelRequest
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
The expressive bid URI and/or arguments was invalid; only applicable whenCxlRejResponseTo=2
(OrderCancelReplaceRequest (G)).
CxlRejResponseTo
- Tag
- 434
- Type
CxlRejResponseTo
- Description
- Indicates the type of order cancel request that a
OrderCancelReject
is in response to. - Required
Y
- Enum values
ORDER_CANCEL_REQUEST: 1
A response to anOrderCancelRequest (F)
ORDER_CANCEL_REPLACE_REQUEST: 2
A response to aaOrderCancelReplaceRequest (G)
Message Validations
state.orderEntry.isConnected
TradeBust (UCC)
TradeBust
messages are sent to Subscriber to report trade breaks. Only full breaks (cancellations) ExecTransType=CANCEL
are supported.Report Specializations
ExecutionReport
is used for many purposes, such as conveying the acceptance of
an order or communicating fills to Subscriber. The ExecutionReport
types sent
by OneChronos are enumerated below. The rules that OneChronos uses to compute
OrdStatus
are strictly compliant with FIX, and outlined as a state transition
matrix in the section on Order States.
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: 12
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
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
andExecutionReport-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
Allow Short Sales
Side=SELL_SHORT
or Side=SELL_SHORT_EXEMPT
.Allow Test Symbols
Cancel On Disconnect
Cancel on Halt
Fat Finger Percent Delta
Parameters:
- Name:
maxPctDelta
Description: The maximum percent delta.Type:number
Default Value:10.0
Validation:
this.maxPctDelta >= 0.000001 && this.maxPctDelta <= 10.0
Maximum Notional Value
Parameters:
- Name:
maxValue
Description: Max notional value.Type:number
Default Value:1,000,000,000
Validation:
this.maxValue >= 1.0 && this.maxValue <= 1,000,000,000
Maximum Order Shares
Parameters:
- Name:
maxValue
Description: Max shares for a single order.Type:integer
Default Value:10,000,000
Validation:
this.maxValue >= 1 && this.maxValue <= 10,000,000
Self-Match Prevention
SUBSCRIBER
, orders will not match against other orders from the same Subscriber. When set to MPID
, orders will not match against other orders from the same MPID as determined by OnBehalfOfCompID or the port level default MPID. 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 preventionMPID: 1
MPID-level self match preventionSENDER_COMP_ID: 2
Session/SenderCompID self match prevention
Symbology Type
Parameters:
- Name:
symbologyType
Type:enum
Default Value:CMS_CONCATENATED
Enum values:CMS_CONCATENATED: 0
Use CMS Concatenated symbology for symbols requiring a suffix.CMS_SUFFIX: 1
Use CMS Suffix symbology for symbols requiring a suffix.NASDAQ_INTEGRATED: 2
Use NASDAQ Integrated symbology for symbols requiring a suffix.
Timestamp Accuracy
ExecutionReport
.Parameters:
- Name:
timestampPrecision
Type:enum
Default Value:Milli
Enum values:MILLI: 0
Millisecond timestamp reportingMICRO: 1
Microsecond timestamp reportingNANO: 2
Naonsecond timestamp reporting
Trade Break Reporting
TradeBreak
reporting.Drop Copy Port Settings
Drop Copy Type
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
OnlyExecutionReport-Fill
andExecutionReport-PartialFill
messages are forwarded to the drop copy session.
Trade Break Reporting
TradeBreak
reporting.