Blog over (financieel) bewust leven

Label: programmeren

Mijn spreadsheets, een businesscase

Nog even over mijn spreadsheets… Want daar zijn grootse plannen mee. 2020 wordt hét jaar. Zei ik begin dit jaar. En ondertussen bekende ik bij de tussenstand van de jaardoelen dat er nog geen letter code geschreven is. Wat er wel geschreven is zijn nieuwe functies in de administratie en zelfs een totale verbouwing van mijn 48 grafieken. Hoe zit dat?

Kort en goed. Ik twijfel. Ik twijfel over de haalbaarheid van deze Herculeaanse taak. Vier spreadsheets zitten er in mijn universum: de administratie, de beleggingen, de hypotheek en het dashboard. Stapsgewijs opgebouwd sinds 2014. Sinds de basisversies zijn gebouwd heb ik meer dan 250 grotere en kleinere aanpassingen doorgevoerd (daar houd ik uiteraard een lijst van bij). Sommige kostten een half uurtje, anderen meerdere dagen. Ik durf de stelling aan dat er sinds 2014 meer dan duizend Geldnerd-uren in deze spreadsheets zijn gaan zitten.

En ik weet eenvoudigweg niet of ik dat nog een keer op kan brengen.

In 2014 en 2015, in het Verre Warme Land, had nam ik de tijd. De tijd om mijzelf echt nieuwe vaardigheden te leren. Boeken en artikelen te lezen over programmeren in Visual Basic. Te oefenen. Dagenlang en nachtenlang door te halen om de uitdagingen die ik tegenkwam op te lossen. Mijn spreadsheets zijn niet ontworpen, ze zijn organisch gegroeid. Pas na de basisversies is er stapsgewijs structuur in gekomen. Maar dat is een proces dat nog steeds doorloopt.

Dus ben ik nu aan het rationaliseren. Stel dat ik mijn spreadsheets nog 40 jaar gebruik? En per jaar € 55 betaal voor het gebruik van Microsoft Office? Dan ben ik dus € 2.200 kwijt om de huidige spreadsheets te blijven gebruiken, er van uitgaande dat Microsoft VBA blijft ondersteunen of een migratiepad naar een opvolger aanbiedt. Als ik dan met een uurtarief voor mijzelf reken van € 75? Dan mag ik er dus iets minder dan 30 uur aan besteden om een positieve businesscase te hebben? Dat staat in geen verhouding tot de honderden uren die het mij gaat kosten om mijn spreadsheets te migreren. Dus dan maar niks doen?

En dan was er ook nog even een berichtje dat LibreOffice in de toekomst mogelijk ook betaalde software wordt. Dat werd al snel genuanceerd, maar toch. Het is wel een herinnering dat niets zeker is op de lange termijn.

Onlangs heb ik ook nog een weekendje zitten spelen met de nieuwe versie 4.0 van GnuCash. Dat viel me niet tegen. In een uurtje had ik mijn hele grootboekschema erin zitten, en alle bankboekingen van het eerste halfjaar van 2020. Inmiddels ben ik zo ver dat ik het als een bruikbaar alternatief voor mijn administratie beschouw. Maar ik zie ook dat ik heel veel informatie kwijtraak als ik GnuCash echt ga gebruiken, bijvoorbeeld over mijn betaalgedrag. En voorlopig ben ik echt nog iets teveel gehecht aan mijn grafiekjes en statistiekjes. Maar als ik niets zou hebben en nu nog moest beginnen, werd het echt GnuCash. Enige boekhoudkennis is dan overigens wel vereist….

Uiteindelijk is het gewoon rationaliseren dat ik er nog niet echt mee aan de slag ben… Dat ik opgesloten zit in het systeem van Microsoft… Maar ik geef de moed nog niet op. Ooit komt er een oplossing. Denk ik.

Voel jij je wel eens opgesloten?

De 48 Excel-grafieken van Geldnerd

