Search code examples
quickfixfix-protocol

Origin of FIX data dictionaries


The QuickFix website provides data dictionaries for various versions of FIX (note: I am talking about FIX rather than FIXML). I have not seen any mention of such data dictionaries in the FIX specification, so my assumption is that an independent person (perhaps a QuickFix developer) invented them and they became a de facto standard used across multiple FIX implementations. Does anyone know who invented them? I ask because I want to briefly discuss FIX data dictionaries in a book I am writing, and I would like to credit the inventor.

In addition, I have not been able to find a schema (e.g, DTD or XML Schema) for a FIX data dictionary (again, I am talking about FIX rather than FIXML). Do such things exist?


Solution

  • Confirming, it was me.

    When I originally created it, there was no structured version of the FIX specification. The spec was distributed as a Microsoft Word document.

    Word would allow you to export a document as HTML. So I did that manually, then created a parser for the resulting HTML documents for each version.

    Since the Word documents seemed to be edited by hand, they were quite inconsistent, and the parser needed to handle all sorts of edge cases. But eventually it was able to produce usable structured data.

    Since then the FIX repository has been released, which is how the QuickFIX xml document is currently generated (though surprisingly, there is still data cleaning that needs to be done before a good QuickFIX document is generated).

    I think there are a few reasons that the QuickFIX version of the spec became popular over the FIX repository.

    1. It is a single document for each version of the spec.

    2. It is more human readable. Tags are referenced only in field definitions. Messages are constructed with the relatively more human readable field names.

    3. There is no barriers to download. Originally if I recall correctly the FIX repository was only available to members. I don't think that's still the case, but you do still need to have an account and be logged in to download the repository.

    4. It's served a function for a large user base. Since the spec can be plugged into QuickFIX and used to generate QuickFIX messages, there was a large installed user base that can plug it and connect to your platform more easily. I believe this led to the adoption by other FIX engines to piggy back on this advantage, which I think is great.