sunnuntai 29. huhtikuuta 2018

Sijoitusten seurannan automatisointi Google Spreadsheetsilla

Tämä postaus on ollut jo vuosia blogin drafteissa, mutta en ole vain saanut aikaiseksi viimeistellä tekstiä. Nyt kuitenkin olen saanut viimeaikoina useammankin yhteydenoton toivoen vinkkejä taulukon tekemiseen, joten ajattelin jakaa tätä tietoutta eteenpäin.

Automatisointi on oikeasti melko helppoa eikä vaadi mitään koodarin taitoja, koska Googlen palvelu on tehty niin käyttäjäystävälliseksi. Suosittelen kaikille, jos ette vielä käytä!

Osaketaulukko

Itselläni kaiken datan perusteena on taulukko, jossa on osakkeet, niiden kurssit, hankintahinnat yms. listattuna. Vaihtoehtoja on niin paljon kuin artistejakin, mutta tämä on minun tapani.

-  Nykykurssi haetaan kirjoittamalla soluun funktio =googlefinance("TIKKERI"). Esimerkiksi Wal-Martin kurssitiedot haetaan funktiolla =googlefinance("wmt")

- Päivän muutos haetaan funktiolla =googlefinance("TIKKERI";"changepct")/100. Esimerkkinä Wal-Martin päivän muutos haetaan funktiolla=GOOGLEFINANCE("wmt";"changepct")/100

Kaikki muu minun osaketaulukossa on laskentaa, joka perustuu omaan dataan, kuten osakkeiden kappalemäärään ja niiden keskihintaan sekä niistä laskettuun arvoon tai vaihtoehtoisesti nykykurssista laskettuun sijoituksen arvoon.


Koska värikoodaus on mielestäni erittäin visuaalista, niin olen värikoodannut muutos päivässä %, voitto/tappio ja voitto/tappio % solut. Muutos päivässä % solun olen värikoodannut siten, että jos päivän kehitys on ollut positiivinen, eli yli 0%, niin teksti on vihreä ja jos negatiivinen, niin teksti on punainen. Sama juttu voitto/tappio soluille, mutta teksti on musta ja taustaväri on punainen / vihreä riippuen onko sijoitus voitolla vai tappiolla. Tämä tehdään maalaamalla solut joihin ehdollinen muotoilu halutaan ja painamalla hiiren oikeaa ja valitsemalla Ehdollinen muotoilu. Siitä aukeaa ikkuna, jossa voidaan lisätä sääntöjä painamalla Lisää uusi sääntö. Sitten vaan valitsemaan minkälaista muotoilua haluaa millekin arvoille.

Koska seuraan salkkuni euromääräistä arvoa ja osa sijoituksistani on muissa valuutoissa, täytyy myös reaaliaikaiset valuuttakurssit hakea taulukkoon. Ne haetaan funktiolla =googlefinance("currency:VALUUTTA1VALUUTTA2") Eli esimerkiksi jos haluan euron kurssin suhteessa dollariin, käytän funktiota =GoogleFinance("CURRENCY:EURUSD"). Tämän kurssin avulla voin muuntaa muissa valuutoissa olevat euromääräiseksi taas ihan perus excelistä tutuilla laskentafunktioilla.

Kaikkia tietoja ei valitettavasti saa googlefinance funktiolla, esim. Seligsonin tietojen tuomiseen käytän import html funktiota. Vien Seligsonin datan omalle laskentavälilehdelle tällä funktiolla =ImportHtml("http://www.seligson.fi/suomi/rahastot/FundValues_FI.html";"table";0) josta sitten haen normaaleilla excelin laskentakaavoilla taas tiedon ylläolevaan taulukkoon. ImportHtml funktio siis hakee taulukon, jossa se nettisivuilla sijaitsee. Tuo ; jälkeen tuleva 0 kertoo taulukon numeron. Tietyillä sivuilla se voi olla joku muu. Koska en ole mikään html koodin asiantuntija, niin itse olen vain yrityksen ja erehdyksen kautta saanut oikean taulukon näkyviin :). Lopputulos näyttää taulukossa tältä.

