The Lab

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Message NameMsgType[35]ActionExplanation
LogonADrop sessionTrader already logged on
ExecutionReport 8UpdateNew order + fill update
ExecutionAcknowledgementBNUpdateFill update
DontKnowTrade QUpdateRevoke fill via ExecID[17]
OrderTimeOutOTUpdateRevoke fills via ClOrdID[11]
Currenex OrderTimeOutU3UpdateRevoke fills via ClOrdID[11]
Reject3UpdateRevoke fill via MsgSeqNum[34]
BusinessMessageReject jUpdateRevoke fill via MsgSeqNum[34]

...

ExecutionReport[8] & ExecutionAcknowledgement[BN]

Some venues use ExecutionReport[8] as new (FXall), those are skipped. Some venues use ExecutionReport[8] as ack, those are inspected. Some venues use ExecutionReport[8] as both new and ack (Hotspot), those are included inspected too. Additionally, if Reflector has previously blocked an execution identified by ExecID[17], then value of Text[58], if it exists, will be replaced by Reflector's ErrorCode.


Flag

Presence in 8

Presence in BN

FieldType
POSS_DUPEOptionalOptionalPossDupFlag[43], PossResend[97]BOOL
TEXTOptionalOptionalText[58]STRING
ACCOUNTOptionalOptionalAccount[1], PartyRole[452], etcSTRING
ALLOC_ACCTBANNEDBANNEDAllocAccount[79]STRING
EXEC_TYPERequired-ExecType[190], HSFXTradeStatus[7226]ENUM
EXEC_ACK_STATUS-RequiredExecAckStatus[1036]ENUM
ORDER_IDRequiredRequiredClOrdID[11]STRING
EXEC_IDRequiredRequiredExecID[17]STRING
SYMBOLRequiredRequiredSymbol[55], SecurityID[48]STRING, INT
CURRENCYOptionalOptionalCurrency[15]STRING
SIDERequiredRequiredSide[54]ENUM
CONTRACT_MULTIPLIEROptionalOptionalContractMultiplier[231]FLOAT
PRICEOptionalOptionalPrice[44]FLOAT
PRICE_TWOBANNEDBANNEDPrice2[640]FLOAT
QUANTITYOptionalOptionalOrderQty[38]FLOAT
QUANTITY_TWOBANNEDBANNEDOrderQty2[192]FLOAT
LAST_PRICERequiredRequiredLastPx[31]FLOAT
LAST_PRICE_TWOBANNEDBANNEDLastPx2[...]FLOAT
LAST_QUANTITYRequiredRequiredLastQty[32]FLOAT
LAST_QUANTITY_TWOBANNEDBANNEDLastQty2[...]FLOAT
SETTLE_DATERequiredRequiredSettlDate[64]DATE
SETTLE_DATE_TWOBANNEDBANNEDSettlDate2[193]DATE
NUM_LEGSOptionalOptionalNoLegs[555]INT


The handling of an inbound maker execution update is both complex (because we are essentially rescinding historic actions) and trivial (because things never actually get modified). For the sake of completeness, Reflector handles the complexity, even though it can never happen. The risk instance, upon processing a maker execution update request, can emit the following warnings:

  • Z_EXEC_TIME_OUT - The confirm referred to an order that has been timed out. The confirm is ignored.
  • Z_EXEC_EXPIRATION - The confirm arrived after the associated maker exec has already been made permanent. The confirm is ignored.
  • Z_EXEC_ID_DISLOCATION - The conrm ExecID[17] matches something other than what was on record. The confirm is ignored. This is the most serious and least likely of the errors.
  • Z_EXEC_NOT_FOUND - Rogue confirmation. No record of associated maker exec existed; hence it was 'invented' by the exchange. The execution is accepted, and immediately made permanent.
  • Z_EXEC_REVISION - The confirm matches everything (exec id, order id, product, side), but quantity is different. The associated maker exec is updated. Not really an 'error' per se.

DontKnowTrade[Q]

OrderTimeOut[OT] & Currenex OrderTimeOut[U3]

...