FIX Integration
US Equities ATS - FIX 4.2 Specification
Expressive Bidding
OneChronos exposes Expressive Bidding functionality in a way that fits within
existing workflows. The corresponding order entry FIX tags are ExpressiveBidURI
and associated
argument tags (e.g. ExpressiveBidArgument1
). Expressive Bidding is entirely optional.
OneChronos documents such as Subscriber Agreements, Expressive Bidding Terms of Service agreements, regulatory filings, API documentation, and other collateral may make reference to "Target Orders" for Expressive Bidding. For the purpose of this specification, any order which contains an "Expressive Bid URI" tag is considered a Target Order.
Market Hours
OneChronos supports trading during "normal" US equities market hours (9:30am-4pm EST). A pre-market order entry period runs from 9:15am-9:30am during which Subscribers can enter orders that will participate in the first auction of the trading day, at or after 9:30am EST. Open FIX sessions are logged out and disconnected at 5:00pm. Subscribers can reestablish a session at or after 8am EST the following day. Incoming and outgoing sequence numbers are reset to one nightly.
All times EST, and on the half-closed interval [Start Time, End Time)
Phase | Start Time | End Time |
---|---|---|
FIX connections / Sessions Accepted (No Order Entry) | 8:00am | 9:15am |
Pre-Market Order Entry | 9:15am | 9:30am |
Regular Market Session | 9:30am | 4:00pm |
Post-Market (ExecutionReport and TradeCancelCorrect only) | 4:00pm | 5:00pm |
FIX Session Logout/Sequence Reset | 5:00pm | 5:01pm |
Order Types
OneChronos supports limit and pegged order types; only limit orders with ExpressiveBidURI
field are
eligible for Expressive Bidding.
A detailed explanation of OneChronos order types is available in ATS-N; the OneChronos FAQ and Nexus FAQ (please ask your sales representative for access) are additional resources on order types and Expressive Bidding.
All Messages
General Notes
To ensure correctness and an easy interop OneChronos uses a FIX engine and order management system programmatically generated from a formal specification. The specification is written in Imandra Protocol Language (IPL). Excerpts of the model that pertain to field and message validation are included in this documentation.
Standard Header
The "Standard Header" is included at the beginning of every FIX message. The first three tags (BeginString
, BodyLength
, and type
) must appear in that exact order.
BeginString
A delimiter identifying the start of a new FIX message. BeginString
must be the first field present in every FIX message.
Required
YType
stringValidation
it == "FIX.4.2"
BodyLength
Message length, in bytes, of all characters up to and including the delimiter preceding the CheckSum
field. BodyLength
must be the second field present in every FIX message.
Required
YType
intMsgSeqNum
The message sequence number, per the rules governing message sequence numbers.
Required
YType
intMsgType
The type of the FIX message. MsgType
must be the third field present in every FIX message.
Required
YType
stringEnum values
HEARTBEAT: 0
- Message is a
Heartbeat
. TEST_REQUEST: 1
- Message is a
TestRequest
. RESEND_REQUEST: 2
- Message is a
ResendRequest
. REJECT: 3
- Message is a
Reject
. SEQUENCE_RESET: 4
- Message is a
SequenceReset
. LOGOUT: 5
- Message is a
Logout
. EXECUTION_REPORT: 8
- Message is a
ExecutionReport
. ORDER_CANCEL_REJECT: 9
- Message is an
OrderCancelReject
. LOGON: A
- Message is a
Logon
. ORDER_SINGLE: D
- Message is a
NewOrderSingle
. ORDER_CANCEL_REQUEST: F
- Message is a
OrderCancelRequest
. ORDER_CANCEL_REPLACE_REQUEST: G
- Message is a
OrderCancelReplaceRequest
. BUSINESS_MESSAGE_REJECT: j
- Message is a
BusinessMessageReject
. TRADE_BUST: UCC
- Message is a
TradeBust
.
PossDupFlag
A flag indicating whether a message is a possible session level retransmission, per the message delivery rules.
Required
NType
booleanEnum values
POSSIBLE_DUPLICATE: Y
- Message is a possible retransmission.
ORIGINAL_TRANSMISSION: N
- Message is guaranteed to be an original transmission.
SenderCompID
OneChronos will assign this identifier as part of customer onboarding. Messages sent to OneChronos must always include Subscriber's assigned SenderCompID
.
Required
YType
stringSendingTime
The time of message transmission (always in UTC). OneChronos supports UTC timestamps at second, millisecond, or microsecond precision.
Required
YType
utctimestampTargetCompID
The logical mirror of SenderCompID. Messages received from OneChronos will always have this field set to the SenderCompID assigned to you by us.
Required
YType
stringPossResend
A flag indicating whether a message is a possible business level retransmission, per the message delivery rules. For messages sent to OneChronos, any value other than 'N' will trigger a rejection. OneChronos will never populate this field.
Required
NType
booleanEnum values
POSSIBLE_DUPLICATE: Y
- Message is a possible retransmission.
ORIGINAL_TRANSMISSION: N
- Message is guaranteed to be an original transmission.
OnBehalfOfCompID
Must be a valid NSCC MPID if present. Populating OnBehalfOfCompID
will override the default port level MPID.
Required
NType
stringOrigSendingTime
Required by the FIX spec for orders where PossDupFlag=Y
.
Required
NType
utctimestampDeliverToCompID
When a Subscriber populates OnBehalfOfCompId
any message sent in response by OneChronos will populate this field with the value of OnBehalfOfCompId
specified by Subscriber.
Required
NType
stringStandard Trailer
The "Standard Trailer" is included at the end of every FIX message. CheckSum
must appear as the last field.
CheckSum
A message checksum per the checksum calculation instructions.
Required
YType
intAdministrative 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
Must be present if sent in response to a TestRequest message.
Required
NType
stringTestRequest (1)
TestRequest
messages are used to explicitly request a Heartbeat
from the counterparty when none is received. Applications should send a TestRequest
whenever the agreed upon heartbeat interval plus one second (HeartBtInt+1
) has elapsed without the receipt of a message, Heartbeat
or otherwise. If a Heartbeat
is not received promptly thereafter, the FIX session should be disconnected on the network level without attempting to send another message. Logon and message recovery procedures can proceed thereafter. A TestRequest
can be sent by Subscriber to OneChronos, or by OneChronos to Subscriber.
TestReqID
An identifier for use with TestRequest
and Heartbeat
messages.
Required
YType
stringResendRequest (2)
Request that one or more messages be retransmitted, per the procedures outlined in the section on FIX message Recovery. A ResendRequest
can be sent by Subscriber to OneChronos, or by OneChronos to Subscriber.
BeginSeqNo
Message sequence number of first message in range to be resent.
Required
YType
intEndSeqNo
Message sequence number of last message in range to be resent. If request is for a single message BeginSeqNo = EndSeqNo. If request is for all messages subsequent to a particular message, EndSeqNo = "0" (representing infinity).
Required
YType
intReject (3)
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
The sequence number of the message being referenced.
Required
YType
intText
Free form text. Subscribers can populate this field for internal use; OneChronos may populate this field to provide additional context to Subscriber when sending a rejection.
Required
NType
stringRefTagID
Always present when the rejection was triggered by a specific tag. If multiple tags are invalid, RefTagID
will be populated for the first invalid tag.
Required
NType
intRefMsgType
Always present when type
is parsable on the message being rejected.
Required
NType
stringSessionRejectReason
An error code indicating why a message was rejected on the session level.
Required
YType
intEnum values
INVALID_TAG_NUMBER: 0
- One or more tag numbers fall outside of the legal tag range [1, 29999].
REQUIRED_TAG_MISSING: 1
- A required tag is missing.
TAG_NOT_DEFINED_FOR_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 the
SenderCompID
orTargetCompID
is invalid. SENDING_TIME_ACCURACY_PROBLEM: 10
- The differential between
SendingTime
and message receipt by OneChronos is too large. INVALID_MESSAGE_TYPE: 11
- The message specifies a
type
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
The next expected sequence number, per the rules governing message sequence numbers.
Required
YType
intGapFillFlag
Indicates whether a SequenceReset
is of type SequenceReset-Gap-Fill
or SequenceReset-Reset
. See Message Delivery for additional details.
Required
NType
booleanEnum values
GAP_FILL_MESSAGE_MSGSEQNUM_FIELD_VALID: Y
- Message is a
SequenceReset-Gap-Fill
; this is the correct value to use for message recovery/non disaster situations. SEQUENCE_RESET_IGNORE_MSGSEQNUM: N
- Message is a
SequenceReset-Reset
; reset the counterparty's sequence expected incoming sequence number, without performing message recovery.
Logout (5)
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
Free form text. Subscribers can populate this field for internal use; OneChronos may populate this field to provide additional context to Subscriber when sending a rejection.
Required
NType
stringLogon (A)
Clients must send a Logon
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
An enum value representing the type of Layer 6 encryption that should be used for the FIX dialogue. Required by the FIX standard, but not used by OneChronos.
Required
YType
intValidation
it == EncryptMethod.NONE
Enum values
NONE: 0
- Do not use encryption.
HeartBtInt
The desired interval, in seconds, between heartbeats. See Heartbeats for additional details.
Required
YType
intValidation
it >= 5 && it <= 180
BusinessMessageReject (j)
BusinessMessageReject
messages are sent when a field validation is violated in a FIX message. (e.g. field length constraint)
RefSeqNum
The sequence number of the message being referenced.
Required
NType
intText
Free form text. Subscribers can populate this field for internal use; OneChronos may populate this field to provide additional context to Subscriber when sending a rejection.
Required
NType
stringRefMsgType
Always present when type
is parsable on the message being rejected.
Required
YType
stringBusinessRejectReason
An error code indicating why a message was rejected by a BusinessMessageReject
Required
YType
intEnum values
OTHER: 0
- Order violates one or more aspects of the venue order entry field specification
APPLICATION_NOT_AVAILABLE: 4
- In production and UAT environments, this status code indicates that the FIX gateway is temporarily unavailable and not accepting business messages. In certification, this status code and Tag 58 indicate what FIX business logic validations failed.
THROTTLE_LIMIT_EXCEEDED: 99
- Throttle limit exceeded
From Subscriber
NewOrderSingle (D)
NewOrderSingle
messages are sent by Subscriber to OneChronos to initiate a new order. OneChronos supports OrdType=LIMIT
and OrdType=PEGGED
orders.
Account
A client supplied account identifier.
Required
NType
stringValidation
case it
{None: true}
{Some account: strLen(account) <= 32}
ClOrdID
A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs.
Required
YType
stringValidation
strLen(it) > 0 && strLen(it) <= 32
ExecInst
Order handling instructions; multiple instructions can be specified in a space delimited list.
Required
NType
ExecInstValidation
case it
{None: true}
{Some execInst: subset(execInst, {|
MidPricePeg,
PrimaryPeg,
MarketPeg,
Conditional,
FirmUp,
OptInTriggerConditionalInvite,
OptOutMatchWithFirmUp
|})}
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
HandlInst
is required by FIX, but not used by OneChronos.
Required
YType
HandlInstEnum values
AUTOMATED_EXECUTION_NO_INTERVENTION: 1
- Required by FIX, but not used by OneChronos.
OrderQty
The number of shares for the order.
Required
YType
QtyValidation
it > 0.0
OrdType
The type of an order.
Required
YType
OrdTypeEnum values
LIMIT: 2
- Order is eligible for execution at a price equal to or more favorable than
Price
. PEGGED: P
- Order is eligible for execution at a price equal to or more favorable than a computed price per the peg instructions given in
ExecInst
andPegDifference
.
Price
The limit price of an order.
Required
NType
PriceValidation
case it {None: true} {Some price: price > 0.0}
Rule80A
The capacity of an order. For US equities, order capacity is in reference to Rule 80A.
Required
YType
Rule80AEnum 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
The side of an order.
Required
YType
SideEnum values
BUY: 1
- Order is a buy.
SELL: 2
- Order is a long sell.
SELL_SHORT: 5
- Order is a short sell.
SELL_SHORT_EXEMPT: 6
- Order is a short sell, exempt from restrictions such as Reg 201 in the case of US equities.
Symbol
The symbol (ticker) of the instrument being traded. See Symbology for additional details.
Required
YType
stringValidation
strLen(it) > 0 && strLen(it) <= 32
TimeInForce
A field governing how long an order will remain active for.
Required
YType
TimeInForceEnum values
DAY: 0
- Order will remain active throughout the regular trading session.
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 by
ExpireTime
.
TransactTime
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
YType
UTCTimestampSymbolSfx
A suffix for the symbol (ticker) being traded, when applicable. See Symbology for additional details.
Required
NType
stringValidation
case it
{None: true}
{Some symbolSfx: strLen(symbolSfx) <= 32}
MinQty
The minimum permissible fill quantity for an order.
Required
NType
QtyValidation
case it
{None: true}
{Some qty: qty > 0.0}
LocateReqd
A boolean flag indicating whether a locate is required when selling short. For US equities orders, any order where LocateReqd
is absent or set to Y
will result in a rejection if Side=SELL_SHORT
or Side=SELL_SHORT_EXEMPT
.
Required
NType
LocateReqdEnum values
YES: Y
- Broker attests that a locate is required for the name being traded.
NO: N
- Broker attests that a locate is not required for the name being traded.
ExpireTime
When TimeInForce=GOOD_TILL_DATE
ExpireTime
must be populated with the desired expiry time.
Required
NType
UTCTimestampPegDifference
Amount (signed) added to the price of the peg for a pegged order.
Required
NType
PriceOffsetSelfMatchPreventionID
An integer value that mediates anti-internalization (self match prevention) behavior. When set to 0
the order containing this field will not match against another order from the same Subscriber. When set to 1
the order will not match against an order from the same MPID as determined by OnBehalfOfCompID
or the port level default MPID. When set to 2
the order will not match against an order from the same SenderCompID
. When set to any value in the interval [3,65535]
the order will not match against an order with the same value for SelfMatchPreventionID
.
Required
NType
intValidation
case it
{None: true}
{Some id: id >= 0 && id <= 65535}
AnalyticsTags
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
NType
stringValidation
case it
{None: true}
{Some analyticsTags: strLen(analyticsTags) <= 32}
ExpressiveBidURI
The Expressive Bid URI.
Required
NType
stringExpressiveBidArgument1
Expressve Bid argument 1.
Required
NType
stringExpressiveBidArgument2
Expressve Bid argument 2.
Required
NType
stringExpressiveBidArgument3
Expressve Bid argument 3.
Required
NType
stringExpressiveBidArgument4
Expressve Bid argument 4.
Required
NType
stringLegID
The ID associated with a multi-symbol expressive bid.
Required
NType
intValidation
case it
{None: true}
{Some id: id < 255}
BasketID
The ID associated with a multi-symbol expressive bid.
Required
NType
stringValidation
case it
{None: true}
{Some id: strLen(id) <= 32}
InvitationID
The ID associated with a conditional invite.
Required
NType
intMessage 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
isValidSymbol(this.Symbol, this.SymbolSfx)
this.OrdType == OrdType.Limit ==> present(this.Price)
this.Side == SellShort || this.Side == SellShortExempt ==> present(this.LocateReqd) && this.LocateReqd in [LocateReqd.No]
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.SymbolSfx) ==> state.portSettings.symbologyType == CMSSuffix
present(this.MinQty) ==> (case this.MinQty
{Some minQty: minQty <= this.OrderQty }
{None: true })
present(this.PegDifference) ==> contains_peg_exec_inst(this.ExecInst)
present(internalNexusState(
this.ExpressiveBidURI, this.ExpressiveBidArgument1, this.ExpressiveBidArgument2)) ==>
(case state.nexusConfiguration
{None: !present(this.AnalyticsTags) }
{Some config: this.AnalyticsTags == (Some config.allowed_analytics_tag)}
)
validNexusFields(this.ExpressiveBidURI, this.ExpressiveBidArgument1, this.ExpressiveBidArgument2)
this.Side in [SellShort, SellShortExempt] ==>
state.portSettings.allowShortSales
!isMaxOrderSizeExceeded(this.OrderQty)
validExecInst(this.ExecInst)
contains_firm_up_exec_inst(this.ExecInst)
<==> present(this.InvitationID)
contains_firm_up_exec_inst(this.ExecInst) ==> this.Symbol == state.Symbol
contains_firm_up_exec_inst(this.ExecInst) ==>
(state.Side == Side.Buy && this.Side == Side.Buy) ||
(state.Side != Side.Buy && this.Side != Side.Buy)
(case this.InvitationID
{None: true}
{Some invitationID: (Some invitationID) == state.conditionalState.conditionalInvitationID})
state.conditionalState.firmupRequired ==> contains_firm_up_exec_inst(this.ExecInst)
state.portSettings.allowConditionalOrders && contains_opt_in_conditional_invite_exec_inst(this.ExecInst) ==>
validNexusFields(this.ExpressiveBidURI, this.ExpressiveBidArgument1, this.ExpressiveBidArgument2)
!state.portSettings.allowExpressiveBidding ==> !present(this.ExpressiveBidArgument3) && !present(this.ExpressiveBidArgument4)
&& !present(this.LegID) && !present(this.BasketID)
OrderCancelRequest (F)
Subscribers may request that an order entered via NewOrderSingle
be canceled by sending OneChronos an OrderCancelRequest
. Cancellations are accepted via an ExecutionReport
message and rejected via OrderCancelReject
.
ClOrdID
A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs.
Required
YType
stringValidation
strLen(it) > 0 && strLen(it) <= 32
OrderID
An identifier assigned by OneChronos to all orders entered via NewOrderSingle
. In contexts where an OrderID
is required but not available, e.g., when sending an OrderCancelReject
in response to an unknown order, OrderID will be populated with NONE
.
Required
NType
stringValidation
case it
{None: true}
{Some orderId: strLen(orderId) > 0 && strLen(orderId) <= 32}
OrderQty
The number of shares for the order.
Required
NType
QtyOrigClOrdID
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
.
Required
NType
stringValidation
case it
{None: true}
{Some orderId: strLen(orderId) > 0 && strLen(orderId) <= 32}
Side
The side of an order.
Required
YType
SideValidation
it == state.Side
Enum values
BUY: 1
- Order is a buy.
SELL: 2
- Order is a long sell.
SELL_SHORT: 5
- Order is a short sell.
SELL_SHORT_EXEMPT: 6
- Order is a short sell, exempt from restrictions such as Reg 201 in the case of US equities.
Symbol
The symbol (ticker) of the instrument being traded. See Symbology for additional details.
Required
YType
stringValidation
it == state.Symbol
TransactTime
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
YType
UTCTimestampSymbolSfx
A suffix for the symbol (ticker) being traded, when applicable. See Symbology for additional details.
Required
NType
stringValidation
it == state.SymbolSfx
LocateReqd
A boolean flag indicating whether a locate is required when selling short. For US equities orders, any order where LocateReqd
is absent or set to Y
will result in a rejection if Side=SELL_SHORT
or Side=SELL_SHORT_EXEMPT
.
Required
NType
LocateReqdEnum values
YES: Y
- Broker attests that a locate is required for the name being traded.
NO: N
- Broker attests that a locate is not required for the name being traded.
AnalyticsTags
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
NType
stringMessage Validations
state.orderEntry.isConnected
isUnusedClOrdId(this.ClOrdID)
isLegalCancelOrder(this.OrderID, this.OrigClOrdID)
isMarketHours()
isLegalStateForCancelOrModify(state.OrdStatus)
this.Side == SellShort || this.Side == SellShortExempt ==>
(case this.LocateReqd
{None: true}
{Some locateReqd: locateReqd == LocateReqd.No})
OrderCancelReplaceRequest (G)
Subscribers may request that an order entered via NewOrderSingle
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
A client supplied account identifier.
Required
NType
stringValidation
case it
{None: true}
{Some account: strLen(account) > 0 && strLen(account) <= 32}
ClOrdID
A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs.
Required
YType
stringValidation
strLen(it) > 0 && strLen(it) <= 32
ExecInst
Order handling instructions; multiple instructions can be specified in a space delimited list.
Required
NType
ExecInstValidation
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
HandlInst
is required by FIX, but not used by OneChronos.
Required
YType
HandlInstEnum values
AUTOMATED_EXECUTION_NO_INTERVENTION: 1
- Required by FIX, but not used by OneChronos.
OrderQty
The number of shares for the order.
Required
NType
QtyValidation
isLegalModifyQty(it)
OrdType
The type of an order.
Required
YType
OrdTypeValidation
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
andPegDifference
.
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
.
Required
YType
stringValidation
strLen(it) > 0 && strLen(it) <= 32
Price
The limit price of an order.
Required
NType
PriceRule80A
The capacity of an order. For US equities, order capacity is in reference to Rule 80A.
Required
YType
Rule80AValidation
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
The side of an order.
Required
YType
SideValidation
it == state.Side
Enum values
BUY: 1
- Order is a buy.
SELL: 2
- Order is a long sell.
SELL_SHORT: 5
- Order is a short sell.
SELL_SHORT_EXEMPT: 6
- Order is a short sell, exempt from restrictions such as Reg 201 in the case of US equities.
Symbol
The symbol (ticker) of the instrument being traded. See Symbology for additional details.
Required
YType
stringValidation
it == state.Symbol
TimeInForce
A field governing how long an order will remain active for.
Required
YType
TimeInForceValidation
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 by
ExpireTime
.
TransactTime
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
YType
UTCTimestampSymbolSfx
A suffix for the symbol (ticker) being traded, when applicable. See Symbology for additional details.
Required
NType
stringValidation
it == state.SymbolSfx
MinQty
The minimum permissible fill quantity for an order.
Required
NType
QtyValidation
case it
{None: true}
{Some qty: qty > 0.0}
LocateReqd
A boolean flag indicating whether a locate is required when selling short. For US equities orders, any order where LocateReqd
is absent or set to Y
will result in a rejection if Side=SELL_SHORT
or Side=SELL_SHORT_EXEMPT
.
Required
NType
LocateReqdEnum values
YES: Y
- Broker attests that a locate is required for the name being traded.
NO: N
- Broker attests that a locate is not required for the name being traded.
ExpireTime
When TimeInForce=GOOD_TILL_DATE
ExpireTime
must be populated with the desired expiry time.
Required
NType
UTCTimestampValidation
it == state.ExpireTime
PegDifference
Amount (signed) added to the price of the peg for a pegged order.
Required
NType
PriceOffsetAnalyticsTags
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
NType
stringValidation
case it
{None: true}
{Some _analyticsTags: it == state.AnalyticsTags}
ExpressiveBidURI
The Expressive Bid URI.
Required
NType
stringExpressiveBidArgument1
Expressve Bid argument 1.
Required
NType
stringExpressiveBidArgument2
Expressve Bid argument 2.
Required
NType
stringExpressiveBidArgument3
Expressve Bid argument 3.
Required
NType
stringExpressiveBidArgument4
Expressve Bid argument 4.
Required
NType
stringLegID
The ID associated with a multi-symbol expressive bid.
Required
NType
intValidation
case it
{None: true}
{Some _: it == state.LegID}
BasketID
The ID associated with a multi-symbol expressive bid.
Required
NType
stringValidation
case it
{None: true}
{Some _: it == state.BasketID}
Message Validations
state.orderEntry.isConnected
isUnusedClOrdId(this.ClOrdID)
this.OrigClOrdID == state.ClOrdID
isMarketHours()
isLegalStateForCancelOrModify(state.OrdStatus)
this.OrdType == OrdType.Limit ==> present(state.Price)
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.Side == SellShort || this.Side == SellShortExempt ==>
(case this.LocateReqd
{None: true}
{Some locateReqd: locateReqd == LocateReqd.No})
present(internalNexusState(
this.ExpressiveBidURI, this.ExpressiveBidArgument1, this.ExpressiveBidArgument2)) ==>
(case state.nexusConfiguration
{None: !present(this.AnalyticsTags) }
{Some config: this.AnalyticsTags == (Some config.allowed_analytics_tag)}
)
present(this.ExpressiveBidURI) ==> present(state.validatedNexusState)
validNexusFields(
this.ExpressiveBidURI, this.ExpressiveBidArgument1, this.ExpressiveBidArgument2)
!contains_firm_up_exec_inst(this.ExecInst)
!state.portSettings.allowExpressiveBidding ==> !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
A client supplied account identifier.
Required
NType
stringValidation
it == state.Account
AvgPx
An average price computed across all fills for an order.
Required
YType
PriceClOrdID
A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs.
Required
YType
stringValidation
it == state.ClOrdID
CumQty
The aggregate filled quantity computed across all fills for an order.
Required
YType
QtyValidation
it >= 0.0
ExecID
A unique ID for each execution report sent from OneChronos to Subscriber.
Required
YType
stringExecInst
Order handling instructions; multiple instructions can be specified in a space delimited list.
Required
NType
ExecInstValidation
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
Identifies the type of a transaction.
Required
YType
ExecTransTypeValidation
it == ExecTransType.New
Enum values
NEW: 0
- A new execution report.
CANCEL: 1
- Cancellation of a previously sent execution report.
LastMkt
The market of the last fill; always CGXS.
Required
NType
ExchangeValidation
case it
{None: true}
{Some lastMkt: lastMkt == Exchange.CGXS}
LastPx
The price of the last fill.
Required
NType
PriceLastShares
The quantity of the last fill.
Required
NType
QtyOrderID
An identifier assigned by OneChronos to all orders entered via NewOrderSingle
. In contexts where an OrderID
is required but not available, e.g., when sending an OrderCancelReject
in response to an unknown order, OrderID will be populated with NONE
.
Required
YType
stringValidation
it == state.OrderID
OrderQty
The number of shares for the order.
Required
YType
QtyValidation
it == state.OrderQty
OrdStatus
The state of the order. State transitions are governed per the FIX order state transition rules.
Required
YType
OrdStatusEnum values
NEW: 0
- Order is acknowledged.
PARTIALLY_FILLED: 1
- Order is partially filled.
FILLED: 2
- Order is fully filled.
CANCELED: 4
- Order was successfully canceled.
REPLACED: 5
- Order was replaced.
PENDING_CANCEL: 6
- Order is awaiting Cancellation.
REJECTED: 8
- Order was rejected.
EXPIRED: C
- Order is expired.
PENDING_REPLACE: E
- Order is in a pending replace state.
OrdType
The type of an order.
Required
YType
OrdTypeValidation
it == state.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
andPegDifference
.
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
.
Required
NType
stringPrice
The limit price of an order.
Required
NType
PriceValidation
it == state.Price
Rule80A
The capacity of an order. For US equities, order capacity is in reference to Rule 80A.
Required
YType
Rule80AValidation
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
The side of an order.
Required
YType
SideValidation
it == state.Side
Enum values
BUY: 1
- Order is a buy.
SELL: 2
- Order is a long sell.
SELL_SHORT: 5
- Order is a short sell.
SELL_SHORT_EXEMPT: 6
- Order is a short sell, exempt from restrictions such as Reg 201 in the case of US equities.
Symbol
The symbol (ticker) of the instrument being traded. See Symbology for additional details.
Required
YType
stringValidation
it == state.Symbol
Text
Free form text. Subscribers can populate this field for internal use; OneChronos may populate this field to provide additional context to Subscriber when sending a rejection.
Required
NType
stringTimeInForce
A field governing how long an order will remain active for.
Required
YType
TimeInForceValidation
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 by
ExpireTime
.
TransactTime
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
YType
UTCTimestampSymbolSfx
A suffix for the symbol (ticker) being traded, when applicable. See Symbology for additional details.
Required
NType
stringValidation
it == state.SymbolSfx
OrdRejReason
An error code indicating why a NewOrderSingle
(type=ORDER_SINGLE
) was rejected.
Required
NType
OrdRejReasonEnum values
BROKER_OPTION: 0
- Order violates one or more aspects of the venue order entry specification not enumerated by
OrdRejReason
. UNKNOWN_SYMBOL: 1
- Order references an unknown
Symbol
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 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.
MinQty
The minimum permissible fill quantity for an order.
Required
NType
QtyValidation
it == state.MinQty
ExpireTime
When TimeInForce=GOOD_TILL_DATE
ExpireTime
must be populated with the desired expiry time.
Required
NType
UTCTimestampValidation
it == state.ExpireTime
ExecType
The type of an ExecutionReport
. See the section on FIX order state transitions for additional details.
Required
YType
ExecTypeEnum values
NEW: 0
- Report is an
ExecutionReport-Acknowledgement
. PARTIAL_FILL: 1
- Report is an
ExecutionReport-PartialFill
. FILL: 2
- Report is an
ExecutionReport-Fill
. CANCELED: 4
- Execution report is an
ExecutionReport-Cancel
orExecutionReport-UnsolicitedCancel
. REPLACED: 5
- Execution report is an
ExecutionReport-Replace
. PENDING_CANCEL: 6
- Execution report is an
ExecutionReport-PendingCancel
. REJECTED: 8
- Execution report is an
ExecutionReport-BusinessReject
. EXPIRED: C
- Report is an
ExecutionReport-Expired
. PENDING_REPLACE: E
- Report is an
ExecutionReport-PendingReplace
.
LeavesQty
The remaining (unfilled) quantity of an order open for additional fills. If OrdStatus
is CANCELED
, EXPIRED
, or REJECTED
LeavesQty=0
. Otherwise, LeavesQty=OrderQty - CumQty
.
Required
YType
QtyValidation
it == 0.0 || it == leavesQty()
PegDifference
Amount (signed) added to the price of the peg for a pegged order.
Required
NType
PriceOffsetValidation
it == state.PegDifference
ContraBroker
Identifies the contra broker for a transaction.
Required
NType
stringNoContraBrokers
The number of ContraBroker
msgFields contained in the message.
Required
NType
NumInGroupSelfMatchPreventionID
An integer value that mediates anti-internalization (self match prevention) behavior. When set to 0
the order containing this field will not match against another order from the same Subscriber. When set to 1
the order will not match against an order from the same MPID as determined by OnBehalfOfCompID
or the port level default MPID. When set to 2
the order will not match against an order from the same SenderCompID
. When set to any value in the interval [3,65535]
the order will not match against an order with the same value for SelfMatchPreventionID
.
Required
NType
intTradeLiquidityIndicator
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
NType
stringAnalyticsTags
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
NType
stringValidation
it == state.AnalyticsTags
OmniverseTags
An optional string passing back the the Omniverse arguments of an order
Required
NType
stringAuctionID
A unique identifier assigned by OneChronos to each auction.
Required
NType
intAuctionSubID
A unique identifier assigned by OneChronos to each atomic symbol within a given auction. Any given AuctionID
can have zero or more values of AuctionSubID
associated with it.
Required
NType
intCancelReason
An indicator code detailing why an an order was canceled
Required
NType
CancelReasonEnum values
UNSPECIFIED: 0
- Unspecified - no additional information is available
USER_INITIATED: 1
- The user initiated the cancel
IOC: 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.
CONDITIONAL_INVITATION: 8
- The cancelation was sent as the result of a conditional invitation.
LastNexusID
The NexusID associated with a fill. If the order was filled in Base, this field is left empty.
Required
NType
stringInvitationID
The ID associated with a conditional invite.
Required
NType
intMessage Validations
state.orderEntry.isConnected
this.ExecType in [ExecType.PartialFill, ExecType.Fill] ==>
present(this.LastMkt) &&
present(this.LastPx) &&
present(this.LastShares) &&
(case this.ContraBroker
{None: false}
{Some cb: cb == "CGXS"}
) &&
(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)
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]
present(this.TradeLiquidityIndicator) ==> this.ExecType in [ExecType.Fill, ExecType.PartialFill]
this.CancelReason == (Some CancelReason.ConditionalInvite) <==> present(this.InvitationID)
&& present(this.AuctionID) && present(this.AuctionSubID)
OrderCancelReject (9)
OrderCancelReject
messages are sent from OneChronos to Subscriber in response to OrderCancelRequest
messages that are invalid on a business logic level, or that reference orders in a non-cancelable state.
Account
A client supplied account identifier.
Required
NType
stringValidation
it == state.Account
ClOrdID
A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs.
Required
YType
stringValidation
it == state.ClOrdID
OrderID
An identifier assigned by OneChronos to all orders entered via NewOrderSingle
. In contexts where an OrderID
is required but not available, e.g., when sending an OrderCancelReject
in response to an unknown order, OrderID will be populated with NONE
.
Required
YType
stringOrdStatus
The state of the order. State transitions are governed per the FIX order state transition rules.
Required
YType
OrdStatusValidation
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
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
.
Required
NType
stringText
Free form text. Subscribers can populate this field for internal use; OneChronos may populate this field to provide additional context to Subscriber when sending a rejection.
Required
NType
stringCxlRejReason
An error code indicating why a OrderCancelRequest
(type=ORDER_CANCEL_REQUEST
) was rejected.
Required
YType
CxlRejReasonEnum values
TOO_LATE_TO_CANCEL: 0
- Cancellation request received after order was filled in entirety.
UNKNOWN_ORDER: 1
- The
ClOrdID
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 when
CxlRejResponseTo=2
(OrderCancelReplaceRequest (G)).
CxlRejResponseTo
Indicates the type of order cancel request that a OrderCancelReject
is in response to.
Required
YType
CxlRejResponseToEnum values
ORDER_CANCEL_REQUEST: 1
- A response to an
OrderCancelRequest (F)
ORDER_CANCEL_REPLACE_REQUEST: 2
- A response to aa
OrderCancelReplaceRequest (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.
Account
A client supplied account identifier.
Required
NType
stringValidation
it == state.Account
ClOrdID
A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs.
Required
YType
stringValidation
it == state.ClOrdID
ExecID
A unique ID for each execution report sent from OneChronos to Subscriber.
Required
YType
stringExecRefID
A reference to the original ExecID
used for messages where ExecTransType=CANCEL
or ExecTransType=CORRECT
.
Required
YType
stringExecTransType
Identifies the type of a transaction.
Required
YType
ExecTransTypeValidation
it == ExecTransType.Cancel
Enum values
NEW: 0
- A new execution report.
CANCEL: 1
- Cancellation of a previously sent execution report.
LastPx
The price of the last fill.
Required
YType
PriceLastShares
The quantity of the last fill.
Required
YType
QtyOrderID
An identifier assigned by OneChronos to all orders entered via NewOrderSingle
. In contexts where an OrderID
is required but not available, e.g., when sending an OrderCancelReject
in response to an unknown order, OrderID will be populated with NONE
.
Required
YType
stringValidation
it == state.OrderID
OrigTime
The original sending time of an ExecutionReport
.
Required
YType
UTCTimestampSide
The side of an order.
Required
YType
SideValidation
it == state.Side
Enum values
BUY: 1
- Order is a buy.
SELL: 2
- Order is a long sell.
SELL_SHORT: 5
- Order is a short sell.
SELL_SHORT_EXEMPT: 6
- Order is a short sell, exempt from restrictions such as Reg 201 in the case of US equities.
Symbol
The symbol (ticker) of the instrument being traded. See Symbology for additional details.
Required
YType
stringValidation
it == state.Symbol
TransactTime
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
YType
UTCTimestampSymbolSfx
A suffix for the symbol (ticker) being traded, when applicable. See Symbology for additional details.
Required
NType
stringValidation
it == state.SymbolSfx
ContraBroker
Identifies the contra broker for a transaction.
Required
YType
stringValidation
it == "CGXS"
NoContraBrokers
The number of ContraBroker
msgFields contained in the message.
Required
YType
NumInGroupValidation
it == 1
Message Validations
state.orderEntry.isConnected
OrderEntry in state.portSettings.tradeBustReporting ||
DropCopy in state.portSettings.tradeBustReporting
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
Allow short sales - orders where Side=SELL_SHORT
or Side=SELL_SHORT_EXEMPT
.
Allow Test Symbols
If true, orders for both test and tradable symbols will be accepted. If false, only tradable (non-test) symbols will be allowed.
Cancel On Disconnect
Cancel all orders in the event of a FIX/network disconnect. Orders that are too late to cancel (actively participating in an auction) will not be canceled.
Cancel on Halt
Cancel all orders for halted symbols. If the halt impacts any one leg of a combinatorial order, all legs will be canceled.
Fat Finger Percent Delta
Reject orders that are more than a given percent outside of the prevailing NBBO price upon the initiation of an auction. This calculation only applies to individual legs of a combinatorial order that specify a limit price.
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
The maximum permissible notional value (in USD) for a single order.
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
The maximum number of shares allowed for a single order.
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
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 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
Defines the symbology suffix convention to use for order entry.
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
Controlls the accuracy of the timestamps that OneChronos will send the Subscriber in outbound messages e.g. an 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
Enable TradeBreak
reporting.
Drop Copy Port Settings
Drop Copy Type
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
OnlyExecutionReport-Fill
andExecutionReport-PartialFill
messages are forwarded to the drop copy session.
Trade Break Reporting
Enable TradeBreak
reporting.