2026. gada 5. septembris · risks

Jūsu atpakaļtests nekad netika likvidēts: marža, mark cena un sviras līmenis, ko izlaidāt

Jūsu atpakaļtests nekad netika likvidēts: marža, mark cena un sviras līmenis, ko izlaidāt

Pagājušajā mēnesī no ģenerētas stratēģijas ieguvām kapitāla līkni ar 63% kritumu. Dziļu, neglītu, bet pēc tam sekoja stabila atkopšanās nākamo 6 nedēļu laikā — tāda līkne, uz kuru pētnieks paskatās šķielēdams un nolemj, ka to var pārdzīvot, ja vien samazina pozīcijas. Es palaidu to vēlreiz caur maržas dzinēju, kas ņem vērā uzturēšanas maržas līmeņus. Kontu likvidēja 41. dienā, šī krituma vidū, un viss, kas līknē bija pēc 41. dienas, bija izdomājums.

Manuprāt, šī ir visdārgākā atpakaļtestu kļūdu kategorija, jo tā neizkropļo atdevi par dažiem bāzes punktiem. Tā no simulācijas izdzēš stāvokli, no kura nav izejas. Stratēģija, kuras rezultātā konts var nonākt līdz nullei, un stratēģija, kurai tas nedraud, ir divas dažādas stratēģijas. Atpakaļtests, kas nekad nepārbauda maržu, nevar pateikt, kura no tām jums ir.

Es atkal un atkal redzu 3 nepareizus veidus, kā to darīt.

1. nepareizais veids: svira kā skaitlis, ar kuru reizina atdevi

Visizplatītākais variants. Jūs aprēķināt atdeves laikrindu no saviem signāliem, nolemjat izmantot 10x sviru un reizināt. Dažreiz risinājums ir nedaudz izsmalcinātāks — pozīcijas lielums ir equity * leverage / price —, bet konta stāvoklis joprojām ir tikai skalārs, kas svārstās augšup un lejup. Nav maržas atlikuma, nominālvērtības ierobežojuma vai nosacījuma, kas apturētu simulāciju.

Kļūdas sekas nav uzreiz pamanāmas, tāpēc tās iztur pārbaudi. Sharpe rādītājs nemainās līdz ar mērogu, tāpēc virsraksta skaitlis paliek tāds pats, mainot sviru no 3x uz 30x, un pētnieks secina, ka svira ir bezmaksas regulators, ar ko mainīt svārstīgumu pret atdevi. Maksimālais kritums aug lineāri un nejaušas aritmētiskas sakritības dēļ nepārsniedz 100%: reizinātu atdeves vērtību virkne asimptotiski tuvojas nullei, bet to nekad nesasniedz. Reizinot -9% dienu ar 12, korektā variantā iegūst -108%, bet naivajā — “-108%, lai gan kapitāla līkne joprojām ir pozitīva”, atkarībā no tā, vai atdeves reizinājāt vai saskaitījāt. Esmu redzējis abus variantus.

Trūkst būtiskas detaļas: svira netiek piemērota jūsu atdevei. To piemēro jūsu nodrošinājumam, un nodrošinājums ir ierobežots lielums, ko birža uzrauga ik sekundi. Tiklīdz tas nokrītas zem uzturēšanas prasības, pozīcija vairs nav jūsu.

Pazīme: ja simulācijā nevar rasties pilnīgs zaudējums pie jebkādas sviras, tā nemodelē sviru.

2. nepareizais veids: likvidācijas cena, ko aprēķina tikai pēc sviras

Nākamajā sarežģītības līmenī pievieno likvidācijas pārbaudi, parasti šādi: pie 20x nelabvēlīga 5% kustība iztukšo maržu, tāpēc garo pozīciju likvidē pie ieejas cenas × 0.95. Skaidri, intuitīvi un nepareizi 4 dažādos veidos vienlaikus.

Perpetual fjūčeru biržas neizmanto jūsu iestatīto sviru, lai noteiktu, kad viss beidzies. Tās izmanto uzturēšanas maržas likmi, kas pieaug līdz ar pozīcijas nominālvērtību un ir noteikta līmeņu tabulā. Aptuvenais BTCUSDT USDⓈ-M sadalījums, kas mainās, biržām pārskatot prasības:

Pozīcijas nominālvērtība (USDT)Uzturēšanas maržas likmeMaksimālā svira
0 – 50,0000.40%125x
50,000 – 600,0000.50%100x
600,000 – 3,000,0001.00%50x
3,000,000 – 12,000,0002.50%20x
12,000,000 – 70,000,0005.00%10x

