R-ohjelmointi ja sijoittaminen

Hei!

Harrastan sijoittamista ja R-ohjelmointia puhtaasti siksi, että molemmat ovat hauskoja ja hyödyllisiä harrastuksia. En löytänyt täältä ketjua R-ohjelmoinnista liittyen sijoittamiseen. Tämä indikoi ensisijaisesti sitä, että aihe ei ole kuuma. Olen kuitenkin kuullut, että ihan Wallstreetilläkin sitä käytetään. :slight_smile: Potentiaalisesti näkisin R-kielen kiinnostavana aiheena sijoittavalle ihmiselle.

Olen googlesta ja youtubesta käynyt läpi sijoittamiseen liittyvää R-ohjelmointimateriaalia ja tutustunut quantmod ja PerformanceAnalytics -paketteihin. Paketit ovat sinänsä hienoja, mutta eivät ehkä istu ihan omaan tarpeeseeni. On toki siistiä voida piirtää kurssikäyriä Yahoosta tms ladatun kurssidatan perusteella.

Olen määritellyt ensimmäiseksi sijoittamiseen liittyväksi projektiseni tehdä pienimuotoisen Rmarkdown -dokumentin, jolla saan yhteenvedon omista sijoituksistani. Ajattelin tehdä sen niin, että lataan Nordnetista kaupat ym. tapahtumat ja syötän käsin viimeisimmät kurssit. Tulosteena pitäisi tulla tilastoja omista vuosituotoista ihan taulukkomuodossa. Toki käyrät olisivat siistejä, mutta ei taida olla realismia saada mitenkään jouhevasti kaikista suomalaisista pienyhtiöistä käypää kurssidataa ainakaan ilmaiseksi yhdestä paikasta?

Olisi mukavaa kuulla, onko täällä foorumilla muita R-kielestä innostuneita sijoittajia? Lisäksi kuulisin mieluusti kirjavinkkejä, blogi/youtube-video ym. aiheeseen liittyen. Käytän mielelläni Tidyverse -kirjastoa ja aina parempi, jos esimerkit ovat sillä toteutettuja.

12 tykkäystä

Mielenkiintoinen ketju! Nykyään kun Python on yksi suosituimmista ensimmäisistä ohjelmointikielistä ja hyvin laajasti osattu kieli, niin haluatko avata mikä tekee R-kielestä kiinnostavan sijoittajan näkökulmasta. Tuoko R-kielen osaaminen jotain erityistä etua vai onko kyse lähinnä preferensseistä? Tiedän että jotkut MATLAB/Octave -hemmot ovat kokeneet R-kieleen siirtymisen olevan helpompaa. Olen myös ymmärtänyt että tilastotieteen syvimmissä syövereissä R omaa jonkinlaisen kilpailuedun Pythoniin, mutta harva meistä päätyy niin syvälliseen osakeanalyysiin :smiley:

2 tykkäystä

Mukavaa, että keskustelu alkoi! Itse en ole perehtyntyt Pythoniin, mutta olen lukenut joitain blogi-tekstejä, joissa kieliä on verrattu lähinnä data-analytiikan näkökulmasta ja ilmeisesti molemmilla saa kyllä asian hyvin hoidettua. Ymmärtääkseni Python on monipuolisempi, jos haluaa kehittää ohjelmistoja. Itseäni kiinnostaa enemmänkin tilastotiede ja R:ää on mielestäni miellyttävä käyttää, kun dataa on mukava pyöritellä ja tuloksia/kuvaajia saa ulos pienellä määrällä koodia ja ei-ohjelmoijana koodia on aika helppo tuottaa. Tämä on se alue, mikä itseäni erityisesti kiinnostaa. Jos haluaisin tehdä varsinaisesti sovellutuksia, niin sitten varmaan miettisin jotain muuta kieltä. Jos ei ole perehtynyt kumpaankaan kieleen, niin itse kyllä toki vakavasti pohtisin, että mihin voimavarat kannattaa laittaa. :slight_smile:

2 tykkäystä

Oletko tutustunut tähän?

2 tykkäystä

Itse en koodaamisesta yms tiedä ainakaan toistaiseksi mitään mutta tuo R-kieli on kyllä tullut vastaan yliopiston kurssivalikoimassa ja vaikuttanut mielenkiintoiselta. Entistä mielenkiintoisempaa jos siitä voisi olla jotain hyötyä sijoittamisen kannalta tai omien lukujen pyörittelyssä :grin:

2 tykkäystä

Entisen työkaverin kanssa juteltiin paljonkin ML hyödyntämisessä osakkeisiin, mutta on se vähän siinä ja siinä voiko malleista hyötyä oikeissa osakeostoissa. Varsinkin jos ei pääse reaaliaika-APIin/Apeihin kiinni.

