Koneoppiminen ja algoritmit treidauksen tukena

Cholesky -hajotelmssa ideana on ottaa eri aikasarjojen korrelaatioita huomioon, ei sen kummempaa. Öljyn hinnan simuloinnissa oli muistaakseni eri pituisia öljy- ja maakaasufutuureita mukana.

Jos yhtälöitä on tarpeen syöttää mukaan, niin sitä voi yrittää lähestyä esim. systeemidynaamisella mallinnuksella.

Oho, luin vähän väärää artikkelia, kun niitä oli tossa pari ulkoisesti hyvin samanlaista auki.

1 tykkäys

Tuossa kuvassasihan siis sinulla on perus Black-Scholes mallin dynamiikka. Eli siis dS_t = \mu S_t dt + \sigma S_t dW_t jossa W on Brownin liike. Simulaatio on käytännössä tuosta vain Eulerin menetelmällä diskretisoitu.

Korrelaation lisääminen ei ole sen vaikeampaa kuin simuloit SDE:tä
dS_i(t) = \mu_i S_i(t) dt + S_i(t) ∑\sigma_{ij}dW_j(t)
Jossa tuo \sigma_{ij} on volatiliteetti matriisi joka pitäisi koostaa markkinakorrelaatioista.

Kannattaa lueskella Särkän kirjaa ja Shreven luentomonistetta. Linkkaan ne tähän alle kun ovat ilmaisessa jakelussa netissä.
Shreve: http://efinance.org.cn/cn/FEshuo/stochastic.pdf
Särkkä: https://users.aalto.fi/~asolin/sde-book/sde-book.pdf

Lisäyksenä, kannattaa katsoa sivu 203 tuosta Shrevestä. Siellä hyvin yksinkertaisesti esitetty 2 ulotteinen tapaus korreloivista osakkeista. Särkkä on enemmän SDE sovelluskirja, mutta selittää esim hyvin tuosta simuloinnista ja parametriestimoinnista.

PS. Koska Brownin liike on Markov prosessim voit välttää tuon looppaamisen sillä että arvot nuo normaalijakautuneet satunnaisluvut etukäteen, ja lasket tuon kurssisimulaation vektorioperaatioilla. Python on aika hidas kieli looppaamaan ja jos simuloit useamman aikasarjan kerralla niin nopeasti tulee aika hidasta puuhaa ilman vektorisointia.

3 tykkäystä

Vastaan nyt vielä tähänkin kun on aikaa. Ensinnäkin todella mielenkiintoinen idea tuo Inderes suositusten integroiminen malliin. Etenkin nuo vaikutukset mitä sillä oli.

Ei varmaankaan, mutta mallissasi on nyt sellainen implisiittinen oletus, että volatiliteetti olisi vakio. Näin se ei kuitenkaan empiirisesti ole. Ks vaikka historiallinen IV applen osakkeelle.

Laajentaakseni tätä simulaatio näkökulmaa jonka jo muut ovat ottaneet puheeksi,
tuossa olisi ehkä joitan saumaa sovittaa IV aikasarjoihin jokin malli, ja simuloida sen avulla stokastisen volatiliteetin mallia. Antasisi mielestäni paljon realistisemman kuvan tulevasta kurssivaihtelusta.

En ole aiemmin tullut ajatelleeksi portfolio-optimointia FAMA 3-factor mallin ja modern portfolio teorian ulkopuolella. Löysin kuitenkin nopealla googlailulla jotain ihan mielenkiintoista. Alla oleva paperi edustanee terävintä kärkeä. Käyttää Volterra-Heston stokastisen volatiliteetin markkinamallia oletuksena arvopapereiden hintojen käyttäytymiselle, eikä perinteistä lognormaalia mallia. Toisaalta perinteinen Heston mallikin voisi ehkä toimia?

Mitä tulee tuohon hajautukseen, voisikohan malliin jotenkin rakentaa sisälle rajoitteen siitä että konsentraatiot per toimiala ei kasva liian suureksi. Varmaan suuri paine tällaisella mallilla antaa suuret kertoimet teknologia-alan firmoille koska niistä saa hyviä tuottoja, mutta tämä ei lienee hyvää sellaisen Black Swan -riskin kannalta.

Tähän voisi toimia myös jokin volatiliteetti johdannainen (esim variance swap) mutta noita ei taida saada kuin OTC. Vix optiot toimisi ehkä Amerikka osakkeille?

1 tykkäys

