← Мақалаларға оралу
July 29, 2026
5 мин оқу

Ликвидация каскадтары сауда сигналы ретінде: мәжбүрлі, алдын ала жарияланған ағынды оқу

Ликвидация каскадтары сауда сигналы ретінде: мәжбүрлі, алдын ала жарияланған ағынды оқу
#ликвидациялар
#каскад
#сауда сигналы
#DeFi
#перпетуалдар
#ордерлер кітабы
#нарық микроструктурасы
#крипто

Нарықтағы ағынның көбі мәміле ретінде орындалғанша құпия болып қалады. Дискрециялық сатушы сатуды өзі шешкен сәтте жасайды; оның ниетін таспадан тек кейін білесіз. Левереджді ликвидациялар — ерекше жағдай, әрі бұл ерекшелік ауқымды. Ликвидация мәжбүрлі — позиция иесі оның болуына ықпал ете алмайды — және алдын ала жарияланған — іске қосылатын нақты баға параметрлердің детерминистік функциясы, ал бұл параметрлер блокчейнде толық ашық, офчейнде статистикалық бағалауға келеді. Әрбір левереджді long — оны есептеуге қызыққан кез келген адамға өзі жариялап тұрған бағада тұрған market-sell ордері.

Бұл бүкіл құбылысқа деген көзқарасты өзгертеді. Aave және Compound-тағы ликвидация механизмдері туралы қатарлас мақала ликвидацияны ликвидатордың жағынан — нашар қарызды өтеп, бонус жинайтын сол адам болу үшін жүретін инфрақұрылым жарысы ретінде қарастырады. Бұл мақала сол нысанға трейдердің жағынан қарайды: "ликвидацияда қалай жеңемін?" емес, "басқалардың барлығының ликвидация бағалары жиынтығы болашақ мәжбүрлі ағынның картасы, мен сол картаға қарсы сауда жасай аламын". Біз картаның екі нұсқасын құрамыз — біріншісі он-чейнде дәл, екіншісі CEX перпетуалдарында бұлдыр — ликвидациялар тізбегінің қашан өзін-өзі күшейтетінін сандық бағалаймыз және одан туындайтын ағынның бағаға әсерін мұқият түсіндіреміз.

Он-чейн ликвидация тереңдігі графигі

Ақша нарығында позицияның ликвидация бағасы болжанбайды. Ол есептеліп шығарылады. Механика туралы кіріспе мақаладағы health factor-ды еске түсірейік: позиция мына кезде ликвидациялануы мүмкін

HF=iCiPiLTijDjPj<1HF = \frac{\sum_i C_i \, P_i \, LT_i}{\sum_j D_j \, P_j} < 1

мұнда CiC_i — қамтамасыз ету активтерінің көлемі, PiP_i — олардың оракул бағалары, LTiLT_i — ликвидация шектері, ал DjPjD_j P_j — қарыз мәндері. Мұны қайтадан шығарып жатпаймыз; формуланы кері шығарамыз. Жиі кездесетін жағдайды — бір құбылмалы қамтамасыз ету активі CC (мысалы, WETH) тұрақты қарыз DD (USDC) арқылы қаржыландырылатын жағдайды алайық. HF=1HF = 1 деп қойып, қамтамасыз ету активінің бағасын шығарсақ, позицияның іске қосылу бағасы алынады:

Pliq=DCLTP_{\text{liq}} = \frac{D}{C \cdot LT}

Бұл бір ғана сан — қарыз алушының алдын ала жариялаған ақпараты. Оның мағынасы мынадай: егер WETH оракулда PliqP_{\text{liq}} бағасына тиіп кетсе, бұл позиция мәжбүрлі ұсынысқа айналады. Сол ұсыныстың көлемін де білуге болады — іске қосылу сәтінде ликвидатор қарыздың closeFactor×D\text{closeFactor} \times D бөлігін өтейді және repay×(1+bonus)\text{repay} \times (1 + \text{bonus}) сомасына тең қамтамасыз ету активін алады, сондықтан позиция іске қосылғанда шамамен

QforcedcloseFactorD(1+bonus)Q_{\text{forced}} \approx \text{closeFactor} \cdot D \cdot (1 + \text{bonus})

мөлшеріндегі қамтамасыз ету құны нарыққа түседі (немесе хеджделеді).

