FIX Standard Errors and Omissions 2018-2021

This is a new thread suggested at the October GTC meeting to capture errors and omissions discovered in the FIX Standard, e.g. misspellings or gaffes in the description. Bugs found in the website should not be reported here but in the Bug Reports thread; bugs in FIX44 XML, in Bug in FIX44 XML specification, etc.

  1. ValuationBusinessCenter(2087) - “GLOB” should be “GBLO” [the code for London]

  2. Codelists, in general - the link provided consistently returns the dreaded 404 error, e.g.

  1. ConfirmationAck(35=AU) Text(58) usage text - should read “Can include explanation for ConfirmationRejReason = 99 (Other).”

RelativeValueType(2530) - should have additional enumerations for two often-used relative values:

  • <tbd> = DV01/PV01
    [Elaboration: The maximum currency value change resulting from a move of one basis point in the yield curve. This limits the interest rate risk exposure. Also known as “basis point value” or BPV.]
  • <tbd> = CS01
    [Elaboration: Credit spread sensitivity. Represents the change in market value of a CDS for a one basis point change in the credit spread.]

My own errors and omissions in the EP235 Gap Analysis for CFTC. Discovered in mapping MiFID II requirements.

  1. PaymentStreamFloatingRate(tbd) - missing two fields:
  • PaymentStreamRateIndex2(tbd) / @Ndx2 / String / The second floating rate index.
  • PaymentStreamRateIndex2Source / @Ndx2Src / int [=PaymentStreamRateIndexSource(40790)] / The source for the second floating rate index.
    Correct field name in usage text:
  • PaymentStreamRateIndex2CurvePeriod(41194) - … PaymentStreamRateIndex2CurveUnit(41195) is specified.
  • PaymentStreamRateIndex2CurveUnit(41195) - … PaymentStreamRateIndex2CurvePeriod(41194) is specified.
  1. LegPaymentStreamFloatingRate - missing two fields:
  • LegPaymentStreamRateIndex2(tbd) / @Ndx2 / String / The second floating rate index.
  • LegPaymentStreamRateIndex2Source(tbd) / @Ndx2Src / int [=PaymentStreamRateIndexSource(40790)] / The source for the second floating rate index.
    Correct field name in usage text:
  • LegPaymentStreamRateIndex2CurveUnit(41563) - … LegPaymentStreamRateIndex2CurvePeriod(41564) is specified.
  • LegPaymentStreamRateIndex2CurvePeriod(41564) - … LegPaymentStreamRateIndex2CurveUnit(41563) is specified.
  1. UnderlyingPaymentStreamFloatingRate - missing two fields:
  • UnderlyingPaymentStreamRateIndex2(tbd) / @Ndx2 / String / The second floating rate index.
  • UnderlyingPaymentStreamRateIndex2Source(tbd) / @Ndx2Src / int [=PaymentStreamRateIndexSource(40790)] / The source for the second floating rate index.
    Correct field name in usage text:
  • UnderlyingPaymentStreamRateIndex2CurveUnit(41911) - … UnderlyingPaymentStreamRateIndex2CurvePeriod(41912) is specified.
  • UnderlyingPaymentStreamRateIndex2CurvePeriod(41912) - … UnderlyingPaymentStreamRateIndex2CurveUnit(41911) is specified.

See error posted for UnderlyingSettlementType

Hello,

Here is a list of typos found in FIX repository 5.0 SP2 EP249.

Regards, Xavier.

