30.12.2019

Seuraavan pörssivuosikymmenen ennustamista koneoppimismalleilla


Osakemarkkinat ja kansantaloudet tuottavat valtavat määrät dataa, jota voidaan hyödyntää erilaisten ennusteiden tekemiseen vaihtelevin menestyksin. Nämä datan muodot ovat lyhykäisyydestään ja aikasarjamaisuudestaan johtuen suhteellisen hankalia käyttää. Syöttämällä kaiken mahdollisen datan malleille päädytään lähinnä näennäiskorrelaatioihin, jossa esimerkiksi yritetään ennustaa osakkeen hintakehitystä jonkin toisen osakkeen historiallisella hintakehityksellä.

On myös muita haasteita. Eri sijoitusstrategiat toimivat eri aikoina, ja toiset lakkaavat kokonaan toimimasta. Esimerkiksi arvosijoittaminen ei ole oikein toiminut viimeiseen kahteentoista vuoteen (lähde, pdf). Taloudessa tapahtuu myös asioita, joita ei ole koskaan ennen tapahtunut, kuten negatiiviset korot ja P/E-luvun nouseminen yli sataan kymmenen vuotta sitten.

Tässä kirjoituksessa esittelen kuinka S&P 500 -indeksin tulevia tuottoja voi mahdollisesti ennustaa käyttäen viittä eri mallia sekä näiden mallien yhdistelmää. Aloitetaan naiivilla ennusteella, joka vuonna 1991 olisi ennustanut jokaiselle seuraavalle vuodelle samaa tuottoa kuin mitä keskimääräinen vuosituotto on ollut vuodesta 1948 alkaen. Tämä suoran viivan muotoinen ennuste olisi seuraavan parinkymmenen vuoden aikana ollut väärässä keskimäärin 5,16 prosenttiyksikköä per vuosi.

Käytettävät koneoppimismallit

Mallit ovat hyvin erityyppisiä, esimerkiksi glmnet on normaali lineaarinen malli, joka rankaisee liian suuria kertoimia ja kuten myös lähes kaikki muutkin tässä esitetyt mallit, jättää pois mielestään epäolennaisia muuttujia. K-nearest-neighbors etsii tietyn määrän havaintoja, jotka ovat lähellä ennustettavaa havaintoa, ja tekee ennusteen näiden havaintojen perusteella. MARS ottaa huomioon epälinearisuudet mallin selittävissä tekijöissä sekä interaktiot eri muuttujien välillä, ja XGBoost on puumalli, joka ottaa myös huomioon sekä epälineaarisuudet että interaktiot. XGBoost rakentaa monta erilaista puuta, parantaen aina seuraavaa puuta edellisen puun perusteella. Malleista MARS ja SVM (support vector machine) ovat melko joustavia, ja siksi ylisovittavat helposti, eli muistavat datan, jolla malli on sovitettu sen sijaan, että loisi sääntöjä jotka ovat yleistettävissä myös dataan jota mallit eivät ole nähneet. Käytännössä ylisovittaminen näkyy siten, että malli suoriutuu erittäin hyvin datalla jolla se on sovitettu, mutta erittäin huonosti datalla jota se ei ole nähnyt, jolla mallia testataan.

Yhdistelmämalli on yksinkertaisesti tehty sovittamalla jokainen malli ja ottamalla sen antamista ennusteista keskiarvo. Yleensä yhdistelmämallit suoriutuvat ainakin hieman paremmin kuin mikään yksittäinen malli, varsinkin jos mallit ovat riittävän erilaisia. Koneoppimiskilpailuiden voittajat ovat lähes poikkeuksetta käyttäneet yhdistelmämalleja tästä syystä.

Malleissa on käytetty kahdeksaa eri muuttujaa: CAPE, total return CAPE, P/E, P/B, P/D, inflaatio, 10-vuotisen valtiolainan korkotaso sekä työttömyysaste. Mallien tulokset on esitetty seuraavassa graafissa, jossa musta viiva vastaa toteutunutta seuraavan kymmenen vuoden tuottoa, ja sinertävä viiva ennustetta.

Tulokset

Kuva suurenee klikkaamalla


Mallit eivät ole nähneet punaisen pystyviivan jälkeistä kehitystä, joten ennusteet ovat yleensä epätarkempia sen jälkeen. Tämä simuloi tulevaisuuden ennustamista, eli miten parikymmentä vuotta sitten kehitetyt mallit olisivat toimineet seuraavan parinkymmenen vuoden aikana. Paneudutaan seuraavaksi eri mallien tuloksiin. Taulukossa on esitetty mallin keskimääräinen heitto prosenteissa (mean absolute error, MAE) sekä se, kuinka monta prosenttia vaihtelusta malli selittää (selitysaste, R²), molemmat datalla, jota malli ei ole nähnyt sovitusvaiheessa. 

