Update: Nice review of Genesis by Dan Horowitz in the comments:

I primarily work with the Genesis API (www.gndt.com) to do equity pairs trading. They only support US and Canadian markets (TSX) The API is fairly robust in that its the same API that their GUI uses and therefore has the capability to perform any operation a human trader might need to execute. That is also its downfall in that the API was designed to sit behind a GUI and expects and windows environment in which to operate. The API is written in C so you can easily write bindings to any application environment. I wrote my system in Java so I wrote a JNI bridge.

The biggest gripe I have with Genesis is that they dont really have a test platform so the only real way to test your system is with real money. Their idea of a test platform is some fake illiquid symbols that you cant really trade back and fourth because theres no one on the other end to take your orders.

Anyways, I would love to switch to lime but being a one man show means I cant afford their platform. Genesis is much more accommodating to start ups.


Here are my opinions on the API's I've worked with. I recently sent them to someone and thought they'd be worth sharing with anyone who wants the opinion of a programmer and trader who's used them for long enough to have a legitimate opinion.


The three APIs I've actually tested, WEX, IB, and Lime, are fairly flexible, although they do each have their own quirks. Here are my thoughts on each below, sorry that it's a bit disorganized.

IB has the worst customer support of the three. It's hard to get in touch with someone who knows what they're talking about since they have a call center. One problem with IB is that their Java/ActiveX API is only active when their high-overhead GUI is running in the background. But IB is nice because they have access to many markets, their commissions are good, and they provide up to a year of historical 1min bars. It's hard to extract historical data though because of barriers, like not being allowed to request data except every 10 seconds. These are extra hurdles to jump through, but I've written tools to make it usable for myself. Another annoyance are their internal symbols, which are inconsistent and poorly documented. For example a futures contract's symbol might be "MAR 09" while another is "JUN 09", where only the number of spaces is different. It's extremely frustrating to debug but eventually you get used to it and learn all the quirks. There are complaints about the documentation, but I haven't felt it's that bad.

WEX has the most features, including a chat client which I wasn't very interested in and news data feeds. They're very professional and have the best documentation of the three. Their API is .NET so it's flexible. I was going to translate WEX's .NET API into Matlab for a hedge fund but the project fell through so I haven't spent as much time trying to smooth out bugs introduced by it as with the other two.

Lime's Java API is the most barebones. They only have access to US markets and very few extra functions beyond order submission, portfolio details, and data subscription. However they do offer co-location. Their niche is that they're built for speed and they do a good job. Also their customer support is the best. Whenever I emailed them very technical questions they'd reply in detail typically within an hour. I liked working with their API the best because I never ran into any problems caused by them being careless with their implementation. The only problem with Lime is that the data feeds they have available are for book data rather than trades so it's nontrivial to construct an accurate midpoint price, which I find most practical.

I haven't used each of the three's FIX APIs.

If you have opinions/experiences, share them in the comments or via email and we can come up with a more comprehensive review of all brokers with APIs.

10 comments:

Joshua Ulrich said...

Hi Max, is there any public documentation on Lime's API?

Max Dama said...

Not that I know of Josh. I have a demo account and access to their docs because of a consulting project I was doing.

Regards,
Max

Dave said...

Regarding IB's API and customer service - if you trade enough to get on their "key account" radar, their support will bend over backwards for you.

Even before I was trading that much, though, I found IB's support to be not nearly as bad as their reputation. If you make your way through the maze to get to their API support, they're actually quite good.

They're front end generic support is not perfect by any means, just not as bad as I was expecting. ;-)

Erk Subasi said...

Hi Max,

I believe you can get the news data from IB API as well, given that you are subscribed for their Reuters feed.

chintan shah said...
This post has been removed by the author.
Anonymous said...

Hi Max,

What are you currently using? Thank you! Great blog!

Max Dama said...

Anon,

I'm using IB with the Matlab API interface and Python IbPy API.

Regards,
Max

danhorowitznyc said...

I primarily work with the Genesis API (www.gndt.com) to do equity pairs trading. They only support US and Canadian markets (TSX) The API is fairly robust in that its the same API that their GUI uses and therefore has the capability to perform any operation a human trader might need to execute. That is also its downfall in that the API was designed to sit behind a GUI and expects and windows environment in which to operate. The API is written in C so you can easily write bindings to any application environment. I wrote my system in Java so I wrote a JNI bridge.

The biggest gripe I have with Genesis is that they dont really have a test platform so the only real way to test your system is with real money. Their idea of a test platform is some fake illiquid symbols that you cant really trade back and fourth because theres no one on the other end to take your orders.

Anyways, I would love to switch to lime but being a one man show means I cant afford their platform. Genesis is much more accommodating to start ups.

Max Dama said...

Thanks Dan!

I've added what you said to the main post at the top.

Regards,
Max

sharpend said...

Anyone here have thoughts on GSEC/Redi API etc?

Right now they are my broker of choice outside the US due to IB's lack of stock loan in AU and HK