Rehellisin liukumamalli on usein tarkoituksella väärässä. Backtest, joka ilmoittaa karkean historiadatan perusteella tarkan toteutuskustannuksen, väittää enemmän kuin data pystyy osoittamaan.
Tämä saattaa kuulostaa puolustukselta karkeille oletuksille. Kyse on päinvastaisesta: käytä yksinkertaista, selitettävää mallia ja anna sen sitten olla eri mieltä itsensä kanssa. Jos strategia toimii vain yhden sopivan suotuisan toteutushinta-arvion varassa, epävarmuus kuuluu tulokseen.
Miksi tarkka liukuma-arvio voi johtaa harhaan?
Oletetaan, että sinulla on yhden minuutin OHLCV-palkit ja lähetät markkinatoimeksiannon 2,000 osakkeelle. Palkki kertoo hinnan vaihteluvälin ja kokonaisvaihdon minuutin aikana. Se ei kerro osto- ja myyntihintaa toimeksiantosi saapuessa, edelläsi olevia toimeksiantoja jonossa, vaihdon jakautumista minuutin sisällä eikä sitä, kuinka suuren osan vaihdosta toimeksiantosi olisi vienyt.
Voit silti määrittää liukumalle lukuarvon. Voit olettaa toimeksiannon toteutuvan seuraavan palkin avauskurssiin lisättynä kiinteällä korkopistekustannuksella tai suhteuttaa kustannuksen toimeksiannon koon ja palkin vaihdon suhteeseen. Nämä ovat hyödyllisiä approksimaatioita. Ne eivät ole havaintoja. Kun tulos esitetään muodossa ”liukuma: 3.2 korkopistettä”, mallin valinta näyttää mittaustulokselta.
Konkreettisena esimerkkinä strategia käy osakkeilla kauppaa $20,000:lla toimeksiantoa kohden, ja osakkeen seuraavan palkin vaihto on $400,000. Osallistumisaste on 5%. Malli, joka veloittaa 2 korkopistettä, maksaa $4 toimeksiannolta; 10 korkopisteen mallissa kustannus on $20. Eroa kertyy 500 edestakaisella kaupalla $16,000 ennen palkkioita. Jos strategian backtestattu bruttovoitto on $18,000, toteutusoletuksella on lähes yhtä suuri vaikutus kuin signaalilla.
Rakenna vaihteluväli, joka vastaa datasi tarkkuutta
Aloita lähtötasosta, joka vastaa strategian toimeksiantotyyppiä ja datan tarkkuutta. Markkinatoimeksianto vaatii spreadin ja markkinavaikutuksen huomioimista. Limit-toimeksiannolle tarvitaan sääntö sen arvioimiseksi, toteutuuko toimeksianto lainkaan; oletus, että jokainen hinnan kosketus johtaa toteutukseen, on omanlaisensa toteutusvirhe.
Aja sitten sama backtesti muutamalla selkeästi määritellyllä skenaariolla. Pidä signaali, koko ja aikaleimat ennallaan, jotta voit kohdistaa muutokset toteutukseen:
| Skenaario | Toteutusoletus | Mitä sillä testataan |
|---|---|---|
| Suotuisa | Perustason spread ja vähäinen markkinavaikutus | Kuinka riippuvainen strategia on suotuisista kaupankäyntioloista? |
| Perus | Tyypillinen spread ja osallistumisasteen mukaan skaalattu markkinavaikutus | Mitä valittu työhypoteesi tarkoittaa tuloksen kannalta? |
| Epäsuotuisa | Leveämpi spread, suurempi markkinavaikutus ja viivästynyt toteutus | Kestääkö tuotto-odotus uskottavasti vaikeita markkinaoloja? |
Nämä eivät ole luottamusvälejä, ellei niitä ole kalibroitu tilastollisesti. Ne ovat skenaariotestejä. Kerro raportissa, mitä ne tarkoittavat, äläkä laske niitä keskiarvoksi ja kutsu tulosta keksityksi ”odotetuksi liukumaksi”, ellei todennäköisyyksille ole näyttöä.
Anna mallin reagoida toimeksiantoon
Kiinteä korkopistemaksu voi olla järkevä ensimmäinen arvio pienille toimeksiannoille. Kun osallistumisaste kasvaa, siitä tulee huono kuvaus tilanteesta. Kirjaa vähintään toimeksiannon nimellisarvo, käytettävissä oleva palkkivaihto ja osallistumisaste. Jos strategia käy kauppaa futuureilla, kirjaa sopimuksen arvo ja käytetyt vaihtoyksiköt; jos se käy kauppaa spot-kryptolla, määritä noteerausvaluutta ja kaupankäyntipaikka.
Yksinkertainen vaikutuskäyrä voi tuoda kapasiteettipaineen esiin teeskentelemättä, että se jäljittelee tilauskirjaa. Voit esimerkiksi määritellä kustannuksen perustason spread-maksun ja osallistumisasteen neliöjuuren mukana kasvavan vaikutustermin summaksi. Sovita parametrit vain, jos sinulla on sopivaa toteutusdataa. Muussa tapauksessa vaihtele parametreja ja näytä, kuinka nopeasti tulos heikkenee.
Älä myöskään anna toteutusmallin pelastaa strategiaa huomaamatta. Jyrkän nousun jälkeen saapuva pitkä signaali ei saa toteutushinnakseen palkin pohjaa vain siksi, että pohja näkyy kynttilässä. Käytä syy-seuraussuhteet huomioivaa toteutussääntöä, stressitestaa hintaa ja lisää viive. Jos viivästynyt toimeksianto jää liikkeestä paitsi, se on toteutustulos, eikä häiriö, joka pitäisi silotella pois.
Hyödyllinen kysymys: millä spreadilla, markkinavaikutuksella, viiveellä tai osallistumisasteella nettotuotto painuu nollaan? Tämä nollatuloksen raja on usein käyttökelpoisempi kuin yksi backtestin Sharpe-luku.
Tarkenna vaihteluväliä paperikaupankäynnillä
Paperikaupankäynti ei paljasta hintaa, jolla toimeksiantosi olisi toteutunut live-välitysjärjestelmässä. Sen avulla voi silti selvittää, vastaako backtestin toimeksiantovirta järjestelmän todellisia päätöksiä: milloin toimeksiannot syntyvät, minkä kokoisia ne ovat ja kuinka pitkään ne pysyvät toteutuskelpoisina.
Vertaa simuloitua toimeksiantohintaa samanaikaisiin noteerauksiin tai muuhun markkinadataan, jota paperikaupankäyntijärjestelmäsi tallentaa. Seuraa eroa instrumentin, kellonajan, toimeksiannon koon ja toimeksiantotyypin mukaan. Havainnot voivat tarkentaa kyseisen toteutustavan oletuksia. Ne eivät siirry automaattisesti toiselle kaupankäyntipaikalle, toiseen markkinatilanteeseen tai suurempiin toimeksiantoihin.
Kriitikot ovat oikeassa siinä, että pessimistiset skenaariot voivat olla mielivaltaisia. Tarkoituksella ankara malli voi hylätä toimivan strategian siinä missä suotuisa malli voi saada heikon strategian näyttämään hyvältä. Älä siis julista ankarinta skenaariota totuudeksi. Julkaise oletukset, näytä herkkyys ja kerää dataa, jolla arvaukset voi korvata kalibroiduilla arvioilla.
Backtesti ei voi päätellä kynttilästä historiallista paikkaa toimeksiantojonoissa. Se voi kuitenkin näyttää, vaikuttaako strategia yhä johdonmukaiselta, kun toteutus heikkenee tavoilla, joita data ei sulje pois. Se on hyödyllisempi vastaus kuin ylimääräinen desimaali.
← Kaikki kirjoitukset


