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)

PhaseStart TimeEnd Time
FIX connections / Sessions Accepted (No Order Entry)8:00am9:15am
Pre-Market Order Entry9:15am9:30am
Regular Market Session9:30am4:00pm
Post-Market (ExecutionReport and TradeCancelCorrect only)4:00pm5:00pm
FIX Session Logout/Sequence Reset5:00pm5: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.

8

BeginString

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

Required

Y

Type

string

Validation

it == "FIX.4.2"
9

BodyLength

Message length, in bytes, of all characters up to and including the delimiter preceding the CheckSum field. BodyLength must be the second field present in every FIX message.

Required

Y

Type

int
34

MsgSeqNum

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

Required

Y

Type

int
35

MsgType

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

Required

Y

Type

string

Enum values

HEARTBEAT: 0
Message is a Heartbeat.
TEST_REQUEST: 1
Message is a TestRequest.
RESEND_REQUEST: 2
Message is a ResendRequest.
REJECT: 3
Message is a Reject.
SEQUENCE_RESET: 4
Message is a SequenceReset.
LOGOUT: 5
Message is a Logout.
EXECUTION_REPORT: 8
Message is a ExecutionReport.
ORDER_CANCEL_REJECT: 9
Message is an OrderCancelReject.
LOGON: A
Message is a Logon.
ORDER_SINGLE: D
Message is a NewOrderSingle.
ORDER_CANCEL_REQUEST: F
Message is a OrderCancelRequest.
ORDER_CANCEL_REPLACE_REQUEST: G
Message is a OrderCancelReplaceRequest.
BUSINESS_MESSAGE_REJECT: j
Message is a BusinessMessageReject.
TRADE_BUST: UCC
Message is a TradeBust.
43

PossDupFlag

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

Required

N

Type

boolean

Enum values

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

SenderCompID

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

Required

Y

Type

string
52

SendingTime

The time of message transmission (always in UTC). OneChronos supports UTC timestamps at second, millisecond, or microsecond precision.

Required

Y

Type

utctimestamp
56

TargetCompID

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

Required

Y

Type

string
97

PossResend

A flag indicating whether a message is a possible business level retransmission, per the message delivery rules. For messages sent to OneChronos, any value other than 'N' will trigger a rejection. OneChronos will never populate this field.

Required

N

Type

boolean

Enum values

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

OnBehalfOfCompID

Must be a valid NSCC MPID if present. Populating OnBehalfOfCompID will override the default port level MPID.

Required

N

Type

string
122

OrigSendingTime

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

Required

N

Type

utctimestamp
128

DeliverToCompID

When a Subscriber populates OnBehalfOfCompId any message sent in response by OneChronos will populate this field with the value of OnBehalfOfCompId specified by Subscriber.

Required

N

Type

string

Standard Trailer

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

10

CheckSum

A message checksum per the checksum calculation instructions.

Required

Y

Type

int

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.

112

TestReqID

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

Required

N

Type

string

TestRequest (1)

TestRequest messages are used to explicitly request a Heartbeat from the counterparty when none is received. Applications should send a TestRequest whenever the agreed upon heartbeat interval plus one second (HeartBtInt+1) has elapsed without the receipt of a message, Heartbeat or otherwise. If a Heartbeat is not received promptly thereafter, the FIX session should be disconnected on the network level without attempting to send another message. Logon and message recovery procedures can proceed thereafter. A TestRequest can be sent by Subscriber to OneChronos, or by OneChronos to Subscriber.

112

TestReqID

An identifier for use with TestRequest and Heartbeat messages.

Required

Y

Type

string

ResendRequest (2)

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.

7

BeginSeqNo

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

Required

Y

Type

int
16

EndSeqNo

Message sequence number of last message in range to be resent. If request is for a single message BeginSeqNo = EndSeqNo. If request is for all messages subsequent to a particular message, EndSeqNo = "0" (representing infinity).

Required

Y

Type

int

Reject (3)

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.

45

RefSeqNum

The sequence number of the message being referenced.

Required

Y

Type

int
58

