I've been using a rather lame brokerage, and am in the process of switching over to IB in the near future. It seems like they have a pretty decent array of market data feeds. The cost also seems quite reasonable, since they're making money on the commissions. I'm curious about two points: a) Why would someone get feeds covered by IB from a different provider? b) Even if there's a good reason, not for "real" HFT but for something where seconds matter, it seems like it would complicate the placement of servers. If you're really only working with the IB api, then it seems like you'd want to park your servers close to wherever their's are and not have to hedge the distance from multiple providers. Thanks so much.
IB's data is sampled at a rate of about 333 msec, except for some popular index futures that are 100msec. The advantage of sampling is that the feed doesn't lag during busy times. The disadvantage is that you're missing ticks, sometimes including a new high or low for the interval you're monitoring.
IB returns several data points including last bid ask etc. Bid and Ask should update when they change. Only Last or so called tick would be sampled. I am not sure if IB documentation is clear separating bid ask updates frequency from tick updates.
Besides missing the high and low by few ticks, when price is moving fast, other limitations include: a) Pacing violations. b) Only receive market depth for up to 3 symbols from Interactive Brokers at a time. c) Bid Volume and Ask Volume are not very accurate. d) No tick by tick real-time or historical data. I got very different backtesting results, when using IQFeed tick by tick data. http://www.elitetrader.com/et/index...ve-brokers-incorrect-market-data-feed.283277/ The following is some info from Sierra Chart: http://www.sierrachart.com/index.php?page=doc/IB.php
That is definitely false information you provide here. Bid and Ask is as much sampled as ticks, last trade, volume, and anything else data feed wise. Anything in the data feed is sampled, else the whole sampling exercise would not make sense. Think about the fact that bids and offers change much more frequently than trades (and last price depending on asset class is basically the last traded price.) Executions and fills are of course applied to the prevailing data point at the time the order is received/matched either on IB's servers or the exchange. But the data feed you are receiving is sampled no matter which metric you are talking about.
why would volume information not be accurate. I am almost certain that (aside obvious errors that should be handled by the IT team) volume should be 100% accurate because IB's servers are perusing exchange reported volume, why should that information come out on your machine differently than when it has left IB's server? Also when you say IQFeed's data is tick by tick I hope you are not referring to equity/stock price data because all you get is a consolidated tape. When you trade equities in high enough frequency (and I assume anyone testing off the back of tick based data) looks to also trade higher frequency models) you would always get filled at prices different from the consolidated tape. So yes, considering that you look at 2 entirely different data feeds (in fx world) you would logically arrive at different backtest results.
I am referring to tick by tick FUTURES data from IQFeed. I am talking about the BID and ASK volume of futures from CME group such as ES, CL, etc, not the TOTAL volume.
same there. IB gets its ES volume from the exchange, it certainly does not estimate it ;-) And it is in the nature of snapshot data that the very millisecond more transactions might have taken place but that you are only informed of those when you receive the next snapshot. Not sure what other inaccuracy you are referring to.
Ok, so where is the source of true information? Quote data and trade data are disseminated on separate feeds. Quotes can change faster than trades but this is not true for most trading instruments. IB is not the original financial data vendor. What do they receive; aggregated data or they aggregate the data themselves? And then what do they sample? before or after aggregating data? Somehow they provide data to customers separately for bid or ask or last and sizes arrive in a separate call back. All of them are related and tick arrives before size but the exact relationship and sampling method is not disclosed.
well, you ask a lot of questions all of a sudden for someone who made bold and false claims a few post above (and has badly accused and attacked me in the past) To answer a few of your questions, IB samples quote and trade data (note that I use the term trade "data", it does not mean they delay your executions, but simply means that all you see about real-time data is in effect not entirely real-time because it is sampled. That included bids, offers, trades, volume, anything you can imagine to see changing in "near" real-time is sampled. IB does aggregate, not the exchange. That you get data in different callbacks only means that the gateway that everyone runs on their local machines is implementing an API that segregates the callbacks. But still fact remains that any and all incoming data by IB is sampled.