Tātad nelabvēlīgā kustība, ko varat izturēt izolētā garajā pozīcijā, ir aptuveni 1/L − MMR, nevis 1/L. Pie 20x otrajā līmenī tie ir 5% − 0.5% = 4.5%. Pusprocents var šķist noapaļošanas kļūda. BTC gadījumā pie cenas 84,000 tie ir 420 dolāri, un straujā stundā 420 dolāri nosaka, vai svece jūs izsvieda no pozīcijas. Katrs dakts ir monētas metiens, un jūs visus esat nosvēruši sev par labu.

Tad nāk komisijas. Ieejas taker komisija tiek atskaitīta no maržas uzreiz pēc izpildes: 0.045% no 500,000 nominālvērtības ir 225 USDT no 25,000 maržas atlikuma, un tas maina likvidācijas cenu, pirms pozīcija vispār paspējusi pakustēties. Finansējuma maksājumi iedarbojas tāpat, tikai nepārtraukti; pozīcijām ar sviru tie ir daudz lielāki, nekā pētnieki gaida:

4.55%faktiskā nelabvēlīgā kustība līdz likvidācijai pie 20x, ieskaitot ieejas komisiju
0.60%dienas finansējuma izmaksas no maržas pie 20x, ja likme ir 0.01%/8h
18%šīs maržas ir zudusi viena mierīga mēneša laikā

Pozīcija, kas 30 dienas neko nedara — nav nelabvēlīgas kustības un nav darījumu —, ir iztērējusi gandrīz piektdaļu nodrošinājuma un ievērojami pietuvinājusi likvidācijas cenu. Trešais un ceturtais kļūdas veids: līmeņi mainās, palielinot pozīciju, tāpēc pozīcijai, kas sākotnēji ir 0.5% līmenī un tiek papildināta līdz 1.0% līmenim, ir sliktāka likvidācijas cena nekā tā, ko aprēķinājāt ieejā. Savukārt cross margin apvieno pozīciju nodrošinājumu, tāpēc jūsu BTC garās pozīcijas izdzīvošana ir atkarīga no tā, ko dara jūsu ETH īsā pozīcija. Ja cross margin simulējat kā neatkarīgu izolētu pozīciju kopu, esat apgriezti attēlojuši sava konta korelācijas struktūru.

3. nepareizais veids: likvidācija pēc nepareizās cenas, nepareizā brīdī un ar nepareizu izpildes cenu

Pieņemsim, ka pareizi noteicāt aktivizācijas līmeni. Tagad jautājumi: kura cena to šķērso, kad to pārbaudāt un par kādu cenu pozīcija tiek izpildīta?

Likvidāciju aktivizē mark cena — vairāku spot biržu indeksā ar izlīdzinātu bāzes komponenti, kas īpaši veidots, lai to neietekmētu vienas biržas dakts. Stop loss, atkarībā no konfigurācijas, droši vien aktivizē pēdējā darījuma cena. Šīs 2 cenas nesakrīt tieši tad, kad tas ir vissvarīgāk. Kaskādes laikā perpetual fjūčeru pēdējā cena var būt par 1–2% zemāka par mark cenu desmitiem sekunžu. Atpakaļtests, kas gan stop loss, gan likvidāciju aprēķina pēc vienas un tās pašas OHLCV zemākās cenas, modelē biržu, kuras nav.

Šeit abi kļūdu veidi ir aktuāli, un tie viens otru neatceļ. Ja izmantojat pēdējo cenu, pozīcijas tiek likvidētas pēc dakts, ko birža ignorēja. Ja izmantojat mark cenu, palaižat garām gadījumu, kad kustējusies pati mark cena — indeksa novirze spot biržā ir reāls iemesls likvidācijai par cenu, kas nekad nav parādījusies jūsu tirgotā perpetual fjūčera darījumos.

