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.

1 tykkäys

Tuore uutinen XTX:n suunnitelmista XTX:n Kajaanin datakeskus on valtava: lattiaa tulee 15 000 neliömetriä ja hinta on 100 miljoonaa euroa | Kotimaa | Yle.

Melkoiset systeemit rakennetaan pienten marginaalien hyödyntämiseksi.
" XTX Markets
– Ostaa ja myy osakkeita, valuuttoja, velkakirjoja, raaka-aineita ja optioita yli 80 markkinapaikalla.
– Etsii markkinoiden tehottomuudesta johtuvia hyvin pieniä ja vain sekunnin osia kestäviä hintaeroja.
– Sama tuote voi olla eri puolilla maailmaa eri hintainen, ja XTX:n monimutkaiset algoritmit tunnistavat tällaiset tilanteet.
– Yhtiöllä ei ole yhtään ihmismeklaria, vaan kaikki kaupat tekee kone.
– Päivittäinen kaupankäyntisumma on lähes 300 miljardia Yhdysvaltain dollaria.
– Liikevoitto oli vuonna 2022 1,1 miljardia puntaa ja vuonna 2023 835 miljoonaa puntaa. "

4 tykkäystä

Oletko testannut ja saanut hyviä tuloksia GRU layereitä käyttävillä malleilla? Olen käyttänyt muutamissa aikasarjoihin liittyvissä projekteissa ja todennut aika hyväksi.

Eipä ole tullut testailtua aikaisemmin. Niillä näyttäisi tulevan ihan hyviä tuloksia muutaman paperin perusteella, joten vaikuttaa ihan tutustumisen arvoisilta.

RNN:t tai niiden variantit kuten GRU:t ja LTSM:t ovat varmasti ihan passeli ratkaisu, jos esim. opetusdata ja laskentakapasiteetti asettavat rajoituksia. RNN:t olivat kuitenkin sekvenssidatan opetuksen sota-malleja sen reilu kymmenen vuotta ennen transformereita. Siksi löytynee myös muita uudempia malleja paremmin tutkimusta.

Selvää lienee kuitenkin jo nyt se, että transformerilla tai muilla uudemmilla malliarkkitehtuureilla on mahdollisuus oppia sellaisia säännönmukaisuuksia, jota RNN:illä jää mallien yksinkertaisuuden vuoksi oppimatta.

Totta, transformerit mahdollistaa paljon pidemmän ”muistin” ja siten riippuvuudet paljon kaukaisempiin tapahtumiin datassa huomioidaan paremmin. Mikäli datasetti on pieni ja haluaa testata yksinkertaista mallia lyhyille aikasarjoille, niin LSTM/GRU ovat ihan toimivia edelleen. Näistä melko paljon tuoreitakin julkaisuja ongelmissa joihin ne sopivat luontaisesti paremmin. Transformerit parempia, mutta monimutkaisempia toteuttaa.

wau paljon siistiä keskustelua!

pohdiskelin, et voiskohan kielimallista olla hyötyä perussijottajille enempi, jos analyysiin pohjautuvaa dataa sais jotenkin kuratoitua ensin? esim jonkun uutis / makro databasen kautta.

vähänniinkuin cursor tekee koodauksessa, mut tää toimis sijotustiedossa.

1 tykkäys

Joo ja ei.

Cursor toimii kahta kautta erityisen hyvin koodaukseen

  1. Koska se on fine-tunattu massiivisella määrällä koodia nimenomaan koodauksen downstream-taskeihin
  2. Sen voi kytkeä RAGaamaan esim. organisaation omaa code basea

Periaattessa kohdan 2. voisi toteuttaa jonkun frontier-mallin kanssa. Mutta silti ei ole odotettavissa talousanalyysiin yhtä hyviä tuloksia kuin Cursorilla koodaukseen, koska 1. pitäisi tehdä myös siten, että viritetään alla oleva LLM nimenomaan ymmärtämään talousanalyysia geneeristä mallia paremmin.

Yllä oleva on jossain määrin toki spekulaatiota, koska mallista ja sen treenauksesta ei kerrota juuri mitään. Mutta yleiskokemuksen perusteella on oletettavaa, että yllä oleva pitää paikkaansa.

Voi taas olla et noi nykyset mallit ei pääse täyteen potentiaaliin analyysissa, koska 1. niil ei aina oo ajankohtasinta dataa ja 2. sekin data joka niillä on sotkeutuu kohinaan