Salkun kehityksen automaattinen seuranta ja kaavion piirtäminen

Olen automatisoinut salkkuni seurantaa siten, että taulukko tallentaa salkun arvon omalle rivilleen joka arkipäivä. En siis halua, että viikonlopun päivät tulevat taulukkoon mukaan, joten taulukko tuo salkun arvot vain ma, ti, ke, to ja pe aamuyöllä klo 00-01 välisenä aikana.
Tältä näyttää sitten taulukko lopullisessa muodossaan.
Tämä ei ole enää ihan perus excelin pyörittelyä, vaan vaatii vähän korkealentoisempaa osaamista., eli pientä skriptin kirjoitustaitoa. Sitä osaamista minulla ei ole, mutta olen tämän koodin häikäilemättä plagioinut joltain toiselta sivustolta pienen googlettelun jälkeen. Plagioikaa siis vapaasti eteenpäin :).

Aloitetaan kuitenkin perusasioilla. Kun olet luonut oman välilehden tälle sijoitusten seurannalle, niin maalaa sarake A ja vaihda solun tyypiksi päivämäärä, koska ao. skripti tuo päivämäärän sarakkeeseen A. Samaten maalaa sarake B ja laita soluun euromääräinen valuutta, koska siihen soluun skripti kirjoittaa salkun euromääräisen arvosi.

Koodia pääsee kirjoittamaan valitsemalla Työkalut valikosta Ohjelman muokkaustyökalun. Tämä avaa uuden ikkunan, johon skriptin voi syöttää. Minun taulukon skripti näyttää tältä:

function addResult() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var portfolioSheet = spreadsheet.getSheetByName("Sijoitukset");
  var historySheet = spreadsheet.getSheetByName("Sijoitusten kehitys");

  // Fetch date and portfolio value 
  var value = portfolioSheet.getRange(3, 14, 1, 1).getValue();
  var date = new Date();

  // Calculate where to write new information
  var lastRow = historySheet.getLastRow();
  var dateCell = historySheet.getRange(lastRow+1, 1);
  var valueCell = historySheet.getRange(lastRow+1, 2);

  // Store values
  dateCell.setValue(date);
  valueCell.setValue(value);
}​

Tuohon skriptiin ei sen enempää kannata kiinnittää huomiota, vaan tärkeintä on tietää mitä sinun pitää muokata, että saat oman salkkusi seurannan toimimaan. Salkun seuranta on minulla omalla välilehdellä nimeltään Sijoitusten kehitys. Tuo alussa tehty osakeseurantataulukko on taas nimeltään Sijoitukset. 

- PortfolioSheet riville pitää kirjoittaa lainausmerkkien sisään sen taulukon nimi, mistä haetaan koko salkun arvo

- HistorySheet riville pitää kirjoittaa lainausmerkkien sisään sen taulukon nimi, mihin salkun arvo tuodaan joka päivä, eli siihen taulukkoon, mihin haluat sen täyttävän.

- Var value riville sulkujen sisään pitää kirjoittaa se solu mistä tietoa halutaan haettavan. Tämä ei toimi perinteisellä C14 solulla, vaan ensimmäiseen arvoon (minulla 3) kirjoitetaan mones rivi se on ylhäältä katsoen ja toiseen arvoon (minulla 14) kirjoitetaan mones solu se on vasemmalta lukien. Viimeiset 2 numeroa (minulla 1,1) en muista mitä niillä osoitetaan, mutta jos solussa ei ole mitään muuta kuin salkun arvo, niin 1,1 toimii.

