FIX Integration
US Equities - 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.Tag | Name | Required? | Description |
8 | BeginString | Y | Type:
Description: A delimiter identifying the start of a new FIX message. Required:
Validation:
|
9 | BodyLength | Y | Type:
Description: Message length, in bytes, of all characters up to and including the delimiter preceding the Required:
|
34 | MsgSeqNum | Y | Type:
Description: The message sequence number, per the rules governing message sequence numbers. Required:
|
35 | MsgType | Y | Type:
Description: The type of the FIX message. Required: Enum values:
|
43 | PossDupFlag | N | Type:
Description: A flag indicating whether a message is a possible session level retransmission, per the message delivery rules. Required: Enum values:
|
49 | SenderCompID | Y | Type:
Description: OneChronos will assign this identifier as part of customer onboarding. Messages sent to OneChronos must always include Subscriber's assigned Required:
|
52 | SendingTime | Y | Type:
Description: The time of message transmission (always in UTC). OneChronos supports UTC timestamps at second, millisecond, or microsecond precision. Required:
|
56 | TargetCompID | Y | Type:
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:
|
97 | PossResend | N | Type:
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: Enum values:
|
115 | OnBehalfOfCompID | N | Type:
Description: Must be a valid NSCC MPID if present. Populating Required:
|
122 | OrigSendingTime | N | Type:
Description: Required by the FIX spec for orders where Required:
|
128 | DeliverToCompID | N | Type:
Description: When a Subscriber populates Required:
|
Standard Trailer
The "Standard Trailer" is included at the end of every FIX message.CheckSum
must appear as the last field.Tag | Name | Required? | Description |
10 | CheckSum | Y | Type:
Description: A message checksum per the checksum calculation instructions. Required:
|
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.Tag | Name | Required? | Description |
112 | TestReqID | N | Type:
Description: Must be present if sent in response to a TestRequest message. Required:
|
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.Tag | Name | Required? | Description |
112 | TestReqID | Y | Type:
Description: An identifier for use with Required:
|
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.Tag | Name | Required? | Description |
7 | BeginSeqNo | Y | Type:
Description: Message sequence number of first message in range to be resent. Required:
|
16 | EndSeqNo | Y | Type:
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:
|
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.Tag | Name | Required? | Description |
45 | RefSeqNum | Y | Type:
Description: The sequence number of the message being referenced. Required:
|
58 | Text | N | Type:
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:
|
371 | RefTagID | N | Type:
Description: Always present when the rejection was triggered by a specific tag. If multiple tags are invalid, Required:
|
372 | RefMsgType | N | Type:
Description: Always present when Required:
|
373 | SessionRejectReason | Y | Type:
Description: An error code indicating why a message was rejected on the session level. Required: Enum values:
|
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.Tag | Name | Required? | Description |
36 | NewSeqNo | Y | Type:
Description: The next expected sequence number, per the rules governing message sequence numbers. Required:
|
123 | GapFillFlag | N | Type:
Description: Indicates whether a Required: Enum values:
|
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.Tag | Name | Required? | Description |
58 | Text | N | Type:
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:
|
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.Tag | Name | Required? | Description |
98 | EncryptMethod | Y | Type:
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:
Validation: Enum values:
|
108 | HeartBtInt | Y | Type:
Description: The desired interval, in seconds, between heartbeats. See Heartbeats for additional details. Required:
Validation:
|
BusinessMessageReject (j)
BusinessMessageReject
messages are sent when a field validation is violated in a FIX message. (e.g. field length constraint)Tag | Name | Required? | Description |
45 | RefSeqNum | N | Type:
Description: The sequence number of the message being referenced. Required:
|
58 | Text | N | Type:
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:
|
372 | RefMsgType | Y | Type:
Description: Always present when Required:
|
380 | BusinessRejectReason | Y | Type:
Description: An error code indicating why a message was rejected by a BusinessMessageReject Required: Enum values:
|
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.Tag | Name | Required? | Description |
1 | Account | N | Type:
Description: A client supplied account identifier. Required:
Validation:
|
11 | ClOrdID | Y | Type:
Description: A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs. Required:
Validation:
|
18 | ExecInst | N | Type:
Description: Order handling instructions; multiple instructions can be specified in a space delimited list. Required:
Validation: Enum values:
|
21 | HandlInst | Y | Type:
Description: Required: Enum values:
|
38 | OrderQty | Y | Type:
Description: The number of shares for the order. Required:
Validation:
|
40 | OrdType | Y | Type:
Description: The type of an order. Required: Enum values:
|
44 | Price | N | Type:
Description: The limit price of an order. Required:
Validation:
|
47 | Rule80A | Y | Type:
Description: The capacity of an order. For US equities, order capacity is in reference to Rule 80A. Required: Enum values:
|
54 | Side | Y | Type:
Description: The side of an order. Required: Enum values:
|
55 | Symbol | Y | Type:
Description: The symbol (ticker) of the instrument being traded. See Symbology for additional details. Required:
Validation:
|
59 | TimeInForce | Y | Type:
Description: A field governing how long an order will remain active for. Required: Enum values:
|
60 | TransactTime | Y | Type:
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:
|
65 | SymbolSfx | N | Type:
Description: A suffix for the symbol (ticker) being traded, when applicable. See Symbology for additional details. Required:
Validation:
|
110 | MinQty | N | Type:
Description: The minimum permissible fill quantity for an order. Required:
Validation:
|
114 | LocateReqd | N | Type:
Description: A boolean flag indicating whether a locate is required when selling short. For US equities orders, any order where Required: Enum values:
|
126 | ExpireTime | N | Type:
Description: When Required:
|
211 | PegDifference | N | Type:
Description: Amount (signed) added to the price of the peg for a pegged order. Required:
|
2362 | SelfMatchPreventionID | N | Type:
Description: An integer value that mediates anti-internalization (self match prevention) behavior. When set to Required:
Validation:
|
20001 | AnalyticsTags | N | Type:
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:
Validation:
|
20004 | ExpressiveBidURI | N | Type:
Description: The Expressive Bid URI. Required:
|
20009 | ExpressiveBidArgument1 | N | Type:
Description: Expressve Bid argument 1. Required:
|
20010 | ExpressiveBidArgument2 | N | Type:
Description: Expressve Bid argument 2. Required:
|
20011 | ExpressiveBidArgument3 | N | Type:
Description: Expressve Bid argument 3. Required:
|
20012 | ExpressiveBidArgument4 | N | Type:
Description: Expressve Bid argument 4. Required:
|
20028 | LegID | N | Type:
Description: The ID associated with a multi-symbol expressive bid. Required:
Validation:
|
20029 | BasketID | N | Type:
Description: The ID associated with a multi-symbol expressive bid. Required:
Validation:
|
20030 | InvitationID | N | Type:
Description: The ID associated with a conditional invite. Required:
|
Message Validations
state.orderEntry.isConnected
state.portSettings.dropCopyDisconnect.rejectNew ==>
state.orderEntry.isDropCopyConnected
isUnusedClOrdId(this.ClOrdID)
isMarketHours()
contains_peg_exec_inst(this.ExecInst) <==> this.OrdType == OrdType.Pegged
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 viaNewOrderSingle
be canceled by sending OneChronos an OrderCancelRequest
. Cancellations are accepted via an ExecutionReport
message and rejected via OrderCancelReject
.Tag | Name | Required? | Description |
11 | ClOrdID | Y | Type:
Description: A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs. Required:
Validation:
|
37 | OrderID | N | Type:
Description: An identifier assigned by OneChronos to all orders entered via Required:
Validation:
|
38 | OrderQty | N | Type:
Description: The number of shares for the order. Required:
|
41 | OrigClOrdID | N | Type:
Description: The Required:
Validation:
|
54 | Side | Y | Type:
Description: The side of an order. Required:
Validation: Enum values:
|
55 | Symbol | Y | Type:
Description: The symbol (ticker) of the instrument being traded. See Symbology for additional details. Required:
Validation:
|
60 | TransactTime | Y | Type:
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:
|
65 | SymbolSfx | N | Type:
Description: A suffix for the symbol (ticker) being traded, when applicable. See Symbology for additional details. Required:
Validation:
|
114 | LocateReqd | N | Type:
Description: A boolean flag indicating whether a locate is required when selling short. For US equities orders, any order where Required: Enum values:
|
20001 | AnalyticsTags | N | Type:
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:
|
Message 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 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.Tag | Name | Required? | Description |
1 | Account | N | Type:
Description: A client supplied account identifier. Required:
Validation:
|
11 | ClOrdID | Y | Type:
Description: A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs. Required:
Validation:
|
18 | ExecInst | N | Type:
Description: Order handling instructions; multiple instructions can be specified in a space delimited list. Required:
Validation: Enum values:
|
21 | HandlInst | Y | Type:
Description: Required: Enum values:
|
38 | OrderQty | N | Type:
Description: The number of shares for the order. Required:
Validation:
|
40 | OrdType | Y | Type:
Description: The type of an order. Required:
Validation: Enum values:
|
41 | OrigClOrdID | Y | Type:
Description: The Required:
Validation:
|
44 | Price | N | Type:
Description: The limit price of an order. Required:
|
47 | Rule80A | Y | Type:
Description: The capacity of an order. For US equities, order capacity is in reference to Rule 80A. Required:
Validation: Enum values:
|
54 | Side | Y | Type:
Description: The side of an order. Required:
Validation: Enum values:
|
55 | Symbol | Y | Type:
Description: The symbol (ticker) of the instrument being traded. See Symbology for additional details. Required:
Validation:
|
59 | TimeInForce | Y | Type:
Description: A field governing how long an order will remain active for. Required:
Validation: Enum values:
|
60 | TransactTime | Y | Type:
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:
|
65 | SymbolSfx | N | Type:
Description: A suffix for the symbol (ticker) being traded, when applicable. See Symbology for additional details. Required:
Validation:
|
110 | MinQty | N | Type:
Description: The minimum permissible fill quantity for an order. Required:
Validation:
|
114 | LocateReqd | N | Type:
Description: A boolean flag indicating whether a locate is required when selling short. For US equities orders, any order where Required: Enum values:
|
126 | ExpireTime | N | Type:
Description: When Required:
Validation:
|
211 | PegDifference | N | Type:
Description: Amount (signed) added to the price of the peg for a pegged order. Required:
|
20001 | AnalyticsTags | N | Type:
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:
Validation:
|
20004 | ExpressiveBidURI | N | Type:
Description: The Expressive Bid URI. Required:
|
20009 | ExpressiveBidArgument1 | N | Type:
Description: Expressve Bid argument 1. Required:
|
20010 | ExpressiveBidArgument2 | N | Type:
Description: Expressve Bid argument 2. Required:
|
20011 | ExpressiveBidArgument3 | N | Type:
Description: Expressve Bid argument 3. Required:
|
20012 | ExpressiveBidArgument4 | N | Type:
Description: Expressve Bid argument 4. Required:
|
20028 | LegID | N | Type:
Description: The ID associated with a multi-symbol expressive bid. Required:
Validation:
|
20029 | BasketID | N | Type:
Description: The ID associated with a multi-symbol expressive bid. Required:
Validation:
|
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.Tag | Name | Required? | Description |
1 | Account | N | Type:
Description: A client supplied account identifier. Required:
Validation:
|
6 | AvgPx | Y | Type:
Description: An average price computed across all fills for an order. Required:
|
11 | ClOrdID | Y | Type:
Description: A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs. Required:
Validation:
|
14 | CumQty | Y | Type:
Description: The aggregate filled quantity computed across all fills for an order. Required:
Validation:
|
17 | ExecID | Y | Type:
Description: A unique ID for each execution report sent from OneChronos to Subscriber. Required:
|
18 | ExecInst | N | Type:
Description: Order handling instructions; multiple instructions can be specified in a space delimited list. Required:
Validation: Enum values:
|
20 | ExecTransType | Y | Type:
Description: Identifies the type of a transaction. Required:
Validation: Enum values:
|
30 | LastMkt | N | Type:
Description: The market of the last fill; always CGXS. Required:
Validation:
|
31 | LastPx | N | Type:
Description: The price of the last fill. Required:
|
32 | LastShares | N | Type:
Description: The quantity of the last fill. Required:
|
37 | OrderID | Y | Type:
Description: An identifier assigned by OneChronos to all orders entered via Required:
Validation:
|
38 | OrderQty | Y | Type:
Description: The number of shares for the order. Required:
Validation:
|
39 | OrdStatus | Y | Type:
Description: The state of the order. State transitions are governed per the FIX order state transition rules. Required: Enum values:
|
40 | OrdType | Y | Type:
Description: The type of an order. Required:
Validation: Enum values:
|
41 | OrigClOrdID | N | Type:
Description: The Required:
|
44 | Price | N | Type:
Description: The limit price of an order. Required:
Validation:
|
47 | Rule80A | Y | Type:
Description: The capacity of an order. For US equities, order capacity is in reference to Rule 80A. Required:
Validation: Enum values:
|
54 | Side | Y | Type:
Description: The side of an order. Required:
Validation: Enum values:
|
55 | Symbol | Y | Type:
Description: The symbol (ticker) of the instrument being traded. See Symbology for additional details. Required:
Validation:
|
58 | Text | N | Type:
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:
|
59 | TimeInForce | Y | Type:
Description: A field governing how long an order will remain active for. Required:
Validation: Enum values:
|
60 | TransactTime | Y | Type:
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:
|
65 | SymbolSfx | N | Type:
Description: A suffix for the symbol (ticker) being traded, when applicable. See Symbology for additional details. Required:
Validation:
|
103 | OrdRejReason | N | Type:
Description: An error code indicating why a Required: Enum values:
|
110 | MinQty | N | Type:
Description: The minimum permissible fill quantity for an order. Required:
Validation:
|
126 | ExpireTime | N | Type:
Description: When Required:
Validation:
|
150 | ExecType | Y | Type:
Description: The type of an Required: Enum values:
|
151 | LeavesQty | Y | Type:
Description: The remaining (unfilled) quantity of an order open for additional fills. If Required:
Validation:
|
211 | PegDifference | N | Type:
Description: Amount (signed) added to the price of the peg for a pegged order. Required:
Validation:
|
375 | ContraBroker | N | Type:
Description: Identifies the contra broker for a transaction. Required:
|
382 | NoContraBrokers | N | Type:
Description: The number of Required:
|
2362 | SelfMatchPreventionID | N | Type:
Description: An integer value that mediates anti-internalization (self match prevention) behavior. When set to Required:
|
9730 | TradeLiquidityIndicator | N | Type:
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:
|
20001 | AnalyticsTags | N | Type:
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:
Validation:
|
20003 | OmniverseTags | N | Type:
Description: An optional string passing back the the Omniverse arguments of an order Required:
|
20005 | AuctionID | N | Type:
Description: A unique identifier assigned by OneChronos to each auction. Required:
|
20006 | AuctionSubID | N | Type:
Description: A unique identifier assigned by OneChronos to each atomic symbol within a given auction. Any given Required:
|
20007 | CancelReason | N | Type:
Description: An indicator code detailing why an an order was canceled Required: Enum values:
|
20008 | LastNexusID | N | Type:
Description: The NexusID associated with a fill. If the order was filled in Base, this field is left empty. Required:
|
20030 | InvitationID | N | Type:
Description: The ID associated with a conditional invite. Required:
|
Message 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.Tag | Name | Required? | Description |
1 | Account | N | Type:
Description: A client supplied account identifier. Required:
Validation:
|
11 | ClOrdID | Y | Type:
Description: A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs. Required:
Validation:
|
37 | OrderID | Y | Type:
Description: An identifier assigned by OneChronos to all orders entered via Required:
|
39 | OrdStatus | Y | Type:
Description: The state of the order. State transitions are governed per the FIX order state transition rules. Required:
Validation: Enum values:
|
41 | OrigClOrdID | N | Type:
Description: The Required:
|
58 | Text | N | Type:
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:
|
102 | CxlRejReason | Y | Type:
Description: An error code indicating why a Required: Enum values:
|
434 | CxlRejResponseTo | Y | Type:
Description: Indicates the type of order cancel request that a Required: Enum values:
|
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.Tag | Name | Required? | Description |
1 | Account | N | Type:
Description: A client supplied account identifier. Required:
Validation:
|
11 | ClOrdID | Y | Type:
Description: A Subscriber provided order ID satisfying the requirements for Subscriber provided IDs. Required:
Validation:
|
17 | ExecID | Y | Type:
Description: A unique ID for each execution report sent from OneChronos to Subscriber. Required:
|
19 | ExecRefID | Y | Type:
Description: A reference to the original Required:
|
20 | ExecTransType | Y | Type:
Description: Identifies the type of a transaction. Required:
Validation: Enum values:
|
31 | LastPx | Y | Type:
Description: The price of the last fill. Required:
|
32 | LastShares | Y | Type:
Description: The quantity of the last fill. Required:
|
37 | OrderID | Y | Type:
Description: An identifier assigned by OneChronos to all orders entered via Required:
Validation:
|
42 | OrigTime | Y | Type:
Description: The original sending time of an Required:
|
54 | Side | Y | Type:
Description: The side of an order. Required:
Validation: Enum values:
|
55 | Symbol | Y | Type:
Description: The symbol (ticker) of the instrument being traded. See Symbology for additional details. Required:
Validation:
|
60 | TransactTime | Y | Type:
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:
|
65 | SymbolSfx | N | Type:
Description: A suffix for the symbol (ticker) being traded, when applicable. See Symbology for additional details. Required:
Validation:
|
375 | ContraBroker | Y | Type:
Description: Identifies the contra broker for a transaction. Required:
Validation:
|
382 | NoContraBrokers | Y | Type:
Description: The number of Required:
Validation:
|
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
Name | Enabled by Default? | Description |
Allow Short Sales | Y | Allow short sales - orders where Side=SELL_SHORT or Side=SELL_SHORT_EXEMPT . |
Allow Test Symbols | N | 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 | Y | 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 | N | Cancel all orders for halted symbols. If the halt impacts any one leg of a combinatorial order, all legs will be canceled. |
Drop Copy Connection Disconnect Handling | N | Controls the handling of drop copy session disconnects. Parameters:
|
Fat Finger Percent Delta | N | 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:
|
Maximum Notional Value | N | The maximum permissible notional value (in USD) for a single order. Parameters:
|
Maximum Order Shares | Y | The maximum number of shares allowed for a single order. Parameters:
|
Self-Match Prevention | N | Self-match prevention (anti-internalization) behavior. When disabled, all Subscriber orders are free to match against all other Subscriber orders. When enabled and set to SUBSCRIBER , orders will not match against other orders from the same Subscriber. When set to 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:
|
Symbology Type | Y | Defines the symbology suffix convention to use for order entry. Parameters:
|
Timestamp Accuracy | Y | Controlls the accuracy of the timestamps that OneChronos will send the Subscriber in outbound messages e.g. an ExecutionReport .Parameters:
|
Trade Break Reporting | N | Enable TradeBreak reporting. |
Drop Copy Port Settings
Name | Enabled by Default? | Description |
Drop Copy Type | Y | Controls the type of drop copy reports that are sent to Subscriber. Parameters:
|
Trade Break Reporting | N | Enable TradeBreak reporting. |