For the past three years, my colleagues and I have been developing and operating a Python system that trades in the stock market.
I am going to tell you a story of how we developed and scaled this platform. We made some rather good decisions, as well as many mistakes that everyone can learn from. Some of our code is open source and you can use it in your own projects.
We started with a small event-driven application built with asyncio. As our trading expanded, our application has grown into a multi-agent monolith: hundreds of modules operating in a single asyncio-managed process. Today, we are moving to a more distributed approach. Some parts of the platform run in isolated processes and communicate asynchronously.
I am going to show you a few challenges we have faced on this journey, and what they taught us about Python, asyncio, distributed systems, debugging, and making painful compromises. You don't need to know anything about trading. In fact, it turns out that these are mostly quite fundamental computer science problems that pop up over and over again, regardless of what you're building…
Víťa travels the world, writes software and ponders on philosophy.
He likes to solve hard problems, preferably involving mathematics, finance and lots of data. Python has been his language of choice for many years and lately he's very much into latest developments like asyncio and type hints.