Nerd-alert! Regelmatig schrijf ik hier over mijn spreadsheets, onlangs publiceerde ik nog een nieuwe versie. Een beetje een uit de hand gelopen hobby. Hield ik eerst eenvoudigweg mijn uitgaven en mijn beleggingen bij, in de loop van de jaren is vrijwel al het handwerk weg geautomatiseerd. Rapportjes downloaden bij mijn bank en mijn aandelenbroker, op de knop drukken, en alles is weer bijgewerkt.

De spreadsheets zijn af?

Een paar jaar geleden dacht ik dan ook dat ze wel klaar waren, die spreadsheets. Maar niets is minder waar. Ik blijf dingen bijbouwen. Maar het karakter van de nieuwe bouwsels is wel veranderd. Steeds vaker gaat het om rapportjes en grafieken. Dingen die inzichtelijk maken hoe mijn financiële situatie zich ontwikkelt.

Zo heb ik inmiddels een collectie van bijna 50 verschillende grafieken verzameld, verdeeld over mijn verschillende spreadsheets. En daar was iets mee. Ik heb er nooit rekening mee gehouden dat de collectie zo groot zou worden. En de programmacode was dus een beetje inefficiënt. En zo rommelig dat ik er zelf geen wijs meer uit werd. De eerste grafieken waren bij elkaar geknipt en geplakt, omdat ik destijds zelf nog niet zo goed begreep hoe Excel die grafieken nou opbouwde. Inmiddels begrijp ik dat een stuk beter. Het werd er ook allemaal een beetje traag van. En ze zagen er allemaal net iets anders uit, er was geen consistente ‘huisstijl’ en kleurstelling, met allerlei kleine inconsistenties en onvolkomenheden. Het was dus eigenlijk gewoon tijd voor een grote verbouwing. Maar een grote verbouwing is ook een tijdrovende verbouwing. En daar zag ik een beetje tegenop.

En toen kwam de Corona-tijd. Ik weet niet hoe het jullie vergaat, maar na een week of 10 aan thuisquarantaine was ik wel even uitgelezen en snakte ik naar iets anders. En waren er een paar extralange weekenden. Waarin we niet echt weg konden / mochten. Een prima moment voor een extralange programmeerklus dus. Tijd voor de grote grafiekenschoonmaak…

Eerst denken dan bouwen

Voordat ik begon heb ik een analyse gemaakt van al mijn grafieken. Uiteraard in een grote spreadsheet. De naam, het soort grafiek, waar komt de data vandaan, hoe wordt de y-as samengesteld, wat zijn de dataseries, kenmerken als kleuren en lijndiktes, de berekeningen van minimum en maximumwaarden op de Y-as, de kenmerken van de assen, datalabels, dat soort dingen. In totaal 214 kenmerken per grafiek.

Gaande die analyse ontstond er een beeld. Ik heb zoveel mogelijk kenmerken verzameld die uniform waren (of dat zouden moeten zijn). Hoe de assen ingericht waren, en de ‘gridlines’ (de horizontale hulplijnen) in de grafiek. Maar ook het lettertype, en de lettergrootte en andere kenmerken van de astitels en eventuele legenda’s. Noem het maar de ‘huisstijl van mijn grafieken’. En daarmee ontstond er een nieuwe opzet voor de manier waarop ik grafieken programmeer. Niet meer met één heel grote en onoverzichtelijke routine, maar in brokken. Daar wordt het overzichtelijker van, en sneller.

Al mijn spreadsheet hebben een grafiekenpagina. Daar heb je een aantal keuzemogelijkheden. Je kunt bijvoorbeeld uit een lijstje de grafiek kiezen die je wilt zien. En bijvoorbeeld een periode kiezen of een begin- en einddatum instellen. Als ik dat doe en nu op mijn grafiekenpagina op de ‘Charts’ knop druk, dan wordt er eerst een Centrale Grafieken procedure aangeroepen. Die zorgt ervoor dat de gemaakte keuzes verwerkt worden, zo wordt bijvoorbeeld het begin- en eindpunt van de X-as berekend. Ook wordt de oude grafiek op de grafiekenpagina weggegooid en vervangen door een nieuwe, lege grafiek met alle uniforme stijlkenmerken. Vervolgens worden specifieke variabelen voor de grafiek verzameld, die her en der in de spreadsheets staan. En tenslotte wordt er een specifieke Grafiekprocedure aangeroepen, met alle variabelen.

