This thread is intended to capture errors and omissions discovered in the FIX Standard during 2024, e.g. misspellings or gaffes in the description. These will eventually be reviewed by the Global Technical Committee (GTC) and be corrected with a standard Gap Analysis and a FIX Extension Pack.
Please report errors you may encounter when using the FIX Protocol. The GTC will use the same thread to capture issues it identifies.
Don’t know if this is an error or intended, but when looking at the “Abbr Name” of the following fields in Fiximate the abbreviations of “Default” are not consistent:
DefaultApplVerID -> DefApplVerID
DefaultApplExtID -> DfltApplExtID
DefaultCstmApplVerID -> DefaultCstmApplVerID (so this isn’t abbreviated at all)
Thanks for pointing that out. The correct abbreviation of “Default” is “Dflt”, hence DefaultApplVerID and DefaultCstmApplVerID should have received a different abbreviated name for FIXML. However, only the current abbreviation is valid FIXML until we may decide to change it. It may not be worth the potential disruption of existing FIXML application out there. These tags are around since 2010.
Code set SecurityResponseTypeCodeSet(323): values “3” and “4” are missing
Code set BenchmarkCurveNameCodeSet is not defined and fields BenchmarkCurveName(221) and LegBenchmarkCurveName(677) define type=“String” instead of “BenchmarkCurveNameCodeSet”
Code set AllocTransTypeCodeSet(71): deprecated values “3”, “4”, “5” are missing
Code set AllocTypeCodeSet(626): deprecated values “3”, “4”, “6” are missing
Field QuoteEntryRejectReason(368) defines type=“int” instead of “QuoteRejectReasonCodeSet”
Field RefMsgType(372) defines type=“String” instead of “MsgTypeCodeSet”
FIX Latest_EP286
Some fields with type=“SecurityIDSourceCodeSet” define unionDataType=“Reserved100Plus” and some others don’t (2621, 2732, 43089, 43091, 43093, 43115, 43119, 43123).
Some fields with type=“PartySubIDTypeCodeSet” define unionDataType=“Reserved4000Plus” and some others don’t (786, 805, 807, 954, 1054, 1064, 1122, 1298, 1411, 1663, 1696, 2260).
@xavierbruyet, thank you for identifying the list of issues in FIX 4.4 and FIX Latest!
I could only find baseCategoryAbbrName=“Priorty” for field CrossPrioritization(550). This is the abbreviation in the base category and was intentionally defined without “i”.
@christophjohn thanks for pointing those out. We are not (yet) able to offer pull requests to the community to send in corrections. Your link only goes to a copy of FIX Latest. Any changes of the Orchestra XML file must currently go through the standard Gap Analysis process of the Global Technical Committee (GTC), including typos. Hence this thread that is then turned into an annual GA for errors and omissions.
We are about to issue a call for participation for the GTC’s FIX Protocol Subcommittee that will deal with the specification and related material and look into the current maintenance process and how it can be made more efficient. I see that you are already registered.
Must be unique, or the ID of previous Trading Session Status Request to disable if SubscriptionRequestType = Disable previous Snapshot + Update Request (2).
should be
Must be unique, or the ID of previous Trading Session List Request to disable if SubscriptionRequestType = Disable previous Snapshot + Update Request (2).
Typo in field reference in elaboration of TrdType(828):
Note: several enumerations of this field duplicate the enumerations in TradePriceConditions(1839) field. These may be deprecated from TrdType(828) in the future. TradePriceConditions(1839) is preferred in messages that support it.
should be
Note: several enumerations of this field duplicate the enumerations in TradePriceCondition(1839) field. These may be deprecated from TrdType(828) in the future. TradePriceCondition(1839) is preferred in messages that support it.
Trade reporting [Elaboration: The fee charged to recover the cost of trade reporting, e.g. corporate bonds and structured products reported to FINRA TRACE.
should be
The fee charged to recover the cost of trade reporting, e.g. corporate bonds and structured products reported to FINRA TRACE.
Hi,
I don’t know if this qualifies under the thread, but I found the following description somewhat unclear.
It is about message TradingSessionStatus [type ‘h’]:
The Trading Session Status provides information on the status of a market. For markets multiple trading sessions on multiple-markets occurring (morning and evening sessions for instance), this message is able to provide information on what products are trading on what market during what trading session.
@m020123 thank you for the question. Indeed, the TradingSessionStatus(35=h) message does not list the products that are traded in this session. The Instrument component as part of this message can be used to limit the status information to the (group of) instrument(s) it applies to.
Information about which products are traded on which market(s) (segments) is considered reference data and can be provided with the MarketDefinition(35=BU) message. Information about available trading sessions is not provided as part of the market definition but as part of its own TradingSessionList(35=BJ) message (includes session reference data) and can be limited to a specific market (segment) if needed. The latter can be omitted if all of your market(s) (segments) run the same trading sessions.
Last not least, you can use the MarketSegmentGrp in the SecurityDefinition(35=d) message to convey all market(s) (segments) and trading sessions that a single instrument is a part of.
Which is correct? Perhaps the answer is “both”, and the definition has changed over time, but that doesn’t seem likely to me.
For me, FIX 4.2’s Orchestra had it correct. Data is a primitive data type. It has no parent. For all other subtypes I looked at, a valid value in the subtype is a valid value in the parent type. A SeqNum of 1 is also valid int. This is not true of data. There are valid data values which are not valid strings, because they contain a delimiter. I suppose you could argue that’s encoding-dependent.
@michaelboyles92 thank you for raising this issue that appears to be an error. We will analyse it in detail. It seems like there was a change from FIX 5.0 SP1 to FIX 5.0 SP2. Until SP1, the datatype “data” in Volume 1 was a base datatype of its own and followed the list of datatypes derived from the base datatype “String”. SP2 shows a different indentation in Volume 1, i.e. “data” is the last entry in the list of datatypes derived from the base datatype “String”. That could have been unintended formatting and a mistake.
The definition of “String” for the FIX tag=value encoding (ISO 3531) says: “Alphanumeric free-format strings can include any character except control characters.” SOH is such a control character.
The legacy specifications contained the following for the datatype “String”: “Alpha-numeric free format strings, can include any character or punctuation except the delimiter.” This contradicts the following statement for datatype “data” in the same specifications: “Caution: the value of one of these fields may contain the delimiter (SOH) character.”