← Maqolalarga qaytish
July 14, 2026
5 daqiqa o'qish

Almgren-Chriss usulini chala tushuntirishlarsiz: bir kunda amalga oshirish mumkin bo'lgan optimal ijro

Almgren-Chriss usulini chala tushuntirishlarsiz: bir kunda amalga oshirish mumkin bo'lgan optimal ijro
#ijro
#almgren-chriss
#bozor ta'siri
#optimal ijro
#twap
#kvant
#python
#kripto

Almgren va Chriss (2001), "Optimal execution of portfolio transactions" (Journal of Risk 3(2), 5–39) — bu, ehtimol, ijro bo'yicha tadqiqotlarda eng ko'p sitata qilingan maqola va shu bilan birga eng noto'g'ri implementatsiya qilinganlaridan biri. Internetdagi ko'pchilik "Almgren-Chriss" kodlari — bu izoh bloki bilan bezatilgan oddiy TWAP jadvalchisi. Bu haqidagi ko'pchilik blog postlar xulosani o'tkazib yuboradi, sinh funksiyasiga qo'l siltab qo'yadi va ishlab chiqarishda haqiqatan ham muhim bo'lgan qismga — parametrlar qayerdan olinishiga — hech qachon tegmaydi.

Ushbu maqola buning barchasini qamrab oladi: model taxminlari, halol tarzda bayon etilgan; yopiq shakldagi traektoriya, isbotlangan, shunchaki aytilmagan; samarali chegara va risk-averziya parametrini qanday tanlash kerakligi; hamda uchta kirish parametrini — vaqtinchalik ta'sir η\eta, doimiy ta'sir γ\gamma, volatillik σ\sigma — Binance order book va savdo ma'lumotlaridan kalibrlash, ishlaydigan Python kodi va fitning nima uchun shovqinli chiqishi haqidagi halol muhokama bilan. Bu — ijro sohasidagi hamma narsaning intellektual asosi: TWAP, VWAP va POV — bu modelning maxsus holatlari yoki evristik "qarindoshlari" (TWAP, VWAP, POV: hamma ishlatadigan ijro algoritmlari maqolasiga qarang), zamonaviy ML yondashuvlari esa — mustahkamlangan o'rganish jadvalchilari va neyron impact modellari — biz hozir yozmoqchi bo'lgan taxminlarni aynan yumshatishga qaratilgan urinishlardir.

Sozlash: model haqiqatda nimani taxmin qiladi

Sizda aktivning XX birligi bor (aytaylik, 100 BTC) va uni TT vaqtgacha to'liq sotib bo'lishingiz kerak. [0,T][0, T] oralig'ini uzunligi τ=T/N\tau = T/N bo'lgan NN ta intervalga bo'ling. Sizning qaror o'zgaruvchingiz — bu holdinglar traektoriyasi x0=X,x1,,xN=0x_0 = X, x_1, \dots, x_N = 0, kk-intervalda bajariladigan savdolar nk=xk1xkn_k = x_{k-1} - x_k bilan.

Butun modelni uchta taxmin ko'tarib turadi:

1. Arifmetik tasodifiy yurish (random walk). Buzilmagan narx quyidagicha o'zgaradi:

Sk=Sk1+στξkτg ⁣(nkτ),S_k = S_{k-1} + \sigma \sqrt{\tau}\, \xi_k - \tau\, g\!\left(\frac{n_k}{\tau}\right),

bu yerda ξk\xi_k — i.i.d. standart normal tasodifiy o'zgaruvchilar, σ\sigma esa absolyut volatillik (dollar birlik vaqt1/2^{1/2} ga, foizda emas). Arifmetik, geometrik emas: bir necha soat davomida farq ahamiyatsiz, arifmetik yurish esa algebrani chiziqli-kvadratik holatda saqlab qoladi. Drift yo'q: Almgren va Chriss drift hadini muhokama qiladi, lekin kun ichidagi likvidatsiya uchun 4 soatlik alpha bahoyingiz deyarli har doim shovqin bo'ladi, uni nolga tenglashtirish esa halol standart yondashuvdir.

