Koneoppiminen ja algoritmit treidauksen tukena

Metsä boardin osalta kurssikehitys pysyi ennustetuissa rajoissa. Kokeilun viimeinen päivä oli 29.6

1 tykkäys

Aloitan tässä saman tien portfolio testin, jossa 2021-07-01 lähdetään sijoittamaan 100 000€. Ensimmäisen päivän keskimääräiset ennusteet ja mukana olevat yhtiöt näkyvät alla olevassa kuvassa.

Ennusteiden perusteella tehdään alla olevan mukaiset sijoitukset. Kaupankäynti kulut ovat 0,10% mutta vähintään 5€. Minimikauppa on n. 3 000€. Muutoksia sijoituksiin voidaan tehdä päivittäin.
Portfolio sijoitukset 2021-07-01

Parin päivän jälkeen salkku vähän plussalla
Portfolio Käteinen 2021-07-02

Tähän päivään mennessä 715€ voittoa
Portfolio Käteinen 2021-07-08

Vertailukohtana päivittäin tasapainoitettu ja tasahajautettu sijoitusportfolio mukana oleviin yhtiöihin ilman kaupankäynnin kustannuksia. Algoritmin tuotto toistaiseksi heikompaa kuin tasahajautuksella.

1 tykkäys

Sen verran ehkä kritisoisin tuota mallia, että kun noita laitoja katsoo niin malli arvioi että mennää joko ylös tai alas. Siinä on aika paha olla väärässä. Ehkä olisi parempi luoda uusi malli kerran kuukaudessa, kun näytti seuraavan tuota ennusteen keskiarvoa aika hyvin n. 6-7 viikkoa?

1 tykkäys

Ennusteet lasketaan joka päivä uudelleen, josta valitaan haluttu aikajakso. Valittu aikajakso vois olla esimerkiksi 2kk päässä jolloin, keskimääräinen tuottoennuste voisi olla 5% ja keskihajonta 10%. Näistä voidaan esimerkiksi laskea Sharpen luku 5% / 10% = 0,50. Sharpen lukua voidaan sitten käyttää sijoitusportfolion muodostukseen. Esim. 10 osakkeesta kolmen osakkeen Sharpenluku on yli 0,25, jolloin sijoitetaan tasasumma näihin kolmeen osakkeeseen. Sitten kun verrataan sijoitusportfolion tuottoa tasahajautuksen tuottoon niin voidaan arvioida voidaanko algoritmin avulla saavuttaa ylituottoa.

Perjantaina ei kaupankäyntiä
Portfolio Käteinen 2021-07-09

Viikon aikana tappiota syntyi tappiota -459,45€ (-0,45%). Eipä jäänyt paljon lapsenlapsille kerrottavaa. TIetoEvry lisätty mukaan perjantaina.

Yhtiökohtaiset arvonmuutokset:
Metsäboard 159€
Cargotec -8€
Outokumpu -384€
Fortum -226€

3 tykkäystä

Parin viikon loma on ohi ja algo on saatu ajan tasalle. Ensimmäinen tuloskausi on mennyt nätisti ilman mitään suurempia ongelmia. Ponssen ja Fortumin tulos on edelleen julkaisematta. Tällä on viikolla tarkoitus lisätä kaksi tai kolme yhtiötä lisää.


Kolmen viikon tuotot olivat 2,47% 4,15% ja -0,36%, johon voi olla aika tyytyväinen. Kaupankäyntiä on ollut keskimäärin joka kolmas päivä.


Sijoitustuksilla on saavutettu pientä ylituottoa verrattuna tasahajautukseen.

Tällä hetkellä sijoituskohteina ovat Outokumpu, Fortum ja TietoEvry, josta viimeisin tuli omistukseen tänään (Ei näy vielä kuvissa).

2 tykkäystä

Algolla on ollut kissan päivät, harmi kun omat rahat ei ole ollut tässä kiinni. Eiköhän tämän vuoden puolella viellä sekin päivä koita, jos suoriutuminen näyttää tältä. Ero tuotossa tasahajautukseen verrattuna on kasvanut selvästi kolmessa viikossa.

19.8 sijoitussalkun muodostukseen tuli pieni muutos, jonka jälkeen salkkuun päätyy vähän enemmän yhtiöitä. Nokia, Neste ja Nokian renkaat on otettu mukaan, jonka jälkeen mukana on 18 yhtiötä. Kaupankäynti on ollut myös selvästi rauhallisempaa muutoksen jälkeen.

Viime perjantain jälkeen suurimmat sijoitukset TietoEvryssä ja Outokummussa. Fortumiin ja Stora Ensoon ei ole sijoitettu koska tavoitesijoitus on pienempi kuin asetettu minimisijoitus.
Sijoitukset