Kiitos Ripelein, Z1on ja Quante hyvistä vastauksista,

käyttääpä käydä vielä vastauksia läpi ajatuksella. Pari kohtaa oli haastavia osaamistasooni nähden :blush:

En shorttaamisesta oikein mitään tiedä, mutta rupesin miettimään saisikohan shorttaamalla jotain porftolion kanssa hyvin korreloivaa osaketta portfolion heiluntaa alas. Jos shortin odotusarvo olisi positiivinen, voisi olettaa ettei tuotto-odotus hirveästi kärsisi mutta shortin liikkeet olisivat usein päinvastaisia portfolioon nähden. Esimerkiksi nyt Finnair näyttää olevan Inderesin myy-suosituksessa.

Tsekkasin tosin juuri ettei Finnair sopisi tehtävään kovin hyvin, sen kurssi ei oikein korreloi portfolion muiden osakkeiden kanssa.

Kannattaa muuten myös tsekata tämä viestiketju, jos et jo ole niin tehnyt:

1 tykkäys

Aluksi kannattaa mun mielestä tehdä simulaatio inderesin ennusteiden käyttämisestä ennusteina yhdellä yhtiöllä. Arvioimista auttaa vertailuindeksi, mikä voisi olla tasahajautus yhtiöön tai yhtiöihin. Sitten lisää pari yhtiötä ja idean näyttäessä järkevältä kannattaa ottaa huomioon kulut ja lisäilee yhtiöitä. Kannattaa aina tarkistaa mahdollisimman kattavasti kaikki toiminnot. Jossain vaiheessa pitää alkaa miettiä varallisuuden huomioimista ja allokointi. Jos edelleen näyttää hyvältä niin testailua leikkirahalla ja uusimmilla tiedoilla.

Shorttaaminen on sen verran erilaista, että jättäisin sen odottamaan myöhempää käyttöä tässä vaiheessa. Kannattaa mieluummin keskittyä yhteen asiaan ja tehdä se niin hyvin kuin pystyy. Muutenkin usein aluksi hyviltä tuntuvat ideat ei sitten osoittaudukaan niin hyviksi kuin on ajatellut. Epäonnistumisista ei kannata kuitenkaan heti lopettaa kaikkea, vaan miettiä miksi jutut ei toimi ja miten ne voisi toimia. Toistamalla PDCA-sykliä (Plan, Do, Check, Act) hyviä ideoita alkaa pikkuhiljaa kertyä. Toisinaan on pystyttävä ottamaan taka-askeleita tuloksien osalta ja parannettava kokonaisuuden laatua. Osakeannit ja osingot voivat aiheuttaa esimerkiksi aika paljon lisätyötä. Testailusta voi jäädä virheitä koodiin, eikä niita aina ole niin helppo huomata. Olisi hyvä, että suhteellisen alussa keskittyy myös diagnostiikan miettimiseen eri toiminnoissa. Valmiiden moduulien käyttäminen on usein aika houduttelevaa, mutta joskus ne on mustia laatikoita, joita voi olla vaikea kehittää ja ymmärtää.

1 tykkäys

Kuukauden takaiseen verrattuna ennusteet on mennyt selvästi parempaan suuntaan. Alkuvuodesta mietein, että pitää osinkojenjako päivitellä, mutta se jäi näköjään tekemättä. Toteutuneet tuotot käytännössä siis vähän parempia. No tähän taulukkoon ne ei olisi joka tapauksessa päivittynyt, joten koitan lisätä reilun kuukauden päässä olevaan ennustejakson loppuun mennessä.

Viidestä positiivista tuottoa antaneesta osakkeesta kolme oli valittu salkkuun. Tasahajautuksella valinnat on tuottanut 6,53 %-yksillöä paremmin kuin tasahajautus kaikkiin yhtiöihin. Painotukset huomioiden 7,09 %-yksikköä parempi. Valintojen ennustevirheet 1,04 % pienemmät, mistä voi ajatella, että on valittu myös vähän pieniriskisempiä osakkeita.

Sovitetun regressiosuoran kertoimista nähdään ennusteiden olleen suhteellisen hyviä. Kulmakertoimen 0,8988 pitäisi olla optimitilanteessa 1,0. Negatiivisen vakion -0,1731 perusteella ennustevihe on isolta osalta johtunut osakemarkkinoiden laajasta laskusta. Tuotoissa on kuitenkin paljon mallilla selittämätöntä vaihtelua, koska vain 7,05% vaihtelusta pystytään selittämään.