Механика туралы кіріспедегі нақты позицияны алайық: $3,000 бағасымен енгізілген 10 WETH, қарызға алынған 20,000 USDC, ликвидация шегі LT=0.83LT = 0.83, бонусы 5%. Оның іске қосылу бағасы Pliq=20,000/(10×0.83)=$2,410P_{\text{liq}} = 20{,}000 / (10 \times 0.83) = \char36 2{,}410, ал 50% close factor кезінде осы бағада 0.5×20,000×1.05=$10,5000.5 \times 20{,}000 \times 1.05 = \char36 10{,}500 мөлшеріндегі мәжбүрлі WETH ұсынысы орналастырылады. Бір қарыз алушы — графиктегі бір баған. Мұны протоколдағы әрбір қарыз алушы үшін жасап, нәтижелерді PliqP_{\text{liq}} бойынша топтасаңыз, гистограмма аласыз: баға функциясы ретіндегі мәжбүрлі сату номиналы. Бұл — он-чейн ликвидация тереңдігі графигі: ордерлер кітабының DEX-ке тән туысы, тек мұндағы "ордерлер" ерікті емес, ал олардың бағалары баға ұсынысы ретінде берілмей, есептеліп шығарылады.

Он-чейн ликвидация тереңдігі графигі: Aave және Compound қамтамасыз ету активтері ликвидация бағасы бойынша топтастырылып, спот бағадан төмен жинақталған мәжбүрлі сату қысымының гистограммасы түрінде көрсетілген

Мұның қиял емес екенін көрсететін үш маңызды ескерту бар:

  1. Көп активті позицияларда бір ғана іске қосылу бағасы болмайды. Екі құбылмалы қамтамасыз ету активі мен екі қарызы бар позиция бір нүктеде емес, баға кеңістігіндегі бетте ликвидацияланады. Іс жүзіндегі ықшамдау — барлық басқа оракул бағаларын қазіргі мәнінде ұстап, іске қосылу бағасын басым құбылмалы активтің осі бойымен есептеу. Бұл бір активтегі қозғалыс үшін дұрыс, ал өзара корреляцияланған активтер қоржыны бірге қозғалғанда дұрыс емес — мұның маңызы зор, себебі көптеген іске қосылу нүктелері дәл корреляцияланған құлдырау кезінде қатар қозғалады. Бір активке арналған PliqP_{\text{liq}} мәнін кепілдік емес, бірінші ретті шекті жуықтау деп қарастырыңыз.
  2. Мәжбүрлі сату \neq бір алаңдағы нарықтық төгінді. Білікті ликвидаторлар алынған қамтамасыз ету активін қолжетімді ең жұқа пулға соқыр түрде нарықтық бағамен сатпайды; олар DEX пен CEX арасында бағыттайды, әрі көбіне қамтамасыз ету активін бірден сатудың орнына перпетуалда ұстап, дельта-хедж жасайды (механика туралы кіріспе мақала егжей-тегжейлі қарастыратын шығу-свап мәселесі). Сондықтан QforcedQ_{\text{forced}} — бағаға әсер ететін ағынның нақты бағасы емес, оның жоғарғы шегі. Оның бір бөлігі спотқа ешқашан тимейтін хедждерге кетеді.
  3. Іске қосылу нүктелері нарықпен емес, оракулмен бірге қозғалады. Aave мен Compound-та позиция оракул PliqP_{\text{liq}} мәнінен асқанда ликвидациялануы мүмкін болады, ал оракулдар ауытқу мен heartbeat кестесі бойынша жаңарып, нарықтан кейін қалады. Демек, тереңдік графигі мәжбүрлі ағынның қолжетімді болатын жерлерін көрсететін карта, бірақ ол келесі оракул жіберіліміне тәуелді — бұл жайт кіріспе мақалада егжей-тегжейлі түсіндірілген.

Ақша нарығы графигі мен CEX жылу картасының арасында тұратын үшінші дерек көзі бар: перп DEX-тер. Hyperliquid, GMX және dYdX v4 орталықтандырылған биржа сияқты левереджді перпетуалдарды іске қосады, бірақ позиция күйін он-чейнде немесе сұрауға болатын клирингхауста сақтайды. Сондықтан олардың ликвидация бағалары CEX перпетуалдарындағы оқшауланған маржа формуласына бағынады, бірақ жиынтық OI-ден бағаланбай, нақты позициялардан (көлем, қамтамасыз ету, кіру бағасы) есептеледі. Hyperliquid клирингхаусының күйі әр аккаунттың маржасы мен mark price мәнін ашады; GMX позициялары он-чейнде сақталады және keeper-лер оракулдан алынған бағалар арқылы ликвидациялайды. Практикалық қорытындысы: перп DEX-тер үшін CEX-тегідей левереджі, бірақ он-чейндегідей дәлдігі бар ликвидация картасын құруға болады; ол жылу картасының болжамды сипатына қарағанда Aave графигінің дәлдігіне әлдеқайда жақын. Алаң позицияларды жариялайтын болса, ештеңені болжаудың қажеті жоқ.