Tālāk — izpilde. Naivi dzinēji slēdz pozīciju par likvidācijas cenu un uzskaita zaudējumu tā, it kā tas būtu stop loss. Patiesībā likvidācijas dzinējs pārņem pozīciju par bankrota cenu — līmeni, kurā jūsu marža ir tieši nulle, tātad sliktāku par aktivizācijas līmeni — un papildus iekasē likvidācijas dzēšanas komisiju, kas atkarīga no līmeņa un zemākajos līmeņos ir aptuveni 1% no nominālvērtības. Pie 20x 1% no nominālvērtības ir 20% no atlikušās maržas. Ja dzinējs izpilda darījumu zem bankrota cenas, starpību sedz apdrošināšanas fonds; dažās biržās, ja fonds ir iztērēts, socializētais zaudējums var skart arī orderu grāmatas ienesīgo pusi. Realizētais zaudējums nav kritums līdz likvidācijas cenai. Tas ir lielāks, un pārsniegums ir vislielākais tieši tajās dienās, kad orderu grāmata bija pietiekami sekla, lai sekas būtu vissliktākās.

Arī jautājums par laiku, kas rodas, modelējot kustību sveces ietvaros, te ir īpaši svarīgs. Ja 1-minute svecē ir gan jūsu take profit, gan likvidācijas līmenis, atpakaļtests, kas vispirms pārbauda izejas nosacījumus un tikai pēc tam maržu, bez bažām uzskaitīs peļņu. Birža pārbauda maržu pēc katra mark cenas atjauninājuma, aptuveni reizi sekundē, pirms jebkā cita, ko būtu gribējuši izdarīt.

Kas maržas dzinējam jāuzskaita

Nekas no tā nav sarežģīts, taču tas jāmodelē kā mainīgs stāvoklis. Konts ir objekts ar atlikumu, nevis atdeves laikrinda, un ar katru sveci tā stāvoklis tiek atjaunināts tādā secībā, kā to darītu birža:

  1. Atsevišķi uzskaitīts maka atlikums un nerealizētā PnL. Maržas koeficients ir uzturēšanas marža, dalīta ar maržas atlikumu, kurā ietilpst nerealizētā PnL. Ja tos sapludina, zaudējoša pozīcija šķiet nodrošinātāka, nekā tā ir.
  2. Katras tirdzniecības simbola līmeņu tabula ar versijām pēc datuma. Līmeņi tiek pārskatīti. 2023. gada atpakaļtests, kas darbojas ar 2026. gada līmeņiem, satur smalku ieskatīšanos nākotnē — parasti labvēlīgu, jo biržas laika gaitā lielajiem aktīviem prasības lielākoties ir mīkstinājušas.
  3. Mark cenu laikrinda, ne tikai klines. Ja nevarat iegūt mark cenas vēsturiskos datus, norādiet to rezultātos un izmantojiet piesardzīgu aizstājējvērtību. Nekad klusi neaizstājiet to ar pēdējo cenu.
  4. Vispirms pārbaudiet maržu sveces notikumu secībā, pirms stop loss, mērķiem, signāliem vai līdzsvarošanas.
  5. Izpilde par bankrota cenu un dzēšanas komisija, komisijas likmi nolasot no tās pašas līmeņa rindas, kurā norādīta MMR.
  6. Absorbējošs gala stāvoklis. Kad pašu kapitāls sasniedz nulli, simulācija beidzas. Nekādas atlikuma pārrēķināšanas, pieņēmuma, ka tirgotājs papildinās kontu, vai laikrindas turpināšanas ar jaunu nominālvērtību.

Tieši pēdējais punkts izraisa visvairāk strīdu. Kāds vienmēr norāda, ka reāla tirdzniecības komanda iemaksātu papildu nodrošinājumu, tāpēc simulācijas apturēšana ir nereālistiski skarba. Varbūt. Taču apgalvojums “šī stratēģija darbojas, ja pēc tās izgāšanās turpina tajā ieguldīt naudu” ir skaidri jāpasaka un apzināti jāpārbauda, papildinājumus norādot kā atsevišķu ievades parametru, nevis nemanāmi ietverot tos kā noklusējuma iestatījumu. Kad to godīgi formulējat, lielākā daļa cilvēku saprot, ka to nemaz nav domājuši.

Praktiskais ieguvums: ja vienu un to pašu stratēģiju modelējat un salīdzināt ar reālo biržu, biržas rādītajam maržas koeficientam un simulatora aprēķinātajam vajadzētu visu dienu sakrist 1 vai 2 bāzes punktu robežās. Šo atbilstību var pārbaudīt ik minūti, katrai atvērtajai pozīcijai un bez maksas. Tas ir lētākais saderības tests visā sistēmā, un to gandrīz neviens neveic. Kad abi skaitļi atšķiras, taisnība ir biržai, un jums ir jāatrod kļūda, pirms to izdara kapitāla kritums.

beztermiņa fjūčerisviralikvidācijamaržas dzinējsatpakaļtestēšana
← Visi raksti