2. Chiziqli doimiy ta'sir. g(v)=γvg(v) = \gamma v: vv tezlikda savdo qilish narxni doimiy, proportsional ravishda siljitadi va bu siljish hech qachon so'nmaydi. Sizning har bir sotgan birligingiz midni abadiy γ\gamma ga pastga suradi. Bu qo'pol ko'rinishi mumkin, lekin uni chiziqli saqlashning chuqur sababi bor: Huberman va Stanzl (2004) doimiy ta'sir savdo hajmiga nisbatan noliniyar bo'lsa, musbat kutilgan foyda beruvchi round-trip strategiyalar — narx manipulyatsiyasi — mumkin bo'lishini isbotlashgan. Chiziqli doimiy ta'sir — bu qulaylik uchun soddalashtirish emas; bu shu turdagi modellarda arbitrajsiz yagona tanlovdir.

3. Chiziqli vaqtinchalik ta'sir. kk-intervalda siz haqiqatda oladigan narx quyidagicha:

S~k=Sk1h ⁣(nkτ),h(v)=ϵsgn(v)+ηv.\tilde{S}_k = S_{k-1} - h\!\left(\frac{n_k}{\tau}\right), \qquad h(v) = \epsilon\, \mathrm{sgn}(v) + \eta v.

ϵ\epsilon — bid-ask spredning yarmi va komissiyalarni ifodalaydi; η\etavv tezlikda likvidlikni talab qilishning marginal xarajati qiyaligi. Vaqtinchalik ta'sir faqat sizning o'z fillingizga ta'sir qiladi va zudlik bilan yo'qoladi — order book sizning keyingi bola order (child order) yuborishingizgacha to'liq to'ldiriladi. Ushbu uch so'zning — "chiziqli", "zudlik bilan", "to'liq" — har biri haqiqiy bozorlarda noto'g'ri, va oxirgi bo'lim aynan qanchalik noto'g'ri ekanligi haqida. Lekin avval — ularni qabul qilishning foydasi.

Traektoriyaning xarajati va dispersiyasi

Fillarni jamlab, boshlang'ich markadan XS0X S_0 dan ayirsangiz, implementation shortfall hosil bo'ladi. Uning ξk\xi_k shovqini bo'yicha kutilgan qiymati va dispersiyasi:

E[C]=12γX2doimiy+ϵXspred+η~τk=1Nnk2vaqtinchalik,V[C]=σ2τk=1Nxk2,E[C] = \underbrace{\tfrac{1}{2}\gamma X^2}_{\text{doimiy}} + \underbrace{\epsilon X}_{\text{spred}} + \underbrace{\frac{\tilde{\eta}}{\tau} \sum_{k=1}^{N} n_k^2}_{\text{vaqtinchalik}}, \qquad V[C] = \sigma^2 \tau \sum_{k=1}^{N} x_k^2,

bu yerda η~=η12γτ\tilde{\eta} = \eta - \tfrac{1}{2}\gamma\tau (τ0\tau \to 0 bo'lganda yo'qoladigan diskretizatsiya tuzatmasi).

