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