General Intensity Shapes in Optimal Liquidationの読書メモ
要約
- Almgren-Chrissの拡張
- 指値注文を考慮
- リスクニュートラル以外のリスク回避的なagentも考慮
- 約定過程の強度関数が一般的な形をしている場合にも対応
イントロ
Almgren and Chrissはマーケットインパクトと在庫の価格変動リスクのトレードオフを考えるモデルで、色々な一般化がされてきた。
他にもObizhaeva and Wang等もあるが、既存のモデルでは成行注文だけを考えてきた。
この論文では指値注文を用いた最適流動化戦略を提案する。
指値注文なので、「マーケットインパクトと在庫の価格変動リスク」はあまり問題にならないが、代わりに「約定しないリスク(non-execution risk)」が現れる。(約定しないリスクには在庫の価格変動リスクが暗に含まれている?)
Bayraktar and Ludkovskiは約定過程の強度関数が一般的な場合にrisk-neutralなエージェントによる指値流動化戦略を導出している。
Guenant et al.は指数関数の強度関数に対して、リスク回避的なエージェントによる指値流動化戦略を導出している。
本論文はこれらの一般化であり、約定過程の強度関数が一般的であり、かつCARA効用関数を持つエージェントに対する指値流動化戦略を導出する。
Moreover, we presernt a limiting case in which the size of the orders tends to 0 and we show that this limiting case is intrinsically linked to the usual continuous framework of Almgren and Chriss, although the latter framework only considers market orders.
ここの主張がよくわからない。size of orders tends to 0って何。
モデル
確率空間(\Omega, \mathcal{F}, \mathbb{P})
Reference price of the stockをS_tとする。ここで、reference priceは仲値でも、best bidでも良い。
S_tは以下のブラウン運動に従うとする。
dS_t = \mu dt + \sigma dW_t
ここで、\muはdrift、\sigmaはvolatility、W_tは標準ブラウン運動である。
指値注文のモデル化をするために、まず、admissible strategiesを以下で定義する。
\mathcal{A}=\left\{(\delta_t)_{t\in [0,T]}\mid(\delta_t)_t \text{predictable process}, \quad\delta^- \in L^\infty (\Omega \times[0,T])\right\}
↑の厳密な意味はよくわかっていないけど、変な戦略の集合取らないでくれくらいでいいと思う。
売り指値注文をS_t^a=S_t+\delta_tに出すとする。
在庫の過程は
dq_t^\delta = -z dN_t^\delta
である。ここで、N_t^\deltaは約定した注文数の点過程で、zはそれぞれの注文のサイズである。(論文では\Deltaだが、見にくいのでzにした。)
単位時間あたりにdN_t^\delta回約定して、各注文のサイズがzなので、dq_t^\delta = -z dN_t^\deltaとなる。
点過程N^\delta_tの強度過程(\lambda_t)_tは\deltaに依存する。つまり、reference priceから深い位置に指値を出すほど、約定する頻度は低くなる。強度過程は
\lambda_t = \Lambda_z(S^a_t-S_t)\mathcal{1}_{q_t^\delta>0} = \Lambda_z(\delta_t)\mathcal{1}_{q_t^\delta>0}
である。ここで、強度関数\Lambda_zは以下を満たすと仮定する。
-
\Lambda_zは強単調減少(注文の価格を小さくすると、早く約定する)
-
\lim_{\delta \to \infty} \Lambda_z(\delta) = 0(無限遠に指値を出すと、約定しない)
-
\Lambda_z\in C^2(\mathbb R)(解析上の都合)
-
\Lambda_z(\delta)\Lambda_z''(\delta)\leq 2\Lambda_z'(\delta)^2(これも解析上の都合。最適戦略が一意に決まるための十分条件)
現金の過程は
dX_t^\delta = (S_t+\delta_t)zdN_t^\delta.
となる。
ここで、以下のCARA効用関数の最大化問題を考える。
\sup_{\delta \in \mathcal{A}} \mathbb{E}\left[-\exp\left(-\gamma \left(X_T^\delta+q_T^\delta(S_T-l(q_T^\delta))\right)\right)\right]
ここで、\gammaはリスク回避度(absolute risk aversion parameter)である。
T時点で在庫が残っているなら、S_T-l(q_T^\delta)で売る。lは正値の単調増加関数で、ペナルティ関数である。(満期時に在庫が残っているなら、reference priceよりも安く売る。)
価値関数V_zを以下で定義する。
V_z(t,x,q,s) = \sup_{\delta \in \mathcal{A}(t)} \mathbb{E}\left[-\exp\left(-\gamma \left(X_T^{t,x,\delta}+q_T^\delta(S^{t,s}_T-l(q_T^{t,q,\delta})\right)\right)\right]
\mathcal{A}(t)は[t,T]におけるpredictable processesの集合であり、
dS_\tau^{t,s} = \mu d\tau + \sigma dW_\tau, \quad S_t^{t,s} = s,\\
dX_\tau^{t,x,\delta} = (S_\tau^{t,s}+\delta_\tau)zdN_\tau^\delta, \quad X_t^{t,x,\delta} = x,\\
dq_\tau^{t,q,\delta} = -z dN_\tau^\delta, \quad q_t^{t,q,\delta} = q
である。また、点過程Nは強度過程(\lambda_\tau)_\tauを持つ。ここで\lambda_\tau=\Lambda_z(\delta_\tau)\mathbb{1}_{q_\tau-}>0である。
価値関数はある時点tで現金x、在庫q、価格sであるときにt以降で最適戦略を取った場合の効用である。
後で出てくるが、価値関数を定義すると、価値関数の時間発展を記述するHJB方程式を導くことができる。このHJB方程式を解けば、価値関数V_z(t,x,q,s)の時間発展がわかる。
もとの問題はV_z(0, X_0, q_0, S_0)を求め、効用関数を最大化する戦略(\delta^\ast_t)_{t\in[0,T]}を求めることである。
モデルに関する注意点
-
zがconstantであること
- 部分約定も考えていない
- 注文サイズが一定でない場合には\lambdaがmarked point processになるだけのはず
-
\Lambda_zを\delta<0の領域でも定義している。best bid以下の価格に投げるとmarketable limit orderになる。負の領域まで定義しておくと、Algmren-Chrissのモデルとの関係が明らかになる。もちろん、\delta\geq0という制約を入れてもいい。これは難しくない。
価値関数の時間発展方程式
HJB方程式は以下のようになる。
\begin{aligned}
0 &= \partial_t u_z(t,x,q,s) + \sup_{\delta \in \mathcal{A}(t)} \mathcal{L}V_z(t,x,q,s) \\
&= \partial_t u_z(t,x,q,s) + \mu \partial_s u_z(t,x,q,s) + \frac{1}{2}\sigma^2 \partial_{ss} u_z(t,x,q,s) \\
& \qquad + \sup_{s^a} \Lambda_z(s^a-s) \left[ u_z(t,x+zs^a,q-z,s) - u_z(t,x,q,s) \right], \\
u_z(T,x,q,s) &= -\exp\left(-\gamma \left(x+q(s-l(q))\right)\right), \\
u_z(t,x,0,s) &= -\exp\left(-\gamma x\right)
\end{aligned}
ここで、u_z(t,x,q,s)=-\exp(-\gamma(x+qs+\theta_z(t,q)))とおくと、
\begin{aligned}
&0=\gamma\partial_t \theta_z(t,q) + \gamma \mu q - \frac{1}{2}\gamma^2\sigma^2q^2 + H_z\left(\frac{\theta_z(t,q)-\theta_z(t,q-z)}{z}\right), \\
&\theta_z(T,q) = -q l(q), \quad \theta_z(t,0) = 0, \\
&H_z(p) = \sup_{\delta} \Lambda_z(\delta) \left(1-\exp\left[-\gamma z (\delta-p)\right]\right)
\end{aligned}
となる。
HJB方程式の解
\delta^\ast_z(t) = \tilde{\delta}^\ast_z\left(\frac{\theta_z(t,q)-\theta_z(t,q-z)}{z}\right)
where \tilde{\delta}^\ast_z(p) is defined by
\tilde{\delta}^\ast_z(p) - p = \frac{1}{\gamma z} \log\left(1-\gamma\frac{\Lambda_z(\tilde{\delta}^\ast_z(p))}{\Lambda_z'(\tilde{\delta}^\ast_z(p))}\right)
証明は略。
\Lambda_z(\delta)が指数関数みたいに簡単な場合には解析解が得られる。実際、\Lambda_z(\delta)=A_ze^{-k_z\delta}とすると
\Lambda_z'(\delta)=-k_z\Lambda_z(\delta)であるから
\tilde{\delta}^\ast_z(p) = \frac{1}{\gamma z} \log\left(1+\gamma/k_z\right)+p
よって
\delta_z^\ast(t) = \frac{1}{\gamma z} \log\left(1+\gamma/k_z\right) + \frac{\theta_z^\ast(t,q)-\theta_z^\ast(t,q-z)}{z}
ここで、\theta^\ast_z(t)はHJB方程式の解(変数変換すると解析的に得られるはず。未確認)
まあ一般の\Lambda_zに対しては解析解は得られないので数値計算するしかない。
\Lambda_zの関数形と各種パラメータを与えれば、HJBを数値的に解いて、↑の式を用いてt\in[0,T]における最適な指値流動化戦略が得られる。
あるいは、モンテカルロで効用関数を直接最大化する、という事もできると思う。(ただ、2変数の偏微分方程式なので有限差分とかで解いた方が速いと思う。)
以下は論文で言及されていないことなので間違ってるかも。
zがconstantでない場合
\begin{aligned}
0
&= \partial_t u(t,x,q,s) + \mu \partial_s u(t,x,q,s) + \frac{1}{2}\sigma^2 \partial_{ss} u(t,x,q,s) \\
& \qquad + \int_0^\infty \sup_{s^a} \Lambda(s^a-s, z) \left[ u(t,x+zs^a,q-z,s) - u(t,x,q,s) \right] dz, \\
u(T,x,q,s) &= -\exp\left(-\gamma \left(x+q(s-l(q))\right)\right), \\
u(t,x,0,s) &= -\exp\left(-\gamma x\right)
\end{aligned}
u(t,x,q,s)=-\exp(-\gamma(x+qs+\theta_z(t,q)))とおくと、
\begin{aligned}
0&=\gamma\partial_t \theta(t,q) + \gamma \mu q - \frac{1}{2}\gamma^2\sigma^2q^2 \\
& \qquad + \int_0^\infty \sup_{\delta} \Lambda(\delta, z) \left[ \exp(-\gamma(z\delta+ \theta(t,q-z)))- \exp(-\gamma\theta(t,q))) \right] dz \\
& =\gamma\partial_t \theta(t,q) + \gamma \mu q - \frac{1}{2}\gamma^2\sigma^2q^2 \\
& \qquad + \int_0^\infty H_z\left(\frac{\theta(t,q-z)-\theta(t,q-z)}{z}\right) dz \\
\end{aligned}
z=1, q\in\{0,1\}の場合
In the case of z=1 and q\in\{0,1\}, can the HJB equation be solved more easily?
ChatGPT
In this particular case where z=1 and q\in\{0,1\}, your problem simplifies significantly because your spatial domain is now just a set of two points. The PDE becomes a system of two ordinary differential equations (ODEs), one for q=0 and one for q=1. The term involving the spatial derivative \theta_z(t,q)-\theta_z(t,q-z) simplifies to \theta_z(t,1)-\theta_z(t,0).
Your system of ODEs is now:
\begin{aligned}
&0=\gamma\partial_t \theta(t,0) + H_z(\theta(t,1)-\theta(t,0)), \\
&0=\gamma\partial_t \theta(t,1) + \gamma \mu - \frac{1}{2}\gamma^2\sigma^2 + H_z(\theta(t,1)-\theta(t,0)), \
\end{aligned}
with the initial conditions \theta_z(T,0) = 0 and \theta_z(T,1) = -l(1).
You can use scipy.integrate.solve_ivp to solve this system of ODEs as before:
from scipy.integrate import solve_ivp
import numpy as np
gamma = ...
mu = ...
sigma = ...
l1 = ...
def H_z(p):
return ...
def system(t, theta_z):
d_theta_z_dt = np.empty_like(theta_z)
d_theta_z_dt[0] = H_z(theta_z[1] - theta_z[0])
d_theta_z_dt[1] = gamma * (mu - 0.5 * gamma * sigma**2) + H_z(theta_z[1] - theta_z[0])
return d_theta_z_dt
theta_z_0 = np.array([0, -l1])
t_span = (T, 0)
sol = solve_ivp(system, t_span, theta_z_0, method='RK45')
追記(2023/05/16):
↑の常微分方程式はq=0で境界条件取るべき。
\theta(t,0)=0と境界条件を置く。また、\Lambda(\delta)=Ae^{-k\delta}とすると、H(p)=\frac{\gamma}{k}\left(1+\frac{\gamma }{k}\right)^{-1-\frac{k}{\gamma}} A e^{-k p}であるから
\theta(t,1)=\theta(t)として
\begin{aligned}
0&=\frac{d\theta(t)}{dt} + \mu - \frac{1}{2}\gamma\sigma^2 + \frac{1}{\gamma}H_z(\theta_z(t,1))\\
&=\partial_t \theta(t) + \mu - \frac{1}{2}\gamma\sigma^2+\frac{A}{k}\left(1+\frac{\gamma }{k}\right)^{-1-\frac{k}{\gamma}} e^{-k \theta_z(t)}
\end{aligned}
となる。ここで\tau=T-tとすると
\begin{aligned}
\frac{d\tilde\theta(t)}{d\tau} = \mu - \frac{1}{2}\gamma\sigma^2+\frac{A}{k}\left(1+\frac{\gamma }{k}\right)^{-1-\frac{k}{\gamma}} e^{-k \tilde\theta_z(\tau)}, \tilde\theta_z(0)=-l(1)
\end{aligned}
この方程式の解は
\tilde\theta(\tau)=\frac{1}{k}\log \left(\frac{e^{a k \tau}\left(a e^{c k}+b\right)-b}{a}\right)
ただし、a\coloneqq \mu - \frac{1}{2}\gamma\sigma^2, b\coloneqq \frac{A}{k}\left(1+\frac{\gamma }{k}\right)^{-1-\frac{k}{\gamma}}, c\coloneqq -l(1)
である。
最適指値は
\delta^\ast(\tau) = \frac{1}{\gamma} \log\left(1+\gamma/k\right) + \frac{1}{k}\log \left(\frac{e^{a k \tau}\left(a e^{c k}+b\right)-b}{a}\right)
となる。
Discussion