Aikaisemmin täällä mainittiinkin yahoo_fin, jota voi käyttää reaaliaikaisten kurssien lähteenä useista markkinapaikoista. Toinen ilmeisesti suositumpi lisäpalikka on yfinance. Sillä voi vaikka ladata useamman tickerin intraday-datan alla olevaan tyyliin. Tuloksena on samalla tavalla Pandas dataframe.

import yfinance as yf
data = yf.download(tickers=['KCR.HE', 'UPM.HE'],
    period='1d', interval='15m', group_by='ticker',
    threads=False, progress=False, actions=False)
4 tykkäystä

Yfinance kautta saa näköjään ihan hyödyllistä dataa osingoista, osakeanneista ja tilinpäätöstiedoista. Tilinpäätöstiedoista on vissiin vain viimeisimpien kvartaalien/vuosien data saatavilla, mutta parempi se on kuin ei mitään. Päivittäinen kurssidata näyttäisi tulevan normaalisti.

Intraday data näyttäisi olevan rajoitettu 60 päivään, mutta kyllähän sillä alkuun pääsee. Hyödyntäminen on aika erilaista kuin päivittäisellä kurssidatalla ja on varmaan aika paljon erilaisia vaihtoehtoisia lähestymistapoja. Jos nyt joskus sattuisi tulemaan riittävästi vapaa-aikaa niin voisi koittaa tutustua paremmin.

2 tykkäystä

Ensimmäinen osariraportti Elisalta. Kehitys edelleen työnalla, joten saattaa esiintyä virheitä. Osarin julkaisusta raportin julkaisuun kesti suunnilleen 30min. Prosessikulku oln viellä automatisoimatta, mutta tulipa kirjattua se edes muistiin.

Elisa Report.pdf (1,2 Mt)

26.4 Ponssen, UPM-kymmene ja Talenomin uunituoreet analyysit lisätty oman projektin sivulle. Kolmivaiheinen ennustemenetelmä aiheuttaa pientä hyppyä joissakin tuottoennusteissa, mutta korjaantunee jossakin vaiheessa. Yhtiöanalyysit :: PredAI (webnode.fi)

27.4 Päivitetty myös päivän WithSecure, Huhtamäki, Cargotec, Konecranes, Valmet, Kone, Kemira ja Nokian Renkaiden analyysit. Hyvin haasteellinen aikajakso kyllä menossa. Mutta ainakin tästä saa erittäin hyvää oppia. Alla sijoituskohteet 91 päivän aikajaksolla.

28.4 Päivitetty Stora Enso, Metsä Board, Wärtsilä, Nokia, Orion Revenio ja QT analyysit.

29.4 Päivitetty Kesko, Neste, Fiskars ja Vaisala analyysit
Muutaman rivin koodilla tulosjulkaisu prosessia huomattavasti automaattisemmaksi. Helpottaa kyllä tekemistä huomattavasti. Toivottavasti tänään selvisin ilman suurempia virheitä.

Tänään täyttyin vuodenvaihteessa tehty ennustejakso. Suoriutuminen tasahajautukseen nähden hyvä vaikka tuotoksi muodostuikin -3,12% tasahajautuksella yhtiövalintoihin ja -2,6% painotukset huomioiden. Suoritus n. 11% parempi kuin tasahajautus kaikkiin yhtiöihin.

Tuottojen suunnista vain 42% ennustettiin oikein, mutta eipä sillon ollut tietoakaan Ukrainan sodasta. Yhtiövalinnoista kolme oli kolme parhaiten tuottanutta osaketta. Keskimääräinen ennustevirhe 20% prosenttia, joka oli n. 3 prosenttiyksilöä suurempi kuin In-sample testeissä

Kuvion kulmakerroin lähellä yhtä (0,9865) mihin voi olla tyytyväinen. Eli suurempia tuottoja ennustaessa oliva myös toteutuneet tuotot suurempia. Yleinen taso oli vain 19,33% prosenttia alempi. Tuottojen vaihtelusta 12,8% pystyttiin selittämään ennustemallilla, joten kehitysvaraa on edelleen.

Tulevat seurannat tapahtuukin sitten PredAI.fi viikkoraportissa kunhan saan viellä vähän asioita hoideltua ja ennusteiden arkistoinnista on kulunut 91 päivää. Se olisi suunnilleen 45 kaupankäyntipäivän kuluttua. Aineisto kasvanut nyt 32 yhtiöön ja 118 887 riviin.

