📝

Draft article

This draft is visible to admins and superusers only. Sign in with an authorized account.

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

Slice ichida: sizning rejalashtiruvchingiz va birja o'rtasidagi child-order taktikasi

Slice ichida: sizning rejalashtiruvchingiz va birja o'rtasidagi child-order taktikasi
#ijro
#child order
#order taktikasi
#navbat pozitsiyasi
#maker-taker
#iceberg order
#mikrostruktura
#python

Almgren-Chriss trayektoriyasi sizga bitta raqam beradi: keyingi besh daqiqada 4.2 BTC sotish. VWAP jadvali esa xuddi shunday tur raqamni boshqa asoslash bilan beradi. Ikkalasi ham keyin nima bo'lishi haqida hech narsa aytmaydi — o'sha 4.2 BTC bitta market order sifatida orderbukka tushadimi, touch'da turib maker komissiyalarini yig'adimi, 0.3 BTC ko'rinadigan hajm ortida yashiringanmi yoki suzib yuruvchi kotirovkani quvib o'n bir marta qayta narxlanadimi. Ushbu ikkinchi qaror qatlami — taktika qatlami, va komissiyaga bog'liq kripto orderbuklarida u odatda yuqoridagi rejalashtiruvchi tanlovidan ko'ra har bir slice uchun ko'proq PnL harakatlantiradi. Rejalashtiruvchining interval byudjetlari TWAP va yaxshi sozlangan Almgren-Chriss o'rtasida butun parent order bo'yicha bir necha bps impact bilan farq qiladi; siz maker qilishingiz mumkin bo'lgan slice'larda taker komissiyalarini to'lash yoki beparvo qayta narxlash orqali navbat pozitsiyasidan qon yo'qotish soatiga shuncha qiymatga tushadi. Ushbu maqola hamma ishlatadigan, lekin deyarli hech kim yozib qo'ymaydigan qatlam haqida: har bir child order orderbukka qanday tegishini hal qiluvchi holat mashinasi haqida.

Ikki qatlam, bitta tor interfeys

Lehalle va Laruelle'ning Market Microstructure in Practice (2-nashr, 2018) kitobi har bir ijro deski keladigan narsani rasmiylashtiradi: hajmni vaqt bo'yicha taqsimlaydigan strategik qatlam (rejalashtiruvchi) va har bir taqsimotni jonli orderbuk ustida ishlaydigan taktik qatlam (mikrotreyder). Bu ajratish estetik emas — ikki qatlam turli soatlarda va turli ma'lumotlarda yashaydi. Rejalashtiruvchi daqiqalarda o'ylaydi, volatillik va hajm prognozlarini iste'mol qiladi va variatsion masalani yechadi. Taktika qatlami millisekund-soniyalarda o'ylaydi, L2 delta'larini va navbat baholarini iste'mol qiladi va kichik to'xtash masalalari ketma-ketligini yechadi.

Ikki qatlamli ijro arxitekturasi: rejalashtiruvchi slice byudjeti va shoshilinchlikni pastga uzatadi, taktika qatlami esa to'ldirishlar va shortfall'ni yuqoriga qaytaradi

Ular o'rtasidagi interfeys tor bo'lishi kerak. Pastga qarab, har bir kk slice uchun:

  • byudjet qkq_k — ushbu intervalda bajarilishi kerak bo'lgan hajm (Almgren-Chriss'ning nkn_k'si yoki VWAP'ning hajm egri chizig'i qo'shimchasi);
  • oyna τk\tau_k — slice uzunligi;
  • shoshilinchlik — Almgren-Chriss uchun tabiiy nomzod κ=λσ2/η\kappa = \sqrt{\lambda\sigma^2/\eta} bo'lib, u xavfdan qochish, volatillik va likvidlikni bitta stavkaga siqadi; VWAP rejalashtiruvchisi uchun bu odatda diapazon-masofasi ("biz maqsad egri chizig'idan 1.8% orqadamiz").

