Skip to content
All library documents

Calibrating Avellaneda–Stoikov Fill Rates from Tick-Level Data

Article Quant Q&A · Author: Oliver Xu

Summary

The document discusses fitting the arrival-rate parameters in the Avellaneda–Stoikov market-making model when observed fill rates do not appear exponential in spread. The author compares empirical spread buckets with candidate curves, including a volume-clock version, and wonders whether the model parameter should vary with anticipated trade size. The practical concern is balancing fills from small trades against adverse effects associated with larger trades.

The reply argues that the apparent curve shape may come from how the data was collected. It recommends recording fill rates at each tick away from the best bid or ask, then estimating the model parameters from those observations. The reply reasons that fills farther from the best price depend on fills at nearer ticks. It cautions that candle data is inadequate for this calibration and calls for high-frequency data. The exchange offers a brief methodological suggestion rather than a worked estimation procedure or evidence that the fit resolves the production trading concern.

Key ideas

  • The author finds that empirical fill rates across spread buckets do not follow a clear exponential shape.
  • A reply suggests measuring fill rates separately at each tick of distance from the best bid or ask.
  • The proposed calibration relies on high-frequency observations rather than candle data.
  • The discussion does not provide a complete fitting procedure or establish whether dynamic parameters improve trading results.

Tags

Full text
# Fitting k from Avellaneda but the curve is not exponential


# Fitting k from Avellaneda but the curve is not exponential












I am trying to fit kappa for a ticker. I am using 5 days of data to illustrate how this can be done, which isn't that much data but I think is sufficient to show my problem. This data however appears to have a non exponential function for the (A, k) part.

I am following the method described in this post: How does one calibrate lambda in a Avellaneda-Stoikov market making problem?

Once I have my data, I plotted the mean lambda for each bucket of spread. But I found that the curve seems to not be exponential. Here I show the curve from empirical data vs a few choices of kappa:

The y-axis is in log scale and the empirical curve is not linear in particular not linear at the area less than 0.02.

I also fitted with volume-clock (advance the clock by x when x shares are traded)

I am not sure how to deal with this in practice; are there some adjustments that I need to make to the fitting process? Do I need to make k dynamic in production trading depending on if I anticipate large vs small trades next?

The reason I ask is because I believe either the large trades are hurting my PNL when kappa is too large or I can't get volume from small trade when kappa is too small.

## Answer by wildbunny (score 0)

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

With respect, it looks like a problem with the way you're gathering the data.

What you need to build is a data set recording the fill rate at each tick from the bid/ask, then you can find A and k.

The intuition is that the fill rate must be decreasing in distance from the best prices because in order to fill at, say tick 10, you must have already filled tick 9.

I don't think you can use candle data to do the calibration, you need high frequency data.

Hope that helps,

Cheers, Paul.

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.