Text

Free form text. Subscribers can populate this field for internal use; OneChronos may populate this field to provide additional context to Subscriber when sending a rejection.

Required

N

Type

string
371

RefTagID

Always present when the rejection was triggered by a specific tag. If multiple tags are invalid, RefTagID will be populated for the first invalid tag.

Required

N

Type

int
372

RefMsgType

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

Required

N

Type

string
373

SessionRejectReason

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

Required

Y

Type

int

Enum values

INVALID_TAG_NUMBER: 0
One or more tag numbers fall outside of the legal tag range [1, 29999].
REQUIRED_TAG_MISSING: 1
A required tag is missing.
TAG_NOT_DEFINED_FOR_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 or TargetCompID 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.

36

NewSeqNo

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

Required

Y

Type

int
123

GapFillFlag

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

Required

N

Type

boolean

Enum values

GAP_FILL_MESSAGE_MSGSEQNUM_FIELD_VALID: Y
Message is a SequenceReset-Gap-Fill; this is the correct value to use for message recovery/non disaster situations.
SEQUENCE_RESET_IGNORE_MSGSEQNUM: N
Message is a SequenceReset-Reset; reset the counterparty's sequence expected incoming sequence number, without performing message recovery.

Logout (5)

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.

58

Text

Free form text. Subscribers can populate this field for internal use; OneChronos may populate this field to provide additional context to Subscriber when sending a rejection.

Required

N

Type

string

Logon (A)

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.

98

EncryptMethod

An enum value representing the type of Layer 6 encryption that should be used for the FIX dialogue. Required by the FIX standard, but not used by OneChronos.

Required

Y

Type

int

Validation

it == EncryptMethod.NONE

Enum values

NONE: 0
Do not use encryption.
108

HeartBtInt

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

Required

Y

Type

int

Validation

it >= 5 && it <= 180

BusinessMessageReject (j)

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

45

RefSeqNum

The sequence number of the message being referenced.

Required

N

Type

int
58

Text

Free form text. Subscribers can populate this field for internal use; OneChronos may populate this field to provide additional context to Subscriber when sending a rejection.

Required

N

Type

string
372

RefMsgType

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

Required

Y

Type

string
380

BusinessRejectReason

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

Required

Y

Type

int

Enum values

OTHER: 0
Order violates one or more aspects of the venue order entry field specification
APPLICATION_NOT_AVAILABLE: 4
In production and UAT environments, this status code indicates that the FIX gateway is temporarily unavailable and not accepting business messages. In certification, this status code and Tag 58 indicate what FIX business logic validations failed.
THROTTLE_LIMIT_EXCEEDED: 99
Throttle limit exceeded

From Subscriber

NewOrderSingle (D)

NewOrderSingle messages are sent by Subscriber to OneChronos to initiate a new order. OneChronos supports OrdType=LIMIT and OrdType=PEGGED orders.

1

Account

A client supplied account identifier.

Required

N

Type

string

Validation

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

ClOrdID

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

Required

Y

Type

string

Validation

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

ExecInst

Order handling instructions; multiple instructions can be specified in a space delimited list.

Required

N

Type

ExecInst

Validation

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

HandlInst

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

Required

Y

Type

HandlInst

Enum values

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

OrderQty

The number of shares for the order.

Required

Y

Type

Qty

Validation

it > 0.0
40

OrdType

The type of an order.

Required

Y

Type

OrdType

Enum values

LIMIT: 2
Order is eligible for execution at a price equal to or more favorable than Price.
PEGGED: P
Order is eligible for execution at a price equal to or more favorable than a computed price per the peg instructions given in ExecInst and PegDifference.
44

Price

The limit price of an order.

Required

N

Type

Price

Validation

case it {None: true} {Some price: price > 0.0}
47

Rule80A

The capacity of an order. For US equities, order capacity is in reference to Rule 80A.

Required

Y

Type

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

Side

The side of an order.

Required

Y

Type

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

Symbol

The symbol (ticker) of the instrument being traded. See Symbology for additional details.

Required

Y

