FIX Standard Errors and Omissions 2024

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.

Thank you,
GTC Project Management (gtcpm)

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.

1 Like

FIX 4.4

  • 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).
  • Typo “Priorty”

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

There is a typo in the “Comments” column for tags 2406, 2411, 2416, e.g.:

https://fiximate.fixtrading.org/en/FIX.Latest/cmp2220.html?find=RegulatoryLegRefID

This field may be is used for multi-leg trades sent as a single message to indicate that the entry applies only to a specific leg.

There should only be one of “may be” or “is”.

Question: I am not sure where to change this. Should I open a pull request with the changes against https://github.com/FIXTradingCommunity/orchestrations/blob/master/FIX%20Standard/OrchestraFIXLatest.xml ? Is that the correct file?

Thank you

baseCategoryAbbrName=“Priorty”

Yes, this one. Okay, the abbreviation is correct then.

@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. :slight_smile:

1 Like

Error in message reference of TradSesReqID(335) in TradingSessionListRequest(35=BI);

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.

Typo in elaboration of MiscFeeType(139)=15 (Trade reporting).

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.

Regards

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

I noticed that FIX Orchestra representations of the ‘data’ datatype refer to it as being a subtype of String.

e.g. from FIX Latest

<fixr:datatype updatedEP="208" baseType="String" name="data" added="FIX.2.7" updated="FIX.5.0SP2">

This was not the case in FIX 4.2

<fixr:datatype name="data" added="FIX.2.7">

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.

1 Like

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

1 Like

Typo in description of StreamAssignmentReport(35=CD): Starts with “he” instead of “The”.

Typo in field name RateSourceReferemcePageHeading(2412) -> RateSourceReferencePageHeading

Error also present in fieldRef in RateSource group definition

See https://fiximate.fixtrading.org/en/FIX.Latest/tag2412.html

1 Like

Typo in field names with “Arrangment” -> Arrangement

RoutingArrangmentIndicator(2883)
ContraRoutingArrangmentIndicator(2884)

https://fiximate.fixtrading.org/en/FIX.Latest/tag2883.html
https://fiximate.fixtrading.org/en/FIX.Latest/tag2884.html

Also affects related CodeSet and Code definitions.

1 Like

Same issue (missing “e”) with symbolic name of

Typo in field usage description of SecurityListType(1470) in SecurityListRequest(35=x):

Indentifies a list type