FIX Protocol           2008 Feb 28th, 29th


Fill Or Kill (FOK):

An order given to a broker, which must be immediately executed entirely, otherwise totally cancelled. Typically this is for the order whose Quantity is large, and has to be executed in very short period such as within a few seconds.


Give Up:

The system that allows to the investor, who trades Futures/Options, to do the settlement with the brokers who is not the broker with whom the investor trads the Futures/Options. (so called Order/Settlement segregation)


FIX propagation:

FIX is majorly used from 4.0 which is around 1997. 5.0 is now under discussion but not arrived yet.


IOI (Indications Of Interest):

FIX also supports to broadcast IOI to the market. This indicates one’s willingness to buy or sell. One of the interesting field is “IOIShares” that you don’t have to specify the actual number but you only mentions the level of the size of the order like ‘M’ which means Medium. This is introduced in FIX 4.2


Latency: (遅延時間)

In networking, the word Latency is used for indicating the amount of time it takes a packet to travel from source to destination.


Bandwidth: (帯域幅)

The amount of data that can be transmitted in a fixed amount of time. For the digital devices, this is usually expressed by bps (bit per second).


FIX Certification:

The FIX Certification Program was formed to create a benchmark for market participants to verify their use of FIX. It serves as an FPL-sanctioned reference implementation that will reduce the amount of time and effort associated with connecting to trading partners who have also certified their systems via the program. This will ultimately improve the quality and consistency of FIX Protocol usage. Although participation is not mandatory for firms using FIX to communicate trade information, completing the FIX Certification Program ensures that a firm has met the highest standard of FIX usage and demonstrates that a firm has sufficient knowledge and expertise in utilizing FIX.


FIX version varieties:

-          Equities and Warrants: 4.0~

-          Futures and Options: 4.2~

-          Fixed Income: 4.4~

-          FX, FX Swaps: (later)


FIX Protocol Basics:

-          Tag-Value pairs (delimitted by delimitter)

-          Sequence Numbers (every day, reset to 1) Note) ~4.0, this only allows the integer which caused a big issue. After 4.1, we can use character.

-          Header/Body/Trailer

-          Message Type (Tag 35)

-          Optimistic protocol


Session Layer:

Mainly used by FIX Engine. This manages,

-          Sequence Numbers

-          Header information

-          Messages

Ø         Logon

Ø         Resend request

Ø         Heartbeat

Ø         Test Request

-          Outages and Recovery



Heartbeat interval is specified by Logon message.


Test Request:

If one of the node doesn’t get any message (either Heartbeat or normal message) for the period of Heartbeat interval, the node sends the “Test Request” message to the other. Once the opposite node receives “Test Request”, it has to send back the “Heartbeat” immediately to the counterparty.


Resend Request:

During the messaging, it sometimes happen that the message might be lost and the other node receives the message like the following.


14: Heart Beat                     ---------------------------->

15: Execution Report            ---------------------------->

16: Execution Report            ---------------------> X

17: Hearbeat                        ---------------------------->

                                                                                    <----------------------------            Resend Request:

                                                                                    (BeginSeqNo=16, EndSeqNo=999999(4.0) or 0(4.1~))

Since this node has missed to get the Message Sequence Number “16” before the “17” arrives, it asks to “Resend” the message from “16” again.

16: Execution Report            ---------------------------->


                                          This means that this is a resend message

17: SeqReset                      ---------------------------->

                                          (PossDup=Y, GapFill=Y, NewSeqNo=18)

                                          Since the counterparty doesn’t have to repeat the process for Heartbeat, you can notify this message is only for the Gap Filling with the following Sequence Number.

18: Heart Beat                     ---------------------------->


Note) One of the recommended way to establish the connection properly is to wait the Test Request right after you send the Logon message. (but why you need it even you get the Logon Responce?)


Application Layer:

-          Indication Of Interest

-          Order Routing messages (Orders, Cancels, Replaces, Executions, Busts)

-          Post Trade messages (Allocations, Settlement Instructions)

-          Market Data (Quote Request, Quotes)


New Order:

ClOrdID must be unique and you cannot reuse even if it’s the cancel/replace for the original order. Instead, you have to specify OrgClOrdID to link your order to the previous order.