Ko'pchilik implementatsiyalar e'tibordan chetda qoldiradigan ikkita kuzatuv:

  • Doimiy xarajat 12γX2\tfrac{1}{2}\gamma X^2 traektoriyaga bog'liq emas. Chiziqli, so'nmaydigan doimiy ta'sir bilan siz jadvalni qanday tuzishingizdan qat'i nazar bir xil doimiy to'lovni to'laysiz. Optimallashtirish to'liq vaqtinchalik xarajat hadi (bu sekin, tekis savdoni xohlaydi — bu nk=X/Nn_k = X/N, ya'ni TWAP bilan minimallashtiriladi) va dispersiya hadi (bu inventaringizni kechagayoq yo'qotishni xohlaydi — bu darhol likvidatsiya bilan minimallashtiriladi) o'rtasidagi kurashdan iborat.
  • Dispersiya hadi savdoga emas, inventarga vaznlangan. Risk hali qo'lingizda saqlab turgan xkx_k ga to'planadi, siz savdo qilgan miqdorga emas. Aynan shuning uchun shoshilinchlik jadvalni oldinga siljitadi (front-load qiladi).

Yopiq shakl: sinh, cosh va shoshilinchlik parametri

Almgren-Chriss o'rtacha-dispersiya maqsad funksiyasini minimallashtiradi:

U(x)=E[C]+λV[C],U(x) = E[C] + \lambda V[C],

bu yerda λ0\lambda \geq 0 — 1/dollar birligidagi risk-averziya. Ichki nuqtalar uchun U/xj=0\partial U / \partial x_j = 0 ni qo'ying. Vaqtinchalik had xx ning ikkinchi farqlarini beradi, dispersiya hadi esa xjx_j ning o'zini beradi va natijada chiziqli ikkinchi tartibli farq tenglamasi hosil bo'ladi:

xj12xj+xj+1τ2=κ~2xj,κ~2=λσ2η~.\frac{x_{j-1} - 2x_j + x_{j+1}}{\tau^2} = \tilde{\kappa}^2 x_j, \qquad \tilde{\kappa}^2 = \frac{\lambda \sigma^2}{\tilde{\eta}}.

Bu x=κ2xx'' = \kappa^2 x ning diskret analogi bo'lib, x0=Xx_0 = X, xN=0x_N = 0 chegaraviy shartlari bilan yechim giperbolik bo'ladi:

  xj=Xsinh ⁣(κ(Ttj))sinh(κT)  nj=2sinh(κτ/2)sinh(κT)cosh ⁣(κ(Ttj1/2))X,\boxed{\;x_j = X\, \frac{\sinh\!\big(\kappa\,(T - t_j)\big)}{\sinh(\kappa T)}\;} \qquad n_j = \frac{2\sinh(\kappa\tau/2)}{\sinh(\kappa T)}\, \cosh\!\big(\kappa (T - t_{j-1/2})\big)\, X,

bu yerda κ\kappa2τ2(cosh(κτ)1)=κ~2\tfrac{2}{\tau^2}\left(\cosh(\kappa\tau) - 1\right) = \tilde{\kappa}^2 tenglamasining yechimi, kichik τ\tau uchun bu shunchaki κκ~=λσ2/η\kappa \approx \tilde{\kappa} = \sqrt{\lambda\sigma^2/\eta} ga teng.

Turli kappa qiymatlari uchun optimal holding traektoriyalari, to'g'ri chiziqli TWAP dan tortib agressiv oldinga siljitilgan egri chiziqlargacha

Strategiya haqidagi hamma narsa bitta songa siqilgan:

κ=λσ2η[birlik: 1/vaqt].\kappa = \sqrt{\frac{\lambda \sigma^2}{\eta}} \qquad [\text{birlik: } 1/\text{vaqt}].

κ\kappa — bu shoshilinchlik. Uning teskarisi θ=1/κ\theta = 1/\kappa — savdoning xarakterli vaqti: bu shkala bo'yicha ta'sir xarajatini tejash uchun inventar riskini saqlab turishga arziydigan vaqt oralig'i. E'tibor bering, κ\kappa nimaga bog'liq emas: order hajmi XX va muddat TT ga. Savdoingizning ichki vaqt shkalasi 20 daqiqami yoki 6 soatmi — bu faqat risk-averziya, volatillik va likvidlik bilan belgilanadi. Agar θT\theta \ll T bo'lsa, muddatingiz ahamiyatsiz — model o'z jadvali bo'yicha likvidatsiya qiladi va horizontning qoldiq qismi ishlatilmay qoladi. Agar θT\theta \gg T bo'lsa, muddat bog'lovchi bo'ladi va siz aslida TWAP qilyapsiz.

Riskga neytral chegara — bu TWAP: TWAP nima uchun mavjud

λ0\lambda \to 0 ni oling, shunda κ0\kappa \to 0. Keyin sinh(z)z\sinh(z) \to z va

x(t)=Xsinh(κ(Tt))sinh(κT)    XTtT.x(t) = X\,\frac{\sinh(\kappa(T-t))}{\sinh(\kappa T)} \;\longrightarrow\; X\,\frac{T-t}{T}.

Optimal traektoriya to'g'ri chiziqqa aylanadi: teng vaqt oraliqlarida teng miqdorlar. TWAP — tasodifan ishlaydigan evristika emas; bu chiziqli ta'sirga ega riskga neytral treyder uchun Almgren-Chriss modelining aniq optimumidir. Har safar kimdir TWAP ishlatganda, u bilvosita λ=0\lambda = 0 deb tasdiqlaydi: "Menga shortfallimning dispersiyasi emas, faqat o'rtachasi muhim." Bu kichik orderlar va qisqa horizontlar uchun oqlanadigan pozitsiya. Lekin 4% kunlik volatillikka ega aktivda 8 soat davomida kunlik hajmning 5% ini likvidatsiya qilish uchun bu g'alati pozitsiya — aynan shu holatda odamlar uni baribir ishlatishadi. Teskari chegara λ\lambda \to \infty barcha j>0j > 0 uchun xj0x_j \to 0 ni beradi: birinchi intervalda hammasini tashlab yuborish, qancha turishidan qat'i nazar. Bu ikki ekstremal orasida κT\kappa T interpolyatsiya qiladi: κT0.5\kappa T \lesssim 0.5 TWAP dan deyarli farqlanmaydi, κT3\kappa T \gtrsim 3 esa kuchli tarzda oldinga siljitilgan.

Ijroning samarali chegarasi

Har bir λ\lambda uchun siz bitta traektoriya, bitta kutilgan xarajat E(λ)E(\lambda) va bitta dispersiya V(λ)V(\lambda) olasiz. λ[0,)\lambda \in [0, \infty) ni supurish (V,E)(V, E) tekisligida egri chiziq chizadi — bu ijroning samarali chegarasi, Markowitz bilan to'g'ridan-to'g'ri o'xshashlikda. U qavariq va kamayuvchi: kamroq dispersiya har doim ko'proq kutilgan shortfallga tushadi, keskin kamayuvchi qaytim bilan. Berilgan λ\lambda tanlagan chegara nuqtasida risk-averziya — bu tangens chizig'ining (manfiy) qiyaligi: λ=E/V\lambda = -\partial E / \partial V.

Ijro xarajatining dispersiyaga nisbatan samarali chegarasi, lambda qiyalik sifatida ko'rsatilgan tangens chizig'i bilan

Chegara "λ\lambda nima?" degan savolni — bunga hech kim introspektiv tarzda javob bera olmaydi — "men qaysi xarajat/risk kelishuvini xohlayman?" degan savolga aylantiradi, bunga esa desk haqiqatan ham javob bera oladi. Nuqtani tanlashning uchta amaliy usuli:

  1. Marginal-xarajat mulohazasi. Chegara bo'ylab yuring va so'rang: "shu nuqtadan keyingisiga o'tganda men shortfall standart og'ishining Δstd\Delta\text{std} dollarini olib tashlash uchun ΔE\Delta E dollar kutilgan xarajat to'layman — shu savdoni qabul qilamanmi?" Chegaraning "tizzasi" odatda 2 barobar aniqlikda ravshan bo'ladi, va shu rezolyutsiyada traektoriya λ\lambda ga sezgir emas.
  2. Risk byudjeti. Maksimal qabul qilinadigan shortfall std ni belgilang (masalan, "qoldiq pozitsiyaning bir kunlik 1-sigma qiymati notionalning 15 bps dan past bo'lishi kerak") va uni qanoatlantiruvchi eng arzon traektoriyani oling. Bu — Lagranj ko'paytiruvchisi λ\lambda ning o'zi bo'lgan cheklangan masala.
  3. Xarakterli vaqtni maqsad qilish. θ=1/κ\theta = 1/\kappa ni to'g'ridan-to'g'ri tanlang ("bu order 90 daqiqalik yarim-hayotga ega bo'lishi kerak") va λ=η/(σ2θ2)\lambda = \eta/(\sigma^2\theta^2) ni chiqarib oling. Ko'pchilik amaliyotchilar "shoshilinchlik" slaydernini o'rnatganda bilvosita aynan shuni qilishadi.

Kalibrlash bo'limida asoslaydigan sonlar bilan ishlangan misol. S_0 = \100{,}000dadaX = 100BTCsotish,horizonBTC sotish, horizonT = 4soat,soat,\sigma = $600BTCuchunBTC uchun\sqrt{\text{soat}}ga(taxminan3ga (taxminan 3% kunlik volatillik),\eta = 1.0\ $\cdot\text{soat}/\text{BTC},, \lambda = 10^{-6}\ $^{-1}$. Keyin

κ=106×3.6×1051.0=0.6 soat1,κT=2.4,θ1.7 soat.\kappa = \sqrt{\frac{10^{-6} \times 3.6\times 10^{5}}{1.0}} = 0.6\ \text{soat}^{-1}, \qquad \kappa T = 2.4, \qquad \theta \approx 1.7\ \text{soat}.

Optimal jadval birinchi soatda 46.2 BTC sotadi (TWAP: 25). Vaqtinchalik xarajat: \eta \int_0^T v(t)^2 dt \approx \3{,}290,TWAPuchunesa, TWAP uchun esa $2{,}500.Shortfallstd:. Shortfall std: $53{,}000,TWAPuchunesa, TWAP uchun esa $69{,}300. Demak, \10M notionalda qo'shimcha 0.8 bps kutilgan xarajat evaziga siz shortfall riskini 23% ga kamaytirasiz. Modelning butun mazmuni bir gapda shu: u sug'urtaning narxini belgilaydi va uni sotib olish-olmaslikni sizga qoldiradi.

Traektoriyaning o'zi — o'nta qatorli Python kodi:

import numpy as np

def almgren_chriss(X, T, N, sigma, eta, gamma, lam):
    """Optimal liquidation trajectory (discrete AC 2001)."""
    tau = T / N
    eta_t = eta - 0.5 * gamma * tau          # tilde-eta
    kappa_t2 = lam * sigma**2 / eta_t        # tilde-kappa^2
    kappa = np.arccosh(0.5 * kappa_t2 * tau**2 + 1) / tau
    t = np.arange(N + 1) * tau
    x = X * np.sinh(kappa * (T - t)) / np.sinh(kappa * T)
    n = x[:-1] - x[1:]                       # child order sizes
    E = 0.5 * gamma * X**2 + (eta_t / tau) * np.sum(n**2)
    V = sigma**2 * tau * np.sum(x[1:]**2)
    return x, n, E, V

x, n, E, V = almgren_chriss(X=100, T=4, N=48, sigma=600,
                            eta=1.0, gamma=0.3, lam=1e-6)
print(f"first-hour qty: {n[:12].sum():.1f} BTC, "
      f"E=${E:,.0f}, std=${np.sqrt(V):,.0f}")

lam ni np.logspace(-8, -4, 50) bo'ylab supuring va EE ni V\sqrt{V} ga nisbatan chizing — bu sizning chegarangiz, va butun qaror yuzasi risk qo'mitasiga topshirsa bo'ladigan bitta chartga sig'adi.

Kalibrlash: Binance ma'lumotlaridan η\eta, γ\gamma, σ\sigma

Aynan shu yerda implementatsiyalarning 90% jimgina o'lib qoladi. Traektoriya formulasi ahamiyatsiz darajada oddiy; parametrlar esa unday emas. Uch miqdor — uch xil baholash masalasi.

Binance ma'lumotlaridan slippage vs ishtirok darajasi va narx o'zgarishi vs sof order oqimi kalibrlash sochilma diagrammalari

σ\sigma: eng oson bo'lgani

Mid-narx qaytimlaridan ildiz-soat birligidagi absolyut volatillik. 1 daqiqalik barlardan foydalaning va masshtablang; nozikroq samplingda mikrostruktura shovqini (bid-ask sakrashi) realized dispersiyani yuqoriga qarab noto'g'ri baholaydi. Bu baho ishonchli — volatillik siz to'g'ri olishingiz mumkin bo'lgan yagona parametr.

η\eta: order book va savdolardan vaqtinchalik ta'sir

Ikkita to'ldiruvchi yo'l. A yo'li — L2 order book bo'ylab yurish. Chuqurlik snapshotlaridan qq hajmdagi gipotetik marketable sweep xarajatini hisoblang: iste'mol qilingan darajalarning VWAP i minus mid. cost(q)ϵ+ηinstq\text{cost}(q) \approx \epsilon + \eta_{\text{inst}}\, q ni fit qilish BTC birligidagi zudlik ta'sirini beradi. Buni modelning tezlikka asoslangan η\eta siga aylantirish uchun book to'ldirilish vaqtini Δtr\Delta t_r (BTCUSDT uchun taxminan 10–60 soniya) taxmin qilish kerak: vv tezlikda savdo qilish har yangilanish tsiklida vΔtrv \Delta t_r ni iste'mol qiladi, shuning uchun ηηinstΔtr\eta \approx \eta_{\text{inst}} \Delta t_r. Bu taxmin — zudlik bilan, to'liq to'ldirilish, qat'iy soat bo'yicha — aynan Obizhaeva-Wang kirib keladigan yoriq; quyida batafsil. B yo'li — ishtirok darajasi bo'yicha realized slippage regressiyasi. Agressiv (taker) oqimni 1 daqiqalik binlarga guruhlang; har bin uchun taker tomonidagi VWAP-minus-open-mid ni taker hajm tezligiga regressiya qiling. B yo'li bozor agressorlardan haqiqatda nima olganini o'lchaydi; A yo'li esa hozir turgan order book qancha olishini o'lchaydi. Agar ular 3 barobar farq qilsa, daraja uchun B ga, kun ichidagi shakl uchun esa A ga ishoning.

γ\gamma: Kyle uslubidagi regressiya orqali doimiy ta'sir

5 daqiqalik oynalarda mid-narx o'zgarishlarini ishorali sof taker oqimiga regressiya qiling:

ΔS5m=γQnet+shovqin,Qnet=taker sotib olishlartaker sotishlar.\Delta S_{5m} = \gamma\, Q_{\text{net}} + \text{shovqin}, \qquad Q_{\text{net}} = \text{taker sotib olishlar} - \text{taker sotishlar}.

Keyin ta'sir bir oyna keyin qaytmagan-qaytmaganini tekshiring — qaytmaydigan komponent sizning savdo shkalangizda "doimiy" hisoblanadi. Bu uchtasi ichida shovqinlik jihatidan eng yomoni.

Faqat ommaviy Binance REST endpointlaridan foydalangan ishlaydigan kod:

import requests, numpy as np, pandas as pd

B = "https://api.binance.com/api/v3"
sym = "BTCUSDT"

kl = requests.get(f"{B}/klines", params=dict(
    symbol=sym, interval="1m", limit=1000)).json()
close = np.array([float(k[4]) for k in kl])
sigma = np.diff(close).std() * np.sqrt(60)       # $/sqrt(h)

d = requests.get(f"{B}/depth",
                 params=dict(symbol=sym, limit=5000)).json()
bids = np.array(d["bids"], dtype=float)          # [price, qty]
mid = (bids[0, 0] + float(d["asks"][0][0])) / 2
cq = np.cumsum(bids[:, 1])                       # cum qty
cn = np.cumsum(bids[:, 0] * bids[:, 1])          # cum notional
sizes = np.linspace(0.5, 50, 40)                 # BTC probes
cost = [mid - np.interp(q, cq, cn) / q for q in sizes]
eps, eta_inst = np.polyfit(sizes, cost, 1)[::-1] # cost ~ eps + k*q
eta = eta_inst * (30 / 3600)                     # 30s refresh -> $*h/BTC

tr = requests.get(f"{B}/aggTrades",
                  params=dict(symbol=sym, limit=1000)).json()
df = pd.DataFrame(dict(
    t=[t["T"] for t in tr],
    p=[float(t["p"]) for t in tr],
    q=[float(t["q"]) * (-1 if t["m"] else 1) for t in tr]))
df["bin"] = df.t // 300_000                      # 5-min bins
g = df.groupby("bin").agg(dp=("p", lambda s: s.iloc[-1] - s.iloc[0]),
                          qn=("q", "sum"))
gamma = np.polyfit(g.qn, g.dp, 1)[0]             # $/BTC
print(f"sigma={sigma:.0f} $/sqrt(h)  eta={eta:.2f} $*h/BTC  "
      f"gamma={gamma:.3f} $/BTC")

Ishlab chiqarish uchun yagona aggTrades sahifasini tarixiy dumplar dan bir necha kunlik ma'lumot bilan almashtiring va γ\gamma regressiyasini bir nechta emas, minglab binlarda ishga tushiring.

Nima uchun kripto kalibrlash shovqinli, va bu bilan nima qilish kerak

γ\gamma regressiyasini haqiqiy ma'lumotlarda ishga tushirsangiz, bir necha foizlik R2R^2 va kunlar orasida 2–5 barobar siljiydigan koeffitsient olasiz. Bu sizning kodingizdagi xato emas. Sabablar strukturaviy:

  • Endogenlik. Oqim narxga xuddi narx oqimga ta'sir qilganidek ta'sir qiladi. Momentum treyderlar narx ko'targani uchun sotib olishadi; qaytimlarning oqimga naiv OLS regressiyasi ularning reaksiyasini ushlaydi va buni ta'sirga bog'laydi. Toza yechim — bu o'z fillaringizdan foydalanish (konstruksiyaga ko'ra ekzogen) — bu esa faqat bir muddat savdo qilgandan keyin sizda bo'ladi.
  • Konkavlik. Haqiqiy ta'sir hajmga nisbatan konkav — empirik jihatdan kvadrat ildizga yaqin (Almgren, Thum, Hauptmann va Li, 2005, "Direct estimation of equity market impact", taxminan 0.6 ko'rsatkichni topgan; xuddi shu konkavlik kriptoda ham mustahkam). Konkav funksiyaga chiziq fit qilish sizning η\eta va γ\gamma ingiz namunadagi hajm oralig'iga bog'liq bo'lishini anglatadi. Haqiqatda savdo qiladigan ishtirok darajalarida kalibrlang.
  • Fragmentatsiya va derivativlar yetakchiligi. Binance dagi BTCUSDT spot — bu ko'plab maydonchalardan biri, va narx aniqlash ko'pincha perp lardagi savdolar orqali sodir bo'ladi. Siz hech qachon ko'rmaydigan oqim regressiya qilayotgan narxni harakatga keltiradi, bu esa shovqin hadini kattalashtiradi.
  • Rejimga bog'liqlik. Osiyo sessiyasida o'lchangan η\eta AQSh ochilishini tasvirlamaydi; volatillik ikki barobar oshganda ta'sir ham taxminan ikki barobar oshadi. Har sessiya uchun kalibrlang va kamida haftada bir marta qayta fit qiling.

Yagona najot: traektoriya kechirimli. κ1/η\kappa \propto \sqrt{1/\eta}, shuning uchun η\eta dagi ikki barobarlik xato κ\kappa ni faqat 2\sqrt{2} ga suradi, va xarajat funksiyasi optimum yaqinida tekis. η\eta ni ikki barobar aniqlikda va λ\lambda ni tartib darajasida to'g'ri olish TWAP dan mavjud yaxshilanishning aksariyat qismini allaqachon qamrab oladi. Aniqlik savdo-oldi xarajat baholari uchun muhim; jadvallash uchun esa mustahkamlik yetarli.

Model qayerda buziladi va uni tuzatuvchi maqolalar

Almgren-Chriss — bu skeleton, va aynan qaysi tayanch qismi yuk ko'tarayotganini bilish sizga qaysi kengaytmaga murojaat qilish kerakligini aytadi.

Chiziqsiz ta'sir — Almgren (2003). "Optimal execution with nonlinear impact functions and trading-enhanced risk" (Applied Mathematical Finance 10, 1–18) darajali-qonun vaqtinchalik ta'sir h(v)=ηvαh(v) = \eta v^\alpha bilan dasturni qaytadan bajaradi. Empirik jihatdan afzal ko'rilgan α1/2\alpha \approx 1/2 uchun — kvadrat ildiz qonuni — optimal traektoriyalar xarakterini o'zgartiradi: konkav ta'sir portlashlarni chiziqli ta'sirdan kamroq jazolaydi, shuning uchun bir xil λ\lambda da optimal jadvallar ko'proq oldinga siljitilgan bo'ladi. Sifatiy struktura (shoshilinchlik parametri, samarali chegara) saqlanib qoladi; sinh formulasi esa yo'q.

Rezilyens va LOB — Obizhaeva va Wang (2013). "Optimal trading strategy and supply/demand dynamics" (Journal of Financial Markets 16(1), 1–32; ishchi maqola 2005 yildan tarqalgan) vaqtinchalik/doimiy ikkilikni chekli chuqurlikka va eksponensial so'nadigan ta'sirga ega limit order book bilan almashtiradi: sizning savdoingiz bookni yeydi, book esa ρ\rho rezilyens tezligida qayta to'ldiriladi. AC ning "vaqtinchalik ta'sir zudlik bilan yo'qoladi" taxmini — bu ρ\rho \to \infty chegarasi. Optimal strategiya shaklini keskin o'zgartiradi: boshida blok savdo, oxirida blok savdo va ular orasida doimiy savdo tezligi — bloklar bookning tiklanishidan foydalanadi. Agar sizning bola order (child order) intervalingiz maydonchaning to'ldirilish vaqtiga o'xshash bo'lsa (kriptoda — soniyalardan bir daqiqagacha, bu ko'pincha shunday), demak siz Almgren-Chriss hududida emas, Obizhaeva-Wang hududida turibsiz, va yuqoridagi kalibrlashdagi Δtr\Delta t_r taxmini — sizning ogohlantirish belgingiz.

