Koneoppiminen ja algoritmit treidauksen tukena

  1. Slippage 0,1 %, myös komissiot otettu huomioon
  2. Kauppaa käydään Nasdaq100 osakkeilla
  3. Sharpe 1,30

Epärealistinen osuus backtestissä on se, että salkun ja positiokoon kasvaessa ostettaisiin aika isoja määriä samaa osaketta, ja epäilen että slippagea pitäisi varmaan kasvattaa.

Minulla on mahdollisuus ajaa myös tuo Monte Carlo mutta en ole vielä niin hyvin perillä sen tarkoituksesta että osaisin arvioida millä asetuksilla se pitäisi ajaa, tai osaa tulkita tuloksia. Täytyy tutustua mm. tähän lisää.

Ja tärkeänä tietona tietenkin myös se että kaupat on tehty 100% käteisellä ja marginaalia ei ole testin kaupoissa käytetty.

Riippuu paljolti siitä miten hyvin backtestit on toteutettu. Nopeasti ei kovin hyvää varmuutta ole saatavissa algoritmin hyvyydestä. Ehkä laskisin ensin 10 vuoden tuloksista vaikka kuukausittaiset ylituotot ja näiden keskihajonnan.

Sitten vaan varsinainen testijakso treidauksen osalta käyntiin. Jos backtestitn ylituotto on vaikka 2,0% kuukaudessa ja keskihajonta on 3,0% niin 68% kuukausista pitäisi osua välille (-1,0%, +5%). Tuosta on ihan hyvä lähteä liikkeelle ja antaa osviittaa suoriutumisesta.

image

5 tykkäystä

Vähän lisätestailua kielimallilla, jossa muutoksia aikaisempaan nähden ainakin:

  • Syötettävää dataa muutettu monipuolisemmaksi
  • Opetuksessa ennustetun luokan etäisyyden perusteella määritellään sitä vastaava painoarvo
  • Generoinnissa suurimmalle osalle luokista muutetaan todennäköisyydeksi 0%. Lopuista arvotaan todennäköisyyksien perusteella 5 joiden painotettu keskiarvo ennuste on.

Muita tietoja:

  • Parametrit 5,8 miljoonaa
  • Opetusdatana Nasdaq 100, SP500, FTSE 100, Nikkei 225 osakkeiden hintatiedot (ensimmäiset 90%)
  • Tarkastelussa ennustetaan Nasdaq 100 osakkeiden tuottoja
  • Tässä toistaiseksi viimeisen 10 vuoden tuotot, joten menevät osittain päällekkäin

Alla ensimmäisenä hyvin alkuvaiheen ennusteet, jonka kuvioissa (Ennuste, Suunta oikein ja Ennustevirhe) on

  • Muutaman tuhannen havainnon keskiarvo
  • Negatiivisin ennuste vasemmalla ja positiivisin oikealla
  • Ennusteen arvot suunnilleen välillä -30 - + 10
  • Ennustevirhe pienimmissä ennusteissa suunnilleen 20% ja suurimmissa ennusteissa 10%
  • Ennustevirhe on pienimmillään ennustettaessa 0% tuottoa seuraavalle päivälle
  • Negatiivisista ennusteista suunta ennustetaan oikein suunnilleen 47,5 %
  • Positiivisista ennusteista suunta ennustetaan oikein suunnilleen 53 %


Tuottokuvio on vähän tuollainen hömppä yksinkertaistus, jonka avulla on vain tarkoitus havainnollistaa tuottoa. Tässä kaikki havainnot on laitettu peräkkäin suunnilleen aikajärjestyksessä ja sijoitetaan, kun ennuste on yli 0%.

Alla mallia on opetettu vähän enemmän, jonka jälkeen ennusteiden ja ennustevirheen vaihteluväli pienenee merkittävästi. Positiivisia ennusteita on enemmän ja ennusteiden suuntaa ennustetaan vähän tarkemmin.

Ensimmäinen kuvio on lauantailta ja alla oleva tiistailta. Kehityksen suunta on aika samanlainen kuin edellisessä. Vaikuttaa kuitenkin, että jatkossa kehitys hidastuisi.

Vau! Mahtavaa duunia :slight_smile:

Kysymyksiä:

  • Oliko ennustettavat Nasset siis out-of-sample? Kysyn koska LLM:llä on suhteellisen hyvä tendenssi “muistaa” systemaattisuudet opetusdatasta.
  • Mikä on Y-akselin yksikkö noissa kaavioissa (ennuste, suuntaoikein, ennustevirhe, tuotto)
  • Entä mitä nuo X-akselin luvut ovat
  • Ennustettiinko yksittäisiä arvoja vai pidempiä sekvenssejä?
  • Oliko siis mallin parametreja vai opetus tokeneita 5.8 miljoonaa? Muistaakseni edellisessä GPT2-mallissa parameterjä oli n. 10M ja siksi kysyn :slight_smile:.
  • Muutitko mallia käsittelemään suoraan numeraaleja vai mentiinkö edelleen Karpahtyn mallin character-tason tokenisoinnilla?

Jos siis tulkitsen tätä oikein ja kyseessä on out-of-sample ennustamista, niin tuo lyhyen aikavälin 0% ennustevirhe on vähintään lupaava indikaattori :open_mouth:

Vastauksia

  • Ei ollut täysin out-of-sample, mutta osittain kuitenkin. Tulokset on kuitenkin ihan vastaavia kuin testaamani DAX yhtiöiden ennusteet, joita ei ollut käytetty opetuksessa lainkaan.
  • Y-akselin yksikkö Ennuste, Ennustevirhe ja Suunta oikein kaavioissa on %. Ennustevirhe viimeisessä alimmillaan n. 1,4 prosenttiyksikköä
  • X-akselilla on kaikki havainnot sortattuna ennusteen perusteella pienimmästä suurimpaan. Yhteensä suunnilleen 100 osaketta * 10 vuotta * 251 päivää/vuosi = 251 000. Käytännössä kuitenkin jonkun verran vähemmän.
  • Poikkeuksena Tuotossa on suunnilleen aikajärjestys ja alkusalkuksi asetettu 1$, joka kasvaisi tuonne 10^28$.
  • Ennustetaan toistaiseksi ainoastaan yksittäistä päivää.
  • Mallin paremetreja on nyt toi 5,8 miljoonaa. Tässä välissä testailin 3,3 miljoonan parametrin mallia, mutta päätin kuitenkin vähän nostaa määrää. Opetuksessa käytettävien tokenien määrää en ole laskenut, mutta kasvatan sitä nyt koko ajan.
  • Edelleen mennään character-tason tokenisoinnilla, joita on yhteensä 582. Testinä näistä puolet on yhden päivän tuotoille ja toinen puolisko 1-200 päivän tuotoille

Ihan kiinnostavilta nää tulokset näyttää, mutta vaativat kyllä kaveriksi hyvän strategian ja halvat kaupankäyntikustannukset.

2 tykkäystä

Alla muutaman osakkeen pidemmän aikavälin ennusteita. Kuvioissa 150. päivän kohdalla tehdään ennuste seuraavalle 50 päivälle.

Noi on tuossa vähän sarjakuva tyyliin. Seuraavan ruudun ennuste tehdään aina mihin edellisen ruudun ennustejakso loppuu (AMZN 0 → AMZN 1 … → AMZN 5). Viimeisen ruudun ennustejakso päättyy nykyhetkeen.

Ihan mielenkiintoisen näköisiä käppyröitä. Välillä osuu hyvinkin ja välillä sitten taas menee ihan vastakkaiseen suuntaan.