Yuqoriga qarab: vaqt belgilari va komissiyalari bilan to'ldirishlar, bajarilmagan qoldiq va interval kelish mid'iga nisbatan o'lchangan slice darajasidagi implementation shortfall. Oxirgisi muhim: rejalashtiruvchining impact parametri η\eta allaqachon qk/τkq_k/\tau_k stavkasida likvidlik talab qilish qancha turishi kerakligini narxlaydi. Taktika qatlamining butun vazifasi bir qatorda: η\eta orqali ifodalangan xarajatdan yaxshiroq to'ldirishlarni amalga oshirish, parent order mavjudligini oshkor qilmasdan. Agar sizning o'lchangan slice shortfall'ingiz doimiy ravishda model xarajatidan yaxshiroq bo'lsa, sizning kalibrlangan η\eta'ingiz pasayishi mumkin, rejalashtiruvchi tezlashadi va butun stack yaxshilanadi. Agar siz slice shortfall'ni jadval xarajatidan alohida o'lchay olmasangiz, ikkala qatlamni ham sozlay olmaysiz — sizda bitta xira raqam va ikkita tugma bor.

Qoldiq siyosati ham shartnomaning bir qismi. Slice bajarilmagan hajm bilan tugaganda, taktika qatlami yo majburiy tugatadi (qoldiqni kesib o'tadi — deadline shoshilinchligi ostidagi standart), yoki uni qolgan slice'lar bo'ylab qayta amortizatsiya qilish uchun rejalashtiruvchiga qaytaradi (past-κ\kappa jadvalning boshida qabul qilinadi, deadline yaqinida esa zaharli, chunki qayta amortizatsiya jimgina katta yakuniy slice'ga aylanadi).

Eskalatsiya narvoni: avval passiv, deadline'gacha agressiv

Bu sohadagi eng eski natija — Harris (1998), "Optimal dynamic order submission strategies in some stylized trading problems" (Financial Markets, Institutions & Instruments 7(2)): deadline'gacha savdoni bajarishi kerak bo'lgan likvidlik treyderi uchun optimal strategiya dinamik — vaqt arzon bo'lganda limit order'lar bilan orderbukda turish, deadline yaqinlashganda bozorga qarab qayta narxlash va oxirida kesib o'tish. Har bir production taktika dvigateli ushbu shaklning avlodi: touch'da post qilish, eskirish, eskalatsiya, kesib o'tish. Zamonaviy komissiya jadvallari va navbat dinamikasi qo'shadigan narsa — har bir o'tishning aynan qachon ishga tushishi arifmetikasi.

Kesib o'tish uchun break-even

Birlik bo'yicha ish, joriy mid'ga nisbatan narxlar, xarid uchun. Hozir kesib o'tish spread yarmi plyus taker komissiyasiga tushadi:

ctake=s2+ft.c_{\text{take}} = \frac{s}{2} + f_t.

τ\tau oynasi bo'ylab bid'da post qilish pp ehtimoli bilan to'ldiriladi; to'ldirish yarim-spread'ni oladi va maker komissiyasi fmf_m'ni to'laydi (rebate bo'lsa manfiy). To'ldirish bo'lmasa, narx o'rtacha δ(τ)=E[noqulay mid harakatito’ldirish yo’q]>0\delta(\tau) = E[\,\text{noqulay mid harakati} \mid \text{to'ldirish yo'q}\,] > 0 ga qarshi harakatlangandan keyin oyna oxirida kesib o'tish kerak bo'ladi — qat'iy ravishda musbat, chunki to'ldirilmaslik va noqulay drift bir xil hodisa: sizning bid'ingiz bozor undan uzoqlashganda urilmaydi. Kutilgan post qilish xarajati:

cpost=p(s2+fm)+(1p)(s2+ft+δ).c_{\text{post}} = p\left(-\frac{s}{2} + f_m\right) + (1-p)\left(\frac{s}{2} + f_t + \delta\right).

Post qilish kesib o'tishdan yaxshiroq bo'ladi, agar va faqat agar

  p  >  p\*=δΠ+δ,Π=s+ftfm  \boxed{\; p \;>\; p^\* = \frac{\delta}{\Pi + \delta}, \qquad \Pi = s + f_t - f_m \;}

bu yerda Π\Piyutuq — taker o'rniga maker bo'lish orqali siz qo'lga kiritadigan to'liq round-trip: spread plyus komissiya farqi. Bu ijroning maker-taker iqtisodiyotini butunlay boshqaradigan xuddi shu break-even bo'lib, u bitta slice'ga siqilgan.