New Order                           ---------------------------->

                                                                                    <----------------------------            Execution Report (Ack)

                                                                                    <----------------------------            Execution Report (Patial Fill)

                                                                                    <----------------------------            Execution Report (Fill)


Execution Report:

-          Solicited message is started by FIX message whereas Unsolicited message isn’t.

-          ExecTransType is normally 0 (New) for the message originated by Investor (BuySide and SellSide). This is only modified by the Exchange in the case Exchange needs to modify/cancel the trade due to the abnormal situation such as Exchange system goes down due the disaster.

-          Fill Fields: LastPx, LastShares are for the actual execution condition. Price is for the Original order. etc.

-          You have multiple status fields such as ExecTransType (alrerady mentioned), ExecType and OrdStatus. ExecType is for the Execution status whereas OrdStatus is for the Order status. These 2 are sometimes different especially for the case such as right after Cancel/Replace order has been sent but it hasn’t been accepted (by exchange) and during this pending period, the original order has been executed. In this case, it can happen that the ExecType is 1 (PartialFill) but OrdStatus = E (Pending Replace). All of these complicated scenarios are described in FIX Protocol reference manual, Appendix D.



Supported for Fixed Income business.


DK Trade:

A slung of “Out Trade”. An Out Trade is known as a trade that cannot be cleared by the associated exchange clearing house because of discrepancies between the data submitted by both parties on the opposite sides of a transaction. When an out trade occurs, it is returned to the two parties affected in order to have the inconsistency reconciled. Should the matter be resolved, the trade is resubmitted to the clearing house. If the matter cannot be resolved, it is then forwarded to the appropriate exchange committee for dispute settlements.


GTC (Good-Till-Cancelled) Order:

Customer's buy or sell order to a broker that remains in effect (open) at specified price and terms until (1) it is accepted (executed), (2) cancelled by the customer, or (3) expires after a specified period.


DMZ (DeMilitarized Zone, 非武装地帯):

A network segment that is located between the unsecure network such as Internet and secured network such as LAN. Typically, the Web server or mail server is that has to be revealed to the outside network is located to this segment. Normally, there are Firewalls placed between Internet & DMZ, and DMZ & LAN (2 FWs).


Reset SeqNo:

FIX Engine suddenly goes down if the SeqNo is lower than expected. This is because the FIX Engine speculates something wrong has happened at the opposite side if the SeqNo is lower that it expects.

On the other hand, FIX Engine required the skippied SeqNos if the received SeqNo is higher than it expects. This is realized by replying back the Resend Request in case it happens.


Phisical limits:

270ms from New York to Hong-Kong.


ESB (Enterprice Service Bus):

システム全体を「サービス」の集合体ととらえるサービス指向アーキテクチャ(SOA)にのっとってシステムを実現する際に,サービス同士の連携に必要な機能を提供するミドルウエアの一般名称。Enterprise Service Busの略。


SOA (Service Oriented Architecture):



SAN (Storage Area Network):

外部記憶装置間および記憶装置とコンピュータの間を結ぶ高速なネットワーク。複数のコンピュータがある場合はコンピュータ間のデータ転送も可能。高い性能が要求されるサーバに用いられる。複数のサーバが連携して一つの機能を提供する場合や、一つの大容量記憶装置を複数のサーバで共有する場合に特に有効である。このような構成にSANを導入することにより、サーバの処理性能が向上し、クライアントとの通信に使うLANWANなどのコンピュータ間ネットワークの負荷を軽減することができる。SANは規格や標準が定められているわけではないが、実際にはFibre Channelという技術を用いて構成されるものを指す場合が多い。



-          Implicit tagging: Removes the “tag=” portion of “tag=value” by using template.

-          Field encoding: Reduces data volume by leveraging the data affinities between messages.

-          Serialization: Applies binary encoding to the data

The trafic latency is reduced as 300% from normal FIX and the overhead of decompress is about 10 micro seconds per each message. (normal message takes 60 micro seconds for parsing).


DMA (Direct Market Access):

It is a means by which buy-side firms can access liquidity venues directly without intervention by a broker. With DMA, buy-sides rely on brokers for clearing and (sometimes) infrastructure for market access, but not for trade execution.