Type

string

Validation

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

TimeInForce

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

Required

Y

Type

TimeInForce

Enum values

DAY: 0
Order will remain active throughout the regular trading session.
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.
60

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

Y

Type

UTCTimestamp
65

SymbolSfx

A suffix for the symbol (ticker) being traded, when applicable. See Symbology for additional details.

Required

N

Type

string

Validation

case it                                      
    {None: true}                             
    {Some symbolSfx: strLen(symbolSfx) <= 32}
110

MinQty

The minimum permissible fill quantity for an order.

Required

N

Type

Qty

Validation

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

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

N

Type

LocateReqd

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

ExpireTime

When TimeInForce=GOOD_TILL_DATE ExpireTime must be populated with the desired expiry time.

Required

N

Type

UTCTimestamp
211

PegDifference

Amount (signed) added to the price of the peg for a pegged order.

Required

N

Type

PriceOffset
2362

SelfMatchPreventionID

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

N

Type

int

Validation

case it                              
    {None: true}                     
    {Some id: id >= 0 && id <= 65535}
20001

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

N

Type

string

Validation

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

ExpressiveBidURI

The Expressive Bid URI.

Required

N

Type

string
20009

ExpressiveBidArgument1

Expressve Bid argument 1.

Required

N

Type

string
20010

ExpressiveBidArgument2

Expressve Bid argument 2.

Required

N

Type

string
20011

ExpressiveBidArgument3

Expressve Bid argument 3.

Required

N

Type

string
20012

ExpressiveBidArgument4

Expressve Bid argument 4.

Required

N

Type

string
20028

LegID

The ID associated with a multi-symbol expressive bid.

Required

N

Type

int

Validation

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

BasketID

The ID associated with a multi-symbol expressive bid.

Required

N

Type

string

Validation

case it                        
    {None: true}               
    {Some id: strLen(id) <= 32}
20030

InvitationID

The ID associated with a conditional invite.

Required

N

Type

int

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 via NewOrderSingle be canceled by sending OneChronos an OrderCancelRequest. Cancellations are accepted via an ExecutionReport message and rejected via OrderCancelReject.

11

ClOrdID

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

Required

Y

Type

string

Validation

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

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

N

Type

string

Validation

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

OrderQty

The number of shares for the order.

Required

N

Type

Qty
41

OrigClOrdID

The ClOrdID of the previous order in a FIX cancel/replace chain. Clients should always set OrigClOrdID to the most recent non-rejected ClOrdID sent; when populating OrigClOrdID OneChronos will always use the last accepted ClOrdID.

Required

N

Type

string

Validation

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

Side

The side of an order.

Required

Y

Type

Side

Validation

it == state.Side

Enum values

BUY: 1
Order is a buy.
SELL: 2
Order is a 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.
55

Symbol

The symbol (ticker) of the instrument being traded. See Symbology for additional details.

Required

Y

Type

string

Validation

it == state.Symbol
60

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

Y

Type

UTCTimestamp
65

SymbolSfx

A suffix for the symbol (ticker) being traded, when applicable. See Symbology for additional details.

Required

N

Type

string

Validation

it == state.SymbolSfx
114

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

N

Type

LocateReqd

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

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

N

Type

string

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

1

Account

A client supplied account identifier.

Required

N

Type

string

Validation

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

ClOrdID

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

Required

Y

Type

string

Validation

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

ExecInst

Order handling instructions; multiple instructions can be specified in a space delimited list.

Required

N

Type

ExecInst

Validation

it == state.ExecInst

Enum values

MID_PRICE_PEG: M
Execute at a price equal to or more favorable than the midpoint of the 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.
21

HandlInst

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

Required

Y

Type

HandlInst

Enum values

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

OrderQty

The number of shares for the order.

Required

N

Type

Qty

Validation

isLegalModifyQty(it)
40

OrdType

The type of an order.

Required

Y

Type

OrdType

Validation

it == state.OrdType

Enum values