Raqamlar, BTCUSDT perp: mid $100,000, spread bir tick s = \0.10,VIP0gaoxshashkomissiyalarmaker2bps/taker5bps,shuninguchun, VIP0-ga o'xshash komissiyalar maker 2 bps / taker 5 bps, shuning uchun f_m = $20,, f_t = $50BTCuchun.YutuqBTC uchun. Yutuq\Pi = 0.10 + 50 - 20 = $30.10 \approx 3bpsetiborbering,spreaddeyarlihechnarsaqoshmaydi;torkriptomajorlardayutuqaynankomissiyafarqi.3 bps — e'tibor bering, spread deyarli hech narsa qo'shmaydi; tor kripto major'larda yutuq *aynan* komissiya farqi. 3% kunlik volatillikni (\sigma_{\text{day}} = $3{,}000)va) va \delta(\tau) \approx 0.6,\sigma_{\text{day}}\sqrt{\tau/86400}$ ni oling (0.6 — siz kalibrlashingiz kerak bo'lgan, ishonmasligingiz kerak bo'lgan noqulay-tanlov haircut'i):

  • τ=10\tau = 10 s: \delta \approx \19,shuninguchun, shuning uchun p^* = 19/49 \approx 0.39$. Faqat 10 soniya ichida kamida 39% to'ldirish kutayotgan bo'lsangiz post qiling.
  • τ=60\tau = 60 s: \delta \approx \47,shuninguchun, shuning uchun p^* = 47/77 \approx 0.61$.
  • 2 bps komissiya o'rniga 1 bps maker rebate bilan (f_m = -\10):): \Pi = $60.10,va10soniyalikchegara, va 10 soniyalik chegara p^* \approx 0.24$ ga tushadi.

Ikkita struktura fakti kelib chiqadi. Birinchidan, δ\delta τ\sqrt{\tau} kabi o'sadi, Π\Pi esa doimiy, shuning uchun p\*(τ)1p^\*(\tau) \to 1: sabr-toqatning qat'iy muddati bor, va eskirish taymeri evristika emas, balki ikkita egri chiziqning kesishish nuqtasi — sizning baholangan p(τ)p(\tau)'ingiz (konkav, oldingizdagi navbat quriganda to'yinadigan) p\*(τ)p^\*(\tau)'ga (o'suvchi) qarshi. Ikkinchidan, savdo qilayotgan komissiya darajangiz narvonni jismonan harakatlantiradi. Taker komissiyalarini qisqartiradigan daraja yangilanishi sizning optimal taktikangizni ko'proq agressiv qiladi — bu bog'lanishni ko'pchilik faqat VIP qayta-darajalanishidan keyin to'ldirish statistikasi o'zgarganda kashf etadi.

Cont va Kukanov, "Optimal order placement in limit order markets" (Quantitative Finance 17(1), 2017; arXiv 2012) buni bitta davrda qat'iy qilishadi: shortfall uchun jarima bilan market va limit order'lar o'rtasida (bitta yoki bir nechta venue bo'ylab) taqsimlangan SS birlikni bajarish kutilgan xarajatini minimallashtirish. Yagona-venue yechimi aniq va newsvendor strukturasiga ega: optimal limit-order hajmi navbat oqib chiqishi taqsimoti bilan boshqariladi — oldingi navbat kutilgan oqib chiqishga nisbatan kichik bo'lganda hajmni agressiv tarzda post qiling va tail xavfini market order'lar bilan qoplang. Ularning ko'p-venue kengaytmasi stoxastik approksimatsiya bilan yechiladi va har bir smart order router'ning passiv-taqsimlash mantig'ining intellektual yadrosidir. Taktika dvigateli uchun amaliy o'qish: yuqoridagi break-even'dagi pp doimiy emas — u navbat pozitsiyasi va oqib chiqish stavkasi funksiyasi, shuning uchun taktika qatlami navbat pozitsiyasi baholovchisini birinchi darajali kirish sifatida iste'mol qilishi kerak.

Touch'dagi passiv post'dan qayta narxlash orqali deadline'da qoldiqni kesib o'tishgacha eskalatsiyani ko'rsatuvchi slice vaqt chizig'i

Shoshilinchlik parametri butun ushbu narvonni siqadi. Rejalashtiruvchidan yuqori κ\kappa tavsif vaqti θ=1/κ\theta = 1/\kappa qisqa ekanligini anglatadi: oynalar kichrayadi, p\*p^\* ko'tariladi va dvigatel to'g'ridan-to'g'ri kesib o'tishga o'tadi — to'g'ri, chunki rejalashtiruvchi allaqachon inventar xavfi komissiya tejashdan ustun ekanligini e'lon qilgan. Past κ\kappa passiv fazani cho'zadi. Taktika qatlami hech qachon shoshilinchlikni o'z bozor qarashidan qayta chiqarmasligi kerak; bu rejalashtiruvchining vazifasi, va uni takrorlash ikkita kelishmovchilik boshqaruvchisini yaratadi.

