Alright, it’s been a month since my first post. Will try to keep posting more frequently from now on. In this post I’d like to talk about the tech stack I use for automated trading, which includes data sources, tools, programming languages, APIs and brokers.
I am currently researching and deploying trading strategies on the Futures, Equities and cryptocurrency space, with the Futures strategies as the core of my portfolio.
The strategies (both deployed and under research) as of March 2024 are divided into:
Futures:
[Active] Trend Following
[Development] Carry
[Active] Seasonality
[Active] Single-Market intraday strategies
Equities:
[Development] Momentum
[Development] Short Term Mean Reversion Long/Short
[Active] Volatility
CryptoCurrency:
[Early Development] Trend Following
All using linear instruments (futures, equities, spot crypto) and profiting from well-known return factors.
I use these data providers for End-Of-Day data:
Futures end-of-day: CSI Data. Very reliable, high data quality and extensive coverage futures markets across the globe.
Equities end-of-day: Norgate Data. Best in class data provider for equities, including delisted stocks. Tightly integrated with RealTest portfolio simulation software.
Futures intra-day: Tradestation. I code my single market intra-day strategies in TradeStation, as it provides an all-inclusive package (historical data, strategy research, execution and broker all in one), and removes the complexity of having to integrate multiple tools and data sources.
My core broker is Interactive Brokers because it’s reliable, low-cost, high reputation, and has the widest market coverage. Market coverage is very important for me since I’m targeting more exotic, less liquid markets which the bigger players don’t trade, to get the “small trader advantage” in my favor.
The second broker I like is Tradestation, which as I explain above, removes most of the complexity involved in developing and executing intra-day strategies. And it provides long history of intraday futures data which can be used for simulations within the platform using its scripting language “Easy Language”.
For end-of day strategies I’m using R as my core language for strategy development, because the TidyVerse package makes it much easier for number crunching than other languages… and there’s quite a lot of number crunching required. Easier to code and read, and more concise than Python’s Pandas and similar (prove me wrong). But for interfacing with other software (Telegram for trading notifications, and Interactive Brokers API for execution) I use Python. Namely the python-telegram-bot and ib-insync libraries. But, to make life simpler and have a common look & feel, I wrap the Python within my R code using R’s reticulate package.
Equity strategy simulation has a lot of nuances and requires significantly more data due to the huge universe of tradeable stocks. I use the RealTest software for equity simulations, because it integrates seamlessly with Norgate Data, is easy to use, simulates portfolios of strategies and; most of all, because it has a great community forum. I read that lots of long-term Amibroker users are migrating to RealTest, so had to give it a shot, and got impressed.
For end-of-day strategies, I made a simple telegram bot which informs me anytime my strategies run or send orders to the broker. And I also configured the brokers to send me SMS when orders are executed.
Note I’m not endorsing or getting commissions from any of these trading technology providers (if/when I do I’ll tell you). I use them heavily today hence are the only ones I can talk about confidently today.
The CSI Data, Norgate Data, RealTest and Tradestation softwares run on Windows, so they need a PC to be constantly online. I use a cloud Virtual Private Server (VPS) with Windows to run these tools continuously.
There are lots of different technology stack combinations possible. For Equities, probably Norgate + RealTest offers the shortest learning curve. For portfolio simulations in futures, building everything from scratch with R or python like I did would take lots of time & effort, but nowadays there is a huge amount of code and libraries in GitHub to get started. Plus there’s ChatGPT… a game changer.
Looks like there’s pleeenty to talk about in other posts. Let’s talk about trading strategy development process on the next ones.
Tell me… how does your tech stack look like? Why do you set it up that way? I answer to comments ;-).
New here, but loving what I see so far. My stack is python/zipline/vectorbt/IB and I also use Norgate data. I'm curious why you use CSI vs. Norgate for futures? Although slow, I especially like zipline for futures backtest simulations because it deals in individual contracts and makes its own continuatiuons when needed. Before python I used Rightedge (dead), quantshare, and amibroker. A long time ago I used Tradestation but just found Easy Language too limiting.