Enemmän hyötyä voisi tulla omien analysointien tukemiseen (custom-käppyrät ja toteutukset). Siihen löytyy varmasti R ja Pythonista hyvät mahdollisuudet :slight_smile:

2 tykkäystä

R:stä on kaiken lisäksi tehty plug-in Pythoniin, niin en näe miksi R:ää pitäisi käyttää. Ehkä se on helpommin opittavissa kun käyttää R-Studiota, mutta muussa tapauksessa opiskelisin Pythonia.

1 tykkäys

Tätä on muutama muukin varmasti miettinyt. Omissa kokeiluissani olen todennut, että ajatuksena simppeli, toteutuksena lähestulkoon mahdotonta kotikonstein. Näkisin suurimman hyödyn siten, että hyödyntää teknisiä signaaleja päätöksenteon tukena, eli koodaa skriptin ilmoittamaan, milloin itseään miellyttävissä osakkeissa itseään miellyttävät signaalit toteutuvat, niin ei tarvitse itse aktiivisesti tutkailla kursseja.

Mainittakoon, että useampikin Google Trendsejä tutkinut kovan tason tutkija on tullut johtopäätökseen, että vaikka ihmisten hakukäyttäytymiset tarjoavatkin huikeita signaaleja ja äärimmäisen kiehtovaa informaatiota, on niiden muuttaminen rahaksi erittäin haastavaa ellei jopa mahdotonta. Suosittelen harjoituksena koodailemaan twiittisentimenttianalysaattoreita ja muita vastaavia, muttei kannata odottaa, että niillä pääsisi kovinkaan helposti rahoiksi lyömään.

Itse miettinyt viime aikoina, että jos olisi joustava pääsy Inderesin foorumidataan (ei viitsisi scrapeta koko sivustoa…), niin olisi mielenkiintoista kaivaa trendaavat firmat ja sentimentin/aktiivisuuden kehittyminen eri firmojen ympärillä, ja tutkiskella, joskohan sieltä saisi jotain signaalia. Yleisestihän Vernerin, mallisalkun yms peesaaminen lienee ollut tämän nousukauden yksi menestyneimmistä trendeistä. Myös perinteiset osta-suosituksen omaavien yhtiöiden tai posarin antaneiden firmojen ostaminen ovat olleen varsin menestyneitä strategioita.

Mainittakoon myös, että ihan Inderesin käyttäjäkyselyn pohjalta listan kärjessä trendaavien firmojen suosiminen on ollut varsin kannattavaa: Ilmeisesti tuulipukusijoittajien parviäly on toiminut nousukautena varsin hyvin. Mielenkiinnolla odotan, miten seuraavan laskukauden ja romahduksen aikana Inderesin suosimat kasvuyhtiöt tulevatkaan pärjäämään: Liekö siinä vaiheessa isot, vakaat ja tylsät Keskot, Elisat ja Koneet vahvoilla, vai lyökö Inderesin mallisalkku nyt ja aina indeksin?

Mielenkiinnolla odotan myös, joskohan seuraavan parinkymmenen vuoden aikana osaketreidauksessa, nettipokerissa ja muissa vastaavissa päästään kannattaviin malleihin ihan puhtaan reinforcement learning in tai vastaavan avulla. Netistä löytyy erittäin mielenkiintoisia open source -projekteja aihepiiristä kiinnostuneilla (esimerkkinä TensorFlow-pohjainen TensorTrade, joka pyrkii omatoimisesti oppimaan kannattavia treidaus-strategioita. Harrastelijakunta on kohtalaisen kokoinen ja osaamistaso erinomainen, mutten ole kuullut, että silläkään saralla kukaan olisi tähän päivään mennessä rahoiksi lyönyt - tai ei ole ainakaan ääneen asiasta huudellut).

Jos pelkkää data-analytiikkaa haluaa pyörittää, lienee ihan se ja sama, ottaako haltuun R:n vai pythonin (tai kenties javascriptin). Jos haluaa omaa salkkua seurailla, javascriptillä on varsin helppo tehdä erittäin tyylikkäitä plottauksia, joita voi kotikoneelta pyöritellä ja seurailla. Jos haluaa ML:ää pyöritellä, kannattaa samantien kääntää katse pythonin suuntaan. Useimmat näkemäni quantitative analytics -kurssit ja -ohjelmat opetetaan nimenomaan pythonilla. Isojen poikien alan työilmoituksissa taitaa poikkeuksetta lukea “advanced knowledge in python and/or R”, joten en lähtisi hirveästi erottelemaan aihepiirin keskustelussa R:ää pythonista.

7 tykkäystä

