If your business struggles with getting trades into your trading system, you are not alone. We see this a lot. Exchange connectivity is just one of those things loaded with nuance. So, if you have problems with your current setup, or your IT team is planning on building themselves here’s what you need to know:
- Start with a good FIX engine. Scratch that. Start with a great FIX engine. This is the code that handles the FIX protocol. The engine’s got to be fast. Can you use an open source project? Yes, they are out there, but unless you are very familiar with coding and know both FIX and trading, it can turn bad on you quickly. Long story short. If you are going to build, spend some time finding the right FIX engine.
- Not all exchanges use the same FIX protocol. If you need to connect to multiple exchanges be ready to attack multiple versions of FIX (e.g. 4.3, 4.4 and 5.0). As stated above good FIX knowledge is key to exchange integration. But wait. Just when you thought you had it covered. Sometimes exchanges forego FIX protocol all together.
- Once you’ve got a handle on the core FIX engine, it is important to code in the workflow for each specific exchange and then handle all the glorious nuances your business needs. Some elements in this are very important. i.e. Deal sync: what happens if there is a disconnection? When your connection is stood back up will it double book trades? What about how the connection handles the exchange product definitions? How are they updated? This part of exchange connectivity really requires a good amount of planning and scoping for each exchange.
- Bring through every FIX field provided by the exchange. It’s our opinion, but one should always take all available fields. Back in the old days no one thought “execution time” was important. So they didn’t bother bringing it through. Cue Dodd Frank/ EMIR/ Etc… and … Ouch!
- You will need to code an ETL to take the raw fix out of FIX into something that is minimally human readable. Double down on the code effort if you want to book this trade into a downstream system. This is going to require further transformation to get it into JSON, XML or whatever format your system needs.
- Some exchange connectivity requires you to wrestle down a VPN handshake. Usually not technically hard, but it’s been our experience to give your infrastructure team some long lead time on this. It’s a simple thing that for some reason takes up a bunch of time.
- Gather all your clearing accounts. Separate the live from the dead. Seriously, spend some time on this. You won’t regret it.
- Code a solid buffer. Most trading systems are not designed to handle a ton of trades at once. Threading is a bit of a rarity. So, you really need to account for that in your connection. Traders may surge at 15 or 20 trades per second. But the trading system might only be able to take one or two. The solution has to code for this fact.
- Finally and foremost. Be prepared for change. Exchange connectivity means regularly changing to meet how things are done on the exchange. For example, remember when ICE switched a bunch of products from EU to the US. Or, when CME switched from the CT API to the STP API?
Or you can spare yourself all this pain and use K3. All things considered the cost of a bad connection is extremely high in terms of personnel cost. K3 installs fast. We have connections with about 30 exchanges and existing connections to most trading systems. Drop us a line: firstname.lastname@example.org