@Tcl Within the past years I, as part of a team, developed and implemented several trading system and market data feed solutions for different clients under linux, which definitely has been a hassle sometimes.
But yes, I think the best way to do receive market data is colo with a proper connection under linux.
Anyway...this is mostly not affordable as individual.
Beside my work as software developer I'm interested in the markets personally, so I have been trying some different solutions.
My initial requirements:
- Receive TAQ for approx 5000 symbols or if possible all NASDAQ and NYSE stocks (UTDF, UQDF)
- Not ultra low latency, so I don't mind being some millis behind
- Data should be unfiltered and somewhat reliable
To make it short:
Nanex with WINE works perfect but I don't want to pay that much for single server personal usage.
I tried IQFeed, but symbol limit is crap and spreading around multiple IQFeed instances under WINE wasn't funny at all.
I'm currently using ActiveTick and are quite happy with the real time data quality watching around 18000 symbols (including OTC) at once.
Ok, there is some erroneous data in their historical offer but I filter and don't care. I found that the data quality is better from mid-end 2013.
You probably can't expect a complete appropriate symbol change handling from their side and should track and work with symbol changes accordingly.
But in case you have a day or so spare time to work with it there are some ways to do it.
I love C and wrote a small wrapper for their "old" C++ API.
Things to consider:
If you try to kill/exit the feed through their API functions/methods, you are better off letting your process die and restart again.
Some bugs in the API lead to strange behaviour. (it seems to come from improper lock handling with boost, but I have no fun to dig into this)
But you know your ways to efficient process management under linux.
Real time and historical concurrently is a no go, so you if you want to request historical while having real time data without large delay its not possible in a single connection. But this isn't the way to go either.
100K TAQ limit per historical request is also somewhat boring.
Within two months of usage I had one major (1 day) and one minor (premarket, 3 hours) real time data disruption.
To be honest, for personal purposes, I'm quite happy with my ActiveTick + server for 210 EUR/mo configuration.
If I have some time left, I'm going to write a small test to compare their feed with the propriety one we do use at our current project.
Cheers,
Marc