[Components.xml:2277]: Typo at index 539 (preceeding -> preceding)
[Components.xml:2316]: Typo at index 515 (preceeding -> preceding)
[Components.xml:2532]: Typo at index 527 (preceeding -> preceding)
[Components.xml:2599]: Typo at index 503 (preceeding -> preceding)
[Components.xml:2921]: Typo at index 567 (preceeding -> preceding)
[Components.xml:2960]: Typo at index 543 (preceeding -> preceding)
[Datatypes.xml:305]: Typo at index 143 (specifed -> specified)
[Enums.xml:6748]: Typo at index 20 (Offical -> official)
[Enums.xml:6751]: Typo at index 19 (Offical -> official)
[Enums.xml:11743]: Typo at index 29 (Unkown -> unknown)
[Enums.xml:11746]: Typo at index 30 (Unkown -> unknown)
[Enums.xml:11791]: Typo at index 29 (Unkown -> unknown)
[Enums.xml:11794]: Typo at index 30 (unkown -> unknown)
[Enums.xml:14137]: Typo at index 77 (explaination -> explanation)
[Enums.xml:20127]: Typo at index 20 (Undelying -> underlying)
[Enums.xml:20130]: Typo at index 19 (Undelying -> underlying)
[Enums.xml:27205]: Typo at index 20 (Algorith -> algorithm)
[Enums.xml:39246]: Typo at index 19 (Comission -> commission)
[Enums.xml:41747]: Typo at index 86 (positon -> position)
[Fields.xml:1577]: Typo at index 60 (approriate -> appropriate)
[Fields.xml:3067]: Typo at index 50 (messsage -> message)
[Fields.xml:4442]: Typo at index 28 (Priorty -> priority)
[Fields.xml:8219]: Typo at index 28 (defintion -> definition)
[Fields.xml:8228]: Typo at index 28 (defintion -> definition)
[Fields.xml:9399]: Typo at index 168 (Calender -> calendar)
[Fields.xml:12084]: Typo at index 36 (mesage -> message)
[Fields.xml:16251]: Typo at index 166 (insrument -> instrument)
[Fields.xml:17272]: Typo at index 282 (specifed -> specified)
[Fields.xml:17289]: Typo at index 425 (relevent -> relevant)
[Fields.xml:17415]: Typo at index 57 (relevent -> relevant)
[Fields.xml:18765]: Typo at index 120 (dependant -> dependent)
[Fields.xml:18774]: Typo at index 77 (dependant -> dependent)
[Fields.xml:19753]: Typo at index 56 (preceeding -> preceding)
[Fields.xml:29636]: Typo at index 283 (specifed -> specified)
[Fields.xml:29653]: Typo at index 425 (relevent -> relevant)
[Fields.xml:32080]: Typo at index 120 (dependant -> dependent)
[Fields.xml:32089]: Typo at index 77 (dependant -> dependent)
[Fields.xml:34783]: Typo at index 156 (ommitted -> omitted)
[Fields.xml:37147]: Typo at index 283 (specifed -> specified)
[Fields.xml:37164]: Typo at index 425 (relevent -> relevant)
[Fields.xml:38937]: Typo at index 57 (relevent -> relevant)
[Fields.xml:49106]: Typo at index 24 (Execption -> exception)
[IntermediateRepository.xml:4599]: Typo at index 542 (preceeding -> preceding)
[IntermediateRepository.xml:4638]: Typo at index 515 (preceeding -> preceding)
[IntermediateRepository.xml:4854]: Typo at index 530 (preceeding -> preceding)
[IntermediateRepository.xml:4921]: Typo at index 503 (preceeding -> preceding)
[IntermediateRepository.xml:5243]: Typo at index 570 (preceeding -> preceding)
[IntermediateRepository.xml:5282]: Typo at index 543 (preceeding -> preceding)
[IntermediateRepository.xml:9205]: Typo at index 146 (specifed -> specified)
[IntermediateRepository.xml:10981]: Typo at index 63 (approriate -> appropriate)
[IntermediateRepository.xml:12471]: Typo at index 53 (messsage -> message)
[IntermediateRepository.xml:13549]: Typo at index 228 (realised -> realized)
[IntermediateRepository.xml:13846]: Typo at index 31 (Priorty -> priority)
[IntermediateRepository.xml:17631]: Typo at index 31 (defintion -> definition)
[IntermediateRepository.xml:17640]: Typo at index 31 (defintion -> definition)
[IntermediateRepository.xml:18795]: Typo at index 171 (Calender -> calendar)
[IntermediateRepository.xml:21505]: Typo at index 39 (mesage -> message)
[IntermediateRepository.xml:25763]: Typo at index 169 (insrument -> instrument)
[IntermediateRepository.xml:32516]: Typo at index 27 (Execption -> exception)
[IntermediateRepository.xml:33016]: Typo at index 428 (relevent -> relevant)
[IntermediateRepository.xml:33142]: Typo at index 60 (relevent -> relevant)
[IntermediateRepository.xml:34492]: Typo at index 123 (dependant -> dependent)
[IntermediateRepository.xml:34501]: Typo at index 80 (dependant -> dependent)
[IntermediateRepository.xml:44115]: Typo at index 428 (relevent -> relevant)
[IntermediateRepository.xml:46197]: Typo at index 123 (dependant -> dependent)
[IntermediateRepository.xml:46206]: Typo at index 80 (dependant -> dependent)
[IntermediateRepository.xml:48564]: Typo at index 159 (ommitted -> omitted)
[IntermediateRepository.xml:49953]: Typo at index 428 (relevent -> relevant)
[IntermediateRepository.xml:51258]: Typo at index 60 (relevent -> relevant)
[IntermediateRepository.xml:60590]: Typo at index 89 (positon -> position)
[IntermediateRepository.xml:63177]: Typo at index 23 (Algorith -> algorithm)
[IntermediateRepository.xml:68468]: Typo at index 23 (Offical -> official)
[IntermediateRepository.xml:68471]: Typo at index 22 (Offical -> official)
[IntermediateRepository.xml:74393]: Typo at index 32 (Unkown -> unknown)
[IntermediateRepository.xml:74396]: Typo at index 33 (Unkown -> unknown)
[IntermediateRepository.xml:74441]: Typo at index 32 (Unkown -> unknown)
[IntermediateRepository.xml:74444]: Typo at index 33 (unkown -> unknown)
[IntermediateRepository.xml:77578]: Typo at index 80 (explaination -> explanation)
[IntermediateRepository.xml:86014]: Typo at index 23 (Undelying -> underlying)
[IntermediateRepository.xml:86017]: Typo at index 22 (Undelying -> underlying)
[IntermediateRepository.xml:97163]: Typo at index 22 (Comission -> commission)
[IntermediateRepository.xml:113661]: Typo at index 113 (Amout -> amount)
[IntermediateRepository.xml:117394]: Typo at index 113 (Amout -> amount)
[IntermediateRepository.xml:138957]: Typo at index 45 (occurences -> occurrences)
[IntermediateRepository.xml:148594]: Typo at index 284 (occurances -> occurrences)
[IntermediateRepository.xml:153372]: Typo at index 50 (Underying -> underlying)
[Messages.xml:774]: Typo at index 86 (positon -> position)
[MsgContents.xml:12804]: Typo at index 110 (Amout -> amount)
[MsgContents.xml:16537]: Typo at index 110 (Amout -> amount)
[MsgContents.xml:38100]: Typo at index 42 (occurences -> occurrences)
[MsgContents.xml:47737]: Typo at index 281 (occurances -> occurrences)
[MsgContents.xml:49185]: Typo at index 209 (relevent -> relevant)
[MsgContents.xml:52515]: Typo at index 47 (Underying -> underlying)

