R-ohjelmointi ja sijoittaminen

Tuo onkin mielenkiintoinen ajatus! Se on kyllä tosi mielekästä lähteä hakemaan tulevalle tuollolle realistista ylä- ja alarajaa. Se varmasti jäsentää hyvin omia sijoituspäätöksiä. Pitääpä itsekin pohtia, pystyisikö rakentamaan jotain siltä pohjalta. :slight_smile:

Tuosta tuli mieleen, että oletko muuten perehtynyt sijoitustuottojen simutaaltiomalleihin? Luin puolitoista vuotta sitten mielenkiintoisen postauksen “Säästäminen kannattaa, rikastuminen on vaikeaa” Säästäminen kannattaa, rikastuminen on vaikeaa - AkavaWorks Siinä laskettiin 4%:n tuotolla ja ± 15%:n keskihajonnalla tuottoja 30 vuoden sijoitushorisontilla. Ilmeisesti tuo on Monte Carlo -tyyppinen simulaatio. Itse kritisoisin sitä, että onko oikeutettua olettaa, että jokaisen peräkkäisen vuoden tuotto on normaalisti jakautunut, kun kuitenkin usein isompia laskuja seuraa kuitenkin nousu… En tiedä onko sillä väliä pitkällä aikavälillä. Menee toki vähän off-topic enkä tiedä, onko mielestäsi kiinnostava aihe, mutta ainakin noita simulaatioita on R:llä helppo laskea… :smiley:

1 tykkäys

Hyvinkin mielenkiintoinen aihe. Pitkällä aikavälillä tuoton pitäisi kuitenkin mennä kohti keskimääräistä 4% tuottoa. En nyt tarkalleen muista mutta olisko normaalijakauma tarkoittanut, että tuotto olisi suunnilleen:

68% vuosista 4% ± 15%
95% vuosista 4% ± 30%
98% vuosista 4% ± 45%

Benoit Mandelbrot(Huonosti käyttäytyvät osakkeet) on aika selvästi osoittanut ettei osaketuotot ole normaalisti jakautuneet. Suunnilleen joka päivä toteutuu tuottoja joita ei pitäisi esiintyä lähes koskaan. Vaikka lasketut kesihajonnat ei täysin pitäisikään paikkaansa ni voi ne silti olla parempia kuin ei mitään.

Tidyverse tekee kyllä R:n käyttökokemuksen uskomattoman paljon miellyttävämmäksi ja omat koodit tukeutuu vahvasti paketin toimintoihin. Yksi pieni, mutta olennaisesti elämää helpottava operaattori on magrittr-paketin piippu %>%, jolla pystyy tekemään pitkiä komentosarjoja erillisten rivien sijaan. Siihen kannattaa myös tutustua jo R-uran alkuvaiheessa.

Itse opettelin R:n käytännössä yrityksen, erehdyksen ja stack exchangen kautta. Jälkikäteen ajateltuna ei ollut mitenkään optimaalinen polku ja moni itsestäänselvyys tuli opeteltua liian myöhään, esim. omien funktioiden kirjoittamisen hyödyllisyys ja laajempien analyysien jako eri skripteihin. Jälkiviisaana suositten vahvasti jonkun kirjan/kurssin läpi käymistä.

Tämmöiseen kanavaan törmäsin eilen, jossa tehdään jonkinlaista portfolioanalyysiä R:llä Quant Finance with R Part 2: Portfolio Analysis - YouTube . Vaikuttaa ihan pätevältä lähteeltä ja paljon porukka näemmä videoista tykännytkin.

Oma sijoitusmenestys on toistaiseksi ollut vaatimatonta ja taitaa olla ne kuuluisat oppirahojen maksut vielä kesken. Osin tämänkin takia haluaisin viedä osakkeiden valintaa systemaattisempaan suuntaan. Ymmärrän, että pelkän tunnuslukujen avulla ei kohteita pysty valitsemaan, mutta jonkinlaista seulontaa kuitenkin.

Luin äskettäin Dhando Investor-nimisen opuksen (suosittelen), jossa oli mainittu joitain menetelmiä, jolla löytää potentiaalisesti kiinnostavia kohteita. Esim. ”The Magic Formula” kirjasta The Book That Beats The Market (What Is Magic Formula Investing?). Toinen helposti implementoitava oli haravoida osakkeet, joiden kurssi on kuluneen viikon aikana saavuttanut vuoden minimin. Yksi idea projektille olisi vaikkapa katsoa kootusti millaisia yhtiöitä nousee Helsingin pörssistä esille näillä ja muilla kriteereillä.

Nämä olisi helppo koodata R:llä, jos nuo tunnusluvut saa kätevästi haettua ja niistä voisi saada aika hienonkin automaattisesti päivitettävän raportin R markdownilla tai R shinyllä. Yllä mainittu BatchGetSymbols on muuten kätevä kurssihistorioiden hakemisessa ja jos joku tietää vastaavan tunnuslukujen hakemiselle, niin saa vinkata!

Olen väitöskirjan ohjaajaltani omaksunut vahvasti avoimen tieteen periaatteita, eli jos joskus saan jotain viritelmää aikaiseksi, niin tarkoituksena on laittaa se yleiseen jakoon. Täysin eri asia tietenkin, saako koskaan mitään oikeasti hyödyllistä aikaiseksi :grin:

4 tykkäystä

Haluisitko hieman avata, millaisesta mallista on kyse?

Olen itse jotain aikasarjamalleja yrittänyt sovitella käppyröihin. Ihan perus AR(p) prosesseja toistaiseksi vain, enkä ole niistä oikein mitään viisastunut.