Ook in die specifieke Grafiekprocedure vinden weer een aantal stappen plaats. De procedure begint met het instellen van een aantal specifieke parameters voor die grafiek. Het soort grafiek bijvoorbeeld, de titels, dat soort dingen. Daarna worden de X-as en de verschillende dataseries samengesteld. Als derde worden die dataseries in de grafiek geplaatst en krijgen ze hun kenmerken mee, zoals kleur. En tenslotte worden (indien nodig) datalabels aan de series toegevoegd. En voila, er staat een grafiek op mijn scherm. In een fractie van een seconde. Schematisch is het weergegeven in onderstaande figuur.

De Vermogens-Waterval

Een dag of drie programmeerwerk. Daarmee had ik alle 48 grafieken in mijn vier spreadsheets (administratie, beleggingen, hypotheek en dashboard) in deze nieuwe structuur gegoten. Ik ben er erg blij mee. Maar daarmee was ik er nog niet. Er stond namelijk al heeeeeel lang een specifieke grafiek op mijn wensenlijstje.

Deze.

Handmatig gegenereerd met de standaard waterval-grafiek in Excel

Een watervalgrafiek die me per kwartaal laat zien hoe de verschillende onderdelen van mijn vermogen veranderd zijn. Groen als er een stijging is, rood als er een daling is. En aan het eind een kolom die de netto stijging (of daling, dat komt ook voor) voor dat specifieke kwartaal laat zien. De brongegevens hiervoor zitten al jaren in mijn Dashboard-spreadsheet.

Sinds Office 2016 zit er standaard een watervalgrafiek in Excel, maar ik heb nog geen enkele manier gevonden om die rechtstreeks aan te spreken in Visual Basic. De macro-recorder laat me hier in de steek. Op de diverse fora waar ik de oplossingen voor mijn programmeerprobleempjes zoek las ik dat ze inderdaad (nog) geen onderdeel van het objectmodel van Excel zijn, en dat ze dus niet te programmeren zijn. De versie van het eerste kwartaal was dus handmatig samengesteld.

Maar ik vond ook deze beschrijving. Die een waterval stapsgewijs opbouwt met de hulp van een tijdelijke dataset en een standaard kolommengrafiek. Die ik allebei wel helemaal kan programmeren. En ik houd wel van een uitdaging. Dus ik ben aan de slag gegaan. Het kostte me anderhalve dag. Maar het is me gelukt. Met één druk op de knop verschijnt er nu mijn eigen geautomatiseerde waterval. Jij zult denken ‘boeiuh’, maar ik kan echt genieten van dit soort dingen!

Hetzelfde als de vorige, maar helemaal geautomatiseerd samengesteld

De Anonimiser

Veel grafieken gebruik ik ook hier op mijn blog. Maar ik wil niet altijd mijn cijfers delen. In het verleden bewerkte ik die grafieken dan met het grafisch bewerkingsprogramma GIMP zodat de cijfers onzichtbaar werden. Maar ook dat is nu volledig geautomatiseerd. Mijn grafiekenpagina’s hebben nu allemaal een Anonimiseer-knop. Die verbergt de bedragen met één druk op de knop (en laat ze met een nieuwe druk op de knop ook weer verschijnen). Het werkt voor bedragen op de Y-assen en verbergt ook datalabels. Alleen als het bedragen zijn, percentages mogen blijven staan. Daarna kan ik de grafiek meteen op mijn blog gebruiken. Ook hier dus geen handwerk meer.

De 48 grafieken

En nu zijn er dus 48 grafieken. Inmiddels al 49 met die waterval. Ook dat is een tussenstand, want ik heb nog wel wat meer ideetjes. Die ik in mijn nieuwe structuur makkelijker uit kan werken, dat dan weer wel. In de onlangs vernieuwde versie van de Financiële Administratie op mijn Downloads-pagina kun je zien hoe de grafieken en de Visual Basic programmacode eruit zien. En hieronder een bloemlezing van mijn vernieuwde grafieken… Allemaal één druk op de knop.

Bijt jij je ook wel eens helemaal vast in een volkomen nutteloos onderwerp?

Hoe denk ik nu over…. Mijn Wekelijkse Finance Moment?

Inmiddels ben ik ruim drie jaar aan het schrijven op dit blog. Meer dan 500 berichten heb ik inmiddels geplaatst. En ik heb dus ook heel veel onderwerpen aangeraakt. En regelmatig geef ik daarbij aan dat ik vooral ook blog om mijn gedachten te ordenen, en mijn denken over financiën te ontwikkelen. Drie jaar is al best wel een lange tijd. Het leek me daarom leuk om er eens wat onderwerpen ‘uit het verleden’ uit te lichten, en te bekijken hoe ik daar nu over denk. Lees je mee?

Vrij snel na de start van Geldnerd heb ik jullie meegenomen in mijn wekelijkse finance-moment. Ook de lijst van dingen die ik dan doorwerk heb ik al eens gedeeld. Elke week, meestal op zaterdagochtend, ga ik er even voor zitten. Laptop aan, kopje koffie erbij. Ik neem de financiële post van de week door. Rekeningen, mededelingen van wijzigingen, dat soort dingen. Rekeningen worden betaald of klaargezet. Indien nodig wordt er gereageerd naar partijen. Dat doe ik liefst schriftelijk, maar soms zet ik ook een reminder in mijn agenda om ergens achteraan te bellen.

En uiteraard worden de spreadsheets bijgewerkt. Ik download de boekingen bij onze banken, en de wekelijkse rapportage van mijn ‘aandelenboer’. Met een druk op de knop importeer ik ze in mijn spreadsheets. Het kost maar een paar minuten per week. Het moge duidelijk zijn: het finance moment is er nog steeds. Ik vind het enorm waardevol. In control zijn op mijn (onze) financiën, en ook in control blijven. Een vast moment werkt daarvoor in mijn geval het beste. En ik ben gelukkig niet de enige die er zo over denkt.

Het karakter van mijn finance-moment is wel wat veranderd. Het bijwerken van de spreadsheets is grotendeels geautomatiseerd, en kost dus steeds minder tijd. De tijd die vrijgekomen is besteed ik aan analyse. Ik bouw steeds meer rapportages en grafieken om de ontwikkelingen te kunnen volgen, ook meerjarig. Er is wel een behoorlijk risico op uitloop, het ‘moment’ duurt steeds langer. Het finance-moment gaat de laatste jaren naadloos over in het blog-moment, de tijd waarin ik de blogjes voor de komende week maak / afrond en klaar zet voor publicatie. En dat gaat weer over in het programmeermoment, waar ik probleempjes oplos in mijn spreadsheets en nieuwe programmeerideeën uitwerk. Die drie momenten, Finance, Bloggen en Programmeren, kunnen soms ook een hele dag duren. Een mens moet maar een hobby hebben…

Kijk jij op vaste momenten naar je financiën?

Eerder schreef ik al een terugblik op mijn kasboek.

Programmeer-seizoen is begonnen!

Seizoenen zijn toch een prachtig iets. In het Verre Warme Land waren ze er niet echt. Het was er 365 dagen per jaar zonnig en warm. Ja, er waren maanden waarin het nog warmer was dan normaal, er waren maanden met meer of minder wind, en er waren zelfs maanden met iets meer kans op regen dan normaal, maar dat was het dan ook wel. Nee, dan onze Nederlandse seizoenen! Alhoewel ze dit jaar natuurlijk wel een beetje in de war zijn geweest, met de lange, warme en vooral droge zomer. Die ook nog eens duurde tot ver in oktober!

Wisseling van seizoenen is altijd aanleiding voor veel discussie. Je houdt juist wél van de lente / zomer / herfst / winter *, of je houdt juist absoluut niet van de lente / zomer / herfst / winter * (* = doorhalen wat niet van toepassing is). Er horen rituelen bij, zoals de voorjaarsschoonmaak, of het wisselen van de zomer- en winterkleding. We eten verschillende dingen (stamppot, jummie!). Kortom, er verandert veel in onze leventjes bij de wisseling van de seizoenen.

De afgelopen maanden heb ik me natuurlijk ook beziggehouden met een ‘zomerproject’: de aanleg van onze tuin. Daar is toch best veel tijd in gaan zitten. En ook op mijn werk was (is) het een drukke tijd. Dat betekent dat andere hobby’s eronder geleden hebben.

Mijn postzegelverzameling is bijvoorbeeld niet bijgewerkt. En ook mijn sigarenbandjesverzameling loopt hopeloos achter.

Zo heb ik deze zomer nauwelijks naar mijn spreadsheets omgekeken. Ja, ik heb de beleggingsrapportage wekelijks gedownload en verwerkt. En eens in de paar weken de financiële administratie. Maar er is nauwelijks geprogrammeerd. Terwijl ik zoveel ideeën had en heb. Mijn integrale dashboard is nog steeds geen stap verder. En ook mijn beleggingsspreadsheet is dringend aan een grote onderhoudsbeurt toe. Ik heb allerlei ideeën voor nieuwe grafieken, functies en rapportages. Die heb ik allemaal verzameld, als ik een idee heb dan schrijf ik het op. Die lijst is inmiddels behoorlijk lang.

Het enige programmeerprojectje dat ik wel heb afgerond, is de eerste versie van mijn FIRE Calculator voor Loonslaven. Maar ook daarvoor heb ik nog een stapeltje e-mails en berichtjes met verzoekjes tot verbetering/verandering en foutmeldingen. Sorry, beste lezers die de moeite nemen om te reageren! Maar ik ben er nog niet aan toegekomen.

Maar er is hoop. Want nu de bladeren vallen en het buiten kouder wordt, is het weer tijd voor binnenactiviteiten. Oftewel: het programmeerseizoen is weer begonnen. Waar de een het heerlijk vindt om onder een dekentje met een kop thee voor de televisie te zitten, of een boekje te lezen, vind ik het daarnaast ook heerlijk om me een aantal uren vast te bijten in een puzzel. Oftewel: al die ideeën te vertalen in programmacode die werkt. Daarnaast heb ik ook nog steeds mijn voornemen om JavaScript te leren, daar wil ik dit komende programmeerseizoen ook mee verder. En ook Python wil ik uit gaan proberen. Ik heb er zin in!

Wat verandert er bij jou bij de wisseling der seizoenen?

Ik ♥ Macro’s – User Defined Functions

Raak ik dan nooit uitgepraat over Macro’s? Blijkbaar niet!

Een tijdje geleden heb ik mijn beleggingsspreadsheet volledig opnieuw gebouwd, ik schreef er al eens over.

Voor een aantal statistieken die ik graag wekelijks wil weten, zitten er geen standaardfuncties in Excel. Maar Excel geeft je wel de mogelijkheid om zelf functies te bouwen, de zogenaamde ‘User Defined Functions’. Dat is erg handig. Zo hoefde ik een functie maar 1 keer te programmeren, en kan ik deze daarna voor ieder beleggingsfonds opnieuw gebruiken.

Waar heb ik zoal zelf functies voor gebouwd?

  • Om uit mijn database met aandelenkoersen de meest recente, de hoogste en de laagste koers te halen voor een fonds.
  • Om op basis van de lijst met aandelentransacties automatisch uit te rekenen hoeveel aandelen ik op dit moment in portefeuille heb van een fonds.
  • Om op basis van de lijst met aandelentransacties automatisch uit te rekenen hoe lang ik een fonds al in portefeuille heb.
  • Om per fonds op basis van de transacties uit te rekenen wat ik eraan verdiend of verloren heb, zowel als % als in bedrag.

En zo heb ik er nog een aantal. In totaal heb ik zo wel 20 functies geprogrammeerd. Allemaal dingen die ik in mijn oude spreadsheet handmatig moest instellen. Het scheelt me veel tijd, die ik nu kan gebruiken om marktontwikkelingen en nieuwe beleggingen te onderzoeken. En het verkleint de kans op fouten, waardoor ik beter weet hoe ik ervoor sta.

Gebruik jij alle mogelijkheden van jouw spreadsheet?

© 2020 Geldnerd.nl

Theme by Anders NorenUp ↑