Backtest voi kirjata toteutuksen hinnalla, jota markkinoilla ei koskaan näkynyt. Yleensä simulaattori on päätellyt uskottavalta näyttävän toteutuksen puutteellisesta datasta: kynttilän ylä- ja alarajasta, keskihinnasta tai rajahinnasta, jossa yksi kauppa kävi. Kauppaloki voi näyttää täsmälliseltä, vaikka se peittää sen, mitä markkinat todella tarjosivat.
Aloita kysymällä, mihin hintaan toimeksiantosi olisi voinut osua. Viimeisimpien kauppojen hinnoista muodostettu kynttilä kertoo, millä hinnoilla käytiin kauppaa aikavälin aikana. Se ei kerro osto- ja myyntinoteerausta toimeksiannon saapuessa, saatavilla ollutta määrää eikä sitä, olisiko toimeksiantosi päässyt jonossa eturiviin.
Miksi backtestini näyttää toteutuksen markkinahinnan ulkopuolella?
Määrittele ensin tarkasti, mitä tarkoitat sanalla ”ulkopuolella”. Ostotoimeksiannon toteutuminen kynttilän alarajan alapuolella tai myyntitoimeksiannon toteutuminen ylärajan yläpuolella on selvä kirjanpito- tai ajoitusvirhe. Toteutus kynttilän ylä- ja alarajan välissäkin voi olla kuvitteellinen: hinta on voinut toteutua ennen toimeksiannon olemassaoloa, spreadin toisella puolella tai niin pienellä määrällä, ettei toimeksiantoasi olisi saatu täytettyä.
Kuvitellaan yhden minuutin kynttilä, jonka avaus on 100.00, alin hinta 99.80 ja päätös 100.10. Strategiasi näkee valmiin kynttilän, lähettää ostotoimeksiannon ja simulaattori toteuttaa sen hintaan 99.80. Alin hinta on voinut osua minuutin alkuun, 50 sekuntia ennen signaalia. Kynttilä ei anna mitään näyttöä siitä, että hinta 99.80 olisi ollut saatavilla päätöksen jälkeen.
| Käytettävissä oleva data | Mitä se osoittaa | Mitä se ei osoita |
|---|---|---|
| OHLCV-kynttilä | Havaittu kauppahintojen vaihteluväli ja volyymi aikavälillä | Hintojen järjestystä, osto- ja myyntinoteerausta tai saatavuutta toimeksiannon saapuessa |
| Kauppatapahtumat | Raportoidut kaupat aikaleimoineen ja hintoineen | Lepäävää likviditeettiä tai paikkaasi jonossa |
| Parhaan osto- ja myyntihinnan noteeraukset | Paras näytetty osto- ja myyntihinta näytteenottohetkillä | Parasta tasoa syvempää markkinasyvyyttä tai sitä, pysyikö noteeraus voimassa näytteiden välillä |
| Tilauskirjan tapahtumat | Näytetyn markkinasyvyyden muutokset ja jonotapahtumat datasyötteen kattavuuden rajoissa | Piilossa olevaa likviditeettiä, pääsyä kaupankäyntipaikkaan tai taattua etusijaa |
Toinen yleinen syy on keskihinnan sekoittaminen toteutushintoihin. Jos noteeraus on osto 99.99 ja myynti 100.01, ostototeutus keskihintaan 100.00 näyttää raportissa siistiltä. Markkinahintainen ostotoimeksianto maksaa yleensä myyntihinnan sekä mahdollisen toimeksiannon koosta aiheutuvan markkinavaikutuksen. Kun keskihintaa kutsutaan toteutushinnaksi, puolet spreadistä katoaa huomaamatta.
Voiko rajahintainen toimeksianto toteutua vain siksi, että markkinahinta kävi rajahinnassa?
Hintatason kosketus osoittaa, että kauppa toteutui rajahinnassa. Se ei todista, että lepäävä toimeksiantosi olisi toteutunut. Jos muut toimeksiannot olivat edelläsi, kyseisen hinnan kaupankäyntimäärä ei ehkä riittänyt jonopaikallesi asti. Kauppa on voinut myös toteutua toisessa kaupankäyntipaikassa, vaikka toimeksiantosi odotti muualla.
Oletetaan, että ostorajasi on 50.00 ja markkinoilla käydään kauppaa 200 osakkeella kyseiseen hintaan toimeksiantosi asettamisen jälkeen. Hintatason kosketukseen perustuva simulaattori täyttää koko 500 osakkeen toimeksiantosi. Varovaisempi malli selvittää, paljonko kauppaa käytiin hinnassa 50.00 tai sen alapuolella toimeksiannon saapumisen jälkeen, ja ottaa sitten huomioon edelläsi jonossa olevan arvioidun määrän. Ilman toimeksiantotasoista tilauskirjadataa jonon koko on oletus. Sen pitäisi näkyä tuloksissa, eikä sitä pidä ujuttaa mukaan varmana tietona.
Pienessä tutkimusjärjestelmässä tekisin oletuksen näkyväksi ja testaisin useita arvoja sen sijaan, että teeskentelisin kynttilädatan paljastavan jonopaikan. Sopiva vaihteluväli riippuu kaupankäyntipaikasta, toimeksiannon koosta ja siitä, kuinka usein strategia käy kauppaa. Hiljainen osake markkinoiden avautuessa ja niukasti vaihdettu kryptosopimus klo 03:00 UTC ovat toteutuksen kannalta eri ongelmia.
Miten valitsen kynttilädataan sopivan toteutusmallin?
Sovita malli sekä dataan että strategian väitteeseen. Kynttilöihin perustuva backtest voi silti olla hyödyllinen hitaissa strategioissa, mutta sen toteutusten on kunnioitettava sitä, mitä kynttilät todella kertovat.
- Määritä päätös- ja saapumisajat. Jos signaali käyttää kynttilän päätöshintaa, lähetä toimeksianto päätöksen jälkeen. Mallinna toteutus seuraavasta saatavilla olevasta aikavälistä tai noteerauksesta alkaen, älä valmiin kynttilän aiemmasta alimmasta hinnasta.
- Käytä spreadin oikeaa puolta. Markkinahintaisissa ostoissa lähtökohtana on myyntihinta ja myynneissä ostohinta. Jos käytettävissäsi on vain kauppakynttilöitä, arvioi spread erillisestä lähteestä tai kerro, ettei malli huomioi sitä.
- Rajaa toteutus uskottavan likviditeetin mukaan. Aseta osallistumisraja havaitulle volyymille ja huomioi palkkiot sekä markkinavaikutus. Kynttilän kokonaisvolyymi ei tarkoita, että koko määrä olisi ollut saatavilla valitsemallasi hinnalla.
- Testaa oletusten kestävyyttä. Vertaa seuraavan avauksen toteutuksia varovaiseen liukumaan ja testaa, kestääkö tulos huonomman toteutuksen. Älä säädä toteutusmallia, kunnes strategia näyttää voitolliselta.
Nämä ovat mallinnusvalintoja, eivät ohjeet yhden oikean toteutuksen palauttamiseen puutteellisesta datasta. Jos strategia riippuu muutaman korkopisteen keräämisestä, kynttilädata ei ehkä riitä tueksi väitteelle.
Miten selvitän, missä mahdoton toteutus päätyi backtestiin?
Jäljitä yksi epäilyttävä kauppa signaalista kirjanpitoon asti. Pidä päätöksen aikaleima, toimeksiannon lähetysaika, simuloitu saapumisaika, valittu markkinahavainto, toteutushinta, toteutunut määrä ja palkkio erillisinä kenttinä. Tarkista sitten seuraavat asiat järjestyksessä:
- Lasketaanko piirre sellaisen kynttilän datasta, joka ei ollut vielä valmis päätöshetkellä?
- Käytettiinkö toteutuksessa kynttilän ylä-, ala- tai päätöshintaa, vaikka hinta osui ennen toimeksiannon saapumista?
- Yhdistettiinkö osto ostohintaan tai myynti myyntihintaan?
- Ylittikö simuloitu määrä saatavilla olevan noteerausmäärän tai mallin osallistumisrajan?
- Sovellettiinko hinnan pyöristystä, sopimuksen hintaporrasta ja palkkioita vasta toteutushinnan valinnan jälkeen?
Jos et pysty vastaamaan näihin kysymyksiin kauppatietueen perusteella, backtestistä puuttuu toteutusta koskeva näyttö. Lisää kentät, toista muutama kauppa käsin raakadataa vasten ja tarkista, olisiko kirjattu toteutus ollut mahdollinen tarkoittamallasi mallilla. Siisti tuottokäyrä ei paljasta hintaa, joka oli olemassa vain simulaattorissa.
← Kaikki kirjoitukset