Осы ескертулерге қарамастан, он-чейн графигі — нарықтардың кез келген жерінде бар мәжбүрлі ағын карталарының ішіндегі ең таза нұсқа: левередж бөлінісі туралы жорамал жоқ, жасырын көлем жоқ, әрбір кіріс күйден оқылады.

CEX ликвидация жылу картасы

Орталықтандырылған перпетуал биржалар сізге қарама-қарсы жағдай береді — ашық позициялар көлемі әлдеқайда үлкен, бірақ он-чейн графигін дәл ететін позиция деңгейіндегі деректің дерлік ешқайсысы жоқ. Жеке позицияларды оқи алмайсыз. Оқи алатыныңыз — жиынтық ашық позициялар көлемі және сауда көлемі. Ликвидация жылу картасы осы жиынтықтардан және оларға қосылған жорамалдардан тереңдік графигін қайта құру әрекетінен пайда болады, ал мұндағы жорамалдар шешуші рөл атқарады.

Әр позицияға арналған арифметика қарапайым. EE бағасымен ашылған, левереджі LL, maintenance margin мөлшерлемесі mm болатын оқшауланған маржалы сызықтық (USDT арқылы есеп айырысатын) long позицияда меншікті капитал maintenance талабына дейін түскенде ликвидация іске қосылады:

EL+(PE)=EmPliqlong=E(11L+m)\frac{E}{L} + (P - E) = E \cdot m \quad\Longrightarrow\quad P_{\text{liq}}^{\text{long}} = E\left(1 - \frac{1}{L} + m\right)

және симметриялы түрде Pliqshort=E(1+1Lm)P_{\text{liq}}^{\text{short}} = E\left(1 + \frac{1}{L} - m\right). E=$3,000E = \char36 3{,}000 және m=0.5%m = 0.5\% болатын кіру нүктесін бекітіп, левередж сатыларын қарастырайық:

Левередж PliqlongP_{\text{liq}}^{\text{long}} Кіру бағасынан төмен қашықтық
$2,415 −19.5%
10× $2,715 −9.5%
25× $2,895 −3.5%
50× $2,955 −1.5%
100× $2,985 −0.5%

Бұл бағанның пішіні жылу карталарының соңғы бағаның дәл астында неге жарқырайтынын толық түсіндіреді: жоғары левереджді позициялар кіру бағасына өте жақын жерде ликвидацияланады, сондықтан жақында көлем қай жерде саудаланса да, сол жерден бірнеше ондық пайыз қашықтықта 50–100× триггерлерінің тығыз жолағы орналасады. Жылу картасын құрастырушы мынадай әрекет етеді: соңғы сауда көлемін позициялар ашылған жердің (олардың EE мәнінің) проксиі деп қабылдайды, сол көлемді болжанған левередж сатыларының жиынына — 5×, 10×, 25×, 50×, 100× және алдын ала болжанған салмақтарға — бөледі, әр бөлікті PliqP_{\text{liq}} мәніне проекциялайды да, сол жерде ликвидацияланатын бағаланған левереджді номинал бойынша баға осін бояйды. Жарқын жолақтар — бағаланған ликвидация аймақтарының тығыз екенін көрсетеді.

CEX ликвидация жылу картасы: бағаланған левереджді номинал әртүрлі левередж сатылары бойынша ликвидация бағаларына проекцияланып, ағымдағы бағадан жоғары және төмен көлденең қарқындылық жолақтары ретінде көрсетілген

