Backtestauksen menetelmä
Tarkalleen mitä backtesteri tekee, jotta voit arvioida, kuinka paljon tulokseen voi luottaa. Kaikki backtestit sivustolla, sovelluksessa ja Claudessa käyttävät samaa moottoria ja samoja sääntöjä.
Tiedot
- Päivittäiset hinnat, osingot ja splitit kaikille Oslo Børsin, Nasdaq Stockholmin, Nasdaq Copenhagenin ja Nasdaq Helsingin osakkeille noin 12 vuoden ajalta Yahoo Financesta. Päivitetään joka arki-ilta.
- Tuotot käyttävät osinkooikaistuja hintoja, joten osingot sijoitetaan uudelleen. Strategian voi ajaa valuutassa NOK, SEK, DKK, EUR tai USD: tuotot muunnetaan kunkin päivän valuuttakurssilla.
- Tilinpäätösluvut (tulos, oma pääoma, EBITDA, velat, osakemäärä) Yahoo Financesta, ja ne ulottuvat vain noin vuoteen 2023.
- Korot Norges Bankilta ja inflaatio Norjan tilastokeskukselta markkinoiden ajoitusta varten.
- Yhtiötiedotteiden ja raporttien tekoälyarviot pörssien tiedotepalveluista.
Ei tulevaisuuden tietoa
Backtest saa käyttää vain sitä, minkä sijoittaja olisi voinut tietää kyseisenä päivänä. Jokainen alla oleva sääntö varmistaa sen.
- Päätökset käyttävät tietoja päivän t päätöskurssiin asti, ja kaupat tehdään päivästä t+1 alkaen, joten signaali ei koskaan saa sen päivän tuottoa, jona se mitattiin.
- Tilinpäätösluvut otetaan käyttöön 90 päivää tilikauden päättymisen jälkeen, kun raportti on julkaistu, ja ne vanhenevat 550 päivän jälkeen, joten raportoinnin lopettava yhtiö putoaa pois.
- Tiedote otetaan huomioon julkaisupäivästä alkaen tai seuraavasta kaupankäyntipäivästä, jos se julkaistiin pörssin sulkeuduttua klo 16.20.
- Makroluvut päivätään julkaisupäivän mukaan: kuukauden inflaatio seuraavan kuun 10. päivästä alkaen.
- Valuuttakursseja ei koskaan täydennetä myöhempien päivien tiedoilla.
- Hintojen puhdistus poistaa vain nolla- ja negatiiviset hinnat. Suuret hypyt säilytetään ja lasketaan tuloksen alla: myöhempää hintaa ei koskaan käytetä aiemman korjaamiseen, koska sekin olisi tulevaisuuden tietoa.
Kaupankäynti ja kulut
- Välityspalkkio veloitetaan peruspisteinä jokaisesta ostosta ja myynnistä, valinnaisella vähimmäispalkkiolla kauppaa kohden. Valmisasetukset vastaavat pohjoismaisten välittäjien hinnastoja.
- Slippage on päällä ollessaan puolet osto- ja myyntihinnan erosta lisättynä markkinavaikutuksen neliöjuuritermillä: päivävolatiliteetti × √(kaupan koko ÷ keskimääräinen päivävaihto). Suuremman osuuden kauppaaminen osakkeen tavallisesta vaihdosta maksaa enemmän, enintään 20 % kaupasta. Volatiliteetti ja vaihto ovat edellisen päivän.
- Lyhyet positiot maksavat arvostaan lainausmaksun joka päivä, 2 % vuodessa, ellet aseta muuta.
- Tasapainotusten välillä omistukset seuraavat hintoja eikä niillä käydä kauppaa. Toimeksianto osakkeessa, jolla ei ole hintaa sinä päivänä, odottaa, kunnes osakkeella käydään kauppaa.
- Kaikki kulut näytetään tuloksen alla jaettuna välityspalkkioihin, slippageen ja lainaukseen.
Vertailuindeksi
Jokaista tulosta verrataan kaikkiin sen oman osakejoukon osakkeisiin – niihin, jotka läpäisevät hinta-, vaihto- ja historiasuodattimet kunakin päivänä – tasapainotettuina ja ilman kuluja. Se vastaa kysymykseen: toivatko suodattimet ja järjestys mitään lisää verrattuna siihen, että omistaisi vain valitsemasi markkinan?
Tunnusluvut
Tunnusluvut käyttävät päivätuottoja, 252 kaupankäyntipäivää vuodessa, eikä riskitöntä korkoa.
- Sharpe
- Keskimääräinen vuosituotto jaettuna vuosivolatiliteetilla.
- Sortino
- Kuten Sharpe, mutta jaettuna laskuhajonnalla: vain tappiopäivät lasketaan riskiksi.
- Calmar
- CAGR jaettuna suurimmalla pudotuksella: vuosituotto pahimman pudotuksen yksikköä kohden.
- Beta ja alfa suhteessa vertailuindeksiin
- Beta kertoo, kuinka paljon strategia liikkuu, kun vertailuindeksi liikkuu 1 %. Alfa on vuosituotto, joka jää jäljelle, kun siitä vähennetään beta × vertailuindeksin tuotto.
- Seurantavirhe ja informaatiosuhde
- Seurantavirhe on vertailuindeksin ylittävän tuoton vuosivolatiliteetti. Informaatiosuhde on tämä ylituotto vuodessa jaettuna seurantavirheellä: yli 0,5 on hyvä ja harvinainen.
- Suurimmat pudotukset
- Syvimmät pudotukset huipusta: huipun, pohjan ja palautumisen päivämäärät sekä kuinka monta kaupankäyntipäivää palautuminen kesti.
Faktoriregressio
Strategia voi voittaa vertailuindeksin pelkästään omistamalla enemmän pieniä yhtiöitä tai viimeaikaisia voittajia kuin vertailuindeksi. Faktoriregressio erottaa tämän todellisesta taidosta (alfasta). Se selittää strategian viikkotuotot neljällä faktorilla, jotka muodostetaan samasta osakejoukosta, jota kukin backtest käyttää:
- Markkina
- Vertailuindeksin tuotto.
- Koko (pienet miinus suuret)
- Ne 30 % osakkeista, joiden vaihto on pienin, miinus ne 30 %, joiden vaihto on suurin. Vaihto korvaa markkina-arvon, joka edellyttää osakemääriä, ja ne ulottuvat vain noin vuoteen 2023.
- Momentum (12-1 kuukautta)
- Ne 30 %, joiden tuotto viimeisen vuoden ajalta viimeistä kuukautta lukuun ottamatta on suurin, miinus ne 30 %, joiden tuotto on pienin.
- Matala volatiliteetti
- Ne 30 %, joiden 60 päivän volatiliteetti on pienin, miinus ne 30 %, joiden volatiliteetti on suurin.
Jokainen faktori muodostetaan uudelleen kunkin kuukauden ensimmäisenä kaupankäyntipäivänä sen päivän päätöskurssien perusteella, pidetään tasapainotettuna seuraavasta päivästä alkaen ja tarvitsee vähintään viisi osaketta kummallekin puolelle. Viikkotuottoja käytetään, koska monilla pohjoismaisilla pienyhtiöillä ei käydä kauppaa joka päivä, mikä vetäisi päivittäisiä estimaatteja kohti nollaa. T-arvot käyttävät Newey-West-keskivirheitä neljällä viiveellä, mikä ottaa huomioon viikosta toiseen korreloivat tuotot. Regressio tarvitsee vuoden verran viikkoja.
Lue se näin: 0,5:n altistus koolle tarkoittaa puolikasta pienyhtiövetoa. Faktorialfa on vuosituotto, jota mikään faktoreista ei selitä. Jos t-arvo on alle 2, sitä ei voi erottaa nollasta, vaikka se näyttäisi kuinka suurelta. Arvo- ja laatufaktorit lisätään, kun tilinpäätöstiedot kattavat riittävästi vuosia.
Tuotoista ei vähennetä riskitöntä korkoa. Kun beta on b ja riskitön korko rf, alfa on yliarvioitu noin rf × (1 − b) vuodessa.
Kestävyyden testaus
Yksi hyvä backtest voi olla sattumaa, ja monien muunnelmien kokeileminen ja parhaan valitseminen on varma tapa löytää sattumaa. Nämä työkalut näyttävät, kestääkö tulos:
- Liukuvat jaksot: kuinka usein strategia voitti vertailuindeksin kaikilla 1 ja 3 vuoden jaksoilla.
- Ristiinvalidointi: sama strategia aloitettuna monena päivänä, jolloin kukin ajo valitsee omat osakkeensa käteisestä, sekä CAGR:n ja Sharpen hajonta.
- Optimointi ja Paranna tekoälyllä: jokainen muunnelma näyttää jakson ensimmäisen ja toisen puoliskon CAGR:n. Muunnelma, joka loistaa vain toisella puoliskolla, oli luultavasti onnekas.
- Walk-forward-testi: optimoinnin paras asetus liukuvalla harjoitusjaksolla, käytössä sitä seuraavina kuukausina, minkä jälkeen valitaan uudelleen. Yhdistettyinä testijaksot näyttävät, mitä optimointi olisi tuottanut ilman jälkiviisautta, rinnakkain parhaaksi osoittautuneen asetuksen kanssa. Jokainen asetus backtestataan kerran koko jaksolta ja jaetaan jaksoihin, joten asetuksen vaihtaminen testien välillä ei maksa mitään ylimääräistä.
- Deflatoitu Sharpen luku (Bailey ja López de Prado): todennäköisyys, että parhaan kokeillun asetuksen Sharpe on todellinen etu. Se nostaa riman nollasta siihen Sharpeen, jonka paras näin monesta asetuksesta saavuttaisi sattumalta, ja ottaa huomioon testin pituuden, vinouden ja paksut hännät. Yli 95 % on vakuuttava. Se tuntee vain kyseisen ajon asetukset, ei muita ensin kokeilemiasi ideoita.
- Live-strategiat: historia siitä päivästä alkaen, kun alat seurata strategiaa, todellisilla hinnoilla, eikä sitä koskaan lasketa uudelleen.
Vienti Pythoniin tai taulukkolaskentaan
Paina tuloksen Lataa-painiketta tallentaaksesi arvon kehityksen, kaikki kaupat ja omistukset CSV-tiedostoina tai koko tuloksen JSON-muodossa. Arvot ovat raakoja: tuotot desimaalilukuina ja rahamäärät strategian valuutassa.
import pandas as pd
equity = pd.read_csv("tickback-…-equity.csv", parse_dates=["date"], index_col="date")
returns = equity["strategy"].pct_change().dropna()
print(returns.resample("YE").apply(lambda r: (1 + r).prod() - 1))
Tunnetut rajoitukset
- Selviytymisharha: pörssistä poistuneet yhtiöt, konkurssin tai yritysoston vuoksi, puuttuvat tiedoista. Tulokset näyttävät todellisuutta paremmilta, eniten pienyhtiöillä ja strategioilla, jotka ostavat häviäjiä. Pörssistä poistuneiden yhtiöiden lisääminen on tietojen seuraava askel.
- Tilinpäätösluvut ulottuvat vain noin vuoteen 2023, joten arvo- ja laatustrategioiden historia on lyhyt.
- Tekoälymalli voi tietää, mitä vanhempien tiedotteiden jälkeen tapahtui, joten tekoälystrategiat voivat näyttää alkuvuosina paremmilta kuin ne olisivat olleet.
- Yahoo Financessa on toisinaan virheitä, kuten oikaisemattomia splittejä. Suuret hypyt lasketaan kunkin tuloksen alla.
- Kaupat tehdään päätöskurssiin: päivänsisäisiä tietoja ei ole, eikä veroja oteta huomioon.
Näin moottori tarkistetaan
Moottori tarkastettiin syyskuussa 2026, ja kaikki löydetyt virheet on korjattu. Automaattinen testisarja ajetaan jokaisen muutoksen yhteydessä. Se vertaa simulaatiota riippumattomiin osake- ja kassakirjanpitoihin, tarkistaa, ettei myöhempi data koskaan muuta aiempaa tulosta, ja tarkistaa kulut, lyhyeksimyynnin, stop-lossit ja valuuttamuunnokset pienillä markkinoilla, joiden oikeat vastaukset tunnetaan.