Hi all, I am new here though I've been in readonly mode for a bit. I am a professional Software Engineer embarking on build a stock/futures trading station. Naturally, I've been trying to find a high quality data feed (no symbol limits or text-parsing or flaky systems, thank you). Based on negative reviews, I've more or less ruled out IQFeed/Barcharts/ActiveTick/QuantQuote. I feel reasonably comfortable about Nanex' NxCore having read their API docs and enquired on pricing. As a s/w engineer, I do appreciate some of their design decisions like making network a non-issue and guaranteeing in-order delivery of every exchange update. Neat. However, I am more comfortable with Java over C++. I don't have an ultra low latency strategy; so I plan to introduce a layer to talk between Java and C++ to have the meat of my code in Java. However, I would like to avoid spending time on building & maintaining this layer, if it can be helped. I am wondering if I anyone knew a similarly high quality feed but with a Java API. Ideally, it would be a thick client too that offers similar semantics as NxCore, but I am happy to hear other suggestions as well. Thanks !
You have to use an API that your broker offers, but have you looked into Redi? Redi has a robust API and if your FCM and Securities broker allow access, you can execute both futures and equities. https://www.redi.com/ You can use the MD, GUI, risk and order routing from the platform and build whatever you want to connect.
I've been looking for a provider for a full OPRA broadcast as well as US equities. Getting futures data is not something I've looked in to. You say you don't want a symbol limit, but that substantially limits your choices to higher end(/priced) products. The cheapest provider I could find that offers no symbol limits, and a complete market broadcast is Barchart ($3k/mo + exchange fees). I've seen mixed reviews about them and I've never used them, so don't take this as an endorsement. In fact, I've not used any data providers aside from what my brokerages have provided. I've also contacted Nanex sales as they seem to be a quality provider, but they never got back to me, so I haven't a clue on price for OPRA + US equities. If you actually get a response from them and don't mind getting a price on full OPRA stream, I'd appreciate it. FYI IQFeed is owned by DTN and they have some sort of relationship with Nanex that isn't entirely clear to me. It seems that Nanex is run by an independent person, but DTN owns them. I'm not positive on this. Anyway IQFeed won't fit either of our needs because of the symbol limits, but if you're wanting to do some sort of linking between say S&P 500 futures and the equities that make up the index, you should be able to do that with IQFeed. If I understand you correctly, the main drawback to Nanex from your POV is that it lacks Java support. Barchart supports Java. I realize you ruled them out, but I've been looking for a data provider for quite a while and I think you'll find there's not likely to be some hidden gem of an alternative. They had offered me a free trial, but after having read some things I'm not sure I want to waste the time writing to their API. Anyway if you insist on Java and no symbol limits, that's the only one I've found so far (that bothered to give me a price) and I've been searching for quite a while. Ask for a free trial and see what you think of their API and data quality.
Read this thread: http://www.elitetrader.com/et/index...hread-on-real-time-data-api-solutions.299375/ If you go to the Nanex forum, it talks about a Java wrapper that has already been written but you'll need to contact Nanex about it. I am not sure it is for real, but it is probably worth pursuing.
I don't know all the details but Eric Hundsader is the founder of Nanex. From what I've heard him say he calls DTN a partner. Nanex manages the data and the compression of it while using DTN's infrastructure to get it to the customers. They also handle the billing so it is a bit confusing. But it is a very different beast then IQFeed.
I use NxCore, and honestly, your "c++ layer" would be pretty light weight. Really all you have to do is read data structures from the nanex feed, and the export it somehow (I use shared memory).
1245- Thanks for the link. Execution is a way off yet and I am likely to start with IB. From a cursory look at Redi, details of the API appear fairly scant. LEE- Yes I did get a response. Strongly recommend you to call them. Their email support only gets better after they kinda remember you. When you call them, do ask for every exchange you want to know about. They have combo packages that are fairly attractive. LEE- I thought IQFeed was a separate acquisition and so don't necessarily share the same people/architecture and hence quality with Nanex. I don't know if I made it up. LEE- I've reached the same conclusion. I posted this just to check I didn't miss any other *hidden gems* like you put it. I am more willing to forgo Java than forgo data quality - which is usually suggestive of architecture and/or people problems which are unlikely to be fixed in a short period of time. sprstpd: I did see that thread previously and asked Nanex. But their luke warm response to it and the fact that I don't trust it meant that I am unlikely to ever use it. IAS_LLC: Yes, precisely, that's what I am already doing in my proof of concept. I use memory mapped files, since I wasn't sure what visibility guarantees are offered by shared memory (are C++ writes to shared memory on one core immediately and in-order visible to Java reads on another core?). Memory mapped files seem to have stricter guarantees. I want to use off-heap structures all the way in Java, may be using Chronicle-* suite of tools, but there are some tricky problems to solve. Mind sharing any thoughts ?
Did they ever begin disseminating US equities data out of NJ? Or is everything still coming out of Chicago?
jtrader33, Was/is this a sticking point for you/someone ? I only ran the sample historical application. Based on ping times to my local machine (near NY/NJ) (30 ms) and to my machine in the cloud in Iowa (10 ms), this historical data download server appears closer to Chicago than NJ. I can't say anything about the real-time server.
I'm using QT QShared memory as my shared memory mechansim. The shared memory segment i've constructed is actually a buffer, so I don't have any issue with things being out of order. As for using shared memory between Java and C++.... It shouldn't be an issue, but it will depend on your shared memory mechanism. I don't think you will be able to use std::thread(), if you choose to go the shared memory route. I'm certain there is someone out there using shared memory between Java and C++ though... google knows. http://stackoverflow.com/questions/...d-memory-data-using-java-that-is-written-by-c