Navbat pozitsiyangizni yoqmasdan qayta narxlash

Post qilingandan so'ng, kotirovka suzib yuradi. Uni beparvolik bilan quvish — bekor qilish, yangi touch'da qayta post qilish, takrorlash — taktika dvigateli post qilishni oqlagan aynan to'ldirish ehtimolini jimgina yo'q qilish usuli. Navbat pozitsiyasi o'lchanadigan dollar qiymatiga ega aktiv (Moallemi va Yuan, 2016, unga narx qo'yishadi: likvid FIFO orderbuklaridagi navbat boshidagi pozitsiyalar spread'ning sezilarli qismiga arziydi), va har bir qayta narxlash qarori — bu savdo: joriy navbat pozitsiyangizni soting, boshqa narx darajasining orqasida bittasini soting oling. Bu savdo faqat yangi darajaning qiymati eskisining qiymati plyus xabar xarajatlaridan oshganda qiymatga ega. Buning uchun har bir venue'ning amend'i sizning navbatdagi o'rningizga aslida nima qilishini bilish kerak — va javob juda notekis.

CME Globex eng toza semantikani hujjatlashtiradi: order hajmini kamaytirish vaqt ustunligini saqlaydi; hajmni oshirish yoki narxni o'zgartirish sizni navbat oxiriga yuboradi. Bu mos yozuv modeli — hajm-pastga bepul, qolgan hammasi qayta-navbatlash.

Binance spot tarixan faqat POST /api/v3/order/cancelReplaceni taklif qilgan — atomik ko'rinadigan, aniq tranzaksion bo'lmagan cancel-plus-new. Ikki rejim: STOP_ON_FAILURE (standart — agar bekor qilish muvaffaqiyatsiz bo'lsa, yangi order yo'q) va ALLOW_FAILURE (bekor qilish muvaffaqiyatsiz bo'lsa ham yangi order qo'ying — salom, tasodifiy ikki karra ekspozitsiya). Operatsiya qisman muvaffaqiyatli bo'lishi mumkin, HTTP 409 orqali signal beriladi, shuning uchun sizning OMS'ingiz ikkala oyoqni ham mustaqil ravishda kelishtirishi kerak; va yangi order har doim yangi navbat hayotini boshlaydi. Keyin 2025 yilda Binance Order Amend Keep Priority'ni (PUT /api/v3/order/amend/keepPriority) chiqardi: hajmni o'z joyida kamaytirish, vaqt ustunligini saqlash, nol bajarilmagan-order-soni xarajati bilan. CME semantikasi, o'n besh yil o'tib — va faqat hajm-pastga yarmi.

Binance USDT-M futures haqiqiy modify endpoint'iga ega (PUT /fapi/v1/order), lekin mayda shriftni o'qing: faqat LIMIT order'lar, ham price, ham quantity yuborilishi kerak, va "modified orders will be reordered in the match queue" — hujjatlar hatto sof hajm kamaytirishlari uchun ham ustunlikni saqlashni va'da qilmaydi. Har bir futures modify'ni bir xabarni tejab, order ID'ni saqlab qoladigan navbat qayta o'rnatilishi sifatida ko'ring. Bilish kerak bo'lgan bir keskin qirra: GTX (post-only) order'ni kesib o'tadigan narxga o'zgartirish order bekor qilinishiga olib keladi, rad etilib saqlanib qolmaydi — buni tekshirmaydigan peg implementatsiyasi vaqti-vaqti bilan o'zini yo'qotib qo'yadi.

OKX POST /api/v5/trade/amend-orderni ochib beradi (newPx, newSz, amend muvaffaqiyatsizligida avtomatik bekor qilish uchun cxlOnFail bilan). Bu bitta xabar, order ID'ni saqlaydi va asinxron tasdiqlaydi — sCode = 0 "so'rov qabul qilindi" degani, va haqiqiy natija orders kanalida amendResult sifatida keladi. Ochiq hujjatlar aniq belgilamaydigan narsa — navbat-ustunligi xatti-harakati. Bu hujjat bo'shlig'ini optimizm bilan to'ldirmang. O'lchang: sokin darajada ikkita marker order post qiling, bittasining hajmini pastga amend qiling va bir necha yuzlab sinovlarda qaysi biri birinchi to'ldirilishini kuzating. Sizda bu ma'lumot bo'lgunga qadar, konservativ taxmin — har qanday narx o'zgarishi hamma joyda qayta-navbatlaydi, hajm-pastga faqat aniq hujjatlashtirilgan joyda ustunlikni saqlaydi — yagona himoyalanadigan variant.