LIMIT: 2
Order is eligible for execution at a price equal to or more favorable than Price.
PEGGED: P
Order is eligible for execution at a price equal to or more favorable than a computed price per the peg instructions given in ExecInst and PegDifference.
41

OrigClOrdID

The ClOrdID of the previous order in a FIX cancel/replace chain. Clients should always set OrigClOrdID to the most recent non-rejected ClOrdID sent; when populating OrigClOrdID OneChronos will always use the last accepted ClOrdID.

Required

Y

Type

string

Validation

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

Price

The limit price of an order.

Required

N

Type

Price
47

Rule80A

The capacity of an order. For US equities, order capacity is in reference to Rule 80A.

Required

Y

Type

Rule80A

Validation

it == state.Rule80A

Enum values

AGENCY_SINGLE_ORDER: A
Broker is executing in an pure agency capacity.
PRINCIPAL: P
Broker is executing as a principal in the transaction.
RISKLESS_PRINCIPAL: R
Broker is executing as a riskless principal in the transaction.
54

Side

The side of an order.

Required

Y

Type

Side

Validation

it == state.Side

Enum values

BUY: 1
Order is a buy.
SELL: 2
Order is a 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.
55

Symbol

The symbol (ticker) of the instrument being traded. See Symbology for additional details.

Required

Y

Type

string

Validation

it == state.Symbol
59

TimeInForce

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

Required

Y

Type

TimeInForce

Validation

it == state.TimeInForce

Enum values

DAY: 0
Order will remain active throughout the regular trading session.
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.
60

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

Y

Type

UTCTimestamp
65

SymbolSfx

A suffix for the symbol (ticker) being traded, when applicable. See Symbology for additional details.

Required

N

Type

string

Validation

it == state.SymbolSfx
110

MinQty

The minimum permissible fill quantity for an order.

Required

N

Type

Qty

Validation

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

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

N

Type

LocateReqd

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

ExpireTime

When TimeInForce=GOOD_TILL_DATE ExpireTime must be populated with the desired expiry time.

Required

N

Type

UTCTimestamp

Validation

it == state.ExpireTime
211

PegDifference

Amount (signed) added to the price of the peg for a pegged order.

Required

N

Type

PriceOffset
20001

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

N

Type

string

Validation

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

ExpressiveBidURI

The Expressive Bid URI.

Required

N

Type

string
20009

ExpressiveBidArgument1

Expressve Bid argument 1.

Required

N

Type

string
20010

ExpressiveBidArgument2

Expressve Bid argument 2.

Required

N

Type

string
20011

ExpressiveBidArgument3

Expressve Bid argument 3.

Required

N

Type

string
20012

ExpressiveBidArgument4

Expressve Bid argument 4.

Required

N

Type

string
20028

LegID

The ID associated with a multi-symbol expressive bid.

Required

N

Type

int

Validation

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

BasketID

The ID associated with a multi-symbol expressive bid.

Required

N

Type

string

Validation

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

Message Validations

state.orderEntry.isConnected

isUnusedClOrdId(this.ClOrdID)

this.OrigClOrdID == state.ClOrdID

isMarketHours()

isLegalStateForCancelOrModify(state.OrdStatus)

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.

1

Account

A client supplied account identifier.

Required

N

Type

string

Validation

it == state.Account
6

AvgPx

An average price computed across all fills for an order.

Required

Y

Type

Price
11

ClOrdID

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

Required

Y

Type

string

Validation

it == state.ClOrdID
14

CumQty

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

Required

Y

Type

Qty

Validation

it >= 0.0
17

ExecID

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

Required

Y

Type

string
18

ExecInst

Order handling instructions; multiple instructions can be specified in a space delimited list.

Required

N

Type

ExecInst

Validation

it == state.ExecInst

Enum values

MID_PRICE_PEG: M
Execute at a price equal to or more favorable than the midpoint of the 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.
20

ExecTransType

Identifies the type of a transaction.

Required

Y

Type

ExecTransType

Validation

it == ExecTransType.New

Enum values

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

LastMkt

The market of the last fill; always CGXS.

Required

N

Type

Exchange

Validation

