- FIX-Protokoll
-
Das FIX-Protokoll (Financial Information eXchange) ist ein offener Standard zum Austausch von Informationen, welcher von Banken, Brokern, Börsen und sonstigen Dienstleistern geschaffen wurde.
Durch die Verwendung eines gemeinsamen Standards wird der Austausch von Informationen zwischen den Anwendungen der verschiedenen Hersteller erheblich vereinfacht.
Die FIX-Schnittstelle entstand im Jahr 1990 durch die Zusammenarbeit von Banken, Brokern, Börsen und Dienstleistern und hat sich als offene Schnittstelle schnell durchgesetzt.
Inhaltsverzeichnis
Standardisierung
Einige Unternehmen und Organisationen haben sich im Jahr 1998 in einer Non-Profit-Organisation, der FIX Protocol Limited zusammengeschlossen, um gemeinsam die Entwicklung des FIX-Protokoll-Standards voranzutreiben. Heutzutage umfasst diese Organisation mehr als 170 Unternehmen.
Die neueste Spezifikation ist derzeit Version 5.0, dennoch sind in der Praxis auch ältere Versionen durchaus noch in Gebrauch.
Implementierung
Das FIX-Protokoll umfasst eine Schnittstelle, diese kann von Software-Herstellern ohne Lizenzierungskosten implementiert werden.
Das FIX-Dictionary enthält den verwendeten Sprachschatz. Alle FIX-Nachrichten sind nach gewissen Regeln und Strukturen aufgebaut, die dort festgelegt sind.
In der Regel wird nur ein Teil des Sprachschatzes implementiert, der Umfang der Implementierung wird zwischen den Kommunikationspartnern (Handelspartnern) abgestimmt und beim hauseigenen Software-Entwickler in Auftrag gegeben. Bei Bedarf kann der Sprachschatz (das FIX-Dictionary) auch ohne großen Aufwand erweitert werden, in der Regel wird man jedoch auf den standardisierten Sprachschatz zurückgreifen.
Durch die Standardisierung der Schnittstelle können später, nach Vereinbarung zwischen den Handelspartnern, mit geringem Aufwand Änderungen und Erweiterungen vorgenommen werden.
Auch ist der Einsatz von Standard-Software möglich, diese kann dann bei Bedarf mit geringem Aufwand an die Anforderungen des Handelspartners angepasst werden.
FIX Datenformat
FIX Nachrichten sind auf der Basis eines ASCII Bytestroms definiert. Jedes Telegramm besteht aus einer Reihe von Schlüsselnummer-Wert Paaren, die einzelnen Wertpaare werden durch ein Byte mit Wert 1 (ASCII SOH) getrennt. Die Schlüsselnummern (Tag (Informatik)) sind in ASCII-Demimaldarstellung kodiert, durch ein Gleichheitszeichen (ASCII 61) getrennt folgt der Wert. Numerische Werte werden ebenfalls in ASCII-Dezimaldarstellung kodiert während ASCII-Zeichenketten direkt verwendet werden. Für jeden Basisdatentyp gibt es eine vorgeschriebene ASCII-Kodierung für die Wertdarstellung, die die üblichen Darstellungen für die Terminalformatierung (sprintf/sscanf) übernimmt.
Je nach Version des FIX-Protokoll sind eine Reihe von Wertpaaren vorgeschrieben - jedes Telegramm beginnt mit einem Kopfblock, in dem das erste Wertpaar die Versionsnummer nennt ("8=4.2") und ein Wertpaar den Nachrichtentyp kodiert ("35=8"). Aus dem Nachrichtentyp folgern entsprechend der FIX-Version nachfolgend zwingende oder optionale Wertpaare, die im mittleren Nachrichtblock dem Kopfblock folgen. Das Telegram wird mit einem Schlussblock (Trailer) mit geforderten Wertpaaren beendet, dass als letztes Wertpaar eine Prüfsumme enthält ("10=128").
Ein Gesamttelegramm für einen "Execution Report" (Bestätigung der Transaktionen z.B. des Aktienkaufs) sieht so aus:
- 8=FIX.4.2 | 9=178 | 35=8 | 49=PHLX | 56=PERS | 52=20071123-05:30:00.000 | 11=ATOMNOCCC9990900 | 20=3 | 150=E | 39=E | 55=MSFT | 167=CS | 54=1 | 38=15 | 40=2 | 44=15 | 58=PHLX EQUITY TESTING | 59=0 | 47=C | 32=0 | 31=0 | 151=15 | 14=0 | 6=0 | 10=128 |
Behelfsweise wurde hier "|" für das Trennzeichen SOH eingesetzt. In FIX4 erfordert der Kopfblock drei Wertpaare - BeginString(8), BodyLength(9) und MsgType(35). In FIX5 besteht der Kopfblock aus fünf zwingenden Wertpaaren plus einem optionalen Wertpaar - BeginString(8), BodyLength(9), MsgType(35), SenderCompID(49), TargetCompID(56) und optional ApplVerID(1128). Die BodyLength errechnet sich aus der Zahl der Bytes von einschließlich MsgType(35) bis ausschließlich Prüfsumme(10) wobei die SOH Trenner mitzählen. Die Prüfsumme wird über ebendiesen Block gebildet, in dem die Bytes aufsummiert werden und der Byte-Rest (modulo 255) genommen wird.
Bei dem Versand von FIX-Telegrammen per UDP muss der Kopfblock am Paketanfang beginnen, Telegramme dürfen nicht über mehrere UDP Pakete gesplittet werden.
FAST Datenformat
Die Datendarstellung per ASCII mit der Auszeichnung jedes Werts mit einer Schlüsselnummer ist für einen bandbreitenintensiven Datenstrom sehr aufwändig, etwa die Darstellung aller Marktdaten an einem liquiden Handelsplatz. Daher wurde eine alternative byte-orientierte binäre Kodierung definiert als "FIX Adapted for STreaming", kurz FAST (gleichbedeutend mit englisch "fast" für "schnell").
Bei FAST ist zur Interpretation des Datenstroms auf der Empfängerseite neben dem FIX-Verzeichnis zusätzlich ein Template (Schablonenbeschreibung) notwendig, die von der Sendeseite (dem Handelsplatz) veröffentlicht wird. Die wesentliche Optimierung besteht darin, dass im Template ein Großteil der Schlüsselnummern mit einem Grundwert (Default) belegt wird, sodass diese nicht mehr in jedem Telegramm mitgesendet werden müssen (z.B. die FIX-Version) und statt Namenswerte nur Indexwerte einer Liste (Enum) übersandt werden. Die Zahlenwerte (auch Indexwerte) werden binär kodiert. Das Template definiert dann eine zwingende Anordnung von Feldern, sodass die Schlüsselnummern (Tags) nicht mehr mitgesendet werden müssen, und schließlich es kann für die Wertkodierung angeben, dass nur noch die Differenz zum Wert des vorhergehenden Schlüsselpaars kodiert wird.
Durchgesetzt hat sich, das FAST Template als XML-Text zu veröffentlichen, wobei das XML-Schema (FIXML) durch das FIX Standardisierungsgremium definiert ist. FIXML geht auf eine Initiative der CME vom Juni 2002 zurück, die finale Version für FIX 4.4 wurde im Januar 2004 veröffentlicht.[1]
Einzelnachweise
- ↑ FIXML 4.4 Schema Overview Presentation 20040109 (16. August 2004). Abgerufen am 15. November 2011.
Weblink
- Website der FIX Protocol Limited, der Non-Profit-Organisation zur Standardisierung des FIX-Protokolls (englisch)
- FIXopaedia online FIX-Wörterbuch 4.0 4.1 4.2 4.3 4.4 5.0 FIXT 1.1
Wikimedia Foundation.