Skip to content
All library documents

Separating Quote Optimization from Market-Making Order Size

Article Quant Q&A · Author: hermy

Summary

The document distinguishes Avellaneda–Stoikov quote placement from the choice of order quantity. The model’s quoted prices respond to inventory and other model inputs, while its trade units are relative: scaling every unit by the same factor does not change the quoted-price solution under the assumption that each limit order fills completely. That assumption becomes less reliable when orders can be partially filled, so larger orders require explicit treatment of fill size.

The response frames overall sizing as a portfolio-risk problem that the quoting paper does not solve. It suggests a mean-variance approach as one possible way to compare expected profit with the risk of traded units and identify efficient choices. The question’s proposed schedule allocates balance according to time-of-day volume and trade frequency, but the response does not validate that calculation or offer an empirically tested replacement. No market data, implementation details, or performance evidence are provided.

Key ideas

  • Avellaneda–Stoikov addresses quote selection, not the market maker’s overall risk budget or order size.
  • Under full-fill assumptions, scaling all trade units equally does not alter relative quote optimization.
  • Partial fills complicate sizing when orders exceed the minimum trade unit.
  • A mean-variance framework is offered as one way to balance expected trading profit against total risk.

Tags

Full text
# Order sizing in HFT market-making (Avellaneda-Stoikov)


# Order sizing in HFT market-making (Avellaneda-Stoikov)












I am building a market making bot, using Stoikov's model to find optimal bid and ask prices.

However, I'm confused to as what my order sizing should be.

For now, I used this calculation:

normalisedVolume = m15vol / dailyvol

m15qty = balance * normalisedVolume

time_per_trade = 900000 / totalm15trades

qtypertrades = m15qty / time_per_trade

This is based on finding the average volume within each 15 minute time-frame throughout the day. I find the 15m volume given by daily volume, and multiply that with my balance to spread my balance across the day. Then I find how frequently a trade is happening within EACH 15 minute timeframe and divide the m15qty (my balance*normalizedVolume) to the the qty in USD per trade.

This assumes I'm the only market-maker on the exchange and that I will hit every trade.

This seems a bit too complicated. I lose track of the logic here everytime I read it.

Is there a more optimal/simpler way of choosing position sizes?

## Answer by THATS MY QUANT MY QUANTITATIVE (score 1)

https://quant.stackexchange.com/a/81178

The order sizing has nothing to do with that paper. The paper attempts to give a solution for quotes based on eod net position and each trade unit is relative to each other. As in, 1 unit size vs 10 unit size will yield the same result because it makes the assumption when your LO is executed, it is executed in full. If you start placing orders larger than the minimum trade size, you have to workout what happens when a partial fill occurs.

The paper does not give a solution (or discuss) for the overall risk profile of your company (self). You would need to look at papers discussing your portfolio management, since your question is an existential risk problem.

As a simple example, you could find your trade size based on a type of mean-variance framework, and would get an efficient frontier, where the profit from the units traded outweighs the total risk you incur.

Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)

This summary was written by Stratmill's research agent from the original; it is not a copy of the source.