FIX 4.1 Specification Draft is available

Imported from previous forum

[ original email was from Sam Johnson - sam.johnson@gs.com ]
A draft of the FIX Protocol specification, Version 4.1, is now available. This version addresses changes requested since the publication of Version 4.0 in the Spring of 1997.
The document and these release notes are available on the FIX Web Site at http://www.fixprotocol.org

You can download the two files directly from the following URLs:

http://www.fixprotocol.org/TOOLS/SPECS/FIX.4.1/DOWNLOAD/fix41d1.doc (specification)

http://www.fixprotocol.org/TOOLS/SPECS/FIX.4.1/DOWNLOAD/fix41rn.doc (release notes)

Major changes in FIX 4.1 include changes to the messages related to FIX order handling, expanded allocation functionality, settlement instructions, and expanded forex trading capability. Very few changes were made to the session level. Potentially the most significant is that fact that all ID fields are now of a character data type (see narrative below).

The FIX Technical Committee anticipates two draft releases before the official 4.1 spec is available. Comments related to this Draft #1 release are due by February 18, 1998 and may be forwarded to the Technical Committee co-chairs Scott Atwell (scott_atwell@americancentury.com) or Sam Johnson (sam.johnson@gs.com) or posted in the FIX Web Site’s Discussion area. Draft #2 will be released around February
23, 1998 with final comments due by March 13, 1998.

The final version of the FIX 4.1 Specification will be released at the next large-audience FIX Technical Forum scheduled for April 1, 1998 at Merrill Lynch in New York.

Changes in the 4.1 draft release include:

Session Level:

  • Added a new field ResetSeqNumFlag to the Logon message.
  • Clarified the description of the Sequence Reset message to highlight the language which specifies that the NewSeqNum contains the next number to be transmitted.
  • Clarified the description of the "Message Recovery" section regarding handling multiple Resend Requests in a row and Sequence Reset - Gap Fill potential gotchas.
  • Clarified and explictly stated in the "Message Recovery" section that the Reject message is the only administrative message which can be resent.
  • Highlighted in the "Message Format" section the fact that FIX message fields are not positional and explicitly noted the exceptions.

Overall:

  • Made all business level ID fields type char. This changed the data type of the following fields: AdvID, AdvRefID, ExecID, ExecRefID, IOIid, IOIRefID, AllocID, RefAllocID.
    Instead of simply changing the data type for these eixisting fields which would likely cause significant backward compatibility problems with older versions of FIX, the
    following new fields of type char were created: AdvCharID, AdvRefCharID, ExecCharID, ExecRefCharID, IOICharID, IOIRefCharID, AllocCharID, AllocRefCharID. All of the business level messages in FIX 4.1 which used the int-based fields now use the newly named (and tagged) fields. The old fields will no longer be used and remain for prior versions.
  • Added four new optional fields to the Standard Header: SenderLocationID, TargetLocationID, OnBehalfOfLocationID, and DeliverToLocationID which can allow firms to specify a geographic location and/or desk associated with a business messages in addition to the CompID and SubID values.
  • Added SymbolSfx, IDSource, SecurityID, Issuer, and SecurityDesc to all messages containing Symbol. OrdStatusRequest had IDSource and SecurityID added. News,
    Email, and Don’t Know Trade had SymbolSfx, IDSource, SecurityID, Issuer, and SecurityDesc added.
  • Replaced references to "MsgSeqNo" with "MsgSeqNum" throughout the spec.
  • Clarified the usage of the Commission field such that if CommType is percentage, Commission should be represented as a decimal (i.e. .05 for 5%).
  • Added a Glossary of Business Terms to the appendix. The FIX Web Site’s Discussion area will have a thread devoted to identifying terms which need to be defined and providing definitions.

Quote and QuoteRequest:

  • Made BidPx on the Quote message optional.
  • Added TransactTime to the Quote message.
  • Added OrderQtyType to the QuoteRequest (see Orders, Execution Reports, and DK’s changes listed below).
  • The following were added to better support foreign exchange (F/X) trading:
  • Added FutSettDate to the Quote and QuoteRequest messages to allow one to request/send a quote for a particular value date when requesting F/X quotes.
  • Added two new fields, OrderQty2 (the qty in the future) and FutSettDate2 (the value date in the future), and OrdType to the Quote and QuoteRequest messages to allow one to request/send a quote for "Forex - Swap". Side should be the Side of the FutSettDate2 transaction.
  • Added new fields BidSpotRate, BidForwardPoints, OfferSpotRate, and OfferForwardPoints to the Quote message.
  • Specified that for F/X trading BidPx and OfferPx within the Quote message should represent the "all-in" (aka "outright" aka "contract") rate.

