FIX Standard Errors and Omissions 2022

This thread is intended to capture errors and omissions discovered in the FIX Standard during 2022, e.g. misspellings or gaffes in the description. These will eventually be reviewed by the Global Technical Committee and be corrected with a standard Gap Analysis and a FIX Extension Pack.

Related post FIX Orchestra/Repository Errors and Omissions that has been closed to consolidate all issues raised during 2022 into this thread.

TriggerTradingSessionID(1113) and TriggerTradingSessionSubID(1114) of the TriggeringInstruction component do not use the same code sets as TradingSessionID(336) and TradingSessionSubID(625) respectively. They do not use any code set and are also missing the union datatype Reserved100Plus to permit user-defined values.

Typo in description of 538/NestedPartyRole (PartyRoleCodeSet):

81 = Broker cient ID

Should be

81 = Broker Clearing ID

Thank you, @jorgthonnes. This issue has already been covered by EP271 in Chapter 2.6.28. The issue is in PartyRoleCodeSet that is also used by NestedPartyRole(538). EP271 has been implemented and is currently in its QA phase.

Error in sort order of TradeConditionCodeSet in FIXimate. Value 0=Cancel shows up between values AK and AL but should instead show up between values BE and 1=Implied Trade.

Orchestra.XML currently has 11 occurrences of “..” at the end of a sentence that should only be “.

Typo “relevent” instead of “relevant” in group usage comment of

  1. UnderlyingProvisionOptionRelevantUnderlyingDateBusinessCenterGrp in UnderlyingProvisionOptionRelevantUnderlyingDate
  2. ProvisionOptionRelevantUnderlyingDateBusinessCenterGrp in ProvisionOptionRelevantUnderlyingDate

Typo in tag reference of UnderlyingCurrency(318): Currency(5) should be Currency(15)

DerivativeSettleOnOpenFlag(1254) has the wrong abbreviation. It uses OpenCloseSettlFlag instead of SettlOnOpenFlag like the related field SettleOnOpenFlag(966) does.

The abbreviation OpenCloseSettlFlag can easily be confused with OpenClsSettlFlag used by the field OpenCloseSettlFlag(286).

Field name of DerivativeOptPayAmount(1225) should be DerivativeOptPayoutAmount to align with the other XXXOptPayoutAmount fields.

OptPayoutAmount(1195)
LegOptPayoutAmount(2194)
UnderlyingOptPayoutAmount(2029)
ComplexOptPayoutAmount(1485)
LegComplexOptPayoutAmount(2223)
UnderlyingComplexOptPayoutAmount(2047)

Implementation of EP85 (Mass Action Filters) created errors and inconsistencies in terms of naming (no change to enum values):

In the standard FIX Orchestration version 1.5.1 there is no MarketDepthCodeSet.
Here is the definition of the MarketDepth field.

	<fixr:field added="FIX.4.2" id="264" name="MarketDepth" type="int" abbrName="MktDepth">
		<fixr:annotation>
			<fixr:documentation purpose="SYNOPSIS">
     Depth of market for Book Snapshot / Incremental updates
     0 - full book depth
     1 - top of book
     2 and above - book depth (number of levels)
  </fixr:documentation>
		</fixr:annotation>
	</fixr:field>

@davidgibbs, there is a reason for this. Only the values 0 and 1 have a special meaning (actually only value 0 as 1 means just one level is shown and this depth has a special name “top of book”). The datatype of this field is “int” and the value represents the number of price levels provided, 0 simply meaning that all price levels are shown. A code set would require to list all supported values. Admittedly, the description looks like a list of values but that is not intended.

Where does the “version 1.5.1” come from that you are referencing above?

SettlPriceDeterminationMethod(2451) is missing its standard values. The field was added with EP190 and was supposed to have the following values:

0 = Unknown (Symbolic name: [Unknown])
1 = Last trade price (Symbolic name: [LastTradePrice])
2 = Last bid price (Symbolic name: [LastBidPrice])
3 = Last offer price (Symbolic name: [LastOfferPrice])
4 = Mid price [Elaboration] The price at the mid-point between last bid and last offer price (Symbolic name: [MidPrice])
5 = Average of last trade prices [Elaboration] The average price across a bi-laterally agreed number of trades, e.g. last five trades. (Symbolic name: [AverageLastTradePrice])
6 = Average of last trade period [Elaboration] Average price across bi-laterally agreed time period, e.g. last minute of trading (Symbolic name: [AverageLastTradePeriod])
7 = Underlying price [Elaboration] Based on price of underlying instrument (Symbolic name: [UnderlyingPrice])
8 = Calculated price [Elaboration]Other calculation method, e.g. theoretical price (Symbolic name: [CalculatedPrice])
9 = Manual price [Elaboration]Manually entered price (Symbolic name: [ManualPrice])

Yes thanks, I see that now. So I would put 5 if the depth was 5.
The “version 1.5.1” is the versioned release in nexus for the orchestra repo artefact.

io.fixprotocol.orchestrations
fix-standard

AvgPxIndicator and SideAvgPxIndicator have their own code sets and do not share a single one. AvgPxIndicator has two additional values (3=NVAP, 4=Trade is average priced) that the side-level field does not have. I believe there is no reason for this separation and that both fields should use the same code set.

FIXimate for legacy version FIX 4.2 shows the FIX 4.4 name for the acknowledgement message of an allocation (AllocationInstructionAck) instead of the FIX 4.2 name (AllocationAck): https://fiximate.fixtrading.org/legacy/en/FIX.4.2/body_505280.html

Typo in elaboration of value 0=Manual of ExecMethod(2405).

Also used to identify MTT code M “Off Book Non-Automated”.

Acronym should be “MMT” (Market Model Topology)

Omission: information related to the replacements for deprecated fields TargetStrategyParameters(848) and ParticipationRate(849) (add elaboration to fields in data dictionary). See forum post Replacement fields for the deprecated ones for details.