Dinamik-arbitrajsizlik — Gatheral (2010). "No-dynamic-arbitrage and market impact" (Quantitative Finance 10(7), 749–759) zudlik ta'sir funksiyasi f(v)f(v) va so'nish yadrosi G(t)G(t) ning qaysi kombinatsiyalari ichki izchil ekanligini, ya'ni manfiy kutilgan xarajatli round-trip strategiyasiga yo'l qo'ymasligini so'raydi. Natijalar aniq: eksponensial so'nish faqat chiziqli ta'sir bilan mos keladi — eksponensial so'nishni kvadrat ildiz ta'siri bilan birlashtirsangiz, model tebranuvchi savdo ketma-ketligi orqali pul uchun "so'rilishi" mumkin; chiziqsiz ta'sir esa ikkita ko'rsatkichni bog'lovchi tengsizlik bilan darajali-qonun so'nishini talab qiladi (ta'sir vδ\sim v^\delta va so'nish tγd\sim t^{-\gamma_d} uchun taxminan γd+δ1\gamma_d + \delta \geq 1). Bu — ta'sir modelingizga chiroyli so'nish yadrosini o'rnatishdan oldin o'qish kerak bo'lgan maqola: aksariyat ad-hoc kombinatsiyalar yashirincha arbitrajlanadigan bo'ladi, bu esa amalda optimizatoringiz arbitrajni topib, absurd tebranuvchi jadvallar yaratishini anglatadi. Agar sizning "optimal" traektoriyangiz sof likvidatsiya jarayonida sotib olish va sotishni almashtirsa, siz Gatheral ni buzgansiz, alpha topmagansiz.