Мұның неге бұлдыр көрініс екенін және он-чейн графигінің егізі еместігін ашық айтайық:

  • Левередж бөлінісі белгісіз. Бүкіл жылу картасы көлемнің болжанған левередж гистограммасымен конволюциясынан тұрады. Әртүрлі жорамалдар жарқын жолақтарды басқа орындарға жылжытады. Бір нарық үшін бір күнде екі беделді дерек жеткізуші көзге көрінерліктей әртүрлі жылу карталарын жариялауы мүмкін, әрі екеуі де өздерінің алғышарттары тұрғысынан "дұрыс".
  • Кросс-маржа позицияға арналған формуланы бұзады. Жоғарыдағы PliqP_{\text{liq}} — оқшауланған маржа нәтижесі. Кросс-маржалы позиция бүкіл аккаунттың капиталы бойынша ликвидацияланады, сондықтан оның нақты триггері трейдердің басқа позицияларына, олардағы іске асырылмаған PnL-ге және қозғалыс кезінде үстеген кез келген қамтамасыз етуіне тәуелді — бұлардың ешқайсысы бақыланбайды. Кросс-маржа көлемі бағалаушы үшін іс жүзінде көрінбейді.
  • Жасырын және динамикалық көлем. Ашық позициялар көлемі нетто және жалпы жиынтықтан тұрады; ол OI-ден жеке кіру нүктелеріне өтетін сәйкестікті көрсетпейді. Трейдерлер үздіксіз қосады, қысқартады және хедждейді. Деңгейлік maintenance margin (mm позиция номиналы артқан сайын өседі) бірдей левередждегі ірі позициялардың триггерлерін шағын позицияларға қарағанда басқа жаққа жылжытады.
  • Ликвидация бірден емес, бөліктермен жүреді. Биржалар ірі позицияларды біртіндеп ликвидациялайды және қалған тәуекелді сақтандыру қоры мен auto-deleveraging арқылы өткізеді, сондықтан дұрыс орналасқан кластердің өзі бір ғана мәміле ретінде нарықты құлатпайды.

Жылу картасын мәжбүрлі ағынның қай жерде шоғырлануы ықтимал екені туралы бастапқы болжам ретінде қабылдау дұрыс; оны төмендегі конвейер бөліміндегі нақты ликвидация мәмілелері (forceOrder ағыны) растауы немесе жоққа шығаруы тиіс, оны есеп кітабы деп қарамаңыз. Ол шынымен пайдалы әрі шынымен дәл емес, ал керісінше көрсету адамдарды өздері бақылап отырған кластерлердің астында қалдырады. Перпетуалдарға неге сонша левередж жиналатынын және funding шығыны бұл позицияларды триггерлеріне қарай неге үнемі итермелейтінін түсіну үшін биржалар арасындағы funding rate арбитражын қараңыз.

Каскад динамикасы: сандық бағалау

Бір ликвидация — дерек нүктесі. Каскад — кері байланыс циклі, әрі оның шегін формуламен көрсетуге болады. Цикл механикалық түрде жүреді: мәжбүрлі сату ордерлер кітабына түседі → баға әсері нарықты жылжытады → қозғалыс келесі позициялар деңгейін олардың триггерінен асырады → олар ликвидацияланады → мәжбүрлі сату көбейеді → қайталанады. Бұл процестің өшуі немесе бақылаудан шығуы көңіл күйге емес, өзіңіз құрып қойған екі шаманың қатынасына байланысты.

Бағаның бөлшектік төмендеуін r=ΔP/Pr = -\Delta P / P деп алайық. Екі құрамдас бар:

  • Ликвидация тығыздығы ρ\rho — бөлшектік баға төмендеуінің бір бірлігіне шаққандағы мәжбүрлі сату номиналы, ол тереңдік графигінен / жылу картасынан тікелей оқылады: ρ=dQ/dr\rho = -\,dQ / dr. Бұл баға диапазонында қанша отын жиналғанын өлшейді.
  • Нарық тереңдігі Δ\Delta — бағаны rr мәнінің бір бірлігіне жылжыту үшін қажет нарықтық сату номиналы. Сызықтық (Kyle) әсер моделінде QQ номиналын сату бағаны r=Q/Δr = Q / \Delta мәніне жылжытады. Бұл ордерлер кітабының мәжбүрлі ағынды сіңіру қабілеті, әрі дәл осы шама ордерлер кітабындағы қабырға мен кезектегі позицияны талдаудың өзегі — "қабырға" Δ\Delta мәнінің жергілікті секірісі.

Енді итерация жасайық. Экзогенді шок бағаны r0r_0 мәніне түсіріп, Q0=ρr0Q_0 = \rho \, r_0 көлемінде мәжбүрлі сатуды іске қосады. Бұл сату қосымша r1=Q0/Δ=(ρ/Δ)r0r_1 = Q_0 / \Delta = (\rho/\Delta)\, r_0 төмендеуіне әкеледі. Каскад көбейткішін анықтайық:

g=ρΔg = \frac{\rho}{\Delta}

сонда рекурсия қарапайым түрде rn+1=grnr_{n+1} = g \, r_n болады. Жалпы төмендеу — геометриялық қатар:

rtotal=r0(1+g+g2+)=r01g(g<1)r_{\text{total}} = r_0 \left(1 + g + g^2 + \cdots\right) = \frac{r_0}{1 - g} \quad (g < 1)

