Pages

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 on your resume and can land you some very well paying jobs in the street. These questions not only serve as a quick reference before heading for an FIX protocol job interview but also opens a 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 sometime later to include answers of below FIX protocol questions, for now, these are questions which many of you definitely be aware and for newcomers 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.

Top 20 FIX Protocol Interview Questions

1. What is the difference between OrdStatus and ExecType in FIX4.4?
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. What is the minimum length of ClOrdID?
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. Which tag in FIX 4.4 can be used to denote Smart Order Routing?
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. What is business message reject in FIX Protocol?
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. See here for more detailed answer

5. What do you mean by DK (Don't know) Trade?
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. Which tag is used in FIX Protocol to denote an order is for equity or for future options?
FIX tag 167 (SecurityType) should be used to identify asset type. In FIX 4.4, you are recommended to use CFICode (461).

7. What is tag RoutingID and why does it use in FIX Protocol?
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 in an interview, well, good luck with that one.

8. Can you have different OrderID on NewOrder and Modification and Cancel messages?
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. What is FIX Session?
It's linked to facilitate communication between FIX engines. At low level, it's just a TCP/IP connection with client authentication detail. See here for a more detailed answer.

10. What do you mean by EOD of FIX Session?
EOD stands for End of Day and indicates a reset of sequence numbers to 1/1 in regards to an FIX session. Both incoming and outgoing sequence numbers are reset as part of EOD. Commercial FIX engines like QuickFIX, Appia or Cameron FIX allows you to specify different EOD time for the different client session.

11. Which FIX tag is used to denote "CARE" order in FIX Protocol?
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. Which tag is used to denote trading capacity of order e.g. Prop or Agency?
Up until FIX 4.2, Rule80A (47) was used to indicate order capacity. Starting in FIX 4.3, OrderCapacity (528) was introduced.

13. How do you identify FIX version of an FIX message?
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. Which tag is used to denote MsgType in FIX protocol?
MessageType is tag 35. Different types of messages e.g. NewOrderSingle, OrderCancelRequest, OrderReplaceRequest are just different values of tag 35 e.g. 35=D is a new order, 35=G is modification and 35=F are cancel the request.

15. How do you handle out of sequence messages e.g. you received Canceled ack and then a fill?
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. What do you do if your session gets disconnected intraday?
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. What are heartbeat messages which tag you use to identify heartbeat messages?
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. What is LeavesQty which tag is used to denote LeavesQty in fix message?
LeavesQty (151) indicates how much quality is left to be executed on the order. If value of tag 151 is zero it means order is fully executed and order status would be filled, while if value of LeavesQty is greater than zero means trade is only partially executed and order status would be partial fill.

19. What is the equivalent of tag 20 ExecTransType in FIX 4.4?
ExecTransType was removed in FIX 4.3 to eliminate confusion since ExecType also is used to indicate the 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. See here to learn more.

20. What are various FIX tags which are used for symbology identification?
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).

New FIX Protocol interview Question

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 an 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 the active order gets updated. Pending Replace is a 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.

23 comments
:

Anonymous
said...

Hi,

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?

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.

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.

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.

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.

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?

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)

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

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

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

Thanks Javin, this question has helped to QA, Support guys, developers and new hires into our team to learn more about FIX Protocol and I have feedback that its great resource both tester, developer and even Interviewer to check FIX protocol skills of potential candidates. thanks for putting effort and sharing.