Sunday, July 11, 2021

15 Financial Information Exchange (FIX) Protocol Interview Questions Answers for Experienced

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




1. What do you mean by Warrant?
A warrant is a financial product that 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.

2. 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.

3. 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.



4. What are the most common issues encounter when two FIX Engine communicates?
When Clients connect to a 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

5. 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.  The 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.




6. 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 the 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).


7. 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 the Market Closing period , if there is any unexecuted quantity then it will turn into a Market Order.


8. 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 orders clients need to send Order quantity multiple of Board lots. If the Client sends any Order which is not a multiple of Board lot then its called Odd lot.


9. What happens if the 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 the broker accepts its connection.


10. 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 a 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 the 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 acknowledgment. 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).

11. 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.

12. 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 canceled by exchange. TimeInForce (tag 59) in FINANCIAL INFORMATION EXCHANGE (FIX) protocol is used to mark an order as FOK or IOC.

13. 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?

14. What are STP (Straight through Processing) Systems?
STP is abbreviation of "Straight though processing" which denotes trading systems that requires either no manual interaction or some manual interaction for the 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 the 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:

19 comments:

  1. 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 ?

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

    ReplyDelete
  3. 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

    ReplyDelete
  4. Is FIX interface is same as FIX specification or fix api ?

    ReplyDelete
  5. 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.

    ReplyDelete
  6. 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

    ReplyDelete
  7. 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

    ReplyDelete
  8. 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 ?

    ReplyDelete
  9. 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.

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

    Thanks...
    Roshan

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

    ReplyDelete
  12. 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!!!

    ReplyDelete
  13. 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.

    ReplyDelete
  14. 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

    ReplyDelete
  15. Hi ,

    Could someone confirm the the logic for PossResend and PossDup? Going by the basic meaning of the words in the message, I think its vice versa.

    ReplyDelete
  16. Hi Anonymous,

    The above explanation for PossResend and PossDup is correct. When the sequence number is same, we send a duplicate order, which makes it a PossDup. However, for PossResend, we will be sending a new order with a new sequence number.

    Hope this helps!

    ReplyDelete
  17. Thank you Ravi. Glad that you find it useful, Please share with your friends and colleagues as well, it makes a lot of difference :-)

    ReplyDelete