Барлығы gg мәніне тіреледі:

  • g<1g < 1субкритикалық режим. Ликвидациялардың әр раунды алдыңғы раундқа қарағанда азырақ сату іске қосады. Каскад өздігінен өшеді; жалпы қозғалыс бастапқы шоктың шектелген 1/(1g)1/(1-g) еселігі болады. Ликвидация оқиғаларының көпшілігі осы жерде қалады.
  • g1g \ge 1суперкритикалық режим. Әр раунд алдыңғы раундтағыдай немесе одан көп сату іске қосады. Геометриялық қатар таралады; қозғалыс ликвидацияланатын позициялар таусылғанша, төменгі бағаларда ордерлер кітабы тереңдегенше немесе биржа circuit breaker іске қосқанша ғана шектеледі. Бұл — "flash crash / long squeeze" режимі.

ggкөбею саны, ликвидация эпидемиясының R0R_0 мәні. Ол мәжбүрлі сату баға диапазонында шоғырланған өтімділік сол жерде оны сіңіре алатын ордерлер кітабының өтімділігінен асқанда каскадтың бақылаудан шығатынын көрсетеді. Сондықтан жұқа ордерлер кітабындағы тығыз кластерге түскен шағын шок бос баға кеңістігіне түскен үлкен шоктан әлдеқайда қауіпті: қауіп шок көлемінде емес, ρ/Δ\rho / \Delta қатынасында. Өзі қозатын бұл құрылым — оқиғалар сол түрдегі келесі оқиғаларды туындатады — ордер ағынын Hawkes процестерімен модельдеуге себеп болатын құрылымның өзі, әрі ликвидациялар неге біркелкі емес, кластерлермен келетінін түсіндіреді.

Каскад тізбегі: мәжбүрлі сату баға әсерін туғызып, келесі позициялар кластерін шығын аймағына итереді; ол көбею санының g біреуге тең шегі белгіленген төмендейтін баспалдақ түрінде көрсетілген

Сандармен көрсетейік. Ордерлер кітабында $10M нарықтық сату ETH бағасын 1%-ға жылжытсын делік, сонда Δ=10M/0.01=$1B\Delta = 10\text{M} / 0.01 = \char36 1\text{B} — бөлшектік бағаның бір бірлігіне шаққандағы номинал. Енді спот бағадан төмен орналасқан ені 1% диапазон үшін екі режимді салыстырайық:

  • Тығыз диапазон, $30M шоғырланған мәжбүрлі сату номиналы. Онда ρ=30M/0.01=$3B\rho = 30\text{M} / 0.01 = \char36 3\text{B} және g=ρ/Δ=3g = \rho/\Delta = 3. Бұл суперкритикалық режим: диапазонның жоғарғы жағын ілетін шок бүкіл жинақты жарып жібереді, ал модельдегі төменгі шек gg арқылы емес, позициялар таусылатын жермен анықталады.
  • Сирек диапазон, $6M шоғырланған номинал. Онда ρ=$600M\rho = \char36 600\text{M}, g=0.6g = 0.6, ал жалпы қозғалыс r0/(10.6)=2.5r0r_0 / (1 - 0.6) = 2.5\,r_0 болады — күшейгенімен, шектелген төмендеу. Бірдей шок, бірдей ордерлер кітабы, кластер бес есе жұқа, ал нәтиже құлдыраудан сатып алуға болатын қысқа фитильге өзгереді.

Дискретті нұсқа — сұрыпталған кластерлер бойынша жүргізілетін қысқа симуляция, оны жазып қойған жөн, себебі ол шекті нақты сезіндіреді:

def cascade(p0, clusters, kyle_lambda):
    """
    p0:          price after the exogenous shock
    clusters:    {trigger_price: forced_notional} for long positions
    kyle_lambda: fractional price impact per $ of market sell (1/depth)
    Returns the floor price and total liquidated notional.
    """
    p, sold, fired = p0, 0.0, set()
    while True:
        new = [(tp, n) for tp, n in clusters.items()
               if tp not in fired and tp >= p]
        if not new:
            break
        q = sum(n for _, n in new)          # this round's forced sell
        fired.update(tp for tp, _ in new)
        p *= (1 - kyle_lambda * q)          # linear price impact of the round
        sold += q
    return p, sold

Екі практикалық ескерту. Біріншіден, gg жергілікті шама — ол баға осі бойымен өзгереді, себебі ρ\rho (кластер тығыздығы) да, Δ\Delta (ордерлер кітабының тереңдігі) да өзгереді. Саудаға болатын сұрақ "нарық осал ма?" емес, "gg дәл қай бағада 1 мәнінен асады?" деген сұрақ. Екіншіден, дәл осы механизм жоғары қарай қозғалғанда шорттар үшін кері бағытта іске қосылады (short squeeze — таңбалары ауысқан каскад), сондықтан картаның екі жағы бар: споттан төмендегі long-ликвидация отыны және оның үстіндегі short-ликвидация отыны. Мәжбүрлі сату → баға әсері → мәжбүрлі сату тізбегі fire-sale әдебиетінде (Cont & Wagalath) эндогенді тәуекел механизмі ретінде формалданған: қиналып тұрған ликвидация өз корреляциясы мен әсерін өзі жасайды.