IOIs, Advertisements, News, and Email:

  • Added NoRelatedSym (required) to News and Email messages.
  • Added a new required field Subject and new optional field EmailThreadID to the Email message.
  • Added a new required field Headline to the News message.
  • Added a new optional field URLLink to the IOI, Advertisement, and News messages.
  • Added two new enumerations for IDSource: "ISO Currency Code" and "ISO Country Code" which can be used for News and Email messages.
  • Added TradeDate to the Advertisement message.
  • Added TransactTime to the IOI message.
  • Added "At the midpoint" and "Pre-open" as enumerations to the IOIQualifier field. Changed the language in the field reference for enumeration "Q" from "Current quote" to "At the market (previously called current quote)". Changed IOIQualifier to allow multiple values.

Orders, Execution Reports, and DK’s:

  • Removed the CxlType field from the Order Cancel Request.
  • Added new field LeavesQty to ExecutionRpt making the implicit LeavesQty = OrderQty -CumQty defunct.
  • Clarified that ExecID must be unique for the day or the life of the order if the order spans more than one day.
  • Clarified that the Order Cancel/Replace Request can also be considered an Order Modification Request to reduce, increase, or change the parameters of an order.
  • Added new enumeration to ExecInst value ‘U’ to denote customer display instruction in order to satisfy SEC Rule 11Ac1-1/4.
  • Added OrderQtyType to the QuoteRequest, New Order - Single, ExecutionRpt, Don’t Know Trade, Order Cancel/Replace Request, and Order Cancel Request messages with valid values of Shares (the default) or Cash. Made OrderQty of type float vs. int.
  • Added "Unknown Order" and "Duplicate Order" to OrdRejReason code (to be used in conjunction with OrdStatus of Rejected) to reject a Status Request due to an unmatched
    order.
  • Revised order status progression for clarity. A new required field ExecType to the ExecutionRpt with the same possible values as OrdStatus. ExecType describes the specific ExecutionRpt (i.e. Pending Cancel) while OrdStatus will always identify the current order status (i.e. Partially Filled). The Order State Change Matrix in the appendix has been updated and addresses some more complicated scenarios.
  • The description of the ExecutionRpt message now includes a list of OrdStatus value precedence.
  • Added OrigClOrdID to New Order - Single and New Order - List. Clarified its definition to specify that it refers to the previous order NOT the initial order for the day when canceling or replacing an order multiple times.
  • Added OrigClOrdID and OrdStatus to Order Cancel Reject.
  • Clarified the DontKnowTrade message indicating that LastShares and LastPx are only required if they were specified on the ExecutionRpt (i.e. not required on the ExecutionRpt if ExecTransType=Status).
  • Removed NoMiscFees, MiscFees repeating group, and NetMoney from the ExecutionRpt message as it will now be provided via the Allocation message with AllocTransTyp="Calculated" sent from the broker to institution.
  • Replaced narrative details re: OrdStatus="Calculated" to reference "report post-trade calculations" vs. "report miscellaneous fees".
  • OrdStatus="Calculated" can still be used to provide the Commission or SettlCurrency related details.
  • Added SettlCurrFxRate and SettlCurrFxRateCalc to the ExecutionRpt message

(consistent with add to Allocation message).

  • The following were added to better support foreign exchange (F/X) trading:
  • Added "Netting" as an enumeration to the ExecInst field.
  • Replaced the OrdType field enumeration for "Forex" with "Forex - Market". Added OrdType field enumerations: "Forex - Limit", "Forex - Swap", and "Forex - Previously Quoted".
  • Added OrderQty2 (the qty in the future) and FutSettDate2 (the value date in the future) to the New Order - Single and New Order - List messages to allow one to send an OrdType = "Forex - Swap". Side should be the Side of the FutSettDate2
    transaction.
  • Added two new fields to the ExecutionRpt message: LastSpotRate and LastForwardPoints.
  • Specified that for F/X trading the LastPx field in the ExecutionRpt should represent the "all-in" (aka "outright" aka "contract") rate.
  • Specified that for F/X trading the Price field in the New Order - Single, New Order - List, Order Cancel/Replace Request, and Order Cancel Request messages should represent the "all-in" (aka "outright" aka "contract") rate.