Koneoppimisessa on nyt mukana tietoa 76 260 päivältä. Yhteen koneoppimisen kierrokseen kuluu tällä hetkellä aikaa 75 minuuttia ja kokonaisuuteen kuuluu 20 kierrosta. Kokonaisuuteen aikaa kuluu 25 tuntia, mutta oppimista ei kuitenkaan ole tarvetta jatkuvasti tehdä. Nyt kun aineistoa on jo ´vähän reilummin niin aikaa saisi reilusti alaspäin, kun mukaan otettaisiin vain joka toinen tai kolmas päivä. Vaatii tosin vähän muutoksia ohjelmaan. Päivän uusiin ennusteisiin ja muuhun laskentaan aikaa kuluu vain muutama minuutti.

3 tykkäystä

75 minuuttia per epoch kuulostaa aika pitkältä ajalta jos ei ole kuin yksiulotteista dataa niinkuin olettaisin. Käytätkö GPU:a laskennassa?

Data näyttää vähän yksinkertaistettuna alla olevalta. Laskentaa koitin jossain vaiheessa GPU:lla mutta en oikein saanut sitä toimimaan. Laskenta suoritetaan CPU:lla 8 samanaikaisella prosessilla, eli 25 tunnissa tulee tällä hetkellä 8 * 20 = 160 erilaista lopputulosta. Suorittimen käyttö n. 60% eli varmaan tuosta saisi enemmänkin irti jos haluaisi.

1 tykkäys

En tiedä minkälainen algoritmi tässä on kokonaisuutena taustalla, mutta oletko kokeillut koneoppimispuolelle perinteisiä puumalleja, esim. LightGBM, XGBoost jne.? Monesti huomattavasti nopeampia ja helpompia käyttää kuin neuroverkoilla pelaaminen (sisääntulevia lukuja ei tarvitse skaalata, kategoristen muuttujien käsittely jne.)

Olen useamman vuoden tehnyt leipätyökseni AI/ML mallinnusta, mutta vasta vähän aikaa sitten löytänyt sijoittamisen, niin aihe kiinnostaa. Täytyy yrittää perehtyä syvällisemmin.

Tässä muutamia linkkejä aiheesta kiinnostuneille:

  • Numerai ”AI-rahasto”, jossa jokainen osallistuja luo tuottoennusteita, ja rahastoa kokonaisuudessa painotetaan sen mukaan, paljonko olet laittanut rahaa kiinni:
  • M6-kilpailu - aikasarjaennustamisen ”state-of-the-art” kisa, johon tuhannet tekoälygurut lähettävät mallinsa, ja jossa tänä vuonna ennustetaan osakemarkkinoita
4 tykkäystä

Mitä olen lukenut noista toimivista/tuottavista treidausalgoritmeista, niin usein ne jakautuvat kahteen kategoriaan monimutkaisuuden perusteella. Pienemmät mallit ovat siis usein todella yksinkertaisia, vain muutaman säännön kokoisia ja sisältävät lähes triviaalia matematiikkaa. Monimutkaisemmat mallit ovat taas todella laajoja ja sisältävät vahvaa tilastollista mallinnusta, jotta voidaan hahmottaa, miktä tekijät ovat oikeasti merkityksellisiä ja mitkä ovat vain kohinaa.

Noiden kahden kategorian välillä ei taas ole kovin paljon toimivia malleja, koska markkinadatan sisältämä kohina tekee helposti monista algoritmeista käytännössä hyödyttömiä. Lisäksi historiallisen datan käyttöä rajoittaa “alpha decay”, koska markkinat ovat jatkuvasti muutoksessa. Esim. 3-5 vuotta vanha data (USA:n markkinoista puhuttaessa) voi olla jo lähes hyödytöntä joidenkin keskustelufoorumien mukaan.

3 tykkäystä

Väittäisin, että tässä koodissa pitäisi mennä 25 minuuttia eikä 25 tuntia. Kannattaa käyttää aikaa pullonkaulojen avaamiseen ja helpompien algoritmien käyttöön (esim. Naive Bayes tai Random forest tai vaikka sitten joku Ensemble malli jossa käytät useamman mallin ennusteita).

Jos leikkii Tensorflowlla tai vastaavalla, niin CUDA:n asentelut ovat kyllä harmillinen päänvaiva, jotta pääsee GPU-hommiin. Ihan mielenkiinnosta googlasin pikaisesti, ja tutkimuksesta riippuen tuntui GPU:t olevan vähintäänkin 5 kertaa nopeampia kuin CPU:t perus neuroverkkolaskentaan. Mielenkiintoisesti testeissä CPU:t huusivat 60-80 % teholla, kun GPU puksutteli 11 % resursseilla. Toki riippuu, miten tuhnu CPU/GPU koneesta löytyy.

