- Don't write the core platform in python. The lack of support for concurrency is going to bite you in the ass down the line when you're trying to trade at scale or deliver high performance. I'd stick to C++, Java, Rust or Golang.
- Don't send market data in HTTP/JSON. It's way too bulky and slow. Of course, you can still expose JSON to the end-client if that's what they want. But make sure to send internal messages in a fast, low-overhead, low-bandwidth. Like ZeroMQ + fixed binary encoding.
- Have very clear policies about when/where/why you throttle market data. If you This is the biggest reason why most "algo-platforms-in-a-box" suck. (Using fast market data encoding will help here.)
- Make sure that paper trading isn't running against throttled or consolidated market data. This is going to distort the results by assuming a trader can hit a price that may already be stale.
- Since it's comm-free, you (or your broker) is monetizing with payment-for-order-flow. At the very least be transparent about your policies here. I'd offer the ability to upgrade to smart or exchange specific routing for a commission.
- Since you're doing payment-for-order-flow, keep meticulous records of your trades with microsecond time precision. You can use that dataset to shop around for better deals on the order flow. If you wind up growing the business where you're doing a significant amount of volume, a major wholesaler like Citadel or Virtu can use that dataset to give you a very competitive offer for your flow.
- Be very careful with the market data licenses and make sure you're totally in legal compliance. Exchanges do not mess around and frequently audit their vendors to make sure they're in compliance.
-t. guy who built a HFT fund using python.
Can you explain to me what the GIL is and how it works...
> guy who built a HFT fund using python.
I mean, maybe you and I have definitions of HFT. But I'd say the base minimum to compete in HFT space is tick-to-trade latency from off-the-wire data packet to on-the-wire order packet of 50 microseconds or less.
That's simply not possible in any python stack. Period.
I believe you're maybe doing something that turns over positions on an intraday basis. But that's not HFT. HFT's typical characteristics are colocation+DMA, very low latencies, full-scale analysis of the entire order book, volumes of more than 1% of the ADV, and Sharpe ratios above 10.
(And no, nothing in crypto space is anything close to HFT, because the infrastructure simply doesn't exist.)