Сигналдар: кластерлер магнит және қайту аймақтары ретінде

Мәжбүрлі ағын картасы каскадқа қатысты уақытқа қарай бір-біріне дерлік қарама-қарсы екі түрлі сауда түсіндірмесін береді.

Алдында: кластерлер — баға магниттері. Тығыз ликвидация кластері — кепілді, бағаға сезімтал емес ағын қоры. Бұл екі түрлі қатысушыға тартымды: мәжбүрлі контрагенттерге қарсы үлкен көлемді толтырғысы келетін өтімділік іздеуші трейдерлерге және ағынды әдейі іске қосу үшін бағаны кластерге қарай итеретін жыртқыш трейдерлерге (протокол ауқымындағы stop-hunt). Нәтижесінде бағаның ірі кластерлерге қарай тартылуға бейімділігі жақсы құжатталған — деңгей арақашықтықты қысқартуға тұрақты ынта бар болғандықтан магнит сияқты әсер етеді. Сенімі төмен ортада споттың жарқын жолаққа қарай жылжып келе жатқанын көрсеңіз, жолақтың өзі осы қозғалыстың бір бөлігі. Баға жақындағанда ордерлер кітабының реакциясын — қабырға ағынды сіңіре ме, әлде бүктеле ме — болжау дәл DeepLOB сияқты модельдер шешетін қысқа көкжиекті ордерлер кітабы болжамы мәселесіне жатады.

Кейін: кластерлер — қайту аймақтары. Бұл түсіндірме құндырақ әрі жиі теріс қолданылатындықтан, оны мұқият тұжырымдайық. Мәжбүрлі ликвидация ағыны табиғаты бойынша ақпараттық емес — сатушы бағаны тым жоғары деп санағандықтан сатпайды, оны маржа механизмі сатуға мәжбүрлегендіктен сатады. Ақпараттық емес ағын бағаны уақытша жылжытады. Кластерленген позициялар таусылған соң механикалық сату күрт тоқтайды, ал каскад төмен қарай әділ құннан асып кетсе, баға кері шегінуге бейім — бұл "ликвидация фитилі". Бұл механизм фольклор емес: мәжбүрлі, ақпаратсыз сатудан туған баға әсерінің ағын тоқтағаннан кейін қайтатын уақытша құрамдасы болады; дәл осы fire-sale логикасы акциялар нарығындағы күйзеліс кезіндегі сатылымдар әдебиетінде уақытша ауытқу мен кейінгі ішінара қайтуды тудырады.

Ликвидация кластерлері алдымен спотты деңгейге қарай тартатын баға магниті, кейін каскад шектен асып, мәжбүрлі ағын таусылған соң фитиль кері қайтатын қайту аймағы ретінде әрекет етеді

Бұл мынадай тәртіпті талап етеді:

  • Каскадтан кейінгі ортаға қайту — құжатталған бейімділік, бірақ заң да, тұрақты сан да емес. Ол ағынның шынымен ақпараттық емес болуына және каскад кезінде жаңа ақпараттың келмеуіне тәуелді. Нақты жаңалыққа байланысты нарықтың қайта бағалануы да қатар жүретін ликвидация каскады (дег, эксплойт, макрошок) кері қайтпайды — мәжбүрлі ағын мен ақпараттық ағын қабаттасады, ал уақытша болатын тек біріншісі. Әмбебап "фитильді сатып ал" артықшылығы жоқ, ал нақты таңдау, алаң және режим көрсетілмей келтірілген кез келген қайту пайызын маркетинг деп қабылдау керек.
  • Сигнал — құлдырау емес, таусылу. Саудаға болатын сәт — нақты ликвидация мәмілелері сиреген кезде, яғни бір серпілістен кейін forceOrder таспасы тынышталғанда; дәл сол кезде механикалық сатушы кетеді. Суперкритикалық каскадтың (g1g \ge 1) ортасына кіріп кету — алдыңғы бөлім ескерткен кері байланыс циклінің алдына түсу.
  • Екі түсіндірмеге де бір карта қажет. Магнит пен қайту — әртүрлі фазада көрінген бір кластерлер; алдымен тереңдік графигі мен жылу картасын құрып, оларды нақты мәмілелермен үздіксіз салыстырмай, екеуінің бірін де саудалай алмайсыз.

