Help Center Blog Open An Account

Evidence in Difference between CQG data and IQFEED data. Strategy Backtest completely different!



Hello Everyone,

I’m a new here and I’ve just decided to go with CQG as datafeed and for order routing.
I have a strategy developed with Multicharts using DTN IQFEED data (they offer a very big database of datas and of course you pay a lot for it) and today I simply tried to apply the same strategy over the same instrument (the DAX FUTURE) but just with CQG data. I 've been very surprised to see so much difference into the backtest results. On IQ feeed I’m using the XG# continuous contract and on CQG I’m using the DDM19 contract (because they don’t offer the continuos contract or I’m unable to find it).So Here there are the last 2 month of daily operations simulated with multicharts (on the left you have IQFEED and on the right you have CQG). How’s possible to have such a difference?

My strategy analize how the price arrive to a level by checking some previous bar shapes over 5 minutes bar and 2 minutes bar.
I checked the chart with the TIME BASED candles with 5 min and 2 min and IQFEED and CQG are almost IDENTICAL. Only if I try a resolution of for example150 contract then charts are VERY different.
Anyway my strategy is using only time based bars so I’m unable to understand such a difference.

Of course I can set up multichart to use IQFEED as data feed and send Order throw CQG, but by this way I’ll spend 140$/m for IQdatafeed when I’m already paying CQG for the same ( and I cannot use IQFEED data with my other computer for studies and backtest).

Any ideas? Is anyone experienced something like this?


@dvdarts Thank you for bringing this to our attention and welcome to our community site. The DTN data is known for its quality unfiltered tick data, and we suggest that you run this data for your charts and historical information while you use CQG or Rithmic for execution.

However, since you have both results, it would be interesting to see which one of the results would be close to what you get in real life (production server) as opposed to just backtesting data. I have asked my colleagues to come and discuss this issue here, and maybe they could explain the difference that you see in your futures trading strategy. However, as a non-programmer and discretionary trader, I thought that perhaps the results could be attributed that one data uses the last price traded, and the other data feed could use a Bid or Offer depending is the strategy signaled a buy or sell(?). Also, maybe the CQG data are missing certain ticks that could make the difference. These are the assumptions that just come to mind.

Thank you,
Matt Z
Optimus Futures



you have received some great replies to your post here:

Essentially the first steps should be to make sure that the settings for the strategy are alike. Then checking how different your data actually is. Following by carefully examining the internal code calculations by bar to track down how the data differences impact your computations and in turn the results.
Keep in mind that you are comparing an individual contract to a continuous contract in your example and your test includes a period where a different contract was the front month, too.




Hello Matt and ABCTG thanks for you replies, they’re really appreciated.
I saw a lot of great tips on futures io and I just replied a second ago and I’m posting here the reply too:

"Hello Everyone and thanks for the great list of suggestions.
I will, of course, investigate further to this matter but at the moment I think that after have spent a lot of time developing, backtesting and real time simulating this system JUST TO BE SURE I think I’ll use my IQFEED data to trigger entries and not CQG (I’ll use it just for orders).

Anyway… I checked the datas comparing 2 DAX charts with 150 contract resolutions ( so volume based charts ) and they were completely different… that doesn’t surprise me a lot because volumes are always different between datafeeds…
Then I compared the time based charts and they are the SAME. So I still do not understand why should I have such a difference in entries. If you think OHLC are the same… and my strategy simply use H , O, L and C and a manipulations of its values… Really a mistery.
Please look at TODAY!

IQFEED (as it should be or at better " what it should do by following my system rules ")


PLEASE NOTE: Those operations has been performed in real time simulations (not just backtesting) this morning.

As you know if you have chart open in multicharts by clicking CTRL + SHIFT + C you can COPY the entire chart with all it’s setting and indicator and whatever. Then I just pasted the chart in a new workspace and then I’ve simply changed the instrument from iqfeed XG to DDM19 of CQG so the settings are the same 100%.

About the differencies between the continuos contract of IQFEED and the regular one of CQG June19 As you can see in the images above the values are the same… I don’t think they change in this period… but just close to the expire date.

Still a mistery :smiley: "



debug the internal values of your strategy that you compute to trigger orders for the bars that show differences and track down what causes them.

It might also make sense to ensure that both strategies use the exact same number of bars over the entire test set (!) and both using the current front month for both, to rule out differences due to the continuous contract using different front month over your test period. Also make sure that both symbols use the correct symbol settings and session times in Quote Manager.

Without knowing your code one could only guess what is going on, as there are probably countless possibilities and even a small difference at one point can impact the entire remainder of a test (for example code that reacts to past system performance, a start point dependency of code parts - for example when you use an exponential average etc.).




Thank you to Chris @ABCTradingGroup who runs and helps customers with the automation of MC.

Matt Z
Optimus Futures