Jos sulla on joku kiva pieni skripti, ni ite oon sellaiset monesti siirtänyt Kaggleen, josta irtoaa ilmaista laskentatehoa GPU:lle ja muistaakseni jopa TPU:lle. Myös Googlen Colabista irtoaa ilmaista GPU:ta, millä saa oikein mainiosti treenattua malleja - muistaakseni Colabissa oli vähän sellainen logiikka, että paukuttaa laskentaa silloin kun ylimääräistä resurssia on tarjolla.

Sellainen tuli itselle vastaan, että Tensorflow vaatii uudehkon CPUn myös, uusi GPU ei riittänyt. vanhat ceeput eivät sisällä Tensorflown haluamia uusia optimointeja.

3 viikkoa taas vierähtänyt viime päivityksestä, joten laitaanpa pientä päivitystä. Ensimmäinen viikko noustiin ja sitten ollut pari viikkoa syöksylaskua. Kokonaisuus näyttää kuitenkin ihan hyvältä vaikka huipulta ollaan lasketeltu tasahajautus-portfoliota nopeammin. Portfolion muodostustapa muuttui Sharpenluku perusteiseksi, jonka pitäisi johtaa vähän tasaisempaan tuottoon.

Kaupankäynti on ollut nyt päivittäistä. Taitaa olla lähinnä edestakaista venkslausta, painoarvojen muutoksien johdosta. Kahdeksan viimeistä päivää on lasketeltu :frowning:

Koneoppiminen oli aikaisemmin korrelaatioon perustuva ja on nyt muutettu ottamaan huomioon myös selitysaste ja ennustevirhe. Näyttäisi olevan ihan hyvä muutos. Tämän lisäksi prosessia nopeutettu ottamalla huomioon vain jokatoinen rivi.

3 tykkäystä

Osakkeissa parhaat tuotothan tulevat kun ostaa halvalla ja myy kalliilla. Onko kukaan testannut sellaista, että tutkii paperin historiaa esim. 4 viikkoa taaksepäin ja nappaa sieltä matalimman kymmenyksen ja korkeimman kymmenyksen, ja sitten ostaa kun kurssi osuu matalimpaan ja myy kun korkeimpaan? Kuinka usein se osuisi oikeaan :slight_smile:

Strategia analyysi:

  1. nousumarkkinassa tuottoa voi syntyä vähän, jos mukaan sattuu 2-4 viikon laskukausia. Tällöin syntyy ostopaikka, mutta myynnit tapahtuvat usein liian aikaisin. Seuraavaa ostopaikkaa on vain odotettava.

  2. Laskumarkkinassa tappioita syntyy reilusti, koska lähes koko ajan saadaan ostosignaalia. Strategian suurin ongelma on myynti osakekurssin laskiessa.

  3. Osakekurssien sahatessa strategia voisi toimia parhaiten. Pitäisi vain jotenkin löytää sopivia yhtiöitä.

Näin yksinkertainen strategia on aika helppo testata vaikka excelillä, jos haluaa nopeita tuloksia.

Nopea viritelmä Fortumin tuotosta tällä strategialla

2 tykkäystä

Joo samat fiilikset kaikista macd, rsi, momentum, jne TA-kokeiluistani. Ei ne tahdo sellaisenaan toimia. Ei myöskään vaikka treidaisi esim bull/bear -serttejä ollen siis koko ajan markkinoilla.

2 tykkäystä

Hetken aikaan miettinyt, että pitäisi pystyä seuraamaan kaikkia mukana olevia strategioita. Huomasin, että simulointien optimointien mukana saan tietoa pienellä vaivalla ulos. Viimeiseltä 90 kaupankäyntipäivältä ei ole toteutuneet tuotot mukana ennusteissa, joten tämä on aika lähellä “out of sample” -aineistoa. Punaisella merkattu tasahajautus strategia, vihreällä käytössä oleva ja harmaalla muut mukana olevat. Kaikki perustuvat samoihin ennusteisiin, mutta sovelluksessa eroja.

Tasahajautuksen ylittävää tuottoa on kertynyt yllättävän tasaisesti ja hyvin.

1 tykkäys

Ennusteet muodostivat sen verran nättiä paintissa mustalla vahvistettua viivaa “tehokkaalle rintamalle”, että laitanpa tänne oikein kuvan. Fiskars ja Elisa lisätty mukaan.

Painoarvojen laskenta muuttui taas tulosten myötä. Nyt punaisen ja vihreän katkoviivan välissä olevat yhtiöt saavat painoarvon väliltä 0-1. Punaisen katkoviivan alapuolella painoarvo on 0 ja vihreän yläpuolella 1.

3 tykkäystä