Amend operatsiyalari va venue'lar matritsasi, qaysi operatsiyalar navbat ustunligini saqlashini va qaysilari uni qayta o'rnatishini ko'rsatadi

Siyosat oqibatlari:

  1. Gisterezis, peg qilish emas. Faqat touch sizning turgan narxingizdan bb tick diapazonidan ko'proq suzib ketganda qayta narxlang. Diapazon ichida drift shovqin, va sizning navbat pozitsiyangiz bir tick narx yaxshilanishidan ko'ra qimmatroq. Oqilona boshlang'ich diapazon qisqa-gorizontli volatillik bilan masshtablangan 1-3 tick. To'g'ri diapazon marginal qayta narxlashni EV-neytral qiladi: VnewVcur=cmsgV_{\text{new}} - V_{\text{cur}} = c_{\text{msg}}, bu yerda VV — Moallemi-Yuan uslubidagi navbat qiymati, cmsgc_{\text{msg}} esa sizning rate-limit soya narxingiz. Amend/cancel-replace operatsiyalari ikkala Binance venue'sida ham order-stavka byudjetini iste'mol qiladi; har tick'ni peg qiladigan taktika dvigateli tizimingizning qolgan qismini xabar sig'imidan mahrum qiladi.
  2. Pastga amend qiling, hech qachon cancel-repost pastga qilmang. Rejalashtiruvchi parvoz o'rtasida slice byudjetini kesganda (hajm qurib qolayotganini ko'rgan POV rejalashtiruvchisi, qisman to'ldirishlardan keyin Almgren-Chriss qayta yechimi), ustunlikni-saqlaydigan yo'ldan foydalaning, u mavjud bo'lgan joyda. Bu butun qatlamdagi yagona bepul tushlik.
  3. Qayta narxlashda assimetrik shoshilinchlik. Bozorga qarab qayta narxlash (quvish) navbatingizni yomonroq narxda qayta o'rnatadi — bu faqat eskalatsiya mantig'idan, o'z taymeridan ishga tushishi kerak. Uzoqqa qayta narxlash (bozor sizga keldi) — bu sovg'a, uni faqat passiv diapazon orqali oling, chunki sizning joriy darajangiz baribir to'ldirilishi kutilmoqda.

Iceberg'lar, ko'rinadigan hajm va niyatingizni nima oshkor qiladi

