Tuesday, December 21, 2010

Financial Information Exchange (FIX) Protocol Interview Questions Answers

Financial Information Exchange (FIX) Protocol Interview Questions and Answers
Some more Fix protocol interview question , I will put answer along when I'll get some time for now just questions :) 

Now I have updated it with answer, Please let me know if you have any doubt, or you have other questions, you can also contribute by any question asked during any FINANCIAL INFORMATION EXCHANGE (FIX)  protocol interview.

FIX Protocol Interview Question and Answers



What do you mean by Warrant?
Warrant is a financial product which gives right to holder to Buy or Sell underlying financial security, its similar to option with some differences e.g. Warrants are normally issued by banks while options are primarily traded in exchange.


-->


What is mean by Settlement of Securities? When Settlement does occur?
In Simple term Settlement means money will deducted from buyers and account and security(Shares) will be credited to his account , normally Settlement occurs after few days of trade date for most of the exchange its T+3 (i.e. Three days after trade date) , T denotes Trade date means the date on which transaction has taken place.
For some of the exchanges e.g. NSE India, SEHK Hongkong its T+2.

What is NewOrderSingle, OrderCancelReplance and OrderCancel Reject message?
These are the basic, most commonly used messages in Electronic trading via FINANCIAL INFORMATION EXCHANGE (FIX) protocol.
NewOrderSingle message is denoted by MsgType=D and its used to place an Order, OrderCancelReplace Request is modification request denoted by MsgType=G in FINANCIAL INFORMATION EXCHANGE (FIX) protocol and used to modify Order e.g for changing quantity or price of Order.

OrderCancelRequest is third in this category denoted by MsgType=F in FINANCIAL INFORMATION EXCHANGE (FIX) protocol and used to cancel Order placed into Market.

What are most common issues encounter when two FIX Engine communicates ?
When Clients connect to broker via FINANCIAL INFORMATION EXCHANGE (FIX) protocol, there FIX engine connects to each other, while setting up and during further communication many issues can occur below are some of most common ones:
Issues related to network connectivity
Issues related to Firewall rules
Issue related to incorrect host/port name while connecting.
Incorrect SenderCompID and TargetCompID
Sequence Number mismatch
Issue related to FINANCIAL INFORMATION EXCHANGE (FIX) version mismatch

What do you mean by Incoming Sequence No and Outgoing Sequence No? Which tag is used to carry Sequence No?
Sequence Number is very important concept of FINANCIAL INFORMATION EXCHANGE (FIX) protocol which essentially provides it Recovery and replay functionality and ensures that no message will lose during transmission or communication. In FINANCIAL INFORMATION EXCHANGE (FIX) protocol every message contains a unique sequence number defined in tag 34. Logically we can divide sequence number into two Incoming and Outgoing Sequence number. 
Incoming sequence number is the number any FIX Engine expecting from Counter Party and Outgoing sequence number is the number any FIX engine is sending to Counter Party.

What happens if Client connects with Sequence No higher than expected?
If Client FIX Engine connects to Broker Fix Engine with Sequence Number higher than expected (e.g. broker is expecting Sequence Number = 10 and Client is sending = 15). As per FINANCIAL INFORMATION EXCHANGE (FIX)  protocol Broker will accept the connection and issue a Resend Request (MsgType=2) asking Client to resend missing messages (from messages 10 -15) , Now Client can either replay those messages or can issue a Gap Fill Message (MsgType=4 as per FINANCIAL INFORMATION EXCHANGE (FIX)  protocol) in case replaying those messages  doesn't make any sense (could be admin messages e.g. Heartbeat etc).

What do you mean by Funari Order type?
Funari is very popular Order type commonly used in Japanese and Korean market , its denoted by OrdType=I  in FIX protocol , In Funari Order type Order will remain in Market as Limit Order but during Market Closing period , if there is any unexecuted quantity then it will turn into a Market Order.

What do you mean by Odd lot and Board lot?
In Exchanges every Security traded in lot e.g. lot of 1, 10 or 100 or 1000. These are called Board lots and while placing order clients need to send Order quantity multiple of Board lot. If Clients sends any Order which is not a multiple of Board lot then its called Odd lot.

What happens if Client connects with Sequence No lower than expected?
If Client FIX engine connects to broker FIX engine with Sequence No lower than expected than broker FIX engine will disconnect the connection. As per FINANCIAL INFORMATION EXCHANGE (FIX) protocol client then may try by increasing its sequence Number until broker accepts its connection.

What is the difference between PossDup and PossResend?
As per FINANCIAL INFORMATION EXCHANGE (FIX) protocol PossDupFlag (tag 43): indicates possible retransmission of message with this sequence number valid value:
                                    Y = Possible duplicate
                                    N = Original transmission

PossResend (tag 97): Indicates that message may contain information that has been sent under another sequence number.
                                    Valid Values:
                                    Y=Possible resend
                                    N=Original transmission

In Simple terms PossDup is when you are resending a message and PossResend is when you are sending a new message with same data you have already sent in a previous message.

Let’s consider below use case for clarity with PossDup, you can send out an order with Sequence number of 10. Then you send another message with a number of 11. For some reason the counter party did not receive message 10 and will request a resend. You will then resend this same message with a sequence number of 10 marking tag 43=Y.