case it                                     
    {None: true}                            
    {Some lastMkt: lastMkt == Exchange.CGXS}
31

LastPx

The price of the last fill.

Required

N

Type

Price
32

LastShares

The quantity of the last fill.

Required

N

Type

Qty
37

OrderID

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

Y

Type

string

Validation

it == state.OrderID
38

OrderQty

The number of shares for the order.

Required

Y

Type

Qty

Validation

it == state.OrderQty
39

OrdStatus

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

Required

Y

Type

OrdStatus

Enum values

NEW: 0
Order is acknowledged.
PARTIALLY_FILLED: 1
Order is partially filled.
FILLED: 2
Order is fully filled.
CANCELED: 4
Order was successfully canceled.
REPLACED: 5
Order was replaced.
PENDING_CANCEL: 6
Order is awaiting Cancellation.
REJECTED: 8
Order was rejected.
EXPIRED: C
Order is expired.
PENDING_REPLACE: E
Order is in a pending replace state.
40

OrdType

The type of an order.

Required

Y

Type

OrdType

Validation

it == state.OrdType

Enum values

LIMIT: 2
Order is eligible for execution at a price equal to or more favorable than Price.
PEGGED: P
Order is eligible for execution at a price equal to or more favorable than a computed price per the peg instructions given in ExecInst and PegDifference.
41

OrigClOrdID

The ClOrdID of the previous order in a FIX cancel/replace chain. Clients should always set OrigClOrdID to the most recent non-rejected ClOrdID sent; when populating OrigClOrdID OneChronos will always use the last accepted ClOrdID.

Required

N

Type

string
44

Price

The limit price of an order.

Required

N

Type

Price

Validation

it == state.Price
47

Rule80A

The capacity of an order. For US equities, order capacity is in reference to Rule 80A.

Required

Y

Type

Rule80A

Validation

it == state.Rule80A

Enum values

AGENCY_SINGLE_ORDER: A
Broker is executing in an pure agency capacity.
PRINCIPAL: P
Broker is executing as a principal in the transaction.
RISKLESS_PRINCIPAL: R
Broker is executing as a riskless principal in the transaction.
54

Side

The side of an order.

Required

Y

Type

Side

Validation

it == state.Side

Enum values

BUY: 1
Order is a buy.
SELL: 2
Order is a 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.
55

Symbol

The symbol (ticker) of the instrument being traded. See Symbology for additional details.

Required

Y

Type

string

Validation

it == state.Symbol
58

Text

Free form text. Subscribers can populate this field for internal use; OneChronos may populate this field to provide additional context to Subscriber when sending a rejection.

Required

N

Type

string
59

TimeInForce

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

Required

Y

Type

TimeInForce

Validation

it == state.TimeInForce

Enum values

DAY: 0
Order will remain active throughout the regular trading session.
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.
60

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

Y

Type

UTCTimestamp
65

SymbolSfx

A suffix for the symbol (ticker) being traded, when applicable. See Symbology for additional details.

Required

N

Type

string

Validation

it == state.SymbolSfx
103

OrdRejReason

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

Required

N

Type

OrdRejReason

Enum values

BROKER_OPTION: 0
Order violates one or more aspects of the venue order entry specification not enumerated by OrdRejReason.
UNKNOWN_SYMBOL: 1
Order references an unknown Symbol or SymbolSfx.
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.
110

MinQty

The minimum permissible fill quantity for an order.

Required

N

Type

Qty

Validation

it == state.MinQty
126

ExpireTime

When TimeInForce=GOOD_TILL_DATE ExpireTime must be populated with the desired expiry time.

Required

N

Type

UTCTimestamp

Validation

it == state.ExpireTime
150

ExecType

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

Required

Y

Type

ExecType

Enum values

