This page discusses the Interactive Brokers Java API for software model driven trading. Interactive Brokers (IB) seems attractive because they seem to have robust support for Java. From the start IB has designed their trading interface to support custom software trading platforms. They have grown into a sizable broker, supporting a significant trading volume. For sufficiently funded accounts they also support 4 to 1 leverage.
|Interactive Brokers Professional Services Support|
Their professional services toll free support line is: 866-694-2757
The exchanges (NASDAQ and NYSE) require a minimum balance of $25,000 (US) for an account that can support computer trading and multiple transactions per day. If this balance is not maintained, the exchanges require trading to be terminated. In practice this means that computer trading requires at least $35K (US) and probably something closer to $50K as a minimum.
IB supports trading over the Internet. This means that trading transactions can be victims of Internet connectivity and routing. Through Speakeasy (Ian's ISP) a round trip packet transaction to IB takes about 93 msec. Note that this is the packet latency. Multiple packet transactions can be outstanding. But the base latency over my ADSL connection means that a trading platform running on my Linux system might max out around 50 order transactions a second, which is the IB maximum for the Java API.
I only have a 1.2 Mbit ADSL line so the limitation could be on my end. It's not clear what the limitation is on the IB if there was a "big pipe" on the trading system side. However, regardless of how large the pipe, routing over the Internet is, by design, non-deterministic. IB also supports dedicated T1 lines support, either through Radianz or Savvis.
IB will also support a direct leased T1 line into the IB data center.
IB connectivity possibilities are shown below:
Diagram from from here (PDF format).
IB transaction either go through the TWS (trading software), the API (in this case Java) or through CTCI FIX. A single account (user name and password) is limited to 50 messages a second (see this page). The relationship between messages and order transactions is not clear.
The IBGateway client allows for FIX CTCI connections to IB over the Internet. It is a piece of software that acts as a bridge between your FIX engine and IB.
Using the CTCI FIX interface the limit is 150 messages a second. This requires a FIX "engine" (normally called a client) to provide the API for the FIX protocol. The FIX protocol appears to be extremely complex and apparently not every broker system or exchange supports it in exactly the same way. Implementing a client API for this protocol would be time consuming and expensive. Fortunately, Java FIX "engines" can be purchased from several sources, including:
To connect to IB the TWS (Trading Work Station?) application must be run first. One Java API application can connect to one TWS process. The connection takes place via a network connection. If the TWS and the API application run on the same system this network connection will be through localhost. This is rather awkward, since trading program execution requires TWS to be run first to establish a session (via user name and password).
The IB API supports a tick data feed. Each stock must be requested and there is a single interface in the API that receives the tick data. This data stream must be "demultiplexed" into a stream for each stock. IB does not provide a true market data feed, but rather a consolidated data feed with about one value per 250 msec. For many trading applications this is sufficient. Better data feeds are available, but they are expensive, at least for a professional quality feed.