I'm developing a deep reinforcement learning based approach to market-making. In order to implement this, I need to define the appropriate actions and define environmental steps. While doing some literature research, I've encountered various market-making formulations.

For example, Avellaneda and Stoikov seem to be using the following approach:

  • At time $0$, determine and set the quotes $\delta^a$ and $\delta^b$
  • During the interval $[0, \Delta t]$ either both quotes get executed (in which case the spread is captured and inventory doesn't change) or only one quote gets executed (in which case no spread is captured the stock is bought/sold and the inventory increases/decreases) or no quote gets executed (in which case nothing happens). But no matter what happens we do not change the quotes while in this interval.
  • At time $\Delta t $, determine and set the new quotes $\delta^a{'}$ and $\delta^b{'}$
  • The process is iterated until some terminal time $T$

It is interesting to note that, according to this formulation, if say the bid quote gets executed at $\frac{\Delta t}{5}$ and the ask quote at $\frac{2\Delta t}{5}$, the market maker is simply waiting from $\frac{2\Delta t}{5}$ to $\Delta t$ to set new quotes.

On the contrary, Fushimi, Rojas and Herman seem to be employing a somewhat different, more sophisticated approach given by the pseudocode below. enter image description here

Naturally, there are other more sophisticated formulations as well. Some of them include canceling the second order as soon as the first one gets executed. Due to its simplicity, I prefer the first (Avellaneda-Stoikov) approach. However, it does seem somewhat simplistic and naive, and I'm not even sure if it is even used in practice. So my question is the following: is the first approach good and realistic enough or should I opt for some alternative?


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.