NEW: 0
Report is an ExecutionReport-Acknowledgement.
PARTIAL_FILL: 1
Report is an ExecutionReport-PartialFill.
FILL: 2
Report is an ExecutionReport-Fill.
CANCELED: 4
Execution report is an ExecutionReport-Cancel or ExecutionReport-UnsolicitedCancel.
REPLACED: 5
Execution report is an ExecutionReport-Replace.
PENDING_CANCEL: 6
Execution report is an ExecutionReport-PendingCancel.
REJECTED: 8
Execution report is an ExecutionReport-BusinessReject.
EXPIRED: C
Report is an ExecutionReport-Expired.
PENDING_REPLACE: E
Report is an ExecutionReport-PendingReplace.
151

LeavesQty

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

Y

Type

Qty

Validation

it == 0.0 || it == leavesQty()
211

PegDifference

Amount (signed) added to the price of the peg for a pegged order.

Required

N

Type

PriceOffset

Validation

it == state.PegDifference
375

ContraBroker

Identifies the contra broker for a transaction.

Required

N

Type

string
382

NoContraBrokers

The number of ContraBroker msgFields contained in the message.

Required

N

Type

NumInGroup
2362

SelfMatchPreventionID

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

N

Type

int
9730

TradeLiquidityIndicator

An indicator code containing alphanumeric strings (up to four characters) that represent the type of the trade (e.g. conditional firm up) and associated fee.

Required

N

Type

string
20001

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

N

Type

string

Validation

it == state.AnalyticsTags
20003

OmniverseTags

An optional string passing back the the Omniverse arguments of an order

Required

N

Type

string
20005

AuctionID

A unique identifier assigned by OneChronos to each auction.

Required

N

Type

int
20006

AuctionSubID

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

N

Type

int
20007

CancelReason

An indicator code detailing why an an order was canceled

Required

N

Type

CancelReason

Enum values

UNSPECIFIED: 0
Unspecified - no additional information is available
USER_INITIATED: 1
The user initiated the cancel
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.
20008

LastNexusID

The NexusID associated with a fill. If the order was filled in Base, this field is left empty.

Required

N

Type

string
20030

InvitationID

The ID associated with a conditional invite.

Required

N

Type

int

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.

1

Account

A client supplied account identifier.

Required

N

Type

string

Validation

it == state.Account
11

ClOrdID

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

Required

Y

Type

string

Validation

it == state.ClOrdID
37

OrderID

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

Y

Type

string
39

OrdStatus

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

Required

Y

Type

OrdStatus

Validation

it == state.OrdStatus

Enum values

NEW: 0
Order is acknowledged.
PARTIALLY_FILLED: 1
Order is partially filled.
FILLED: 2
Order is fully filled.
CANCELED: 4
Order was successfully canceled.
REPLACED: 5
Order was replaced.
PENDING_CANCEL: 6
Order is awaiting Cancellation.
REJECTED: 8
Order was rejected.
EXPIRED: C
Order is expired.
PENDING_REPLACE: E
Order is in a pending replace state.
41

OrigClOrdID

The ClOrdID of the previous order in a FIX cancel/replace chain. Clients should always set OrigClOrdID to the most recent non-rejected ClOrdID sent; when populating OrigClOrdID OneChronos will always use the last accepted ClOrdID.

Required

N

Type

string
58

Text

Free form text. Subscribers can populate this field for internal use; OneChronos may populate this field to provide additional context to Subscriber when sending a rejection.

Required

N

Type

string
102

CxlRejReason

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

Required

Y

Type

CxlRejReason

Enum values

TOO_LATE_TO_CANCEL: 0
Cancellation request received after order was filled in entirety.
UNKNOWN_ORDER: 1
The ClOrdID referenced in the OrderCancelRequest is unknown.
BROKER_OPTION: 2
The request could not be processed and a more specific reason is not available.
ORDER_ALREADY_IN_PENDING_STATUS: 3
A cancellation request was already received for the order referenced.
INVALID_EXPRESSIVE_BID_URI: 4
The expressive bid URI and/or arguments was invalid; only applicable when CxlRejResponseTo=2 (OrderCancelReplaceRequest (G)).
434

CxlRejResponseTo

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

Required

Y

Type

CxlRejResponseTo

Enum values