The field elaboration for PriceType(423) specifically calls for 9 (Yield) for a fixed repo rate. This has been obsolete since EP174 when 24 (Interest rate) was introduced. Moreover the 2019 EU SFTR gap analysis and recommended practices (EP254) also call for 24 (Interest rate) for a fixed repo rate.

Symbol value [Don] (Don’t know / Rejected) from ExecAckStatus(1036) field, doesn’t look obvious. I would suggest to change it to [DontKnow] (for example)
We use such values for code generation and as a short description for our codec

In EP264 Orchestra file:

  • there is a sort=" 4" (with a space before 4),
  • WarehouseRequestRejected and DuplicateOrMissingIndividualAllocId code sets use the same sort value (14).

In the repository 2010 (FixRepository.xml unified file):

  • Length is not defined as datatype for FIX 4.0, 4.1, 4.2,
  • Boolean is not defined as datatype for FIX 4.3,
  • In FIX 4.2, tag 18 uses MultipleValueString instead of MultipleStringValue.

Regarding sort, a related issue has been posted in GitHub. The sort attribute was incorrectly declared as a string rather than a numeric type in the Orchestra XML schema. This will be corrected in the next version. It would be helpful if you could tell how you use that attribute.

The datatype differences that you mentioned are not accidental. Some datatypes were added in later versions of FIX; they were not all defined from the start.

In that case the issue is that some fields are declared with a type which is not supposed to be used.
For example, tags 90/93/95 are declared with type=“Length” in FIX 4.0.

The supported versions of FIX are 4.2, 4.4, 5.0 SP2 and FIX Latest. We have developed Orchestra.XML repositories for FIX 4.2 and FIX 4.4, please see here in GitHub.

There is the same issue in FIX 4.2. I’m just reporting errors I found in the archive published here: https://www.fixtrading.org/packages/fix-repository-2010/. Feel free to patch them or not.

As a vendor we can’t expect our clients to only use the official supported versions. Since there is no Orchestra file for all legacy versions, we also support the unified repo 2010 for FIX.4 sessions.

Concerning the “sort” attribute, we use it to display the values in the specified order (only for documentation).

I think I understand the issue now, thank you for raising it, @xavierbruyet. Data type “Length” was introduced with FIX 4.3. You are saying that some of the FIX 4.2 fields (90/93/95) falsely have this data type instead of “int”.

Length is not the only data type that was added. Here is the excerpt from the FIX 4.3 Release Notes:

  • Created a Length, NumInGroup, and SeqNum data type of type “int”. Changed “XXXLength”, “NoXXX”, and “XXXSeqNum” fields to be of that type.
  • Created a Percentage data type of type “float”.
  • Created a Country data type of type “String” based upon ISO 3166-1.
  • Added a new data type “TagNum” as “int” field … representing a field’s tag number when using FIX “Tag=Value” syntax. Value must be positive and may not contain leading zeros."

We will look into fixing this for the Orchestra format of the FIX 4.2 repository. We want to deprecate the Basic format after migrating from Unified to Orchestra as master format (see the following thread). It asks for existing usages of the Basic repository. I guess you have clients that still use it :wink:

@hanno.klein apparently, there was an inconsistency in the Unified Repository that the Orchestra file was created from for FIX 4.2. We added the Length datatype to it so it would pass validation, even though that type was not officially added until FIX 4.3.

@donaldmendelson thanks for the clarification, not sure what the better approach is (adding FIX 4.3 data types to FIX 4.2 as addendum versus renaming data types in FIX 4.2 repositories). A workaround is easy, i.e.

  • replace <Type>Length</Type> with <Type>int</Type> in FIX 4.2 Basic repository
  • replace type="Length" with type="int" in FIX 4.2 Unified or Orchestra repository.

In FIX 4.4, the data type of tag 532 is “char” but should be “int” (for 532=99).

@xavierbruyet this was corrected in FIX Latest

We need a correction in the FIX.4.4 repository as well.

Has been entered in GitHub as issue #21 for the FIX Orchestra XML representation of FIX 4.4.

Thank you Hanno. Is the Orchestra file still generated from the Unified file or is it supported separately?