Helposti ylisovittavat mallit, eli MARS ja SVM, ovat molemmat käyttäytyneet melko rajusti datalla, jota mallit eivät ole nähneet sovitusvaiheessa. Molempien mallien heitto on ollut keskimäärin noin tuplat naiivin keskiarvoennusteen heitosta. Mallit ovat näin olleet liian joustavia, johtuen luultavasti pienestä datan koosta. Glmnet on käyttäytynyt melko hyvin, graafin loppua lukuun ottamatta. Tämä johtuu todennäköisesti P/E-luvun räjähdyksestä noihin aikoihin. K-nearest-neighbors on reagoinut dataan melko heikosti, mutta on silti suoriutunut naiivia mallia paremmin. XGBoost on selviytynyt kaikista parhaiten.

Malli MAE
Naiivi malli 5,16 % -
GLMNET 3,00 % 29,7 %
KNN 3,37 % 10,6 %
MARS 10,70 % 90,2 %
SVM 10,80 % 13,1 %
XGBoost 2,17 % 60,1 %
Yhdistelmä 2,15 % 48,2 %

Yhdistelmämalli on kuitenkin selviytynyt hieman paremmin kuin mikään yksittäinen malli prosentuaalisella heitolla mitattuna. Jättämällä pois epäsopivat mallit parantuisi sen ennustetarkkuus vielä jonkin verran. Tekemällä päätöksiä testidatasta eli datasta jota ei ole käytetty mallin sovittamisessa johtaa kuitenkin helposti ilmiöön nimeltä data leakage, joka käytännössä tarkoittaisi sitä, että ennustetarkkuutta mittaavat luvut eivät ole enää täysin luotettavia. Epäsopivat mallit voi kuitenkin jättää pois, mutta silloin yhdistelmämallin todellista tarkkuutta ei voitaisi tietää yhtä helposti.

Tulevaisuuden ennusteet

Mitä mallit sanovat tulevaisuudesta? Seuraavan kymmenen vuoden tuotto-odotukset on esitetty alla olevassa taulukossa.

Malli 10 v CAGR ennuste
GLMNET 1,47 %
KNN 4,04%
MARS -9,85%
SVM 6,46%
XGBoost 8,86%
Yhdistelmä 2,20%

MARS -malli on kaikista pessimistisin, ennustaen kymmenen prosentin miinusmerkkistä vuosituottoa seuraavalle kymmenelle vuodelle. On syytä pitää mielessä, että kyseinen malli ei ole kovinkaan luotettava tällä datalla, ja tarkemmalla tarkastelulla itse asiassa selviää, että se käyttää ainoastaan CAPE -muuttujaa ennusteessaan. Muut mallit käyttävät melko tasaisesti eri muuttujia. XGBoost on yllättäen kaikista optimistisin noin yhdeksän prosentin vuosituoton ennusteellaan. Yhdistelmämalli ennustaa vain parin prosentin vuosituttoa, mutta MARS -malli laskee tätä ennustetta noin kolmella prosenttiyksiköllä

Tarkastellaan vielä XGBoost -mallin ennusteen koostumusta. Mallissa vakiotermiä vastaava osa ennustaa 12 prosentin vuosituottoa, jota nykyinen CAPE (30,9) laskee 7 prosenttiyksikön verran. Nykyinen P/B (3,7) nostaa ennustetta 6 prosenttiyksiköllä. On huomioitava, että tämä ei tarkoita, että korkea P/B johtaa korkeampaan tuotto-odotukseen, vaan että tuotto-odotus on korkeampi silloin kun CAPE on korkea ja myös P/B on korkea verrattuna siihen, että CAPE olisi korkea ja P/B olisi matala. Nykyinen korkotaso USAn 10-vuotisella korolla mitattuna (1,9 prosenttia) nostaa tuotto-odotusta kahdella prosenttiyksiköllä, ja nykyinen P/E (24,3) puolestaan laskee tuotto-odotusta saman verran. Muut tekijät vaikuttavat tuotto-odotukseen laskemalla sitä yhteensä alle parin prosenttiyksikön verran.

Tässä kirjoituksessa esitettyjä malleja voitaisiin hyödyntää tulevaisuuden ennustamista paremmin eri markkinoiden valintaan, esimerkiksi osana indeksitasolla eri maihin sijoittavaa strategiaa. Pelkän CAPEn on havaittu ennustavan tuottoja melko hyvin maatasolla (lähde), ja useita muuttujia sisältävät mallit hyvin todennäköisesti parantavat ja tekevät tällaisen ennusteen luotettavammaksi, olettaen että mallin tyyppi on valittu oikein. Seuraavan vuosikymmenen vuosituotto-odotukset ovat mallien mukaan USAssa -9,85 ja +8,86 prosentin välillä mallista riippuen, ja vain keskimäärin pari prosenttia positiivinen.

Teknisiä tietoja


Data ei sisällä uudelleensijoitettuja osinkoja. Mallien sovittamiseen on käytetty 70 prosenttia datasta ja testaamiseen loput 30 prosenttia. Mallien sovittamisessa on käytetty aikasarjoille sopivaa ristiinvalidointia (k=5) optimaalisten hyperparametrien löytämiseksi. Hyperparametrien vaihteluvälit ovat valittu caret -kirjaston oletusten mukaisesti.


0 kommenttia:

Lähetä kommentti