Inspiration
TEAM-07 The Market Maker challenge from Optiver.
What it does
Functioning market maker bot that provides liquidity to an instrument on a financial simulated market.
How we built it
We built it using python on the Cloud9 IDE provided by Optiver. We put specific focus into a scalable and well-integrated infrastructure that could easily be modified and adapted for further functionality. As well as this, we put specific focus into the resilience of the bot to handle with errors that are thrown at it in the market.
We paid attention to risk management and made sure to not break any limits. For example, our bot hedges all the ETF asks/bids with stock instrument ask/bids using IOC calls.
The market maker provides a lot of liquidity as it creates a dynamic amount (that we can play around with) of asks and bid orders with a specific distance that is also editable. It also tries to update existing orders instead of only placing new ones. One way the bot does it is by going through recent trades and updating the volume values of the order(s) and then checking if it makes sense to increase the volume or if the order should even be cancelled.
We implemented checks to ensure that all limits provided in the challenge are kept track of while also putting in fail saves such as the functionality to sell all of our positions if the bot crashes.
We worked on the 2 challenges separately, having split up, in the beginning, to start tackling both problems from the onset.
Challenges we ran into
Our decision to tackle both problems separately and simultaneously, ultimately proved to be challenging when it came to the integration of the two parts. Regrettably, due to time concerns, the functionality of the first problem and its associated buying mechanisms were not able to be fully ported to the market maker bot. This meant that while we had an effective market maker bot, that was able to profitably and sustainably provide liquidity to the market and reduce the spread of the instruments, our total profitability was limited without the additional purchases of good opportunity stocks.
A few wrong steps, in the beginning, resulted in our inability to finish on time so better time management could have helped.
Accomplishments that we're proud of
Getting a successful market bot and trading algorithm going and generating a profit. We were especially proud of gaining an understanding of the financial markets and the systems that govern them to a degree where we could successfully implement this knowledge into our bots.
It was additionally, one of our devs first time coding python so there was a large learning curve in this which was fun to experience.
What we learned
- Financial Concepts such as what a market maker is.
A deeper knowledge of the functioning of the financial markets and the type of instruments that can be traded on them.
We have gotten a better understanding of object-oriented programming and the use of dictionaries in python.
What's next for Step1 = TradingBot, Step 2 = ???, Step 3 = Profit
Implementation of a buying/order strategy that focuses on generating a profit while our market maker continues to provide liquidity to the market.
At the moment the bot is limited to 25 calls per second so another check to ensure that all calls to the bot API are made within that time frame would enhance the projects.
More robust limit checks and edge case handling for the case that the bot behaves unexpectedly. Also there should be more effecient ways of hedging by also using limit orders.
Log in or sign up for Devpost to join the conversation.