Екі жақты картаның асимметриясынан баяуырақ, бағытты түсіндірме де шығады. Long-ликвидация отыны споттан төмен, short-ликвидация отыны жоғары орналасады; бір жақ екіншісінен әлдеқайда ауыр болғанда, нарық механикалық түрде ауыр жаққа қарай бейімделеді, өйткені шок өзін-өзі күшейтетін ағынды ең көп сол жерден табады. Төменде 3% жерде long-ликвидациялар қабырғасы, ал жоғарыда дерлік ештеңе жоқ нарық қандай әңгіме айтылса да, төмен қарай құрылымдық тұрғыда осал — ең аз қарсылық жолы отыны ең көп жол болады. Тұрақты, біржақты funding осы асимметрияны бастапқыда жиі қалыптастырады: long позиция иелеріне short қалу үшін төлейтін нарық (терең теріс funding) кейін ликвидация кластері бағаның үстінде squeeze отыны болып орналасатын шоғырланған short позицияларды жинайды, және керісінше. Funding таспасы мен ликвидация картасы — бір левередждің екі көрінісі.

Дерек конвейері

Жүйе сипаты қарама-қарсы екі ағынның бірігуінен тұрады: болашаққа бағытталған он-чейн позициялар индексі (мәжбүрлі ағын қашан қолжетімді болатынын көрсетеді) және нақты орындалып жатқан CEX ликвидация ағыны (мәжбүрлі ағын дәл қазір қайда түсіп жатқанын көрсетеді). Біріншісі отынның қайда екенін, екіншісі оның тұтанғанын айтады.

Алдын ала карта — он-чейн позициялар индексі. Aave/Compound оқиғалар тарихынан (Supply, Borrow, Repay, Withdraw, LiquidationCall) бастап, логтарды қайта ойнатыңыз немесе The Graph-тағы субграфқа сұрау жіберіңіз, содан кейін оларды әр пайдаланушының ағымдағы баланстарына біріктіріңіз — бұл механика туралы кіріспе мақалада ликвидация боттарына арналған, бірақ мұнда орындаудың орнына агрегацияға қайта қолданылатын дәл сол индекстеу ішкі жүйесі. Баланстар мен ағымдағы тәуекел параметрлерінен әр позицияның PliqP_{\text{liq}} және QforcedQ_{\text{forced}} мәндерін есептеп, оларды тереңдік графигінің гистограммасына топтастырыңыз. Жаңа блоктар түскен сайын жаңартыңыз; баланстар іске қосылған соң гистограмманы инкрементті түрде жүргізу арзан.

Нақты таспа — Binance forceOrder ағыны. Binance Futures нақты ликвидацияларды websocket арқылы жариялайды: wss://fstream.binance.com/ws/!forceOrder@arr (барлық символдар массиві) немесе <symbol>@forceOrder; әр оқиғада ликвидация ордерінің жағы, бағасы және көлемі беріледі. Бір маңызды олқылықты ашық айту керек, ол дәл осы дәлсіздікке мысал: жария ағын әр символға секундына ең көбі бір ликвидация оқиғасына дейін шектелген — ликвидациялар секундына бірден әлдеқайда жылдам келетін қатты каскад кезінде ағын әрбір толтыруды есептемей, іріктеп көрсетеді, сондықтан одан қалпына келтірілген жиынтық ликвидация көлемі дәл ең маңызды сәтте жүйелі түрде кем бағаланады. Ағынды каскадтың уақыты мен бағыты үшін (ол іске қосылды ма, қай жақ, жылдамдап жатыр ма, әлде сиреп жатыр ма) пайдаланыңыз, нақты көлем кітабы ретінде емес.

Бір қалыпқа келтірілген шинаға жазатын екі асинхронды өндірушіден тұратын минималды қабылдау қаңқасы:

import asyncio, json, websockets

async def binance_liquidations(bus):
    url = "wss://fstream.binance.com/ws/!forceOrder@arr"
    async with websockets.connect(url) as ws:
        async for msg in ws:
            o = json.loads(msg)["o"]              # order payload
            await bus.put({
                "src": "binance", "kind": "realized",
                "symbol": o["s"],
                "side": o["S"],                   # SELL = long liquidation
                "price": float(o["p"]),
                "qty": float(o["q"]),             # NB: stream is sampled at 1/s
            })

