Noong nakaraang buwan, lumabas sa isang generated strategy ang equity curve na may 63% drawdown. Malalim, pangit, at pagkatapos ay malinis na pagbangon sa sumunod na 6 na linggo — ang uring tititigan ng researcher at pagpapasyahang kaya pang tiisin basta babawasan ang laki ng posisyon. Muli ko itong pinatakbo sa margin engine na nakaaalam kung ano ang maintenance margin tier. Na-liquidate ang account noong ika-41 araw, sa gitna ng drawdown na iyon, at kathang-isip na ang lahat ng nasa kanan ng ika-41 araw.
Ito ang pinakamahal na uri ng backtest bug na alam ko, dahil hindi nito binabago nang ilang basis point lang ang mga return mo. Binubura nito sa simulation ang isang estadong wala nang balikan. Magkaibang strategy ang kayang mawalan ng lahat at ang hindi kayang mawalan ng lahat, at hindi masasabi ng backtest na hindi kailanman sumusuri ng margin kung alin diyan ang hawak mo.
Tatlong maling paraang paulit-ulit kong nakikita.
Unang maling paraan: ituring ang leverage bilang numerong ipinaparami sa mga return
Ito ang pinakakaraniwang anyo. Kinukuwenta mo ang return series mula sa mga signal mo, nagpapasyang gagamit ka ng 10x, at ipinaparami iyon. Minsan ay bahagyang mas sopistikado — ang laki ng posisyon ay equity * leverage / price — pero scalar pa rin ang estado ng account na tumataas at bumababa lang. Walang balanse ng margin, walang notional cap, walang kundisyong magtatapos dito.
Hindi agad halata ang pinsala, kaya nakalulusot ito sa review. Hindi nakadepende sa scale ang Sharpe, kaya hindi nagbabago ang headline number mo kapag pinalitan mo ang leverage mula 3x tungong 30x, at napagpapasyahan ng researcher na libreng dial ang leverage na nagpapalit ng volatility para sa return. Tuwirang tumataas ang max drawdown kasabay ng leverage at nananatili itong mas mababa sa 100% dahil lang sa aksidente sa aritmetika: papalapit nang papalapit sa zero ang serye ng pinaraming return, pero hindi ito tumatawid doon. Iparami ang -9% na araw sa 12 at makakakuha ka ng -108% sa tapat na bersyon, at ng “-108% pero positibo pa rin ang equity curve” sa payak na bersyon, depende kung kinumpon o pinag-add mo ang mga return. Pareho ko nang nakita ang dalawang iyon.
Ang hindi isinasaalang-alang ay hindi inilalapat ang leverage sa mga return mo. Inilalapat ito sa collateral mo, at may hangganan ang collateral na binabantayan ng exchange bawat segundo. Kapag bumaba ito sa maintenance requirement, hindi mo na pag-aari ang posisyon.
Palatandaan: kung walang paraan ang simulation mo para magtala ng kabuuang pagkalugi sa anumang leverage, hindi nito namomodelo ang leverage.
Ikalawang maling paraan: liquidation price na hinango lang sa leverage
Nagdaragdag ng liquidation check ang susunod na antas ng sopistikasyon, karaniwan ay ganito: sa 20x, inuubos ng 5% na galaw laban sa iyo ang margin, kaya i-liquidate sa entry × 0.95 para sa long. Malinis, madaling intindihin, at mali sa 4 na magkakahiwalay na paraan.
Hindi ginagamit ng mga perp venue ang leverage setting mo para pagpasyahan kung kailan ka tapos. Gumagamit sila ng maintenance margin rate na tumataas kasabay ng notional ng posisyon, ayon sa tier table. Ganito ang tinatayang anyo para sa BTCUSDT USDⓈ-M, na nagbabago kapag binabago ito ng mga venue:
| Notional ng posisyon (USDT) | Rate ng maintenance margin | Pinakamataas na leverage |
|---|---|---|
| 0 – 50,000 | 0.40% | 125x |
| 50,000 – 600,000 | 0.50% | 100x |
| 600,000 – 3,000,000 | 1.00% | 50x |
| 3,000,000 – 12,000,000 | 2.50% | 20x |
| 12,000,000 – 70,000,000 | 5.00% | 10x |
Kaya ang galaw laban sa iyo na kaya mong tiisin sa isolated long ay humigit-kumulang 1/L − MMR, hindi 1/L. Sa 20x sa ikalawang tier, 5% − 0.5% = 4.5%. Parang rounding error lang ang kalahating porsiyento. Sa BTC na 84,000, katumbas iyon ng 420 dolyar na galaw ng presyo; sa oras na matindi ang galaw, ang 420 dolyar ang kaibahan ng wick na nagpa-liquidate sa iyo at ng hindi. Para sa bawat wick, parang naghagis ng barya — at kiniling mo sa pabor mo ang lahat ng iyon.
Idagdag pa ang mga fee. Kinakaltas ang entry taker fee sa margin mo sa mismong sandaling mapunan ang order mo: ang 0.045% sa 500,000 notional ay 225 USDT laban sa balanse ng margin na 25,000, kaya nagbabago ang liquidation price bago pa man gumawa ng kahit ano ang posisyon. Ganoon din ang funding, tuluy-tuloy, at mas malaki ang epekto nito sa notional na may leverage kaysa inaasahan ng mga researcher:
Ang posisyong walang ginagawa sa loob ng 30 araw — walang galaw laban sa iyo, walang trade — ay nakakaubos ng halos ikalimang bahagi ng collateral nito at malaki ang inilalapit sa liquidation price. Ang ikatlo at ikaapat na pagkakamali: nagbabago ang tier habang dinaragdagan mo ang posisyon, kaya mas malala ang liquidation price ng posisyong nagsimula sa 0.5% tier at na-average pataas papunta sa 1.0% tier kaysa sa kinuwenta mo sa entry; at pinagsasama ng cross margin ang collateral ng mga posisyon, kaya nakadepende ang kaligtasan ng BTC long mo sa nangyayari sa ETH short mo. Kung minomodelo mo ang cross margin bilang magkakahiwalay na isolated position, mali ang pagkakaintindi mo sa ugnayan ng mga posisyon sa sarili mong account.
Ikatlong maling paraan: inaayos ang liquidation gamit ang maling presyo, sa maling sandali, at sa maling fill
Ipagpalagay nating nakuha mo ang tamang trigger level. Ngayon: aling presyo ang tatawid dito, kailan ka magsusuri, at anong presyo ang makukuha mo sa fill?
Nati-trigger ang liquidation sa mark price, isang index mula sa ilang spot venue na may pinakinis na basis component, na sadyang ginawa para hindi matinag ng wick sa iisang venue. Malamang na sa last traded price nati-trigger ang stop-loss mo, depende kung paano mo ito kinonpigura. Hindi nagtutugma ang 2 presyong ito sa mismong mga sandaling mahalaga ang mga ito. Sa panahon ng cascade, puwedeng bumaba nang 1–2% sa mark price ang last price ng perp nang sampu-sampung segundo. Kapag parehong OHLCV low ang ginagamit ng backtest para sa stop at liquidation, minomodelo nito ang venue na wala naman talaga.
Parehong naroroon ang dalawang pagkakamali rito at hindi nagkakansela ang mga ito. Kapag last price ang ginamit, mala-liquidate ka sa mga wick na binale-wala ng venue. Kapag mark price ang ginamit, mamimiss mo ang sitwasyong mismong mark ang gumalaw — totoong paraan para ma-liquidate ang index dislocation sa isang spot venue sa presyong hindi kailanman naitala sa perp na tina-trade mo.
Pag-usapan naman ang fill. Isinasara ng mga payak na engine ang posisyon sa liquidation price at itinatala ang pagkalugi na para bang stop iyon. Ganito talaga ang nangyayari: inaako ng liquidation engine ang posisyon sa bankruptcy price — ang antas kung saan eksaktong zero na ang margin mo, mas masama kaysa sa trigger — at sinisingil pa ng liquidation clearance fee na nag-iiba ayon sa tier at nasa bandang 1% ng notional sa mas mababang tier. Sa 20x, katumbas ng 20% ng natitira mong margin ang 1% ng notional. Kung mas mababa sa bankruptcy ang fill ng engine, sasagutin ng insurance fund ang kakulangan; sa ilang venue, kapag naubos ang pondo, umaabot sa kumikitang bahagi ng order book ang socialised loss. Hindi lang drawdown hanggang liquidation price ang aktuwal mong pagkalugi. Mas malaki ito, at pinakamalaki ang dagdag na pagkalugi sa mga araw ding sapat na manipis ang order book para lumala ang epekto.
Mas mahalaga rito ang usapin ng timing sa intrabar mechanics kaysa karaniwan. Kung may take-profit level at liquidation level sa iisang 1-minute bar, masayang itatala ng backtest na sinusuri muna ang mga exit bago ang margin ang panalo. Sinusuri ng venue ang margin sa bawat mark price update, humigit-kumulang isang beses bawat segundo, bago ang lahat ng iba pang gusto mong mangyari.
Ano ang kailangang dalhin ng engine
Hindi kailangang maging komplikado ang alinman dito. Kailangang subaybayan nito ang estado. Dapat object na may balanse ang account, hindi return series, at ina-update ito sa bawat bar ayon sa pagkakasunod-sunod ng pag-update ng venue:
- Hiwalay na itala ang balanse ng wallet at ang unrealised PnL. Ang margin ratio ay maintenance margin na hinati sa margin balance, at kasama sa margin balance ang unrealised PnL. Kapag pinag-isa mo ang dalawa, magmumukhang mas sapat ang collateral ng naluluging posisyon kaysa sa totoo.
- Itabi ang tier table ng bawat symbol, na may bersyon ayon sa petsa. Binabago ang mga tier. Banayad na look-ahead — kadalasan ay pabor sa iyo, dahil karaniwang niluwagan ng mga venue ang mga requirement para sa mga pangunahing asset sa paglipas ng panahon — ang 2023 backtest na pinatakbo gamit ang 2026 tiers.
- Gumamit ng mark price series, hindi klines lang. Kung hindi ka makakuha ng kasaysayan ng mark price, sabihin iyon sa mga resulta at gumamit ng konserbatibong proxy. Huwag kailanman palihim na ipalit ang last price.
- Unahing suriin ang margin sa pagkakasunod-sunod ng mga event sa bar, bago ang mga stop, target, signal o rebalancing.
- Gumamit ng fill sa bankruptcy price at idagdag ang clearance fee, gamit ang fee rate sa kaparehong tier row ng MMR.
- Magtakda ng panghuling estadong hindi na mababago. Kapag umabot sa zero ang equity, matatapos ang run. Walang muling pagbabatay ng halaga, walang “ipagpalagay na magdadagdag ng pondo ang trader,” at walang pagpapatuloy ng series mula sa bagong notional.
Iyan ang huling punto na pinagtatalunan nang husto. May laging magsasabing magdedeposito pa ng collateral ang totoong desk, kaya hindi makatotohanang malupit ang pagtatapos ng simulation. Posible. Pero dapat sabihin at sadyang subukan ang pahayag na “gumagana ang strategy na ito kung patuloy mo itong lalagyan ng pera pagkatapos nitong bumagsak,” at tahasang ilagay sa input ang mga dagdag na pondo, sa halip na palihim itong gawing default. Kapag tapat mo itong isinulat, karamihan sa mga tao ay nakatuklas na hindi naman pala iyon ang ibig nilang sabihin.
Ang praktikal na pakinabang ng lahat ng ito: kapag pinatakbo mo sa papel ang parehong strategy laban sa live venue, dapat magkatugma sa loob ng 1 o 2 basis point ang margin ratio na iniuulat ng exchange at ang kinukuwenta ng simulator mo, buong araw. Masusuri ang pagtutugmang iyon bawat minuto, sa bawat bukas na posisyon, nang libre. Ito ang pinakamurang parity test sa buong stack at halos walang nagpapatakbo nito — at kapag nagkakaiba ang dalawang numero, tama ang exchange at may bug kang dapat hanapin bago pa ito gawin ng drawdown para sa iyo.
← Lahat ng post