Fundamenttianalyysissä ohjelmoinnista saa hyvin hyötyä, kun ei jatkuvasti tarvi olla laskemassa tunnuslukuja. Toki ihan Excelilläkin onnistuu yksinkertaisimmat toteutukset. Ei tarvi myöskään olla päääsyä ihan tuoreimpaan kurssidataa, kun sijoitushorisontti on vähän pidempi. Tunnuslukujen mukaan voi sitten sorttailla osakkeita haluamallaan tavalla tai tehdä jotakin muuta. A Five-Factor Asset Pricing Model A Five-Factor Asset Pricing Model by Eugene F. Fama, Kenneth R. French :: SSRN voisi olla hyvä tutustua niin näkee yhden lähestymistavan.

3 tykkäystä

Kokeile R:n pakettia BatchGetSymbols. Teknisiä mittareita jos tarvitset niin R:n TTR-paketti on toimiva.

3 tykkäystä

Kiitos vinkistä, en ollut. Tuo Jupyter Notebook vaikuttaa kiinnostavalta projektilta ja näyttää tukevan myös R-koodia. Hienoja kuvia, jotka näyttävät ggplotilla piirretyiltä, mikä on ehdottomasti plussaa. Juuri tuon tyyppistä kertasilmäyksellä informatiivista grafiikkaa olisi mukava luoda omasta salkusta. :slight_smile:

1 tykkäys

Se kyllä lisää motivaatiota esim. tutkielman analyysien teon suhteen, jos löytyy synergioita sijoittamisen puolella… :wink:

1 tykkäys

Tänks, noihin pitääkin perehtyä… :slight_smile:

1 tykkäys

Täällä voi sit käyttää code blockeja jos haluu jakaa jotain. Noi 3 backtickiä.

public class CodeFormatting {
    public static void main(String[] args) {
        System.out.println("I can format code now!");
    }
}
4 tykkäystä

Hyvä ketju. Kävin joskus R alkeet Datacampin kautta, oli ihan ok muistaakseni alkeisiin.

2 tykkäystä

Tuo on juuri se, mitä olen hakemassa. Kun saan oman salkun perustilastojen analysoinnin kuntoon, niin yritän kehitellä oman yhtiöanalyysin/perehtymisen workflow:n, jossa hyödyntäisin Inderesin tuottamaa dataa ja piirtelisin siihen sitten omia kuvaajia ja taulukoita sen ja yhtiön tarjoaman datan pohjalta. Että ei mitään hienompaa koneoppimisjuttua, vaan ihan perus pitkän tähtäimen sijoittamista, jota ajattelin helpottaa omien R-skriptien/RMarkdown-dokumenttien avulla. :slight_smile: Mielenkiintoinen artikkeli ja Web of Sciencen viittausmäärän perusteella ilmeisen kiinnostavana pidetty. Ei ihan helppolukuinen, mutta pitääpä perehtyä. Onhan Fama näitä talou-podcasteissakin toisteltuja tunnettuja asiantuntijoita.

1 tykkäys

Itsellä tuohon on vielä matkaa, mutta jos joku fiksumpi haluaa koodia jakaa, niin olisi todella mielenkiintoista perehtyä… :slight_smile:

1 tykkäys

Hienoa, että foorumilta löytyy kiinnostusta myös astetta kvantitatiivisempaan analysointiin!

Noista eri kielten eroista olen viisaampien kertoman perusteella ymmärtänyt, että R:n vahvuudet (vs. Python) ovat

  1. ketteryys eksploratiivisessa data-analyysissä. R:llä monien pikkujuttujen tarkistaminen käy nopeasti, kun dataan haluaa tutustua, eikä ole vielä ihan selvillä, että mitä halutaan oppia ja millä metodeilla. Myös plottausmahdollisuudet ovat R:ssä ensiluokkaiset (ggplot2).

  2. pakettien valtava määrä. Lähes mitä tahansa R:llä haluaakin sitten sitten tehdä, niin joku muu on sen jo tehnyt todennäköisesti tehnyt ja valmiit funktiot löytyy, kun sopivan paketin vain etsii.

R:n huonoja puolia taas käsittääkseni ovat vaikeahko syntaksi ja hitaus raskaampien analyysien kanssa. Lisäksi Pythonilla voi tehdä muutakin kuin data-analyysiin liittyvää ohjelmointia, eli siinä mielessä monipuolisempi kieli.

Olen itse käyttänyt R:ää (ja Stania) nyt muutaman vuoden ajan väitöskirjaa vääntäessäni ja alkanut miettiä voisiko karttuneita työkaluja käyttää myös orastavassa sijoitusharrastuksessa. Vastausta en tiedä. On ollut tarkoituksena lukea joku ML + finance oppikirja, mutta vielä ei ole saanut aikaiseksi. Vaikutelmani kuitenkin on, että melko haastavaa koneoppimisen/tilastotieteen soveltaminen sijoittamisessa on, varsinkin kun käytettävissä on vain äärellinen määrä aikaa ja jatko-opiskelijan budjetti.