Ko'rinadigan hajm uchinchi qaror, va bu haqiqiy ikki tomonlama savdo, bepul yashirinish tugmasi emas. Empirik yozuv:

  • Frey va Sandås ("The Impact of Iceberg Orders in Limit Order Books", 2009 ishchi qog'oz; Quarterly Journal of Finance, 2017), Xetra ma'lumotlari bo'yicha: iceberg order'lar yuborilgan hajmning 9.3% ini va bajarilgan hajmning 15.9% ini olib yurgan, oddiy limit order'lardan 12-20 marta katta bo'lgan, va — asosiy xulosa — boshqa ishtirokchilar iceberg'ni aniqlaganda, ular mos market order'lar bilan javob berishadi. Yashirin hajm, bir marta xulosa qilingandan so'ng, oqimni jalb qiladi: yashirin likvidlik qidiruvi ikkala yo'nalishda ham ishlaydi.
  • Bessembinder, Panayides va Venkataraman ("Hidden liquidity: an analysis of order exposure strategies in electronic stock markets", JFE 94(3), 2009), namunaviy hajmning 44% ini yashirin order'lar tashkil qilgan Euronext Parij bo'yicha: yashirish implementation shortfall'ni kamaytiradi, lekin to'liq bajarilish ehtimolini ham pasaytiradi va bajarilish vaqtini uzaytiradi. Ochish to'ldirishlarni sotib oladi va ularni impact'da to'laydi; variant nazariya bashorat qilganidek aniq ishlatiladi — agressiv order'lar kontragentlarni jalb qilish uchun ochiladi, sabrli hajm yashiradi.
  • Esser va Mönch ("The navigation of an iceberg", Finance Research Letters 4(2), 2007) peak hajmini optimallashtirish sifatida ko'rib chiqishadi: kattaroq ko'rinish tezroq to'ldiriladi, kichikroq ko'rinish kamroq oshkor qiladi, va optimal ichki.

Avval mexanika, chunki ular optimallashtirishni bog'laydi: deyarli har bir native iceberg'larni qo'llab-quvvatlaydigan venue'da (icebergQty orqali Binance spot, iceberg algo order'lari orqali OKX), ko'rinadigan peak'ning har bir to'ldirilishi o'sha narxda navbat oxiriga kiradi. Shuning uchun iceberg "yashirin hajmli bitta order" emas — bu har biri to'liq navbat-kutishni to'laydigan, avtomatik ishga tushiriladigan kichik order'lar ketma-ketligi. Yuqoridagi komissiya break-even'ida bu muhim: har bir peak uchun samarali pp — sizning original pozitsiyangizniki emas, navbat-orqasidagi to'ldirish ehtimoli. Chuqur navbatlar kichik peak'larni ikki marta jazolaydi — sekinroq to'ldirishlar va ko'proq to'ldirishlarning noqulay tanlov qiymati.

Keyin signal berish muammosi. Frey va Sandås'ning o'z aniqlash usuli ogohlantiruvchi hikoya: ularning chastotachi detektori ikkita eng keng tarqalgan implementatsiya dangasaligi naqshiga kalitlanadi — doimiy peak hajmi va bajarilayotgan savdoning vaqt belgisi bilan bir xil to'ldirish vaqt belgilari. Ushbu detektorni ishga tushiradigan har qanday ishtirokchi (va kripto venue'larda ko'plari shunday qiladi — birjaning o'z matching metama'lumotlari ko'chirilgan oqim uchun buni yanada osonlashtiradi) sizning yashirin hajmingizni bir necha to'ldirishda qayta tiklaydi. Men jonli hayotda qanchalik tez-tez ko'rishimga qarab tartiblangan oqish vektorlari:

  1. Doimiy yoki dumaloq ko'rinadigan hajmlar (0.5 BTC, har safar).
  2. To'liq-peak bajarilishidan keyin darhol, deterministik to'ldirish — bir xil vaqt belgisi imzosi.
  3. Deterministik eskalatsiya taymerlari: har bir slice'ga aynan 30 soniya kirib kesib o'tish, va tape metronomni ko'rsatadi.
  4. Belgilangan qayta narxlash kechikishi va diapazoni — sizning amend ritmingiz raqamli barmoq izlari va treyder identifikatsiyasi mavzusi bo'lgan order hajmlaringiz kabi aniqlaydigan barmoq izi.

Aniqlanish xarajati gipotetik emas. Van Kervel va Menkveld ("High-frequency trading around large institutional orders", Journal of Finance 74(3), 2019) HFT'lar dastlab institutsional metaorder'larga qarshi moyil bo'lishini ko'rsatishadi — sizning passiv taktikangiz iste'mol qiladigan likvidlikni ta'minlash — keyin uning davomiyligi ma'lumot oshkor qilganda order bilan birga savdo qilishga o'tadi, qoldiqni orqadan otib, parent'ning xarajatini sezilarli darajada oshiradi. Ularning institutlari spekulyativ foyda va aniqlanish xavfi o'rtasida savdo qilish orqali javob berishdi. Sizning taktika qatlamingiz aynan shu murosa amalga oshiriladigan joy: ko'rinadigan hajmni tasodifiylashtiring (vol-masshtablangan bazaning 30-70% uniform yaxshi ishlaydi), har bir taymerni ±20-30% jitter qiling, ba'zan to'ldirishga kutishga ruxsat bering va hech qachon ikkita child order'ga hajm, taymer fazasi va kechikish profilini bo'lishtirmang. Bularning hech biri o'lchanadigan to'ldirish sifatiga tushmaydi; hammasi sizning oqimingizga detektor moslashtirayotgan har kim uchun shovqin darajasini oshiradi.

Minimal taktika dvigateli

Yuqoridagi butun qatlam har bir slice uchun kichik holat mashinasiga siqiladi: IDLE → POSTED → (reprice loop) → CROSSING → DONE, kirishda break-even eshigi, post qilinganda gisterezis diapazoni va deadline eskalatsiyasi bilan. Quyidagi versiya ataylab minimal — venue adapterlari yo'q, iceberg boshqaruvi yo'q — lekin u hodisa-boshqariladigan va yon ta'sirsiz, shuning uchun u to'g'ridan-to'g'ri fill-simulation narvonidagi 4-pog'ona navbat-ogoh simulyatoriga tushadi: simulyator on_tick/on_fillni chaqiradi va harakatlarni post → GTX/post-only, cross → IOC, cancel_replace/amend_down → yuqoridagi matritsadan venue'ning semantikasi sifatida talqin qiladi.

import math
from dataclasses import dataclass
from enum import Enum, auto

class State(Enum):
    IDLE = auto(); POSTED = auto(); CROSSING = auto(); DONE = auto()

@dataclass
class Fees:
    maker: float          # $ per unit; negative = rebate
    taker: float          # $ per unit

@dataclass
class Cfg:
    tick: float
    sigma_1s: float       # $ per sqrt(second), from your live vol estimator
    adverse_frac: float = 0.6   # E[adverse move | no fill] ~ 0.6 * sigma; calibrate
    reprice_band: float = 2.0   # ticks of touch drift tolerated before repricing
    escalate_frac: float = 0.7  # cross the remainder at this fraction of the window

class SliceTactic:
    """One instance per scheduler slice. Drive it from a fill simulator or OMS."""

    def __init__(self, side: str, qty: float, window: float, fees: Fees, cfg: Cfg):
        self.side, self.qty, self.window = side, qty, window
        self.fees, self.cfg = fees, cfg
        self.filled, self.state, self.px, self.t0 = 0.0, State.IDLE, None, None

    def p_star(self, spread: float, tau: float) -> float:
        """Break-even fill probability for posting over a window tau."""
        delta = self.cfg.adverse_frac * self.cfg.sigma_1s * math.sqrt(tau)
        prize = spread + self.fees.taker - self.fees.maker
        return delta / (prize + delta)

    def p_fill(self, queue_ahead: float, drain: float, tau: float) -> float:
        """Crude queue-drain estimate; swap in your calibrated fill model."""
        if drain <= 0: return 0.0
        return min(1.0, drain * tau / max(queue_ahead + self.qty, 1e-9))

    def on_tick(self, t, bid, ask, queue_ahead, drain):
        if self.state == State.DONE: return []
        if self.t0 is None: self.t0 = t
        left = self.qty - self.filled
        elapsed, remain = t - self.t0, self.window - (t - self.t0)
        touch = bid if self.side == "buy" else ask

        if elapsed >= self.cfg.escalate_frac * self.window and left > 0:
            self.state = State.CROSSING          # deadline: pay up, finish
            return [("cross", left)]

        if self.state == State.IDLE:
            if self.p_fill(queue_ahead, drain, remain) >= self.p_star(ask - bid, remain):
                self.state, self.px = State.POSTED, touch
                return [("post", touch, left)]    # GTX / post-only
            self.state = State.CROSSING           # posting is -EV here
            return [("cross", left)]

        if self.state == State.POSTED:
            if abs(touch - self.px) / self.cfg.tick > self.cfg.reprice_band:
                self.px = touch                   # hysteresis breached:
                return [("cancel_replace", touch)]  # accept the queue reset
        return []

    def on_fill(self, t, fill_qty):
        self.filled += fill_qty
        if self.filled >= self.qty - 1e-9:
            self.state = State.DONE
            return [("slice_done", self.filled)]
        return []

    def on_budget_cut(self, new_qty):
        """Scheduler revised the slice down: amend-down keeps queue priority
        where documented (CME, Binance spot amend/keepPriority)."""
        self.qty = new_qty
        left = new_qty - self.filled
        return [("amend_down", left)] if left > 0 else [("cancel",)]

Uchta halol ogohlantirish. Bu yerdagi p_fill — bu joy egallovchi nisbat — production'da u fill-simulation maqolasidan bucketed, jonli-kalibrlangan model bo'lishi kerak, chunki butun post/cross eshigi faqat shu baho qadar yaxshi. adverse_frac maqoladagi eng qiyin miqdorni yashiradi (δ\delta rejimga bog'liq va post qilish eng jozibali bo'lganda aynan portlaydi); uni o'z to'ldirilmagan natijalaringizdan, volatillik rejimi bo'yicha bucketed qilib baholang. Va yuqoridagi dvigatel shartsiz cancel-replace orqali qayta narxlaydi — venue-ogoh versiyasi hajm-pastga o'zgarishlarni ustunlikni-saqlaydigan yo'l orqali yo'naltirishi va har bir harakatni xabar byudjetiga qarshi hisoblashi kerak.

Uni har qanday parametrga ishonishdan oldin replay tape'ga qarshi simulyator ichida ishga tushiring. Muhim eksperiment: rejalashtiruvchini mahkamlang, escalate_frac va reprice_bandni supuring va slice shortfall'ni η\eta-ifodalangan model xarajatiga qarshi chizing. Sirtda plato bor — deyarli-optimal parametrlarning keng diapazonlari — va ikkita jarlik: eskalatsiyani kech qiling (bajarilmagan qoldiqlar momentum'ga kesib o'tadi) va juda ishtiyoqli qayta narxlang (barcha navbat qiymati yonib ketadi). Siz production topishidan oldin jarliklaringiz qayerdaligini bilishni xohlaysiz.

Nimani olib qolish kerak

  1. Ikki qatlam, bitta shartnoma. Rejalashtiruvchi qanchani va qachongacha hal qiladi; taktika qanday hal qiladi. Interfeys — pastga byudjet, oyna, shoshilinchlik; yuqoriga to'ldirishlar va interval kelishiga nisbatan slice shortfall. Agar shortfall'ni qatlamga bog'lay olmasangiz, ikkalasini ham sozlay olmaysiz.
  2. Post/cross eshigi arifmetika, hissiyot emas. Π=s+ftfm\Pi = s + f_t - f_m bilan p>δ/(Π+δ)p > \delta/(\Pi + \delta) bo'lsa post qiling. Tor kripto orderbuklarida yutuq — komissiya farqi, shuning uchun sizning komissiya darajangiz taktikangizni belgilaydi — har bir qayta-darajalanishdan keyin narvonni qayta sozlang.
  3. Eskirish taymerlari ikkita egri chiziqning kesishish nuqtasi — to'yinuvchi to'ldirish ehtimoli τ\sqrt{\tau}-o'suvchi noqulay tanlovga qarshi — folklor konstantalari emas.
  4. Navbat pozitsiyasi aktiv; uni sarflashdan oldin har bir venue'ning amend semantikasini biling. CME: hajm-pastga ustunlikni saqlaydi. Binance spot: cancelReplace har doim qayta-navbatlaydi, 2025'ning amend-keepPriority'si uni hajm kesishlari uchun saqlaydi. Binance futures: har bir modify qayta-navbatlaydi. OKX: hujjatlashtirilmagan — o'lchang, va shu bilan birga eng yomonini taxmin qiling.
  5. Iceberg'lar navbat-orqasidagi order'lar ketma-ketligi, va dangasa bo'lganlari o'qiladi. Doimiy peak'lar va bir xil-vaqt-belgili to'ldirishlar — nashr etilgan aniqlash imzosi; hajmlar va taymerlarni tasodifiylashtiring yoki orqadan otilishga rozi bo'ling.
  6. Holat mashinasini avval fill simulyatoringizga yuklang. Taktika qatlami — bu stack'ning backtest va production eng qattiq ajraladigan qismi — bu aynan nima uchun u simulyator ichida bo'lishi kerak, keyin qo'shilgan emas.

Foydali havolalar

  1. Harris, L. — Optimal Dynamic Order Submission Strategies in Some Stylized Trading Problems, Financial Markets, Institutions & Instruments 7(2), 1-76 (1998)
  2. Cont, R., Kukanov, A. — Optimal Order Placement in Limit Order Markets, Quantitative Finance 17(1), 21-39 (2017)
  3. Frey, S., Sandås, P. — The Impact of Iceberg Orders in Limit Order Books (2009)
  4. Bessembinder, H., Panayides, M., Venkataraman, K. — Hidden Liquidity: An Analysis of Order Exposure Strategies in Electronic Stock Markets, Journal of Financial Economics 94(3), 361-383 (2009)
  5. van Kervel, V., Menkveld, A. — High-Frequency Trading around Large Institutional Orders, Journal of Finance 74(3), 1091-1137 (2019)
  6. Moallemi, C., Yuan, K. — A Model for Queue Position Valuation in a Limit Order Book (2016)
  7. Lehalle, C.-A. — Market Microstructure Knowledge Needed for Controlling an Intra-Day Trading Process (2011)
  8. Binance Spot API — Order Amend Keep Priority
  9. Binance Spot API — Trading endpoints (cancelReplace semantics)
  10. Binance USDT-M Futures API — Modify Order
  11. OKX API v5 — Amend order
  12. CME Group — Order Functionalities (modification and time priority)

Citation

@article{soloviov2026childordertactics,
  author = {Soloviov, Eugen},
  title = {Inside the slice: child-order tactics between your scheduler and the exchange},
  year = {2026},
  url = {https://marketmaker.cc/blog/child-order-execution-tactics},
  description = {The tactics layer between execution schedulers and the exchange: passive-then-aggressive escalation with maker-taker break-even math, amend vs cancel-replace queue semantics across venues, iceberg anti-signaling, and a per-slice Python state machine for fill simulators.}
}
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.