That depends on what you trying to trade\backtest and complexity of it. for LIQUID US stocks you don't really need anything. that 'free' bundle should be enough. keep in mind that it's only free,if you generage 30$ in commissions per month.
braman, I agree with Bob. This is all that I use at the moment but I can tell that only a week into live trading, it has it's downsides. As for subscribing to data feeds using the IB API, you have two options (Java): reqMktData() will give you a live consolidated feed (read: not tick data); and reqRealTimeBars() provides 5 second candles and will give you more precision at the cost of a 5 second delay.
Thanks Bob, you've given me some things to think about. I knew when I went live that there were bound to be holes in the system but there comes a time when a guy has to draw the line and say, "good enough." You're right though, if I don't double check the data, I could suffer some pain.
undefined, Can you share what slippage you are experiencing? What order sizes are your typical orders? How does this compare with your backtests? Do you use a slippage model in your backtesting? Thanks!
i've downloaded IB's 15 sec bars of historical data for couple liquid ETF's and found that last bid price(of the this 15 sec bar) is consistently higher than trade last(of the bar) price so if short at last bid of the bar(worst possible price) and with a target price higher by a dime or two in my back testing soft-i would be a millionaire in less than a year go figure
Here's an update for last week's trading. It was a good week but system made one additional trade that wasn't made in backtesting. I can only attribute the problem to either the IB "live feed" differing from the 5 sec candles or clock slippage. Unfortunately, I have not been storing the live "ticks" as they come in so I cannot replay it to see exactly what went wrong but I can tell you that every morning I do fight to sync my clock with IB. My results from the first week differed by 14%, as I originally said, but I found a small bug that was causing the discrepancy. After reviewing the data, my first week differed by 6.8% and this past week was off by 4.8% not including the additional trade.
My slippage model is incredibly simple and I can tell you it is most certainly not feature complete. If anything, it gives me an almost worst case scenario especially as the price of the stock gets lower. If I'm placing a MKT order, I get myPrice*1.001 and if I'm selling at MKT, I get myPrice*0.999. Amazingly enough, this gets me within ~6% of actual trades. This even works when I place a STP LMT order, I use the same 1.001 and 0.999 to calculate the price I would have filled at and again, it's pretty damn close. I've read some of your previous posts and I notice that your system also only makes trades at the open/close of candles. This helps with this model because you have the price at which the candles opens at and the data is very "fresh" so we can get pretty close. As for large fills, I assume that I will always be filled if the price moves PAST, not to, the price I was trying to fill at. The equities that I trade have high enough liquidity so that my 100-1000 shares shouldn't have too much impact. Actually, there was one day when I was paper trading and the price went to my LMT order, half filled and the rest got closed out at EOD. In this case the paper trade actually worked out in my favour when compared against the back testing trades.
why not? just make a table and insert the data as it flows into your application via API or whatever. just insert(not update SQL statement ). insert is much quicker than anything else in SQL. and then-write a procedure and convert the data at EOD from database into a flat binary file. should be a piece of cake. and here you go-all the data is there for you.
I agree completely, I honestly have no excuse. In fact, I already have the table and code done from an earlier test project but never did integrate it into the system. It just got moved up on the priority list!
i don't know nothing about your experience as a trader+ programmer, but just a friendly advise from some random guy-if you have something in mind that needs to be done in order to improve your system(i'm talking about things that would handle bad data,disconnections,backup,data that would help you analyze AND prevent things like in your example above)-do it as soon as you can. you will eventually pay out your pocket with hard earned money,if you ignore it. basically-those flaws will force you to do that,just don't wait until your PnL say so