3 tykkäystä

Tämä on enemmän osakepoiminta kysymys, mutta en keksinyt parempaakaan ketjua.

Mistähän saisi helpoimmalla ja halvimmalla Book value, Market cap, ja muut keskeiset tilinpäätöstiedot US osakkeista (jos tulee muutkin valtiot niin ei haittaa)? Tarkoitus olisi poimia parhaat osakkeet per sektori. Eli myös sektoritieto pitäisi tulla mukana. Parhaus tässä olisi kuten Fama & French ovat esittäneet niiden olevan, pieni, arvo-osake, ei kasvava firma joka tuottaa voittoa. Tässä esimerkissä käytetään WRDS:ää Fama French tulosten replikointiin, mutta WRDS:ään ei itsellä ole pääsyä.

Alkuu riittäisi jättimäinen snapshot CSV-filu ja voisin tuosta hiukan maksaakin. Toki jos saa historiatiedotkin niin ei sekään haittaa sillä voisi sitten hiukan koittaa simuloida.

@Wallet_Nahlroos sulla oli ainakin Fama French henkinen osuus salkussa, mutta vissiin kokonaan ETF:llä?

Periaatteessa miltä tahansa julkiselta sivulta saa kaiveltua tiedot automaattisesti, mutta oletko kokeillut esim. yfinance -Python pakettia? Tuon lisäksi tarvitsisit listan US tickereistä, jonka jälkeen sitten iteroiden yksi kerrallaan tai rinnakkaistettuna haet ja tallennat haluamasi tiedot.

1 tykkäys

Jep, Etf hoidan tämän. Zprv & Zprx tikkerit.

Tällä varmaan voi tutkia aika helposti kenttää:

1 tykkäys

Kiitos. Täytyy kokeilla. Dokumentaation mukaan en tartte edes looppia koska voin antaa useamman tickerin suoraan “tickers = yf.Tickers(‘msft aapl goog’)” Hiukan pelkään että jos koko tickeri listan 8000 itemiä laitan menemään niin jostain kuulu kaboom. Luultavasti Yahoon pässä joku rate limit sanoo että 500 maksimi tai hidastaa vasteajat sellaiseksi että menee kuukausi saada noi datat.

Toinen vastaava paketti näyttäisi olevan tämä.

Koko ticker lista löytyy myös kätevästi Githubista

Tuossa on threads -parametri, jolla haut tehdään kukin omissa säikeissään. Itse juuri pari viikkoa sitten imuroin kaikki Kanadan pörssin tickerit parin vuoden historialla ja viestiketjut CEO.ca:sta hyödyntäen tuota yfinance sekä ratelimit -paketteja :slightly_smiling_face:

1 tykkäys

Tuossa tidyQuant paketissa on muuten myös mukana Yahoo api R:lle jos R ratkaisua etsit. Toinen mahdollisuus on esimerkiksi quantmod paketti.

1 tykkäys

Taitaa olla ratelimit Yahoolla 1000 pyyntöä per tunti. Eilen olin saanut hiukan alle puolet 8000 tickeristä.

Pääsin kuitenkin testailemaan. Pareto frontti noin 4000 lapulla ja 4:llä faktorilla antaa 121 osaketta. Ei pareto frontti kaiken fiksuin ole, koska frontille pääse jos yksi faktori on joukon paras vaikka muut olisi ihan roskaa. Toki Pareto Front on se joukko osakkeita joka dominoi kaikkia muita eli ihan validi menetelmä, missä muutkin

Noista 20 pienimmästä ehkä XYF voisi olla OK hankinta kun kaikki faktorit kohtuu järkeviä. Muilla lapuilla korostuu ehkä Pareto frontin heikkous.

20 isoimmasta löytyy sitten enemmän valinnanvaraa (kokohan on negatiivinen Fama French faktori). CPG näyttää oikein houkuttelevalta, koska pieni price2book, korkea operating margin ja momentum myös hyvä.

image

Price2Salesin voisi vielä lisätä value faktoriksi. Korreloi aika heikosti Price2bookin kanssa muistaakseni vain 0.24 eli antaa lisäinformaatiota. Paretofrontin sijaan taida seuraavaksi laskea rankit joka faktorista ja sortata min-rank-sum menetelmällä parhaat osakkeet per sektori. Jos nyt joskus Yahoo antaa mulle täydellisen data setin…

2 tykkäystä