Koneoppiminen ja algoritmit treidauksen tukena

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ä

Kauppalehden kasvajat listalla näyttää olevan kaksi algoritmifirmaa Top 10 joukossa. Kovaa kasvuvauhtia näyttää olevan muutenkin.

Kasvajat

1 tykkäys

Oli joku bugikin ylemmässä Paretofrontissa. Nyt bugi on korjattu ja tulokset tässä postissa toivottavasti oikein. Testimielessä muodostettu PF (pareto front) ja MRS (min rank sum) salkku Helsingin firmoista. PF salkkuun tulisi 38 firmaa. Jos muodostaa MRS salkun niin ikään 38 firman kokoiseksi, MRS salkun firmoista 29 eli 76% löytyy myös PF salkusta. Ei siis suurta eroa. Hyvänä puolena pahimmat ylilyönnit karsiutuu. Toisaalta voi olla että MRS salkulla missaa tulevat käänneyhtiöt :smile: Esim alle olevan PF salkun firma FELLOW.HE ei ole alempana löytyvästä MRS salkusta. FELLOW.HE market cap ja P2B on Helsingin parhaat, mutta OM ja Momentum taas sijoissa 138 ja 139 eli roskaa. Tämä ansiosta kokonaissijoitus MRS rankkauksessa on 75 eikä asiaa MRS salkkuun.

Faktorina toi market cap mietityttää. Ehkä en käytä sitä jatkuva-arvoisena tai järjestysasteikkona jatkossa vaan enemmänkin rajaamiseen → firmat ainoastaan bottom puolikkaasta tai kolmanneksesta. Datahan on selvää että pikkufirmat on tuottaa enemmän kuin isot. Epäilen vain että pikkufirmojen joukossa ei ole enää eroja. Arvaan myös että on joku epäjatkuvuuskohta niin että tietty joukko isoja firmoja (semimonopoleja) on jatkuvassa kuplassa, esim. Coca-Cola, Costco, Kesko, jotka pikkufirmana treidaisi paljon pienemmillä arvostuskertoimilla. Täytyy koittaa kaivaa joku paperi aiheesta niin ei tartte spekuloida.

PF-salkku

MRS-salkku

2 tykkäystä

Lisäsin vielä Total Asset Change faktorin. Nyt on sisällä samat faktorit kuin Fama French 5 faktor mallissa https://faculty.newpaltz.edu/yuanwen/files/Fama-French-5-factor-Model.pdf ja lisäksi momentum. Tulos suunnilleen sama kuin yllä. Kävin läpi top 10 firmat MRS salkusta. Sanotaanko että tämä menetelmä todella haastaa sijoittajan :astonished:. Pari poimintaa, jotka aika hyvin edustaa top-10 kokonaisuudessa.

Ovaro - Uuden MRS salkun kärkinimi. Sillä mm. upea operating margin 27.9%, mutta tappiota tulee kerta kerran jälkeen. Vilkaisu osariin ja sieltä avainlauseet

  • “Katsauskauden tulos oli tappiollinen 226 tuhatta euroa (-845 tuhatta euroa). Tulosta heikensivät sijoituskiinteistöihin kohdistuneet korjauskulut ja välityspalkkiot.”

  • “Ovaro Kiinteistösijoitus arvioi, että yhtiön lähiajan keskeisimmät riskit ja epävarmuustekijät liittyvät asuntojen arvonmuutokseen, korjausmenoihin ja korkotasoon.”

Eli tase täynnä ylihintaista ja korjattavaa kiinteistöjä, jonne tuotot katoaa. Kirjanpidosta en hirveästi ymmärrä, mutta omassa päässä kiinteistöjen korjaus ja välityspalkkiot pitäisi olla operating marginissa sisällä. Onko tämä kirjapitokusetus?

Martela taitaa olla listan eka ei sijoitusyhtiö sijalla 6. Martelahan on tunnettu laadukkaista mutta ehkä hiukan kalliista huonekaluista. Martelalla pieni koko, hyvä momentum eikä ole investoinut kasvuun. Pikainen vilkaisu Martelan sivulle. Key figures | Martela Viimeisen 10 vuoden ajalta tappiota on tullut 8 vuoden aikana. Samana aikana liikevaidosta on haihtunut 35%. Pitäisi olla joku signaali, että alkaa tulla voittoa, jotta tätä voisi harkita ostavansa. Viimeisen 10 vuoden trendi on murheellinen.

Ei tällä algolla kannata lähteä pimeänä ostamaan. Tulee vastaan vaan kriisiyhtiöitä, kun piti tulla vastaa aliarvostettuja firmoja. Sen sijaan parempi käyttö voi olla rajaus, jolla suljetaan pois huonosti tuottavia ruutuja ja otetaan mukaan hyvä ruudut. Rajailin alla olevaan kuvaan 0.7, 0.9 rajat ja ympäröin parhaiten tuottavan ruudun. Huomioita

Strategioita. Ylihintaiset pois.

  • Älä osta isoja firmoja top 20% (rivit Big taulukoissa)

  • Älä osta nopeasti kasvavia / paljon investoivia firmoja top 20% (Panel C oikea reuna)

  • Älä osto huonosti kannattavia firmoja bottom 20% (Panel C vasen reuna)

Tai ostojen kannalta arvoa sisään.

  • Osta firmoja joiden B2M ja OP on top 50%. (Varo OP kusettajia)

  • Osta firmoja joiden koko ja kasvu on bottom 50%

Eli jos joka taulukossa pysyy parhaassa kvartaalissa pääsee hyvään tulokseen. Yksiakselisesti ajateltuna binäärinen rankkaus per faktori lienee tarpeeksi. Voisi ajatella, ettei tämä rajaa riittävästi, mutta jos binäärinen rankkaus ja viisi faktoria tällä pitäisi jäädä vain 6.25% (0.5^4) firmoista.

1 tykkäys

Viimeinkin tuli järkevän oloisia tuloksia. Eli mukana 7 faktoria (marketCap, priceToBook, priceToSales, TotalAssetChange, operatingMargin, profitMargin, momentum). Jokainen faktori jakaa osakkeet kahteen yhtäsuuren osaan. Todennäköisyys että satunnainen osake on joka faktorilla paremmalla puolella on vain 0.78% (0.5^7). Yksikään Helsingin firma ei ole kaikessa paremmalla puolella, mutta on neljä lappua jotka saa 6/7 oikein: Tieto, Rapala, Aspo ja Saga Furs. Noista voisin jo ostaa kaikkia.

Yksikään firma ei saa 7/7 väärin, mutta löytyi kaksi osaketta jotka saa 6/7 väärin. Kamux ja SSH.

5 tykkäystä