Sitten kun tämä on tehty, pitää vielä määritellä milloin skripti kirjoittaa salkun arvon uudelle riville. Tämä tapahtuu painamalla kellon kuvaa työkaluriviltä. Tästä aukeaa ikkuna, johon sitten pitää syöttää ne ajat milloin skripti kirjoittaa salkun arvon. Kuten aiemmin mainitsin, niin minulla skripti kirjoittaa arvon joka arkipäivä klo 00-01. Minulla on siis joka päivälle oma aikataulu. Tämän jälkeen skripti on valmis. Skriptin toimimista voit testata painamalla työkalurivillä kellon oikealla puolella olevaa play näppäintä. Jos ja kun kaikki toimii, play näppäimen pitäisi kirjoittaa sen hetkinen salkun arvo ja päivämäärä omalle rivilleen.

Kuvaajan piirtäminen ja julkaisu omassa blogissa

Koska tykkään käppyröistä, niin tietysti datasta pitää saada päivittyvä kaavio. Kaavion tekeminen tapahtuu kuin missä tahansa muussakin. Kannattaa siis maalata sarakkeet A ja B ja luoda kaavio, jolloin kaavio ottaa kaikki A ja B sarakkeiden arvot kaavioon. Itse olen tähän sijoitusten seurantaan käyttänyt aikajanakaaviota, koska siinä voi kätevästi valita eri miltä aikaväliltä kuvaajaa tarkastelee.

Kaavion voit julkaista esim. blogissasi painamalla kaavion oikeasta yläkulmasta kolmea pistettä ja Julkaise kaavio. Itse olen tykännyt upottamisesta, jolla kaavio upotetaan blogiin. Kaavion voi julkaista joko kuvana, jolloin lukija näkee vain kuvan tai interaktiivisena, jolloin lukija näkee hiirellä tietyn kohdan tiedot kaaviosta, eli esimerkiksi salkun kehityksessä päivämäärän ja sen päivän arvon missä kohtaa hiiri kuvaajalla on.

Tämä sama julkaisutapa pätee siis kaikkiin kaavioihin ja vain taivas ja oma mielikuvitus on rajana mitä kaikkia kuvaajia haluat julkaista.


Loppusanat

Kuten on varmaan jo käynyt ilmi, minä tykkään kovasti kuvaajien ja taulukoiden kanssa näpertelystä. Ne tuovat itselle motivaation kannalta tärkeää visualisaatiota ja jotenkin tekevät koko projektista paljon konkreettisemman sekä salkun seurannasta paljon pienempitöisen.

Koska itse tein tämän automatisoinnin jo useampi vuosi sitten, niin voi olla että tekstissä on jotain virheitä. Mikäli joku kohta tökkii, niin autan mielelläni! Toivottavasti tästä tekstistä oli jollekin apua. Mielelläni näkisin teidän lukijoiden versiot omasta salkusta :)

maanantai 2. huhtikuuta 2018

Kuukausikatsaus - Maaliskuu 2018

Edit: oli unohtunut 1 osinko ja 1100 euron lomamatka tuloista ja menoista :) Am. teksti siis hiukan liian ruusuinen.

Pitkästä aikaa kuukausikatsauksen aika. Mietin ensiksi, että laitan tähän vertailuksi tilanteen mihin jäätiin, kun blogi jäi tauolle, mutta jätin sen nyt tekemättä.

Tulopuolella palkka oli etenkin maaliskuussa aika hurja, koska se koostuu vain allekirjoittaneen palkasta. Kuten edellisessä postauksessa kerroin, niin vaimo on nyt kotona hoitamassa lasta ja saa Kelalta tukea, joka näkyy muut tulot sarakkeessa. Ihan noin kovapalkkainen en sentään peruspalkaltani ole, että saisin lähes 4 000 euroa nettoa, vaan se sisältää lähes 1 000 euroa ylitöitä.

Jos tulot olivat korkeat, niin samaa olivat myös menotkin. Helmikuussa maksettiin kesän ulkomaanreissu ja maaliskuussa taas ostettiin mm. uudet rattaat ja ostettiin muutama vähän kalliimpi lahja.