Kuitenkin ihan harrastusmielessä ja mahdollisesti myöhemmin myös työllistymisen kannalta olen mietiskellyt, josko jotain projektia saisi jossain vaiheessa viriteltyä. Ihmeempiä visioita ei tällä hetkellä ole, mutta täytyypi katsoa tuo yllä linkattu paperi ja koneoppimisketju, jos niistä saisi jonkun kimmokkeen. Jos jollain on hyviä ideoita, niin saa vinkata! Myöskin, jos jollain on kiinnostusta leikkimieliseen yhteisprojektiin, niin sellainenkin voisi olla hauska kokemus :slight_smile:

2 tykkäystä

Oon tehny osaketuottoa ennustavaa mallia, jossa päivittäisen kurssitiedon ja tilinpäätöstietojen avulla luodaan ennuste. Min ja max tarkoittaa ennustettua kurssikehitystä vähennettynä/lisättynä riskillä(ennusteen keskihajonta). Sharpe on sitten ennustettu tuotto jaettuna riskillä ja sen suurimman arvon perusteella valitaan tuottoennuste ja siihen liittyvä riski.

Sitten simuloinnin ja sijoitussuunnitelman avulla määritellään kuinka paljon näillä tiedoilla sijoitetaan. Sijoitussuunnitelmaan verrataan tasahajautukseen, jossa osakkeisiin sijoitetaan tasasumma.

1 tykkäys

Loistavaa! :slight_smile: R:ssä on paljon hyviä puolia, mutta jonkinlaista historian painolastia base R:ssä on, mikä ilmenee joiltain osin epäjohdonmukaisuutena. Tätähän ymmärtääkseni ainakin tidyverse:n ja RStudion kehittäjä Hadley Wickham kritisoinut ja ilmeisesti haluaisi tehdä kokonaan oman R:n tidyversen ympärille…? :slight_smile: R on korkean tason kieli ja muutamalla koodirivillä pystyy tekemään tosi vaikuttavia asioita, jos osaa. Miinuspuolena on, että se on pirullisen hankalaa ainakin aluksi sisäistää. Tarkoitan esim. purrr -paketin iteriontifunktioita. Ja kyllä base R:n lapply ja sapply pistää myös aivosolut kuumenemaan. En sinänsä kaipaa kuitenkaan paluuta siihen, että pitäisi itse varata muistiavaruutta, jos haluaa luoda muuttujan. :smiley:

Itse opiskelin R:n perusteet swirl-paketin ja netistä löytyvän materiaalin avulla. Sitten luin Hadley Wickhamin ja Garrett Grolemundin R for Data Science -kirjan (löytyy ihan vapaasti saatavilla). Sitä lukiessa aluksi mietin, että enhän ymmärrä R:stä mitään. :smiley: Mutta tuo tidyverse-maailma on ihan omanlaisensa paikka. Ja miellyttävän johdonmukainen. Tuo kirja on mielestäni tosi hyvä sekä oppikirjana, että hakuteoksena ja sitä tulee aina selattua, kun tulee joku ongelma vastaan. Suosittelisin sitä kaikille, jotka ovat kiinnostuneet R:stä.

Itse ajattelin edetä projekti kerrallaan ja ajankohtaisesti on työn alla oman vaatimattoman “portfolion” tuottojen laskeminen. Olen käynyt mielestäni koko googlen läpi ja perin hämmästynyt siitä, että ilmeisesti kukaan ei ole nähnyt tarpeelliseksi laskea omia tuottojaan R:llä (ja antaa koodiaan muiden nähtäville)? Tai muutenkaan. Paras lähtökohta on mielestäni Portfolio Management with R (PMwR) - paketti. Mutta sekin on aika keskeneräinen. Siinä pystyy muodostamaan “journalin” eli pistämään tapahtumat taulukkoon, mutta sitten, kun pitäisi alkaa laskea tuottoja, niin tätä objektia ei ilmeisesti voi suoraan käyttää, vaan paketin funktiot haluavat parametreiksi pelkkiä vektoreita esim. hinnoista. Johtopäätökseni on se, että ilmeisesti kiinnostavampana pidetään laskea erilaisten osakkeiden ja rahastojen tuottoja niin, että niitä ei itse oikeasti omisteta, vaan luodaan joku teoreettinen portfolio. :smiley:

Työllistymisen kannalta se voisi olla hyvä lisä CV:hen, jos olisi esittää githubissa omia hienoja koodausprojekteja… :wink:

1 tykkäys