Eelmisel kuul andis üks genereeritud strateegia aktsiakõvera, mille langus oli 63%. Sügav ja kole langus, millele järgnes järgmise 6 nädala jooksul puhas taastumine — selline kuju, mida uurija vaatab kissis silmi ja otsustab, et väiksema positsioonisuurusega on see talutav. Käivitasin selle uuesti läbi marginaalimootori, mis tunneb hooldusmarginaali astmeid. Konto likvideeriti 41. päeval, keset langust, ja kõik, mis jäi 41. päevast paremale, oli väljamõeldis.
See on kõige kulukam backtesti viga, mida tean, sest see ei moonuta tootlust mõne baaspunkti võrra. See kustutab simulatsioonist lõpliku seisundi. Strateegia, mille väärtus võib nulli minna, ja strateegia, millega seda juhtuda ei saa, on eri strateegiad. Marginaali mitte kontrolliv backtest ei ütle, kumba neist sa kasutad.
Näen ikka ja jälle 3 viisi, kuidas seda valesti tehakse.
Esimene vale viis: võimendus kui arv, millega tootlust korrutada
Kõige levinum lähenemine. Arvutad signaalidest tootluste jada, otsustad, et kasutad 10x võimendust, ja korrutad tootluse sellega. Vahel tehakse seda veidi keerukamalt — positsiooni suurus on equity * leverage / price — aga konto seis on endiselt lihtsalt kordaja, mis kasvab ja kahaneb. Marginaalijääk puudub, nominaalväärtuse ülempiir puudub, tõrkeolukorda pole määratletud.
Tekitatud kahju on peenekoeline, mistõttu see jääbki kontrollis märkamata. Sharpe'i suhtarv ei sõltu skaalast, nii et põhinäitaja ei muutu, kui võimendus liigub 3x pealt 30x peale. Uurija järeldab, et võimendus on tasuta nupp, millega saab volatiilsuse tootluseks vahetada. Maksimaalne langus kasvab lineaarselt ja jääb juhuslikult aritmeetika tõttu alla 100%, sest korrutatud tootluste jada läheneb asümptootiliselt nullile, kuid ei ületa seda. Korruta -9% päev 12-ga ja ausas versioonis saad -108%, naiivses versioonis aga „-108%, kuid aktsiakõver on endiselt positiivne” — olenevalt sellest, kas liitsid või kasutasid liitintressi. Olen näinud mõlemat.
Puudu on arusaam, et võimendust ei rakendata tootlusele. Seda rakendatakse sinu tagatisele ning tagatis on piiratud kogus, mida börs iga sekund jälgib. Kui see langeb alla hooldusmarginaali nõude, pole positsioon enam sinu oma.
Ohumärk: kui su simulatsioon ei saa ühegi võimenduse juures lõppeda täieliku kaotusega, ei modelleeri see võimendust.
Teine vale viis: likvideerimishind arvutatakse ainult võimenduse põhjal
Keerukuse järgmine aste lisab likvideerimise kontrolli, enamasti umbes nii: 20x võimenduse korral kaotab 5% ebasoodne hinnaliikumine marginaali, seega likvideeri pikk positsioon sisenemishinnaga × 0.95. Lihtne, intuitiivne ja neljal eri moel korraga vale.
Tähtajatute futuuride platvormid ei otsusta sinu võimendusseade põhjal, millal mäng läbi on. Nad kasutavad hooldusmarginaali määra, mis tõuseb koos positsiooni nominaalväärtusega astmetabeli järgi. BTCUSDT USDⓈ-M-i ligikaudne struktuur, mis muutub platvormide tingimuste ülevaatamisel:
| Positsiooni nominaalväärtus (USDT) | Hooldusmarginaali määr | Maksimaalne võimendus |
|---|---|---|
| 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 |
Seega suudab isoleeritud pikk positsioon taluda ligikaudu 1/L − MMR, mitte 1/L. Teise astme 20x võimenduse korral on see 5% − 0.5% = 4.5%. Pool protsenti tundub ümardamisveana. Kui BTC hind on 84,000, teeb see 420 dollarit hinnas ja järsu liikumisega tunnis on 420 dollarit vahe selle vahel, kas hinnatipp sind positsioonist välja lõi või mitte. Iga hinnatipp on kullivise, ja sa oled need kõik enda kasuks kallutanud.
Siis tulevad tasud. Sisenemisel võetakse taker-tasu sinu marginaalist kohe, kui tehing täidetakse: 0.045% 500,000 nominaalväärtusest on 225 USDT, mis võetakse 25,000 marginaalijäägist. See muudab likvideerimishinda juba enne, kui positsioon midagi teinud on. Sama juhtub pidevalt rahastamistasuga, mis on võimendusega nominaalväärtuse korral palju suurem, kui uurijad arvavad:
Positsioon, mis püsib 30 päeva muutumatuna — ebasoodsat hinnaliikumist ega tehinguid pole — on kulutanud peaaegu viiendiku oma tagatisest ja toonud likvideerimishinna märgatavalt lähemale. Kolmas ja neljas viga: positsiooni suurendamisel muutub aste. Positsioon, mis algab 0.5% astmes, kuid kasvab keskmise ostuhinna langetamisega 1.0% astmesse, saab kehvema likvideerimishinna kui sisenemisel arvutatu. Ristmarginaali puhul jagatakse tagatis positsioonide vahel, nii et sinu BTC pikk positsioon püsib elus olenevalt sellest, mida teeb ETH lühike positsioon. Kui simuleerid ristmarginaali isoleeritud positsioonide kogumina, modelleerid oma konto korrelatsioone vastupidi.
Kolmas vale viis: likvideerimise käivitamine vale hinnaga, valel hetkel ja vale tehinguhinnaga
Oletame, et said käivitustaseme õigesti. Aga nüüd: milline hind selle ületab, millal kontrollid ja mis hinnaga positsioon täidetakse?
Likvideerimise käivitab mark-hind, mis on mitme hetketehingute platvormi indeks koos silutud baasikomponendiga ning loodud sihilikult ühe platvormi hinnatipu mõju vähendamiseks. Sinu kahjumi piiramine käivitub tõenäoliselt viimase tehinguhinna põhjal, olenevalt seadistusest. Need 2 hinda lahknevad just siis, kui see kõige rohkem loeb. Kaskaadse languse ajal võib tähtajatu futuuri viimane hind olla kümneid sekundeid mark-hinnast 1–2% madalam. Backtest, mis kasutab nii kahjumi piiramise kui likvideerimise jaoks sama OHLCV miinimumhinda, modelleerib platvormi, mida pole olemas.
Mõlemad vead esinevad siin ja need ei tasakaalusta teineteist. Viimase hinna alusel likvideeritakse sind hinnatippude korral, mida platvorm eiras. Mark-hinna alusel jääb märkamata olukord, kus mark-hind ise liikus — hetketehingute platvormi indeksi lahknemine on reaalne põhjus, miks sind võidakse likvideerida hinnaga, mida sinu kaubeldava tähtajatu futuuri puhul ei registreeritudki.
Seejärel tuleb tehingu täitmine. Naiivsed mootorid sulgevad positsiooni likvideerimishinnaga ja kirjendavad kahjumi, nagu oleks tegu kahjumi piiramiseks mõeldud orderiga. Tegelikult võtab positsiooni üle likvideerimismootor pankrotihinnaga — tasemel, kus sinu marginaal on täpselt nullis ja mis on käivitushinnast kehvem. Peale selle lisandub likvideerimistasu, mis sõltub astmest ja on madalamates astmetes ligikaudu 1% nominaalväärtusest. 20x juures moodustab 1% nominaalväärtusest 20% allesjäänud marginaalist. Kui mootori täitmishind on pankrotihinnast madalam, katab vahe kindlustusfond; mõnel platvormil jõuab fondi tühjenemise korral sotsialiseeritud kahju raamatu kasumliku pooleni. Sinu tegelik kahjum pole langus likvideerimishinnani. See on suurem ning lisakadu on kõige suurem just neil päevadel, kui orderiraamat on selle võimendamiseks kõige hõredam.
Siin kehtib ka päevasisese aja mehaanika küsimus, tavalisest teravamal kujul. Kui 1-minuti küünal hõlmab nii sinu kasumi võtmise taset kui ka likvideerimistaset, kirjendab backtest, mis kontrollib enne marginaali väljumisi, rõõmsalt kasumi. Platvorm kontrollib marginaali iga mark-hinna uuenduse korral, ligikaudu kord sekundis, enne kõike muud, mida oleksid soovinud juhtuda.
Mida mootor peab selle asemel jälgima
Ükski neist nõuetest pole keerukas. Need nõuavad, et mootor hoiaks konto seisu. Konto on bilansi ja saldoga objekt, mitte tootluste jada, ning iga küünla ajal uuendatakse seda platvormi uuenduste järjekorras:
- Rahakoti saldo ja realiseerimata PnL eraldi. Marginaali suhtarv on hooldusmarginaali ja marginaalijäägi suhe ning marginaalijääk sisaldab realiseerimata PnL-i. Nende kokkuliitmine jätab kaotava positsiooni tegelikust paremini tagatuks.
- Iga instrumendi astmetabel koos kehtivuskuupäevaga. Astmeid muudetakse. 2023. aasta backtest, mida käitatakse 2026. aasta astmetega, sisaldab peent tulevikuteabe leket — enamasti kasulikku, sest platvormid on aja jooksul põhivarade nõudeid üldiselt leevendanud.
- Mark-hindade aegrida, mitte ainult küünlad. Kui sa ei leia ajaloolisi mark-hindu, ütle seda tulemuste juures ja kasuta konservatiivset lähendit. Ära kunagi asenda neid vaikselt viimase hinnaga.
- Marginaali kontroll peab küünla sündmuste järjekorras olema esimene, enne kahjumi piiranguid, sihtmärke, signaale või tasakaalustamist.
- Pankrotihinnaga täitmine koos likvideerimistasuga, mille määr võetakse samalt astmerealt kui hooldusmarginaali määr.
- Lõplik seisund, millest edasi ei pääse. Kui omakapital jõuab nulli, käivitus lõpeb. Bilanssi ei arvutata ümber, ei eeldata, et „kaupleja kannab raha juurde”, ega jätkata jada uue nominaalväärtusega.
Viimase punkti üle vaieldakse kõige rohkem. Alati leidub keegi, kes ütleb, et päris kauplemistiim lisaks tagatist, mistõttu simulatsiooni lõpetamine on ebarealistlikult karm. Võib-olla. Kuid väide „see strateegia töötab, kui pärast läbikukkumist sinna pidevalt raha juurde paned” väärib selget sõnastamist ja sihipärast testimist, nii et lisamaksed oleksid selgesõnaline sisend, mitte vaikimisi sisse poetatud eeldus. Kui see ausalt kirja panna, avastab enamik, et nad ei mõelnud seda tõsiselt.
Praktiline kasu: kui käitad sama strateegiat paberil päris platvormi vastu, peaks börsi kuvatav marginaali suhtarv ja simulaatori arvutatud suhtarv püsima terve päeva jooksul teineteisest 1 või 2 baaspunkti raadiuses. Seda kokkulangevust saab iga minut iga avatud positsiooni puhul tasuta kontrollida. See on kogu süsteemi odavaim kooskõla test, mida peaaegu keegi ei käivita. Kui need 2 näitajat lahknevad, on börsil õigus ja sul on viga, mis tasub enne langust üles leida.
← Kõik postitused