Allocation and AllocationACK:

  • Considerable revisions have been made to the Allocation message in order to properly support foreign trading requirements and other overall enhancements.
  • Modified AllocTransType to include enumerations for "Preliminary (without MiscFees and NetMoney)" and "Calculated (with MiscFees and NetMoney)".
  • Modified MiscFeeTyp to include enumeration for "Markup" in the event the broker is acting as principal on a trade.
  • Added a new field AllocAvgPx to AllocAccount repeating group to provide ability to specify different average prices for each account. Required for US domestic as well as
    foreign trading.
  • Added a new field AllocNetMoney to the AllocAccount repeating group.
  • Moved SettlCurrAmount and SettlCurrency from the "overall" section to within the AllocAccount repeating group.
  • Added two new fields, SettlCurrFxRate and SettlCurrFxRateCalc, to the AllocAccount repeating group to go along with SettlCurrAmount and SettlCurrency.
  • Added a new field SettlInstMode to the AllocAccount repeating group to indicate the type of Settlement Instructions which will be provided via the Settlement
    Instructions message.
  • Added two new fields, NumDaysInterest and AccruedInterestRate, to the "overall" section to support convertible bonds.
  • Added new field AccruedInterestAmt to the AllocAccount repeating group to support convertible bonds.
  • Moved NoMiscFees and MiscFees repeating group from the "overall" section to within the AllocAccount repeating group.
  • Removed the DlvyInst repeating group. Added BrokerOfCredit and a new field AllocText to the AllocAccount section to support communicating step-out details (ProcessCode indicates this).
  • Moved LastMkt from within the Execs repeating group to the "overall" level.
  • Modified the narrative details for the message to include:
  • "In addition, the allocation record can be sent by the broker to communicate fees and other details which can only be computed once the sub-account breakdowns are known.
  • That "preliminary" and "calculated" are now valid AllocTransTyp values.
  • Created a diagram to show the typical flow for US domestic trading (without MiscFees)
  • Created a diagram to show the typical flow for International trading (with MiscFees).
  • Designed such that the institution accepts or rejects the "Computed" Allocation via the AllocationAck message which is consistent with current flow within various ETC systems such as: Global OASYS, Crest, DTC, etc.
  • Added LastCapacity to the Execs repeating group in order to support the SFA’s “Conduct of Business” requirements for trade confirmations.
  • Allow AllocTransTyp=Cancel to appear without the currently required Orders and AllocAccount sections.
  • The following were added to better support foreign exchange (F/X) trading:
  • Specified that for F/X trading the AvgPx and AllocAvgPx fields in the Allocation message should represent the "all-in" (aka "outright" aka "contract") rate.
  • Added two new optional fields to the Allocation Message: AllocLinkID and AllocLinkType which can be used to link two different Allocation messages (each with unique AllocID) together, i.e. for F/X "Netting" or "Swaps".

Settlement Instructions:

  • Added a new Settlement Instructions message in an attempt to support communicating Settlement Instructions in a vendor-neutral manner.
  • Includes the capability to support "standing" instructions as well as those for a specific allocation and allocation account (associate with an actual trade).
  • Supports worldwide equities:
  • Supports settlement at a depository or settlement at a country via local agent banks/custodians.
  • Supports different details for the settlement of the security vs. the settlement of the cash.
  • Remains consistent with existing worldwide initiatives such as the IUG Working Group (now a subcommittee of ISITC) in Europe.
  • Supports Settlement Instructions sent from:
  • Broker to Institution
  • Institution to Broker
  • Broker to a third-party (i.e. a standing instructions database, depository, custodian bank, etc.)
  • Institution to a third-party (i.e. a standing instructions database, depository, custodian bank, etc.)
  • Serves to bridge the gap between the information brokers and institutions

transmit/receive via F.I.X. and the information both need to support "back-office" needs (i.e. transmitted via ISITC to/from agent/custodian banks)

Appendix and App Notes:

  • Specified in Appendix C - Reuters Exchange Mnemonics that "CME" should be used for futures traded on the Chicago Mercantile Exchange.
  • Updated Appendix D - Order State Change Matrices.
  • Added Appendix E - London SETS Appendix which specifies how the OrdType, TimeInForce, and ExpireTime fields should be used.
  • Added Appendix F - Settlement Instruction Field Usage Matrix.