Poisson intensity of limit order execution, calibration of parameters A and k using level 1 tick data
Description
A limit order placed at a price St ± δ, has the instantaneous probability of execution λ(δ)dt where the intensity λ(δ) is given by:
λ(δ) = A e -kδ
λ - Poisson order execution intensity
δ - spread (distance from mid price St)
A - parameter, positively related to trading intensity
k - parameter, positively related to market depth
Package Execution Intensity Estimator (EIE) contains single and multi threaded calibration procedure of A and k parameters. Methods that calculate intensity λ(δ, A, k) and spread δ(λ, A, k) are provided as well. Algorithm operates on level 1 tick data, therefore it is suitable in a setting where liquidity is not fully observable (i.e. dark pools). Calibration is two step procedure performed separately for buy and sell limit orders.
Steps:
- For each spread δk of N predefined spreads (δ0 , δ1 , δ2 , ... δN-1) estimate execution intensity λ(δk) using "waiting time" approach described in [1] 4.4.2.. Result of this step is set of N points (δk , λ(δk)) on empirical Spread Intensity Curve (SIC)
- Estimate A and k based on N points from previous step. This can be achieved by various approaches. Code implements two approaches described in [2] 3.2:
- LOG_REGRESSION performs OLS regression of log(λk) on δk. Finally k = -slope and A = e intercept
- MULTI_CURVE from set of N points creates Ns = (N*(N-1))/2 unique pairs fo points ((δx , λx) , (δy , λy)). For each set of points solves the following set of equations for A' and k' :
λx = A' e -k'δx
λy = A' e -k'δy
Final estimates are A = mean(A'1 , A'2 , ... A'Ns) and k = mean(k'1 , k'2 , ... k'Ns)
Once A and k are calibrated, depending on context of usage, user can specify: