Portfolion seurantatyökalu v2.0

26/08/2018

Viime vuoden lopussa asetin itselleni 2018 tavoitteeksi, että laitan salkkutyökaluohjelmani toimintakuntoon. Ohjelmahan lakkasi viime vuonna toimimasta, kun Yahoo muutti käytäntöjään ilmaisen osakekurssitietojen jakamisesta. Nyt onneksi verkosta löytyi korvaava koodinpätkä, jonka ansiosta kurssitiedot ovat taas ladattavissa.  Kiitos sen olen pystynyt työstämään salkkuohjelmaani ja viimein se näyttää jotenkin toimivalta. Ehkä joku saa siitä inspiraatiota oman ohjelman tekemiseen, kun sen nyt jaan. Joka tapauksessa salkkuohjelman kehitystyö on jatkuvaa ja pyrin korjaamaan sitä puutteita löytäessäni.

Salkkutyökalua en ole päivittänyt tavoitetta varten, vaan olen kokenut ohjelman hyödylliseksi useasta syystä:

  • Työkalun ansiosta salkun hajautumisen onnistumista pystyy visuaalisesti helpommin hahmottamaan. Lisäksi oman sijoitusstrategian etenemistä pystyy salkkutyökalulla helposti mittaamaan.
  • Salkkutyökalun kuvaajat paljastavat melko armottomasti ne salkun yhtiöt, jotka eivät oikein näyttäisi kuuluvan joukkoon. Vastaavasti uuden yhtiön sopivuutta salkkuun pystyy näppärästi tarkastelemaan salkkutyökalun avulla.
  • Visuaalisen hahmottamisen lisäksi korrelaatiomatriisi paljastaa osakkeiden keskinäiset riippuvuussuhteet, jotta hajautus olisi mahdollisimman tehokasta. Mitä vähemmän osakkeet korreloivat keskenään, sitä paremmin salkkuni on hajautunut.
  • Sijoitusharrastus on paljon mukavampaa, kun sijoittamista tarkastelee koko portfolion näkökulmasta (eikä vain yksittäisten osakkeiden ostamista). Myös VBA-koodailu on ihan mukavaa ajanvietettä varsinkin, jos sen yhdistää sijoittamiseen.

Päivitykset vanhaan versioon nähden

  • Input-sheet: Viime vuoden kesästä lähtien olen tasaisesti tehnyt pieniä lisäostoja omistamiini yhtiöihin. Entinen versio ei oikein tukenut tällaista lisäostojen mahdollisuutta. Nyt lisäsin Input-sheetille yhden uuden sarakkeen, jonka kautta kunkin osakkeen keskihinnan voi manuaalisesti käydä syöttämässä. Tämän tiedon saa kätevästi ainakin Interactive Brokersilta.    
  • Input-sheet: Päivitin analyysimalliani jokin aika sitten. Keskeiset muutokset vanhaan olivat dividend payout (osingon turvallisuus) sekä betan (liiketoiminnan riskisyys) huomioiminen analyysissä. Halusin ottaa nämä mukaan myös salkkutarkasteluuni. Muutoksen jälkeen viisi tärkeintä muuttujaa ovat osinko-%, osingonjakosuhde, beta, nettovelka / käyttökate sekä liiketoiminnan kasvu.
  • Output-sheet: tein pieniä muutoksia. Esimerkiksi salkun kokonaisarvon näkee nyt selkeämmin.
  • Statistics-sheet: Annualisoin tilastolliset muuttujat. Viikkokohtaisten osaketietojen haku ei oikein tahtonut toimia uudella VBA-koodilla, minkä vuoksi käytin päiväkohtaista dataa. Päiväkohtaisella datalla laskettuna tulokset eivät oikein tahtoneet kertoa mitään. Annualisoimalla (kerroin 252 tai keskihajonnan osalta neliöjuuri 252) tuloksista tuli mielestäni järkevämmän näköisiä.

Koodin toimivuudesta

Koneen asetusten muuttaminen

Koodailen VBA:ta ihan harrastusmielessä, minkä vuoksi ohjelman laatu on Nokian vanhojen puhelinten ohjelmien tasoa. Monista puutteistaan huolimatta ohjelma toimii pääosin ainakin kotikoneillani (Win7&Win10). Jotta osaketiedot saa haettu oikeassa formaatissa päivämäärän ja pilkun osalta, piti seuraavat asetukset laittaa voimaan:   

  • Singalsolverin koodin sisällä on ohje, joka piti asettaa voimaan. VBA DEVELOPER – > Tools -> References… MENU AND CHECK OFF “Microsoft WinHTTP Services”
  • Windowsin Control Panel -> Region and Language piti laittaa niin, että Format -> English (UK) / Additional Settings -> Decimal Symbol “,”
  • Excelin asetuksia pitu muuttaa niin, että Options -> Advanced -> Use System Sepator pitää ruksata pois päältä ja Decimal Separator pitää olla “,”.

Ohjelman manuaalisesti syötettävät arvot

Osaketiedot macro hakee Yahoo Financesta, joten ticker-tiedot joutuu kerämään yahoo.finance.com -sivustolta. Salkun arvot päivittyvät kiintein valuuttakurssein eli osto- ja myyntipäivät on kurssattu samalla kurssilla eli valuutan heilahtelulla ei pitäisi olla vaikutusta tuottoihin.

Työkalussa on kaksi keskeistä sheettiä Input sekä Currency. Currency sheetille pitää kirjata manuaalisesti kunkin euromääräisen vastin valuutan päivän kurssi.

Input-sheetille syötetään kaikki tiedot ja VBA-koodi tekee kaiken työn Output- sekä Statistics -sheetille. Alla on kerännyt Input-sheetin ”käyttöohjeita”. Näitä pitää noudattaa täsmällisesti, sillä muussa tapauksessa VBA-koodi ei toimi oikein. En jaksanut itseäni varten koodata error-käsittelyä.

Ohjelman lataaminen ja vastuurajoitus

Ohjelman voi ladata tästä Portfolio-Manager_BETAv23082018

Netistä ladattavissa makroissa voi aina olla viruksia. Itse en luonnollisesti ole mitään haitallista koodia kirjoittanut (en edes osaa). Ohjelmassa käytetään kuitenkin Signalsolverin koodin pätkää, joka ei parhaan ymmärrykseni mukaan sisällä mitään haitallista. Tämä koodi on kuitenkin monimutkaista, joten haitallisen koodin olemassa oloa ei voi täysin sulkea pois. Ohjelman voi ladata ja käyttää omalla vastuulla.    

VASTAA