IF ELSE, FILTER, VLOOKUP e altre formule poco utili
Negli ultimi anni, ho sempre tenuto traccia di entrate, uscite e investimenti in un semplice Google Sheet. Si trattava di una soluzione abbastanza efficiente e minimale: sempre a portata di mano, poche funzioni di filtro/aggregazione, tabelle di riepilogo mese per mese e qualche grafico per i trend di lungo periodo.
Ero ben consapevole del fatto che ci fossero tools più automatizzati e "ricchi" di metriche e analisi; ciò nonostante, restavo sereno e soddisfatto del mio umile spreadsheet, con formule "faticosamente" scritte a mano, prima che Gemini e Copilot approdassero sulle rispettive suite.
Ultimamente tuttavia, ho visto una serie infinita di soluzioni molto più eleganti ed evolute, nel 99.X% dei casi AI-based o comunque sviluppate a botta di prompt: fancy dashboard, sincronizzazione con la banca, l'estratto conto e WhatsApp, analisi in tempo reale degli investimenti e molte altre features che, per forza di cose, erano poco compatibili con un foglio di calcolo.

Design principles minimali
Tutto ciò non ha fatto altro che mettere in discussione il modo in cui tracciavo i flussi di cassa e gli investimenti.
Tuttavia, pur rimanendo tentato di convertirmi anche io a un flow automatizzato in grado di sincronizzare Revolut, UBS, Interactive Brokers e tutto il resto... ho preso una strada alternativa che riflette abbastanza bene la mia filosofia di tracking e rapporto con i soldi.
Nello specifico, parto da quelli che sono, almeno per me, i punti deboli di una strategia totalmente automatizzata (AI-based), ridondante di analisi, grafici e statistiche iper-granulari e specifiche:
- attribuisco valore in senso lato a sedermi periodicamente, aprire l'app della banca e segnarmi manualmente le spese effettuate. Si tratta comunque di pochi minuti a settimana e, anche nel caso fossero notevolmente di più, sono convinto che diano una maggiore consapevolezza di quello che entra/esce.
Secondariamente, traccio i flussi di casa non perchè sia preoccupato di non arrivare a fine mese o debba in qualche modo limitarmi, bensì per il "piacere"/volontà di sapere che cosa sta succedendo. Delegare tutto ciò a un agente ne toglierebbe di coseguenza il senso. - mi bastano pochi indicatori, grafici e tabelle per tracciare il mio spending e l'evoluzione del mio patrimonio, motivo per cui la loro abbondanza non fa altro che aumentare il rumore e togliere l'attenzione dai (pochi) numeri che mi interessano davvero
- trattandosi di finanza personale, perché mai dovrei delegare (anche parzialmente) all'AI la sua gestione? Mi piace infatti l'idea di avere tutto sotto controllo, i.e. decidere di avere la metrica secondo la formula per il motivo , non perché secondo Claude stava bene.
In sintesi: tutte queste soluzioni overkill mi sembravano più uno show-off su chi facesse la dashboard più figa, senza la necessità di mettere l'uomo (e le sue necessità) al centro... (ma questo è ormai un pattern frequente: quante volte facciamo qualcosa perché è figo e gratis farlo - grazie Claude - e quante volte perché davvero porta del valore aggiunto?)
Ciò nonostante, non nego che patissi anche io i limiti di uno spreadsheet (e un po' di FOMO), ragione per cui mi sono interrogato su come evolvere il mio sistema di tracking, pur mantenendolo essenziale, human-centered e rilevante per le mie necessità.
La soluzione che ne è uscita, pur essendo ancora un WIP, sfrutta infatti un foglio di calcolo per l'input manuale dei dati e una dashboard più elaborata per una visualizzazione dei numeri (in sola lettura), accessibile tramite server localhost o facilmente hostabile online; sempre mantenendo l'assoluta protezione della privacy.
Il progetto è pubblico su GitHub o a questo link e, più rilevante, la soluzione è utilizzabile da tutti seguendo il setup riportato nel dettaglio qui.
Uno spreadsheet è per sempre
Più nello specifico, l'idea è di utilizzare Google Sheet, facilmente accessibile ovunque, come source of truth e database esterno, collegato alla dashboard tramite l'API di Google Cloud in modo che i dati, e la rispettiva classificazione, siano totalmente deterministici e in mano all'utente (non lascerò mai decidere a una rete neurale in quale categoria rientrano 190 euro spesi in scarpe da corsa...)
L'utente infatti digita manualmente spese, guadagni e, alla fine di ogni periodo, gli asset in portafoglio (inserendo il numero di shares o la liquidità cash su un conto) e "magicamente" l'app legge i dati e si aggiorna in tempo reale (l'API non ha accesso in scrittura sul foglio di calcolo, quindi l'integrità dei dati è solo nostra responsabilità).
Una volta configurata, infatti, l'utente può fare tutto tramite Google Sheet: categorie di spesa, guadagni, asset in portafoglio, valute di riferimento e costanti sono infatti totalmente definite nello spreadsheet e, di conseguenza, facilmente modificabili.
Per quanto riguarda l'app, si tratta di un semplice Next.js, sviluppata ovviamente con il supporto di *LLM di fiducia*, in seguito a un lungo e non-lineare brainstorming e dettagliato file di specifiche, affinché il progetto, nonostante non avessi scritto io il codice html (a volte mi capita comunque di leggerlo...), incarnasse al meglio i design principles e la filosofia sottostante.
Nello specifico, l'app si divide, almeno al momento, in due sezioni principali:
- /cashflow, dove è possibile visualizzare, periodo per periodo, spese divise per categorie e sottocategorie, entrate e metriche derivate (prima fra tutte: il saving rate!), in semplici tabelle (richiamando la grafica di uno spreadsheet), in line chart e poco altro, permettendo sempre all'utente di scegliere la valuta di riferimento

- /networth, dove viene presentata, sempre con tabelle e line chart, l'evoluzione del patrimonio, sia nell'aggregato sia suddiviso per strumenti finanziari, lasciando gestire all'app il download dei dati finanziari e i cambi valuta più necessari. Secondariamente, nella stessa pagina è anche presente il confronto tra il proprio portafoglio storico "effettivo" e un ipotetico benchmark (60/40 e 100% azioni) a parità di flussi di cassa in ingresso/uscita.

Pseudo-random number generators e numeri fortunati!
Volendo tuttavia pubblicare la dashboard online, in primis per una questione di accessibilità e, secondariamente, per poterla condividere più facilmente, non ero sicuro di voler pubblicare, nonostante nessuno vada a vedere il sito e non abbia nulla da nascondere, i numeri assoluti dietro le mie abitudini di spesa e il mio conto in banca.
Di conseguenza, ho pensato a due modi, entrambi implementati ma eventualmente ridondanti tra loro, per poter mettere il progetto online pur mantenendo i dati protetti.
In primis, tutti gli importi letti dal foglio vengono moltiplicati, direttamente nel backend, per un numero pseudo-random compreso in [0,10], così che un visitatore esterno non possa risalire ai valori reali. Il moltiplicatore dipende da un seed, che ogni visitatore può scegliere dalla navbar.
Tuttavia, se il seed inserito coincide con il LUCKY_SEED (che si può "indovinare" oppure, più probabilmente, già conoscere in quanto proprietario della dashboard), il moltiplicatore diventa 1 e la dashboard mostra i valori esatti. Provare per credere qui.
Secondariamente, è possibile accedere con Google: se l'email dell'account rientra tra quelle autorizzate dal proprietario, la dashboard mostra i valori reali.
Sia il LUCKY_SEED sia la lista delle email autorizzate sono costanti definite nel Google Sheet, quindi modificabili da lì senza mai toccare il codice.
Ambizioni e sviluppi futuri
Lastly, non nego che la tentazione di aggiungere dashboard, analisi e metriche derivate, soprattutto quando tutto è a portata di prompt, sia alta. Ciò nonostante, preferisco limitarmi e pensare a possibili estensioni del progetto.
In primis, una prossima release introdurrà probabilmente un Monte Carlo generator per poter simulare l'evoluzione di spese e patrimonio. Secondariamente, non mi dispiacerebbe aggiungere una sezione di fund look-through, in grado di scomporre il portafoglio in fattori di rischio, esposizioni nazionali, per asset class etc etc, in modo da avere una visione il più possibile "lucida" sul proprio net worth.
A prescindere dai suoi sviluppi futuri, l'app resta comunque "umana", di conseguenza limitata e potenzialmente imprecisa: i dividendi ricevuti sul broker non ricevono il trattamento giusto, discrepanze e missing data nello spreadsheet potrebbero causare bug e, non meno importante, il fattore umano introduce un'ulteriore incertezza.
That's it.
I dettagli tecnici restano noiosi per il 99.X% di chi mi legge, quindi rimando alla repo GitHub e invito i più coraggiosi a clonarla, configurarla e giocarci un po'!

PS: non posso garantire che non ci siano bug nel progetto, in caso di problemi, segnalazioni e pull request sono ben accette!
Cheers!