Silti säästöön jäi ihan mukava summa ja vuoden 2018 keskimääräinen säästöprosentti on lähes 40%. 40% voisi olla ihan hyvä tavoite tälle vuodelle, koska toukokuussa tulee taloon isompi remontti.

Sijoitukset ovat polkeneet nyt 2 kuukautta euromääräisesti täysin paikoillaan, vaikka uutta pääomaa lisäsin salkkuun 2 500 euroa. Salkun arvonkehitys on ollut luvattoman huonoa ja indeksiltä on otettu takkiin ihan urakalla. Syynä tähän ei ole mikään muu, kuin huonot sijoitusvalinnat. Pahimpina pettymyksiä ovat olleet mm. Realty Income Corporation, Telia ja Verkkokauppa.com. Tässä kostautuu nyt pahasti ajanpuute, kun ei ole ehtinyt perehtymään sijoituksiin, niin fiilispohjalta tehdyt ostopäätökset eivät ole onnistuneet. Salkku on tänä vuonna lasketellut 4,44 %, joka itsellään ei haittaisi, mutta kun esim. OMXH25 on noussut samana aikana, niin se harmittaa. Pitäisi vain pitäytyä indeksisijoittamisessa, mutta se on vaan niin tylsää :).

Nettovarallisuudessakaan ei merkittäviä muutoksia ole tapahtunut. Lisäsin taulukkoon asuntotilin, jossa meillä on puskuria kerätty remontteja varten. Muita tilejä en ole vain jaksanut käydä läpi, koska niitä on niin paljon eri paikoissa, mutta siellä olisi vielä "blogilta piilossa" olevia rahoja ehkä n. 20 000 euroa. Näille rahoille pitäisi keksiä joku parempi kohde, kuin pankkitili ja toivottavasti tämä blogi tuo siinä mielessä allekirjoittaneeseen vähän ryhtiä. Rahaa on vain jotenkin kertynyt ja sitä on tarkoituksella säilötty vähän ekstraa tulevien vuosien isoja remontteja varten, joten en ole niitä pörssiin viitsinyt pistää. Olenkin miettinyt, että kokeilisin Bank Norwegianin talletustiliä, josta saa hiukan paremman koron näin lyhytaikaiselle sijoitukselle.

Onko lukijoilla vinkkiä mihin kannattaisi laittaa 1-2v ajaksi hautumaan rahaa?

Alla vielä mennyt kuukausi purettuna numeroiksi.



Maaliskuu 2018Helmikuu 2018
Tulot5 945,27 €5 733,87 €
Palkkatulot3 916,72 €3 442,89 €
Pääomatulot103,32 €15,30 €
Sivutulot5,39 €65,00 €
Kulukorvaukset0,00 €0,00 €
Muut tulot1 919,84 €2 210,68 €
Menot5 064,11 €4 316,38 €
Tulot - Menot881,16 €1 417,49 €
Säästöprosentti14,82%24,72%
Keskimääräinen säästöprosentti33,77%42,36%
Sijoitukset75,17 € / +0,19 %-50,12 € / -0,12 %
Arvo kuun lopussa40 488,78 €40 413,61 €
Lisätty pääoma1 178,56 €1 315,98 €
Lisätty pääoma yhteensä32 087,27 €30 908,71 €
Arvonnousu−1 103,39 €−1 366,10 €
Arvonnousu%−2,73%−3,38%
2018 TWR−4,42%−1,74%
Nettovarallisuus135 194,22 €134 197,12 €
Asunto275 000,00 €275 000,00 €
Sijoitukset40 488,78 €40 413,61 €
Asuntolaina−192 413,97 €−193 053,14 €
Opintolaina−1 429,16 €−1 465,70 €
Asuntotili13 548,57 €13 302,35 €