ML davomlari. Ushbu seriyadagi ikkita mavzu to'g'ridan-to'g'ri shu skeleton ustida quriladi. Birinchisi — mustahkamlangan o'rganish (reinforcement learning) ijrosi: ta'sir chiziqsiz, holatga bog'liq va qisman kuzatiladigan ekanligini tan olgach, yopiq shakl yo'qoladi, RL esa (Nevmyvaka, Feng va Kearns ning 2006 yilgi Q-learning maqolasidan boshlab) traektoriya fazosini qidirishning tabiiy usuli — lekin har bir jiddiy RL ijro agenti AC yechimiga nisbatan benchmark qilinadi va ko'pincha undan initsializatsiya qilinadi. Ikkinchisi — neyron narx-ta'sir modellari: h(v)=ηvh(v) = \eta v ni order book holatining o'rganilgan funksionali bilan almashtirish, ustida esa o'rtacha-dispersiya jadvallash mantiqini saqlab qolish. Ikkala davom ham chiziqli-Gauss baseline aniq nima ekanligini va nima uchun aynan shu shaklga ega ekanligini bilmasdan ma'no kasb etmaydi.

Nimani olib qolish kerak

Model — bu uchta taxmin, bitta farq tenglamasi va bitta son. Chiziqli doimiy ta'sir (manipulyatsiyaga qarshilik tomonidan majburlangan), chiziqli vaqtinchalik ta'sir (siz atrofida kalibrlaydigan approksimatsiya), arifmetik Braun shovqini. Optimum inventar dispersiyasini ta'sir xarajatiga qarshi kelishtiradi, butun strategiya shoshilinchlik κ=λσ2/η\kappa = \sqrt{\lambda\sigma^2/\eta} ga siqiladi, TWAP esa λ=0\lambda = 0 degenerativ holat sifatida chiqadi — bu modeldagi eng foydali dalil, chunki u "buni TWAP qilishimiz keramimi?" degan savolni odat masalasidan risk-averziya haqidagi tekshirilishi mumkin bo'lgan da'voga aylantiradi. Kalibrlash — haqiqiy ish: σ\sigma oson, η\eta ikki barobarlik o'yin, γ\gamma esa tadqiqot loyihasi, traektoriya esa uchalasini ham kechiradi. Uni bir kunda amalga oshiring; qolgan oyni regressiya diagnostikasiga sarflang.