In case of PossResend, you may send out an order, again let's say with a sequence number of 10. After 5 seconds, you have not gotten an acknowledgement. So you may decide to try again because maybe the counterparty didn't receive or got the first time. So you will send out a message with a different sequence number like 11, which will contain all of the same data message number 10 did. You will then mark it as a PossResend. So this is saying you have already sent this order before, which Counter party may or may not have processed.

While handling of PossDups is dictated by session logic, PossResends are dictated by buisiness logic (e.g. Reject an Order if ClOrdID is duplicate etc). This is because it is up to the business layer to determine if a particular business object has been processed (by checking the order id for instance).

You have bought a stock at INR 100 and want to sell it as soon as it hits INR 110. If you want to guarantee that your sell order is filled, which of the following types of order should you place?
In this case you can not use limit order because limit order doesn't guarantee execution if there are similar LIMIT order exists then it will wait for its turn. You can not either use Market Order because it didn't give you Price guarantee and will fill on current price. Solution is to use "STOP" order with stop price 110, as soon as price reaches 110 it will get activate but in case of high volatility it can fill more or less 110 if price is moving very fast.

Which of the following orders would be automatically canceled if not executed immediately?
Fill or Kill (FOK) and Immediate or Cancel (IOC) orders are types of order which either executed immediately or get cancelled by exchange. TimeInForce (tag 59) in FINANCIAL INFORMATION EXCHANGE (FIX) protocol is used to mark an order as FOK or IOC.

What is the difference between FOK order and IOC Order?
Main difference between FOK and IOC Order is that FOK demands full execution of order i.e. all quantity has to be filled while IOC order is ready to accept partial fills also?

What is STP (Straight through Processing) Systems?
STP is abbreviation of "Straight though processing" which denotes trading systems which requires either no manual interaction or some manual interaction for whole trade life cycle e.g. everything after submission of Order e.g. processing, execution, booking, allocation, settlement occurs automatically.

NON STP systems require manual interaction on some phases of trade life cycle e.g. booking or settlement.

To learn more about FINANCIAL INFORMATION EXCHANGE (FIX) protocol read my FINANCIAL INFORMATION EXCHANGE (FIX) protocol tutorial series 



Related post:

14 comments :

Anonymous said...

Javin,

Good article , Can you let us know how does FIX engine find out FIX message is for FIX4.2 or FIX4.0 ? Can you give an example of FIX message also ?

Anonymous said...

Is there any FIX protocol API exists just like Java API for coding ? I heard about Quick FIX is that a FIX api ?

Javin @ Tibco RV Tutorial said...

Hi,

Quick FIX is a FIX protocol implementation you can use.though there are other commercial FIX Engine are available e.g. NYFIX Appia or Cameron FIX Engine.

Thanks
Javin

Ketan said...

Is FIX interface is same as FIX specification or fix api ?

Anonymous said...

Hi, how do you know that a particular FIX message is from which version i.e. FIX4.2 or FIX 4.4. I am new to FIX protocol and been confused with these FIX versions.

Javin @ Tibco RV Tutorial said...

Hi Ketan,
FIX specification is details about a particular FIX protocol version e.g. FIX4.2 while FIX interface is FIX api which is used to write FIX engine or provide FIX support to application e.g. Quick FIX or Cameron FIX library or Nyfix Appia.

Thanks
Javin

Javin @ Tibco RV Tutorial said...

Hi Anonymous,
FIX tag 8 called BeginString is used to identify FIX protocol version of a FIX message. this is the first tag in any FIX message and mandatory and its value must be valid FIX version. if this tag is not present then FIX engine will not process such messages.

Thanks
Javin

Vivek said...

Hi, I heard we can trade futures and option using FIX protocol. my question is that how do you know that this NewORderSingle message is for Equities or for Futures or options ? is there any particular tag in FIX protocol to denote this ?

Chris said...

yes there are specific tags that give away whether it is a future/option or equity - a future will have a maturity month/year (tag 200)and will have a security type (tag 167) set to FUT. An option will have a strike price(tag 202) and tag 167=OPT. You might also see CFI codes (tag 461)in the FIX messages for futures and options (FXXXXX or OPXXXX). Equities orders will not have these tags however they will use the same 35=D message.

Anonymous said...

Hey,
Its really good.............plz keep posting and also send some questions regarding trading.....

Thanks...
Roshan

Anonymous said...

HI are there any compnies in inida wch use fix protocol?

Anonymous said...

Hi Javin

Really appreciate the way you have explained Fix concept.
A perfect material for someone who is new to Fix world or i should say nor the new ones but also for someone who is using Fix as a part of there work

Keep up the good work buddy!!!

Anonymous said...

Regarding first question, Warrants are also a OTC traded product, only traded by financial institutions, which has capacity to clear and settle Warrants. It's also issued by private banks or third party, rather than public option exchanges.

Anonymous said...

The first question asks about OrderCancel Reject (35=9), but the answer refers to OrderCancelRequest (35=F). It may be worth updating this to save anyone confusion

Post a Comment