async def onchain_positions(bus, subgraph, poll=12):
    while True:
        positions = subgraph.fetch_open_positions()   # balances + risk params
        chart = {}
        for pos in positions:
            p_liq = pos.debt / (pos.collateral * pos.liq_threshold)
            q = pos.close_factor * pos.debt * (1 + pos.liq_bonus)
            chart[round(p_liq, 2)] = chart.get(round(p_liq, 2), 0.0) + q
        await bus.put({"src": "aave", "kind": "forward", "chart": chart})
        await asyncio.sleep(poll)                       # ~1 block cadence

async def main(subgraph):
    bus = asyncio.Queue()
    await asyncio.gather(
        binance_liquidations(bus),
        onchain_positions(bus, subgraph),
        consumer(bus),        # reconcile forward map vs realized tape, emit signals
    )

Стратегия consumer ішінде орналасады: алдын ала картаны (он-чейн графигі мен бағаланған CEX жылу картасын) ұстап тұру, тірі ордерлер кітабының тереңдігіне қатысты жергілікті каскад көбейткішін g=ρ/Δg = \rho/\Delta бағалау және нақты forceOrder таспасын бақылап, тұтануды және — саудаға болатын бөлігі — таусылуды анықтау. Таспа бірден жанданып, кейін сирегенде, ал баға карта көрсеткен кластерден төмен орналасқанда, сізде ақпараттық емес артық ауытқу және кеткен мәжбүрлі сатушы бар: бұл — қайту сетапы. Таспа үдеп, ал алдын ала g1g \ge 1 болса, суперкритикалық каскадтан аулақ тұру керек. Бір карта, қарама-қарсы әрекеттер, ал оларды нақты уақытта ажырататын — таспа.

Негізгі қорытындылар

Ликвидациялар нарықтағы әдеттегі ақпарат асимметриясын кері аударады: ағын мәміле ретінде түскенше жасырын болатын жағдайдың орнына, мәжбүрлі сатудың бағасы мен көлемін алдын ала есептеуге болады — он-чейнде дәл, CEX перпетуалдарында жуықтап. Картаны құрыңыз (он-чейн тереңдік графигі бағыттау мен оракул кідірісін есептемегенде дәл; CEX жылу картасы белгісіз левередж бөлінісіне шартталған бастапқы болжам және кросс-маржаны көрмейді), сонда картаның осалдығы бір қатынасқа келіп тіреледі: g=ρ/Δg = \rho/\Delta каскад көбейткіші, яғни ордерлер кітабының тереңдігіне бөлінген мәжбүрлі сату тығыздығы; бұл 1-ден төменде субкритикалық, одан жоғарыда бақылаудан шығатын көбею саны. Сигнал фазаға қарай бөлінеді — кластерлер алдымен магнит, кейін қайту аймағы — ал қайту артықшылығы мәжбүрлі ағын ақпараттық емес, демек уақытша болғандықтан ғана бар; каскад нақты жаңалықпен қатар келген сәтте бұл артықшылық жоғалады. Құлдырауды емес, таусылуды саудалаңыз; gg мәнін ескеріңіз; әрі бұлдыр жылу картасын позициялар қайда көмілгенінің есеп кітабы деп ешқашан қабылдамаңыз.

Әдебиеттер

  • Qin, Zhou, Gamito, Jovanovic, Gervais (2021), An Empirical Study of DeFi Liquidations: Incentives, Risks, and Instabilities. arXiv:2106.06389.
  • Kyle, A. S. (1985), Continuous Auctions and Insider Trading. Econometrica 53(6) — каскад моделінде қолданылатын сызықтық баға әсерінің λ\lambda коэффициенті.
  • Cont, R., & Wagalath, L. (2016), Fire Sales Forensics: Measuring Endogenous Risk. Mathematical Finance 26(4) — мәжбүрлі ликвидацияның бағаға әсері және эндогенді корреляция.
  • Bacry, E., Mastromatteo, I., Muzy, J.-F. (2015), Hawkes Processes in Finance. Market Microstructure and Liquidity 1(1) — ордерлер мен ликвидация ағынының өздігінен қозатын кластерленуі.
  • Binance Futures API documentation — Liquidation Order Streams (!forceOrder@arr, <symbol>@forceOrder), соның ішінде секундына әр символға 1 оқиға шектеуі туралы ескерту.
  • The Graph-тағы Aave v3 және Compound III субграфтары; Aave getUserAccountData және резервтердің тәуекел параметрлері.
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

Нарықтан бір қадам алда болыңыз

AI сауда талдаулары, нарық аналитикасы және платформа жаңалықтары үшін біздің ақпараттық бюллетеньге жазылыңыз.

Біз сіздің жекелігіңізді құрметтейміз. Кез келген уақытта жазылымнан шығуға болады.