ORDER_CANCEL_REQUEST: 1
A response to an OrderCancelRequest (F)
ORDER_CANCEL_REPLACE_REQUEST: 2
A response to 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.

1

Account

A client supplied account identifier.

Required

N

Type

string

Validation

it == state.Account
11

ClOrdID

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

Required

Y

Type

string

Validation

it == state.ClOrdID
17

ExecID

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

Required

Y

Type

string
19

ExecRefID

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

Required

Y

Type

string
20

ExecTransType

Identifies the type of a transaction.

Required

Y

Type

ExecTransType

Validation

it == ExecTransType.Cancel

Enum values

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

LastPx

The price of the last fill.

Required

Y

Type

Price
32

LastShares

The quantity of the last fill.

Required

Y

Type

Qty
37

OrderID

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

Y

Type

string

Validation

it == state.OrderID
42

OrigTime

The original sending time of an ExecutionReport.

Required

Y

Type

UTCTimestamp
54

Side

The side of an order.

Required

Y

Type

Side

Validation

it == state.Side

Enum values

BUY: 1
Order is a buy.
SELL: 2
Order is a 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.
55

Symbol

The symbol (ticker) of the instrument being traded. See Symbology for additional details.

Required

Y

Type

string

Validation

it == state.Symbol
60

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

Y

Type

UTCTimestamp
65

SymbolSfx

A suffix for the symbol (ticker) being traded, when applicable. See Symbology for additional details.

Required

N

Type

string

Validation

it == state.SymbolSfx
375

ContraBroker

Identifies the contra broker for a transaction.

Required

Y

Type

string

Validation

it == "CGXS"
382

NoContraBrokers

The number of ContraBroker msgFields contained in the message.

Required

Y

Type

NumInGroup

Validation

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.

  • PENDING_CANCEL: 12
    (highest precedence)
  • PENDING_REPLACE: 11
  • FILLED: 8
  • CANCELED: 5
  • PARTIALLY_FILLED: 4
  • NEW: 2
  • REJECTED: 2
  • PENDING_NEW: 2

Note that values are non-consecutive to maintain parity with the FIX 4.2 specification.

The following are legal transitions (from the perspective of OneChronos sending ExecutionReport messages). States that can only transition to themselves and for which no further messages will be sent (with the exception of trade breaks, when configured) are labeled TERMINAL.

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

Drop Copy

OneChronos offers two types of FIX drop copy:

  • Order-by-Order: All business level messages (including trade breaks, if configured) are forwarded to the drop copy session
  • Fills Only: Only ExecutionReport-Fill and ExecutionReport-PartialFill messages are forwarded to the drop copy session

Drop copy functionality is configured on the port/session level.

Port Settings

The following parameters can be configured on the FIX port/session level:

Order Entry Port Settings

Allow Short Sales

Enabled by default: Y

Allow short sales - orders where Side=SELL_SHORT or Side=SELL_SHORT_EXEMPT.

Allow Test Symbols

Enabled by default: 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

Enabled by default: 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

Enabled by default: N

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

Enabled by default: 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:

  • 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

Enabled by default: N

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

Enabled by default: Y

The maximum number of shares allowed for a single order.

Parameters:

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

    Validation:

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

Self-Match Prevention

Enabled by default: N

Self-match prevention (anti-internalization) behavior. When disabled, all Subscriber orders are free to match against all other Subscriber orders. When enabled and set to SUBSCRIBER, orders will not match against other orders from the same Subscriber. When set to 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 prevention
    • MPID: 1
      MPID-level self match prevention
    • SENDER_COMP_ID: 2
      Session/SenderCompID self match prevention

Symbology Type

Enabled by default: Y

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

Enabled by default: Y

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 reporting
    • MICRO: 1
      Microsecond timestamp reporting
    • NANO: 2
      Naonsecond timestamp reporting

Trade Break Reporting

Enabled by default: N

Enable TradeBreak reporting.

Drop Copy Port Settings

Drop Copy Type

Enabled by default: Y

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

Parameters:

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

Trade Break Reporting

Enabled by default: N

Enable TradeBreak reporting.