词条 | Financial Information eXchange |
释义 |
The Financial Information eXchange (FIX) protocol is an electronic communications protocol initiated in 1992 for international real-time exchange of information related to securities transactions and markets. With trillions of dollars traded annually on the NASDAQ alone, financial service entities are investing heavily in optimizing electronic trading platforms and employing direct market access (DMA) to increase their speed to financial markets. Managing the delivery of trading applications and keeping latency low increasingly requires an understanding of the FIX protocol. HistoryThe FIX Protocol specification was originally authored in 1992 by Robert "Bob" Lamoureux and Chris Morstatt to enable electronic communication of equity trading data between Fidelity Investments and Salomon Brothers. FIX initially addressed information between broker-dealers and their institutional clients. At the time, this information was communicated verbally over the telephone. Fidelity realized that information from their broker-dealers could be routed to the wrong trader, or simply lost when the parties hung up their phones. It wanted such communications to be replaced with machine-readable data which could then be shared among traders, analyzed, acted on and stored. For example, broker-dealers call with an indication of interest (IOI) to buy or sell a block of stock. The FIX initiative created new messages such as the IOI. According to the FIX Trading Community, FIX has become the de facto messaging standard for pre-trade and trade communication in the global equity markets, and is expanding into the post-trade space to support straight-through processing, as well as continuing to expand into foreign exchange, fixed income and derivatives markets.[1] FIX Trading CommunityThe FIX Trading Community is a non-profit, industry-driven standards body with a mission to address the business and regulatory issues impacting multi-asset trading across the global financial markets through the increased use of standards, including the FIX Protocol messaging language, delivering operational efficiency, increased transparency, and reduced costs and risk for all market participants.[2] UsersFIX is widely used by both the sell side (institutions) as well as the buy side (brokers/dealers) of the financial markets. Among its users are mutual funds, investment banks, brokers, stock exchanges and ECNs. See FIX Trading Community Organization for an extensive list of major FIX users. FIX has become the standard electronic protocol for pre-trade communications and trade execution. Although it is mainly used for equity transactions in the front office area, bond, derivatives and FX-transactions are also possible. One could say that whereas SWIFT is the standard for back office messaging, FIX is the standard for front office messaging. However, today, the membership of FIX Protocol Ltd. is extending FIX into block trade allocation and other phases of the trading process, in every market, for virtually every asset class. Technical SpecificationsOriginally, the FIX standard was monolithic, including application layer semantics, message encoding, and session layer in a single technical specification. It remained monolithic through FIX version 4.2[3]. Thereafter, message encodings and session layer specifications began to be split into separate documents, and ultimately, FIX evolved into a family of related technical standards[4]. Message EncodingsMessage encoding, called Presentation Layer in the Open Systems Interconnection model (OSI model), is responsible for the wire format of messages. Tagvalue encoding (classic FIX)The original FIX message encoding is known as tagvalue encoding. Each field consists of a unique numeric tag and a value. The tag identifies the field semantically. Therefore, messages are self-describing. Tagvalue encoding is character-based, using ASCII codes. FIX tagvalue message formatThe message fields are delimited using the ASCII 01 They are composed of a header, a body, and a trailer. Up to FIX.4.4, the header contained three fields: 8 ( From FIXT.1.1 / FIX.5.0, the header contains five mandatory fields and one optional field: 8 ( The content in the body of the message is specified by (tag 35, The last field of the message is tag 10, FIX Message Checksum. It is always expressed as a three-digit number (e.g. Header+Body+Trailer : FIX Content Example of a FIX message : Execution Report (Pipe character is used to represent SOH character) 8=FIX.4.2 | 9=176 | 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 | In the above FIXMessage Body length 9 is correct and checksum 10 was checked out by using the source available from QuickFIX, an open-source FIX implementation. BodyFIX messages are formed from a number of fields; each field is a tag value pairing that is separated from the next field by a delimiter SOH (0x01). The tag is an integer that indicates the meaning of the field. The value is an array of bytes that hold a specific meaning for the particular tag (e.g. tag 48 is securityID, a string that identifies the security; tag 22 is IDSource, an integer that indicates the identifier class being used). The values may be in plain text or encoded as pure binary (in which case the value is preceded by a length field). The FIX protocol defines meanings for most tags, but leaves a range of tags reserved for private use between consenting parties. The FIX protocol also defines sets of fields that make a particular message; within the set of fields, some will be mandatory and others optional. The ordering of fields within the message is generally unimportant, however repeating groups are preceded by a count and encrypted fields are preceded by their length. The message is broken into three distinct sections: the head, body and tail. Fields must remain within the correct section and within each section the position may be important as fields can act as delimiters that stop one message from running into the next. The final field in any FIX message is tag 10 (checksum). There are two main groups of messages—admin and application. The admin messages handle the basics of a FIX session. They allow for a session to be started and terminated and for recovery of missed messages. The application messages deal with the sending and receiving of trade-related information such as an order request or information on the current state and subsequent execution of that order. HeaderBody lengthBody length is the character count starting at tag 35 (included) all the way to tag 10 (excluded). SOH delimiters do count in body length. For Example: (SOH have been replaced by'|') 8=FIX.4.2|9=65|35=A|49=SERVER|56=CLIENT|34=177|52=20090107-18:15:16|98=0|108=30|10=062| 0 + 0 + 5 + 10 + 10 + 7 + 21 + 5 + 7 + 0 = 65 Has a Body length of 65. The SOH delimiter at the end of a Tag=Value belongs to the Tag. Trailer: ChecksumThe checksum of a FIX message is always the last field in the message. It is composed of three characters and has tag 10.[5] It is given by summing the ASCII value of all characters in the message, except for those of the checksum field itself, and performing modulo 256 over the resulting summation.[6] For example, in the message above, the summation of all ASCII values (including the SOH character, which has a value of 1 in the ASCII table) results in 4158. Performing the modulo operation gives the value 62. Since the checksum is composed of three characters, 062 is used. FIXMLFIXML[7] is an XML schema for FIX messages. It is semantically equivalent to tagvalue encoded messages but takes advantage of XML parser technology. FIXML is commonly used for back-office and clearing applications rather than trading. Simple Binary Encoding (SBE)Simple Binary Encoding[8] defines a wire format using primitive data types that are native to computing systems. Message encoding and decoding is therefore much lower latency than character-based protocols since no translation is needed to put data into a format that computers can use. Aside from latency advantages, performance is more deterministic because SBE messages are constrained by templates and fixed-length data elements are preferred. Another consequence is that fields are generally at a fixed position so that message filters and routers do not need to crack an entire message to access key fields. SBE was developed by the FIX High Performance Working Group to support high performance trading. Tagvalue encoding was deemed no longer fit-for-purpose since it is character based rather than binary and its variable-length fields and messages result in non-deterministic performance. Unlike tagvalue and FIXML, an SBE message is not self-describing. Only data is sent on the wire with a minimal header to identify the template that controls a message. Metadata that describes a message layout is exchanged out-of-band between peers. FIX Trading Community publishes an XML schema for SBE message schemas. A message schema may contain any number of message templates. A template describes the fields that constitute a message. Additionally, a schema provides a listing of simple and composite data types that may be reused by any number of fields. Other FIX EncodingsFIX Trading Community has also developed standard mappings between FIX and other message protocols, including:
Session ProtocolsSession layer is responsible for message exchange including checkpoint recovery mechanisms. FIX Transport (FIXT)The original FIX session protocol did not have its own name since it was part of a monolithic specification covering application layer semantics and message encoding as well. However, starting with FIX version 5.0, the session layer was split off as an independent specification with the introduction of FIXT[9]. FIXT was largely the same as the original unnamed session layer in version 4.x, but it offered one significant innovation--it provided a mechanism to mix FIX application layer versions over a common session version. The current FIXT version is 1.1. Theoretically, FIXT is transport independent. However it is usually employed over Transmission Control Protocol (TCP). FIXT is a point-to-point protocol. It guarantees message delivery in both directions. Messages sent in each direction carry a message sequence number in the message header. If there is a communication fault, a peer may request retransmission of missed messages. Message delivery is supported even in the event of disconnection and later reestablishment of a session. To implement session establishment and guaranteed delivery, FIXT and classic FIX 4.x define these session message types:
FIX Performance Session Layer (FIXP)FIXP[10] was developed by the FIX High Performance Working Group[11] to meet the needs of high performance trading. The primary need is for low latency message encoding and decoding and control over message delivery guarantees. To provide low latency, binary message encodings are supported both for session layer and application messages. The actual wire format is abstracted in the FIXP specification, so users may select a FIX encoding of their choice, so long as peers agree on a protocol to use. Early development has used Simple Binary Encoding. FIXP covers both point-to-point and multicast use cases with common primitives. When a point-to-point session is established, peers negotiate delivery guarantees from among the following choices:
Delivery guarantees may be asymmetrical. For example, a trader may enter orders over an idempotent flow while executions are returned over a recoverable flow. In fast moving markets, the delay inherent in retransmission is often undesirable, resulting in missed opportunities or bad trades. Diagrammatic representation of FIX systemBelow is a diagram of how FIX messaging looks between Buyside/Customer and Sellside/Supplier.[12] Latest developments in FIX protocolThe latest version of FIX Protocol implements "Transport Independence" by permitting multiple versions of application messages to be carried over a single version of Transport Independent FIX Session (FIXT.1.1 and higher). Transport Independence also paves the way for transport protocols such as message queues and web services to be used instead of traditional FIX over TCP. FIX now supports algorithmic trading by use of FIX Algorithmic Trading Definition Language FIXatdl. FIX Protocol Limited has released FAST protocol which stands for FIX Adapted for Streaming. FAST is a binary protocol and used mostly for sending Multicast market data via UDP connections. Testing ToolsMany companies offer FIX testing products and services:
See also
Notes1. ^{{cite web|url=http://www.fixprotocol.org/what-is-fix.shtml|archive-url=https://web.archive.org/web/20040909043901/http://fixprotocol.org/what-is-fix.shtml|dead-url=yes|archive-date=September 9, 2004|title=What is FIX?|publisher=The FIX Protocol Organization|date=June 8, 2009}} 2. ^{{Cite web|url=https://www.fixtrading.org/overview/|title=Overview • FIX Trading Community|website=FIX Trading Community|language=en-US|access-date=2018-12-06}} 3. ^{{Cite web|url=https://www.fixtrading.org/standards/fix-4-2/|title=FIX 4.2 Specification with 20010501 Errata • FIX Trading Community|website=FIX Trading Community|language=en-US|access-date=2018-12-05}} 4. ^{{Cite web|url=https://www.fixtrading.org/standards/|title=FIX Standards • FIX Trading Community|website=FIX Trading Community|language=en-US|access-date=2018-12-05}} 5. ^[https://www.onixs.biz/fix-dictionary/4.2/tagNum_10.html FIX 4.2 : CheckSum <10> field | FIX Dictionary] 6. ^[https://www.onixs.biz/fix-dictionary/4.2/app_b.html Appendix B - CheckSum Calculation | FIX Dictionary] 7. ^{{Cite web|url=https://www.fixtrading.org/standards/fixml/|title=FIXML • FIX Trading Community|website=FIX Trading Community|language=en-US|access-date=2018-12-05}} 8. ^{{Cite web|url=https://www.fixtrading.org/standards/sbe/|title=Simple Binary Encoding (SBE) • FIX Trading Community|website=FIX Trading Community|language=en-US|access-date=2018-12-05}} 9. ^{{Cite web|url=https://www.fixtrading.org/standards/fixt/|title=FIX Transport (FIXT) • FIX Trading Community|website=FIX Trading Community|language=en-US|access-date=2018-12-05}} 10. ^{{Cite web|url=https://www.fixtrading.org/standards/fixp/|title=FIX Performance Session Layer (FIXP) • FIX Trading Community|website=FIX Trading Community|language=en-US|access-date=2018-12-05}} 11. ^{{Cite web|url=https://www.fixtrading.org/groups/hpwg/|title=Home – High Performance Working Group|website=FIX Trading Community|language=en-US|access-date=2018-12-05}} 12. ^{{Cite web|url=https://www.sans.org/reading-room/whitepapers/threats/exploiting-financial-information-exchange-fix-protocol-33964|title=Exploiting Financial Information Exchange (FIX) Protocol?|last=DeMarco|first=Darren|date=|website=|publisher=|access-date=}} 13. ^{{Cite web|url=https://www.phifix.com/|title=Sensiple {{!}} PhiFIX is a suite of Multi-protocol (FIX, EMAPI, FAST, ITCH & OUTCH) based messaging infrastructure for Capital Markets Industry|last=|first=|date=|website=www.phifix.com|archive-url=|archivedate=|dead-url=|accessdate=2019-02-25}} 14. ^{{Cite web|url=http://www.lefinsys.com|title=Lefinsys {{!}} Testamatiq Fix sender and certification tool|website=www.lefinsys.com|access-date=2016-05-08}} 15. ^{{Cite web|url=http://www.b2bits.com/trading_solutions/fix_testing_facts.html|title=B2BITS FIX {{!}} FIX Automated Certification and Testing Service|website=www.b2bits.com|access-date=2016-05-08}} 16. ^{{Cite web|url=http://www.camerontecgroup.com/products/verifix/|title=VeriFIX {{!}} Products {{!}} CameronTec Group|website=www.camerontecgroup.com|access-date=2016-05-08}} 17. ^{{Cite web|url=http://www.esprow.com/products/fix-protocol-testing.php|title=Esprow ETP Studio for FIX|website=www.esprow.com|access-date=2016-05-08}} 18. ^{{Cite web|url=http://www.exactprosystems.com/testtools|title=Test Tools|website=www.exactprosystems.com|access-date=2016-05-08}} 19. ^{{cite web|title=FIX Flyer Ignition|url=https://www.fixflyer.com/fix-software/testing-certification/|website=www.fixflyer.com|accessdate=17 March 2017}} 20. ^{{cite web|title=GDS Fizzer|url=https://github.com/GDSSecurity/Fizzer|website=www.gdssecurity.com.com|accessdate=25 April 2018}} 21. ^{{cite web|title=FIXSIM|url=http://www.fixsim.com|website=www.fixsim.com|accessdate=31 October 2016}} 22. ^{{Cite web|url=http://www.onixs.biz/fix-protocol-tools.html|title=FIX Protocol Tools - Message Analysis - FIX Trading: OnixS|website=www.onixs.biz|access-date=2016-05-08}} 23. ^{{Cite web|url=http://www.wipro.com/services/applications/services/testing-services/industry-solutions/fix-examen/|title=Fix Protocol Testing, Fix Testing Tools {{!}} Wipro|website=www.wipro.com|access-date=2016-05-08}} 24. ^{{Cite web|url=https://fixspec.com/platform/central|title=Central by FixSpec|website=fixspec.com|access-date=2019-03-26}} External links
9 : Financial routing standards|Market data|Financial metadata|Network protocols|Application layer protocols|Financial industry XML-based standards|Financial software|Electronic trading systems|Financial markets |
随便看 |
|
开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。