Hi there,
first post at ET (meh, it took me some time to locate a serious trading forum like this one, it seems), so a big "HI" to everyone.
I'm about to switch my trading to IB in 1'5 - 2 months from now, thus I'm gonna code a connection plugin from my custom made ATS to IB.
Their fees seem fair enough to me, and their API looks just right to my eyes (time will tell whether I made a good DAB choice or not).
However, there's one thing which I'm not quite sure about: according to IB docs, when you use the API method to connect to their system, a maximum of 50 messages per second is allowed. CTCI, on the other hand, will allow 150 messages per second to be received.
I've read over there that IB has a 100ms message granularity. I do not know how this translates into real life behaviour (since I've still not tested IB's system), but assuming that such a number is strictly true, then they will send you tick updates every 100ms: put in that way, wouldn't you end up reaching the 50-messages limit pretty soon?
100ms granularity => 10 updates per second. Now let's assume tickPrice() is being triggered three times per update (bidprice, askprice, lastprice... what less). That would be 3 x 10 = 30 messages per second. And we haven't even started...
Things get even worse with updateMktDepth() and updateMktDepthL2(). In fast-moving markets, with a DOM of 20... how many insert/update/delete messages per second will that generate? At this point, it's my understanding that we will have surpassed the 50 messages per second limit.
Let alone the fact that if you are concurrently watching/evaluating several symbols (as is my system's case) you will have to add the extra tickPrice() calls' messages too.
Until now, I've been "feeding" my system via other data providers. But since I'm switching to IB, I'd like to use their feed too. Thing is, "grosso modo" I am calculating no less than 100 messages per second in order to feed my current ATS (taking into account all the subsystems: neural networks, decisional trees, money management module, order management module, etc.)
This puts me in a situation, where I must choose whether I follow the API route, or I go directly for the CTCI path/FIX protocol thing. Truth to be told, I do not mind coding one or another, they both are pretty easy to implement. But what I wouldn't like is investing 10-12 days in coding an IB API connector, only for finding out the very first day that I am hitting the message limit.
So, question is: could someone with first-hand experience about IB's system, give me a real estimation of how many messages per second will a reqMktData() and/or a reqMktDepth() generate?
thanks for your time,
first post at ET (meh, it took me some time to locate a serious trading forum like this one, it seems), so a big "HI" to everyone.
I'm about to switch my trading to IB in 1'5 - 2 months from now, thus I'm gonna code a connection plugin from my custom made ATS to IB.
Their fees seem fair enough to me, and their API looks just right to my eyes (time will tell whether I made a good DAB choice or not).
However, there's one thing which I'm not quite sure about: according to IB docs, when you use the API method to connect to their system, a maximum of 50 messages per second is allowed. CTCI, on the other hand, will allow 150 messages per second to be received.
I've read over there that IB has a 100ms message granularity. I do not know how this translates into real life behaviour (since I've still not tested IB's system), but assuming that such a number is strictly true, then they will send you tick updates every 100ms: put in that way, wouldn't you end up reaching the 50-messages limit pretty soon?
100ms granularity => 10 updates per second. Now let's assume tickPrice() is being triggered three times per update (bidprice, askprice, lastprice... what less). That would be 3 x 10 = 30 messages per second. And we haven't even started...
Things get even worse with updateMktDepth() and updateMktDepthL2(). In fast-moving markets, with a DOM of 20... how many insert/update/delete messages per second will that generate? At this point, it's my understanding that we will have surpassed the 50 messages per second limit.
Let alone the fact that if you are concurrently watching/evaluating several symbols (as is my system's case) you will have to add the extra tickPrice() calls' messages too.
Until now, I've been "feeding" my system via other data providers. But since I'm switching to IB, I'd like to use their feed too. Thing is, "grosso modo" I am calculating no less than 100 messages per second in order to feed my current ATS (taking into account all the subsystems: neural networks, decisional trees, money management module, order management module, etc.)
This puts me in a situation, where I must choose whether I follow the API route, or I go directly for the CTCI path/FIX protocol thing. Truth to be told, I do not mind coding one or another, they both are pretty easy to implement. But what I wouldn't like is investing 10-12 days in coding an IB API connector, only for finding out the very first day that I am hitting the message limit.
So, question is: could someone with first-hand experience about IB's system, give me a real estimation of how many messages per second will a reqMktData() and/or a reqMktDepth() generate?
thanks for your time,