Saturday, March 5, 2011

Top 20 FIX Protocol Interview Questions

Top 20 FIX Protocol Interview Questions
its' been a while since I shared FIX protocol interview questions. So here is the new set of top 20 FIX protocol interview questions. These are the question which is mostly asked in while interviewing any developer or support professional which has some knowledge of FIX protocol. Given the number of clients, broker and exchange using FIX protocol it’s really a great thing to have in your resume and can land you some very well paying jobs in street. These questions not only serve as quick reference before heading for a FIX protocol job interview but also opens new path of learning for guys who are new in FIX and trying to understand it.


I am not giving answers of these questions initially and leaving for you guys to find it out but I will update these post some time later to include answers of below FIX protocol questions, for now these are questions which many of you definitely be aware and for new comers it’s an exercise for them to find answers. You can definitely ask me if you have any difficulty finding answers of any of these questions by reading FIX protocol technical specification or by taking help of any good Fixionary.

FIX Protocol Interview Question and Answers

1. What is the difference between OrdStatus and ExecType in FIX4.4?
2. What is the minimum length of ClOrdID?
3. Which tag in FIX 4.4 can be used to denote Smart Order Routing?
4. What is business message reject in FIX Protocol?
5. What do you mean by DK (Don't know) Trade?
6. Which tag is used in FIX Protocol to denote an order is for equity or for future options?
7. What is tag RoutingID and why does it used in FIX Protocol?
8. Can you have different OrderID on NewOrder and Modification and Cancel messages?
9. What is FIX Session?
10. What do you mean by EOD of FIX Session?
11. Which FIX tag is used to denote "CARE" order in FIX Protocol?
12. Which tag is used to denote trading capacity of order e.g. Prop or Agency?
13. How do you identify FIX version of a FIX message?
14. Which tag is used to denote MsgType in FIX protocol?
15. How do you handle out of sequence messages e.g. you received Cancelled ack and then a fill?
16. What do you do if your session gets disconnected intraday?
17. What are heartbeat messages which tag you use to identify heartbeat messages?
18. What is LeavesQty which tag is used to denote LeavesQty in fix message?
19. What is equivalent of tag 20 ExecTransType in FIX 4.4?
20. What are various FIX tags which are used for symbology identification?

New FIX Protocol interview Question

FIX Protocol Interview Questions, FIX Interview Questions asked in Investment bank
I have created this new FIX Protocol Interview section to include new questions contributed by my reader and different sources. Please let me know if you have asked a FIX Protocol interview question which is not present here and I will include it for community’s benefit.

1. You placed a new order and then modification and before modification a cancel, what would be the OrigClOrdid of Cancel?
Since Modification request is not accepted yet so ClOrdID of original order will be in place So Cancel Request must contain OrigClOrdID (Tag 41) same as ClOrdID of Original Order.

2. You placed a new order and then place a replace request and received Pending replace message and then a fill, what would be ClOrdID of the fill?
Since OrderCancelReplaceRequest (tag 35=F) is not accepted, ClOrdID of NewOrder will be in force and fill will contain ClOrdID of the NewOrderSingle (35=A). It’s only after your received ExecutionReport with ExecType=Replaced your ClOrdID of active order gets updated. Pending Replace is just indication that broker or exchange received a Replace Request but not yet accepted or rejected it.

3. You placed a new order got a partial fill and place a replace and got replaced what would be the value of tag 39 and tag 150.
Since Order is in Partial fill status so tag 39 OrdStatus will contain partial fill and ExecType will be Replaced I thing 150=5 and 39=1.

You can also take help of my earlier post on FIX protocol interview questions and answers and mine FIX protocol tutorial.

Related post:


Anonymous said...


I got a FIX question and hope you could assist. Lets say the client (C) sent an order (tag35=D) to broker (B). This order has not been acked/accepted.

what would be the standard sequence of the Client is sending Order Cancel Request (tag35=F). Should it be queued on the Client side and send it out once the order is acked by Broker? Or it should be sent and it queues broker side?


JP @ FIX Protocol Tutorial said...

Hi Jacky,
In your scenario Order is in PendingNew Status (tag 39=A) and in this case if you send a Cancel Request (35=F) it will be queued on broker side and broker will first acknowledge your order with 35=8 (ExecutionReport) and OrdStatus=NEW and then accept the CancelRequest. this scenario has explained in FIX Protocol specification 4.4 document under testing scenarios as well.

Andy said...

Can you answer the TOP 20 questions listed above as I am unable to find answer to some of them and considering the detail example that you gives it will be helpful for all of us to understand

Anonymous said...

Answer to question 1 : Main difference between OrdStatus(tag 39) and ExecType(tag 150) is that former denotes current status of order on broker side, while later denotes type of execution report message e.g. ACK, FILL or PARTIAL FILL.

Ravi said...

What is difference between Limit Order, Enhanced Limit Order and Special Limit order of HongKong Stock Exchange? This question was asked to me on Deutsche Bank HongKong Interview.

Another question was difference between Order Driven and Quote Driven Market, and whether HKSE is a order or quote driven market.

Lim chim said...

Main difference between LIMIT, Enhanced LIMIT and Special Limit order is how they executed, LIMIT order executes only at specified price or better price. Enhanced LIMIT order can go upto 10 price queues to fill the order, for example if want to buy HSBC at 1HKD, and price tick is 0.01HKD, it can go up to price queue 1.10 HKD to fill your order. Remaining order will be treated as Limit order, on the other hand Special limit order also goes upto 10 Price Queue to fill the order but remaining order get cancelled and not stored in market.

Demetrius Harvy said...

1. OrdStatus (39) indicates the current status of the order. ExecType (150) was introduced in 4.2 to indicate the type of execution report received. For example, if you replace an order that is already partially filled, the order status is Partially Filled but the ExecType for the replace confirmation is Replaced (FIX 4.2).
2. ClOrdID is a mandatory string field so the minimum length is 1. Obviously one character doesn't make much sense because of limited flexibility. Length is determined by the combination of the executing party / vendor / exchange.
3. There is no specific tag in FIX 4.4 that denotes Smart Order Routing. Brokers and/or executing destinations can decide from different options. They can simply go with a user-defined tag or with a standard tag such as HandlInst (21), ExDestination (100) or SecurityExchange (207).
4. The Business Message Reject (j) message can reject an application-level message which fulfills session-level rules and cannot be rejected via any other means. For example, if the fix engine accepts a tag that is not supported by the FIX application, this type of reject should be sent.
5. Don't Know Trade is a MessageType (Q) that indicates a reject of a received execution report. For example, if you only sent one order today with ClOrdID = 10 but you received an execution report from an execution destination for ClOrdID = 20, your FIX application should reject this execution report.
6. FIX tag 167 (SecurityType) should be used to identity asset type. In FIX 4.4, you are recommended to use CFICode (461).
7. RoutingID (217) is used to specify a specific routing destination. It is part of a repeating group so it's convenient if you want to specify more than one destination. It's only defined for 3 MessageTypes (Email, News, IOI); and only IOI is commonly used. If you are asked this on an interview, well, good luck with that one.
8. OrderID is the identifier generally provided on execution reports from the exchange / execution destination. It should remain the same throughout a trade's lifecycle regardless if you replace or cancel.
9. The communication between FIX engines.
10. EOD stands for End of Day and indicates a reset of sequence numbers to 1/1 in regards to a FIX session.
11. FIX tag 21 (HandlInst) is used to indicate a CARE order. A care order is handled manually by either a trader or someone on the execution side; therefore 21=3 (manual) is meant for this.
12. Up until FIX 4.2, Rule80A (47) was used to indicate order capacity. Starting in FIX 4.3, OrderCapacity (528) was introduced.
13. This can be done either at the FIX engine configuration level or looking at the FIX message header. FIX tag 8 indicates FIX version.
14. MessageType is tag 35.
15. The handling of out of sequence messages varies per firm. If a cancel is received prior to a fill, the cancel could close the order and the fill can get rejected. Some firms will allow the fill to be processed. There really is no standard here.
16. Pray. This is not a good thing. Just don't reset the sequence numbers; that could lead to a very costly error and possibly the loss of your job. Coordinate with the counterparty to get things back to normal. Most fix engine configurations support automatic reconnections so be careful.
17. Heartbeat messages are keep-alive messages; letting the other FIX engine know that you are still alive and active. Heartbeat is a MessageType (35=0).
18. LeavesQty (151) indicates how much quality is left to be executed on the order.
19. ExecTransType was removed in FIX 4.3 to eliminate confusion since ExecType also is used to indicate type of execution report received. The old values of ExecTransType have been merged into ExecType (150). 20=1 --> 150=H | 20=2 --> 150=G | 20=3 --> 150=I
20. The most common FIX tag used for symbology identification is tag 55 (Symbol). You can also use the combination of tag 22 (IDSource) and 48 (SecurityID).

Anonymous said...

Thanks a lot Demetrius Harvy for providing answers of all FIX questions. Javin, Can you also share some SWIFT protocol questions? e.g. SWIFT templating with templates like MT340, MT360?

Wang said...

I was interviewed by one hedge fund in Hongkong and they asked me about At auction limit order, which is a limit order, can only be placed during pre opening session between 9.00 and 9.30, whose price can not be more than 9 times of closing price of security. Remaining At Auction limit order, which is not filled, get converted into normal limit order. They also ask, how do you handle Special limit order in FIX, as they don't have specific order type. My answer was breaking original order into 10 order with 10 prices, each a spread away, not sure, if it's the right approach.

DK said...

I was asked in latest interview with one of leading ASIAN brokerage firm, how do perform FIX Sequence reset? I answered by removing persistence files which keeps track of incoming and outgoing sequence number, but he doesn't seems happy? Is there any other way to reset FIX sequence numbers, both incoming and outgoing?

Anonymous said...

In Question 2 of "New FIX protocol question section", tag for OrderCancelReplace should be 35=G instead of 35=F, which is used for OrderCancelMessage.

Richard said...

Couple of questions from my side :

What are the FIX messages which is used in FX trading? (msgtype W and X are some examples)
What are the FIX messages which is used for publishing market data?

Anonymous said...

for FX streaming price you use the Market Data Snapshot Full Refresh 35=W

Tony C. said...

Is there a way in FIX 4.2 to find out what the current net position is on a futures position?

Anonymous said...

I was asked following questions on morgan stanley interview :

1) what is difference between Odd lot and Round lot in Stocks? in
Answer : An odd lot is a number of shares less than 100 (1-99), while a "Round Lot" is 100 shares of stock. Any number of shares that is a multiple of 100 is also a round lot (i.e. 100, 600, 1,600, etc)

2) Name two exchange traded derivatives?
Answer - Futures and Options

Anonymous said...

What does tag 1 represent in FIX protocol?
Can we send a Cancel followed by NEW instead of sending MOD? what is difference?

Anonymous said...

What does an OrderStatus (39=5) replaced means if 150 (execType) ==Partially Fill, fill or even if bust 20=1?

Anonymous said...

Question. If you place an order and then make modification to it before ack from sell side. What happens to orginal order?

Javin Paul said...

@Anonymous, It depends upon how Sell side handles it, until sell side broker ack it, order is in Pending NEW state and any modification will likely to be rejected, but some broker may queue it, returning first NEW and then REPLACED messages.

Javin Paul said...

@Anonymous, Tag 1 is used for Account

Javin Paul said...

@Anonymous, if OrderStatus 39=5 or replaced, then ExecType partial filled means there is still some remaining quantity in market with modified price/quantity, fill means there is no more quantity and bust means the earlier executions are cancelled.

Javin Paul said...

Can we send a Cancel followed by NEW instead of sending MOD? what is difference? Yes, you can but the difference is position of order in price queue. In case of MOD, many exchange keep the original position of order, but when you cancel you lose the position and NEW will always be added at the end of price queue (tail).

Post a Comment