Manbalar

  • Almgren, R., Chriss, N. (2001). "Optimal execution of portfolio transactions." Journal of Risk, 3(2), 5–39.
  • Almgren, R. (2003). "Optimal execution with nonlinear impact functions and trading-enhanced risk." Applied Mathematical Finance, 10(1), 1–18.
  • Almgren, R., Thum, C., Hauptmann, E., Li, H. (2005). "Direct estimation of equity market impact." Risk, 18(7), 58–62.
  • Huberman, G., Stanzl, W. (2004). "Price manipulation and quasi-arbitrage." Econometrica, 72(4), 1247–1275.
  • Obizhaeva, A., Wang, J. (2013). "Optimal trading strategy and supply/demand dynamics." Journal of Financial Markets, 16(1), 1–32.
  • Gatheral, J. (2010). "No-dynamic-arbitrage and market impact." Quantitative Finance, 10(7), 749–759.
  • Nevmyvaka, Y., Feng, Y., Kearns, M. (2006). "Reinforcement learning for optimized trade execution." ICML 2006.
blog.disclaimer

Authors

Eugen Soloviov
Eugen Soloviov

Trading-systems engineer

Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.

Newsletter

Bozordan bir qadam oldinda bo'ling

Sun'iy intellekt savdo tahlillari, bozor tahlili va platforma yangiliklari uchun bizning xabarnomaga obuna bo'ling.

Biz sizning maxfiyligingizni hurmat qilamiz. Istalgan vaqtda obunadan chiqishingiz mumkin.