Joskus mietiskelin, että olisin projektina käynyt systemaattisesti läpi finanssianalyyseissä käytettyjä stokastisia prosesseja (AR(p ), Ornstein-Uhlenbeck, CKLS, Black-Scholes ym.) ja sovitellut niitä aikasarjoihin. Hyöty olisi luultavasti lähinnä pedagoginen, mutta CV:ssä kuitenkin hyvältä näyttävä.

1 tykkäys

Suunnileen tällaista

  1. Ensin kerätään yhtiöistä tarvittava tilinpäätöstieto ja kurssitiedot
  2. Kohdistetaan tilinpäätöstiedot oikeille päiville
  3. Lasketaan päivittäiset tunnusluvut joita halutaan käyttää
  4. Jokaiselta päivältä tunnetaan nyt tunnusluvut ja tiedetään myös miten kurssi on tämän päivän jälkeen kehittynyt
  5. Jokaiselle päivälle halutaan löytää sijoittamista parhaiten tukeva tuottoennuste ja keskihajonta
  6. Jos käytetään vaikka kolmea tunnuslukua niin jokaiselle päivälle pyritään tietojen avulla muodostamaan esim. 100 tunnusluvuiltaan vastaavaa, mutta lopputulokseltaan todennäköisesti erilaista skenaariota. Kolmelle tunnusluvulle annetaan raja-arvot joiden välissä tunnusluvun pitää olla. Jos löydetään vain 50 vastaavaa tilannetta niin kasvatetaan raja-arvoja kunnes 100 on täynnä.
  7. Jokaisen vastaavuuden avulla lasketaan keskimääräinen annualisoitu kurssikehitys, keskihajonta ja Sharpen luku. Esimerkiksi kurssi nousee annualisoituna 4% keskihajonta 10% → Sharpen luku 0,4
  8. Valitaan suurimman Sharpen luvun perusteella tuottoennuste ja keskihajonta
  9. Mitä pienempi erotus on toteutuneen tuoton ja tuottoennusteen välillä on keskimäärin, sitä parempi ennustemalli
  10. Laaditaan sijoitussuunnitelmia ja simuloidaan sijoitussalkun kehitystä. Tässäkin on tosipaljon valinnanvaraa erilaisissa suunnitelmissa.

Kohtalaisen työläs ja paljon pikkujuttuja. Sitten pitää vaan toivoa, että osakkeet hinnoitellaan suunnilleen samalla tavalla kuin ennenkin.

5 tykkäystä

Projekti vähän edennyt ottamalla koneoppimista mukaan prosessiin. Tuottoennusteen valinnassa on käytetty kolmea eri perustetta, joita kehitetään tällä hetkellä yhdessä. Kierroksella on aina muutettu joitakin parametreja, josta saadaan tietoa miten muutos vaikuttaa suorituskykyyn.

3 tykkäystä

Nordnetissä voi tehdä kauppaa ohjelmallisesti esimerkiksi kontrolloimalla hiirtä ja näppäimistö. Python-kansioon on tallennettu kuvakaappaustyökalulla kuvan yläosassa näkyvät tiedostot. Koodissa pari ensimmäistä vaihetta.

2 tykkäystä

Ois varmaan näppärämpi käyttää selenium pakettia, jos näin haluaa automaattisesti treidailla.

2 tykkäystä

Teknisestihän onnistuu, mutta virallisesti Nordnetin säännöt kieltää tuon:

https://www.nordnet.fi/robots.txt

User-agent: *
Disallow: /yleisnakyma
Disallow: /tapahtumat
Disallow: /luotot
Disallow: /tietamystesti
Disallow: /viimeisimmat-kaupat
Disallow: /seurantalistat
Disallow: /kuukausisaastaminen
Disallow: /yhtiotapahtumat
Disallow: /rahansiirrot
Disallow: /salkkuraportti
Disallow: /pension-information
Disallow: /vuositiliote
Disallow: /asetukset
Disallow: /viestit
Disallow: /avaa-tili
Disallow: /palkkioluokat
Disallow: /kulutiedot
Disallow: /etsi
Disallow: /rahasto-vaihtotoimeksiannot
Disallow: /valuutat
Disallow: /arvio
Disallow: /pensionsavings
Disallow: /avtal-och-abonnemang
Disallow: */toimeksianto/myy
Disallow: */toimeksianto/osta
Disallow: */mediaapi/historical/csv/

Eli mitä voisi tapahtua on se, että Nordnet huomaa sun automaation ja pistää sulle cease-and-desistin, joko virallisena tai epävirallisena. Jos ovat oikein “saksalaisia”, niin lyövät sun tilin lukkoon.

5 tykkäystä

Oma kaupankäynti on kyllä sen verran pienimuotoista, että ehtii kyllä tekemään toimeksiannot ihan manuaalisestikin. Ei tullut kyllä ees mieleen, että vois olla kiellettyä.

https://api.test.nordnet.se/ API:n kautta kautta olis sitten ilmeisesti sääntöjen mukaista, vai miten tää nyt oikein toimii?

Siltä näyttää. Tosin tuon ohjeissa (kun sen linkin avaa) lukee kaksi tärkeää seikkaa:

The API in production is currently only available for Swedish customers .

Ja:

Pricelist for Nordnet External API in production
Production access will be granted after a completed certification process which starts with reading and understanding Potential risks to consider.

Eli oikea käyttö (siis oikeat ostot/myynnit) vaatii tuon sertifikaatin (tarkoittavat varmaan cer/crt-tiedostoa) ja maksun.

1 tykkäys