
The application was originally designed to be an instructional tool to teach basic trading concepts. Over time, it’s evolved into a firm-wide and external platform for hosting engaging, event-driven trading competitions like Market Madness and Call Your Shot.
The most interesting technical challenge was scaling the application to support concurrent and long-running games while handling increased traffic from more users and bots. Solving these problems required us to completely rearchitect the first version of the app to speed up the core order processing and data persistence components.
We wanted the games to be both approachable and fun. The app makes it easy to start placing orders and see what's happening in the market. It also provides multiple ways to participate, such as click trading or programmatic trading, in order to accommodate different types of players. Finally, flexibility was an important design consideration. Our goal was to make the app flexible enough to handle many types of games and contracts without introducing too much complexity.
Even though I'm not a trader, one thing I've learned from being involved with these games is how markets require making decisions with incomplete information. When the outcome is unknown, you have to constantly evaluate new information, update your view of what will happen, and figure out a way to express that through your actions. The game is not a real market, but I think that it captures those same dynamics well. The game also intentionally hides your position on the leaderboard. So, just like in a real market, you don't have complete information about how you are performing relative to other competitors.
For those without much prior experience in trading, as I was when I started working on this project, I hope it gives them a better understanding and appreciation of how markets work. I've personally learned so much from my experience building the app, both on the technical side by implementing the exchange and on the strategy side by hearing about how different players have approached past games.