Is QuickFIX/J Broken?
I've just found myself engaged in an interesting conversation over at LinkedIn concerning the oft posed question that:
There appears to be a high variance for order throughput times [when using] QuickFIX[/J]
The LMAX multilateral trading facility is written 100% in Java, and here's a presentation that I attended last year given by their then chief technology officer Martin Thompson:
Martin discusses much of the "folklore" concerning what's involved in persuading Java to trade at an ultra high frequency, and at around 16:40 he observes that:
If you try to get anywhere near 39,000 price updates a second through QuickFIX/J I'd love to see the processor you pick to do it on. It's a great FIX engine, it's reliable, it's reasonably stable, it generates a huge amount of garbage and it does horrendous things from a performance perspective. Have a look at the code for how it parses an integer.
Your application may well not be as demanding as an MTF, but what's your experience with QuickFIX/J? Are you impressed by its reliability and stability, or are you frustrated by its inconsistent latency and therefore willing to pay good money to get greater consistency?
Filed under Trading Platforms by
Leave a Comment
Comments on Is QuickFIX/J Broken?
Steve Bate @ 11:20 am
QuickFIX/J was originally written in 2004 as a port of the C++ QuickFIX engine. It was created in my spare time and definitely wasn't written for low latency, high frequency trading applications. However, I don't think it's fair to claim it's "broken" for that reason. It's been useful to many companies who have made quite a lot of money using this free software. I have many ideas about how to improve QuickFIX/J, from both performance and useability perspectives, but I don't have the time to do it myself and the community hasn't felt it was important enough to support that effort. To me, this indicates that QuickFIX/J is meeting the needs of many, if not most, of it's users even if it's not a good fit for certain applications like LF/HFT.
Jim @ 11:59 am
Hi Steve,
Thanks for taking the time to comment, and even more thanks for all the time you've put into QuickFIX over the years. I'll take that as a "NO!" vote.
My own opinion was that:
In less demanding applications it provides amazing value for money.
Jim
Steve Bate @ 12:36 am
I agree it's not the best fit for that type of application. It's sorta like comparing a family sedan to a drag race car. If you need to drag race, don't use the sedan. However, if you just need a reliable ride for the daily commute the sedan is a better choice, especially if it's free and the drag race car is very expensive.
If you ever decide to start an open source "drag racer" FIX engine project, I'd be interested in participating.
Steve
Jim @ 7:56 am
It's funny you should mention that Steve, because the very same thought had occurred to me also. Thanks enormously for your most generous offer.
Have you seen Marco Terzer's fix4j project? If so, what do you make of it?
We will be in touch!
Jim