The Financial Information Exchange (FIX) protocol was created in 1992 to be the universal communication language for international financial transactions. Because all order systems are different, there was a strong need to have a universal format for communicating all executions between brokers, exchanges, mutual funds, investment banks, and direct market access participants.
The FIX protocol has become the de-facto messaging standard for pre-trade, trade, and post-trade communication, as well as for U.S. regulatory reporting. It is compatible with almost every commonly used network technology. FIX Protocol, Ltd. owns and maintains the FIX system. The company was formed entirely to fulfill that purpose and to ensure the system remains in the public domain. The protocol is used by the FIX community, which includes nearly 300 member firms including all major investment banks.
It is also important to note that the FIX standards are technical specifications rather than concrete implementations. The actual technical implementations are known as "FIX Engines" that support the FIX protocol session, application and encoding specifications. A key benefit of the FIX protocol standards are that they mandate the behavior of the connected counter-parties so that FIX Engine implementations from different providers are interoperable.
A FIX message is essentially a string consisting of sets of numerical tags and values separated by the SOH character, typically represented with the character "|". Each tag represents a different field and is associated with a specific set of allowable values. Below is an example of a FIX message that requests server authentication.
The repetitive pattern found in each FIX message is as follows:
Depending on the purpose of each message, different sets of tags and values are required each time. In this case, the FIX message shown above can be broken down in the following items:
Similarly, responses are sent back from the server. Below, you can see the server's response to the above message.
The steps involved in communicating with a FIX server include constructing a FIX message, transmitting it, receiving the response, and parsing it.
The original FIX message is not easy to read because it prioritizes efficiency over understandability. As a result, each FIX client requires a process to convert the provided information into the appropriate FIX message.
1. tradeclient: A FIX client for manually testing FIX protocol endpoints. It's based on Quickfix, C++. QuickFIX comes with several example applications, including Banzai, a simple trading client.
2. FIXimulator: A Java based FIX trading application built on the open source QuickFIX/J FIX engine. Its main intended purpose is to be used as a testing tool in writing, building, and analyzing other trading applications that use FIX.
3. FIX Client Simulator (Free trial): is a rich desktop UI application. It allows to simulate multiple FIX-protocol-defined buy-side- and sell-side-oriented workflows and empowers users to create and run repeatable test scenarios for FIX sessions.
4. FixClient: FIX Client is a Windows desktop program designed for manually testing FIX protocol end points. It can simulate both initiator and acceptor behaviour. FIX Client is written in C# using Winforms and is built on a C# FIX library that can be used standalone to build other programs.
5. Mini-FIX: Mini-FIX is a client/server able to communicate using this protocol with a high degree of freedom and transparency, well suited for developing and testing other FIX applications.
1. QuickFIX: QuickFIX C++ Fix Engine Library. Available interface bindings for Python and Ruby.
2. QuickFIX/J: A full featured messaging engine for the FIX protocol. It is a 100% Java open source implementation of the popular C++ QuickFIX engine.
3. QuickFIX/Go: Open Source FIX Protocol library implemented in Go.
4. QuickFIX/n: QuickFIX/n is a .NET port of QuickFIX, an open source C++ FIX engine.
5. fix8: A modern open source C++ FIX framework featuring complete schema driven customisation, high performance and fast application development.
6. Onixs Fix Engine: Demo. Low latency FIX Engine for .NET / C#, C++ and Java SDK implementations.
7. InfoReach FIX Engine: Demo. Enterprise-strength solution for companies that plan to use the FIX protocol for electronic financial information exchange and Straight Through Processing (STP).
8. RA FIX Engine: Demo. Proprietary software with options for Java, .NET/C#, and Microsoft’s BizTalk.
9. FIXEdge: Demo. FIXEdge® is an application server providing FIX connectivity to buy and sell side institutions, exchanges and clearing houses. It is written in C++ and available in Java.
10. FIX Antenna: FIX Antenna® C++ is specifically designed to deliver high performance. It can deliver over 100,000 messages per second on a single CPU and has been benchmarked at 500,000 messages/sec steady throughput with 500 sessions processing 1,000 messages per/second each. It is also available for Java, .NET, Python, and C++/HFT.
11. FerrumFIX: A free and open source FIX engine implementation in Rust. Please note that it's currently under heavy development and wildly unstable
12. simplefix: Simple FIX Protocol implementation for Python. It does no socket handling, and does not implement FIX recovery or any message persistence. It supports the creation, encoding, and decoding of FIX messages.
1. Fizzer: Fizzer runs by inserting fuzz strings into FIX requests it parses from a raw packet capture.
2. fixer: Fixer™ is a Python command-line tool which simplifies and enhances FIX security testing by delivering a more customisable and automated Fix fuzzing process. Fixer will use as input a TCPDump or Wireshark capture of a legitimate fix Login conversation in raw format. The tool will then process the .RAW file exctracting and parsing FIX messages which will be fuzzed by the tool.
3. fixtest: The purpose of this tool is to provide a way to test networking components using the FIX level at the system level, not unit test. This tool provides a way of creating test cases that can act as FIX clients or as FIX servers. But this is not a simulator, the test case author is responsible for generating the actual messages and checking their correctness.
4. Wireshark: A network protocol analyzer that can capture and analyze FIX protocol traffic.
1. FIX Security White Paper v1.9 (2017): Intended to provide FIX Trading Community members with some of the common questions and answers regarding computer and network security when using FIX. Its scope is limited to the FIX Protocol and transmission of FIX messages between parties.
2. Exploiting Financial Information Exchange (FIX) Protocol? (2012): The paper explores the critical yet often overlooked security vulnerabilities of the FIX Protocol, a cornerstone of electronic trading in financial markets. By delving into potential risks like Denial of Service (DoS) attacks and protocol parser weaknesses.