Introduzione
Beancount è un sistema open-source di contabilità a doppia entrata che utilizza file di testo semplice come libro mastro. Punta su semplicità, trasparenza e flessibilità nel tracciamento delle finanze. Fava è un potente front-end web per Beancount, che offre un'interfaccia interattiva per visualizzare report, visualizzazioni e gestire il libro mastro. In questo report esploriamo le capacità fondamentali di Beancount e Fava, e come ottenere analisi finanziarie in tempo reale o quasi in tempo reale con questi strumenti. Copriamo consigli di configurazione per l'automazione e l'aggiornamento dei dati, le funzionalità di visualizzazione di Fava (per visioni istantanee dei flussi di cassa e individuazione di tendenze), l'integrazione con dashboard esterni (Grafana, Metabase, ecc.), esempi di dashboard personalizzati e plugin, casi d'uso nella finanza personale e per piccole imprese, confronti con altre piattaforme (Power BI, QuickBooks) e i vantaggi/svantaggi dell'uso di Fava+Beancount per insight basati sui dati.
Esplora un libro mastro di esempio live:

Esplora il libro mastro live →
Capacità fondamentali di Beancount e Fava
Beancount (motore di contabilità in testo semplice)
- Libro mastro a doppia registrazione in testo semplice: Beancount memorizza le transazioni in un unico file di testo
.beancount(o più file inclusi insieme). Ogni transazione deve bilanciare (totale addebiti = totale accrediti) tra i conti, garantendo l'integrità contabile. Il formato testo semplice significa che i tuoi dati sono leggibili dall'uomo, controllabili tramite versionamento e non vincolati a nessun fornitore. - Conti flessibili e gerarchici: Puoi definire qualsiasi conto (es.
Assets:Bank:Checking,Expenses:Food:Coffee) in una gerarchia. Beancount non è vincolante riguardo al tuo piano dei conti, quindi funziona per finanza personale, contabilità per piccole imprese, investimenti, ecc. – è “flessibile: funziona per finanza personale, contabilità piccole imprese, crypto, investimenti azionari e altro.” - Multi-valuta e commodity: Beancount supporta nativamente più valute e commodity (es. azioni, crypto). Puoi registrare transazioni in diverse valute, definire tassi di cambio (direttive prezzo) e tracciare basi di costo. Può generare report “al costo” o “a valore di mercato” se sono forniti dati di prezzo. Questo lo rende adatto per portafogli e finanza internazionale.
- Verifiche e bilanci automatizzati: Il sistema supporta asserzioni di bilancio (puoi dichiarare quale dovrebbe essere il saldo di un conto a una certa data, e Beancount segnalerà errore se non corrisponde) e transazioni di bilancio per chiusura libri. Supporta inoltre movimenti di apertura/chiusura patrimonio netto e calcolo degli utili trattenuti per le chiusure di periodo. Questi aiutano a mantenere i tuoi libri coerenti e a rilevare errori precocemente.
- Motore potente di query e report: Beancount include un linguaggio di query BQL (Beancount Query Language). Usa
bea queryper BQL da terminale ebea reportper gli estratti standard; installa il quick start CLI invece dei vecchi script console upstream. Puoi interrogare il libro mastro per report personalizzati (es. elenco spese per beneficiario, flusso di cassa per un periodo) – trattando essenzialmente il libro come un database. Rimane veloce anche con migliaia di transazioni. Esporta CSV conbea query -f csv -o report.csv "BQL", sostituendoBQLcon la tua query. Consulta Modelli di report finanziari per esempi completi. - Estendibilità tramite plugin: Beancount è scritto in Python e consente plugin personalizzati per estendere le funzionalità. I plugin possono applicare regole o calcoli addizionali durante l'elaborazione del file. (Ad esempio, ci sono plugin per gestire i lotti fiscali o per garantire che nessun acquisto sia senza costo.) Il sistema a plugin e API Python permettono agli utenti avanzati di scrivere script di comportamento personalizzati o integrare Beancount con altri sistemi.
- Importatori per dati esterni: Una funzionalità pratica chiave è il framework di importazione nel pacchetto separato
beangulp(non esiste modulobeancount.ingestin Beancount 3.2.3). Scrivi una classe importatore che estendebeangulp.Importere implementaidentify,extracteaccount. Analizza un file scaricato (CSV, OFX, estratti PDF, ecc.) e lo converte in voci Beancount. Questo è essenziale per l'automazione (ne parleremo più avanti). - Controllabile e amichevole al versionamento: Essendo testo semplice, puoi conservare il tuo libro mastro in Git o altri sistemi di controllo versione. Ogni modifica è trasparente e hai una cronologia completa delle modifiche. Questo facilita audit o revisioni delle modifiche (molti utenti commettono i cambi giornalieri in un repository Git, fornendo un registro antimanomissione di tutte le voci finanziarie). Questo livello di trasparenza è un grande differenziatore rispetto ai software contabili chiusi – “nessun lock-in SaaS—solo contabilità pulita, trasparente con report potenti.”
Fava (Interfaccia Web per Beancount)
- Interfaccia Web Interattiva: Fava fornisce un server web locale che rende il tuo libro mastro Beancount in una UI ricca. Visualizza report principali (Conto Economico, Stato Patrimoniale, ecc.), registri di conto e giornali nel browser con controlli interattivi. L'interfaccia è dinamica e intuitiva rispetto alla riga di comando. La avvii con un semplice
fava yourfile.beancounte ottieni un'app web per i tuoi libri. - Grafici e Diagrammi Integrati: Fava genera grafici per aiutare a visualizzare i dati. Ad esempio, include un grafico a linea di Patrimonio Netto nel tempo, grafici a barre per entrate vs. spese mensili e grafici a torta/mappa ad albero per la ripartizione delle spese. Questi grafici si aggiornano con i dati e supportano diverse viste (es. “a costo” vs “valore di mercato” per gli investimenti). Esploreremo queste capacità di visualizzazione in dettaglio più avanti.
- Filtri e Ricerca: In cima alle pagine di Fava, una barra filtro ti permette di sezionare i dati in tempo reale. Puoi filtrare per tempo (es. anno, trimestre, mese), per regex su conto, per beneficiario, per descrizione, o per tag/link. Questo rende facile fare un controllo dati in tempo reale – ad esempio, filtra rapidamente per “Tag=Viaggi” e “Anno=2025” per vedere tutte le spese di viaggio nel 2025, con totali. L'interfaccia supporta query complesse tramite questa barra filtro o tramite la pagina Query (dove puoi eseguire direttamente query BQL).
- Supporto Multipli File e Consolidamento: Fava può caricare più file Beancount contemporaneamente (utile se separi i libri mastri) e passare da uno all'altro. Può anche consolidarli se necessario (per esempio, libri mastri personali e aziendali visualizzati insieme).
- Inserimento e Modifica Dati: In maniera unica, Fava non è solo in sola lettura – ha un editor e un modulo di inserimento transazioni. Puoi aggiungere nuove transazioni tramite un modulo web (le inserisce nel tuo file .beancount). Puoi anche aprire il file sorgente in un editor esterno direttamente da Fava. Fava supporta anche scorciatoie da tastiera per utenti avanzati. Questo trasforma Fava in un sistema di contabilità leggero dove puoi inserire e visualizzare dati dalla stessa interfaccia.
- Report e Analisi Dettagliata Conti: Fava fornisce report contabili standard: Conto Economico (Profitti & Perdite), Stato Patrimoniale, Bilancio di Verifica e una lista degli investimenti detenuti. Il Stato Patrimoniale e il Conto Economico sono interattivi – puoi cliccare un conto per andare nei dettagli o alternare la vista tra costo e valore di mercato per gli asset. Fava mostra anche “guadagni non realizzati” per gli investimenti se disponi di dati sui prezzi. Genera una vista giornale di tutte le voci e permette di filtrare quel giornale con vari criteri (ottimo per trovare singole transazioni).
- Gestione Documenti: Se alleghi ricevute o estratti, Fava aiuta a organizzarli. Beancount ha la nozione di cartella documenti, e Fava ti permette di trascinare file sopra conti o transazioni – li archivierà e aggiungerà una voce documento nel libro mastro. Utile per mantenere documenti di supporto collegati ai dati contabili.
- Personalizzazione tramite Estensioni: Fava può essere esteso con plugin (scritti in Python) per aggiungere nuovi report o funzioni. Alcune estensioni sono incluse (es. un report lista portafoglio per investimenti). Discuteremo le estensioni personalizzate in seguito, ma essenzialmente il design di Fava permette di inserire nuove pagine, e anche JavaScript personalizzato, tramite la sua API di estensione. Questo significa che se un'analisi o cruscotto non è integrato, un utente avanzato può aggiungerlo.
- Prestazioni: Fava è efficiente – ricarica i dati in memoria e serve le pagine rapidamente. Il parsing sottostante di Beancount è veloce, quindi i libri mastri personali tipici si caricano in uno o due secondi. In pratica, Fava può gestire libri mastri personali di molti anni, anche se file molto grandi (decine di migliaia di transazioni) potrebbero beneficiare di qualche ottimizzazione (es. archiviazione delle voci vecchie).
- Accesso Web e Mobilità: Eseguendo Fava su un server o anche sul tuo laptop, puoi accedere alle tue finanze da qualsiasi browser. Alcuni utenti ospitano Fava su un server privato o Raspberry Pi così da controllare le finanze in mobilità (possibilmente protetto da password o VPN dato che Fava non ha autenticazione integrata). Questo ti dà essenzialmente un'app web self-hosted per le tue finanze, senza cedere i dati a terzi.
In sintesi, Beancount fornisce una solida base per una contabilità trasparente basata su testo con rigorose regole di partita doppia e supporto multi-valuta. Fava si basa su questo offrendo un’interfaccia accessibile con approfondimenti immediati (report, grafici) e la capacità di interagire con i tuoi dati. Insieme, formano un sistema di contabilità e analisi altamente flessibile che controlli completamente dall’inizio alla fine.
Analisi in tempo reale (o quasi) con Beancount & Fava
Ottenere analisi in tempo reale o quasi con Beancount e Fava implica automatizzare il flusso di dati nel tuo libro mastro e garantire che gli strumenti mostrino informazioni aggiornate. Per default, Beancount è un processo batch (aggiungi voci al file, poi visualizzi i report), e Fava rileva le modifiche richiedendo un aggiornamento. Tuttavia, con la configurazione giusta, puoi semplificare gli aggiornamenti affinché nuove transazioni e modifiche appaiano quasi istantaneamente.
Rilevazione delle modifiche del file: Fava monitora il file del libro mastro per le modifiche. Se modifichi il file .beancount (o i file inclusi) in un editor, la pagina mostra una notifica “Modifica file rilevata. Clicca per ricaricare.” Fava interroga il suo endpoint get_changed. Quando il watcher segnala una modifica, Fava ricarica il libro mastro lato server e la notifica offre un clic per aggiornare la vista. In pratica, questo ricaricamento è molto rapido (di solito sotto un secondo per libri mastro tipici). Ciò significa che Fava può servire come cruscotto live se il tuo file del libro mastro viene aggiornato frequentemente. Per default aspetta il tuo clic per evitare di disturbare la tua visualizzazione.
Pipeline di importazione/aggiornamento continua: Per ottenere dati in tempo reale, devi automatizzare l’aggiunta di transazioni al file Beancount. Ci sono alcune strategie comuni:
-
Attività di importazione pianificate (Cron): Molti utenti configurano un cron job (o attività pianificata) per recuperare periodicamente nuove transazioni dalle istituzioni finanziarie (ad esempio ogni notte, o ogni ora) e aggiungerle al ledger. Per esempio, potresti eseguire un importatore
beangulpsull'ultimo download bancario (CSV o OFX). Un utente di Beancount ha costruito una pipeline di automazione in modo che i propri registri si aggiornino automaticamente: “vedere il mio registro contabile aggiornarsi da solo senza che io lo tocchi in un formato aperto mi dà pura gioia”. Questo è stato realizzato collegandosi alle API bancarie e pianificando aggiornamenti regolari. Uno script Python personalizzato che usa le API bancarie (es. Plaid) può essere eseguito su un orario prestabilito e scrivere nuove voci nel ledger. Valida ogni esecuzione conbea checkprima che modifichi il tuo file principale. Dopo ogni importazione pianificata, se Fava è in esecuzione, puoi semplicemente aggiornare Fava per vedere i nuovi dati. -
Watcher di file e trigger: Invece di schedulazioni basate sul tempo, puoi usare watcher di file per reagire a eventi. Per esempio, se la tua banca può inviarti via email un estratto conto giornaliero o se lasci un CSV in una cartella, uno script potrebbe rilevare quel file (usando
inotifysu Linux o simili) ed eseguire immediatamente la routine di importazione, quindi segnalare a Fava di ricaricare. Sebbene Fava non supporti ancora il push di un live reload al browser, avresti almeno i dati aggiornati così che la prossima volta che controlli la pagina o clicchi su ricarica sia tutto corrente. Alcuni progetti della community vanno oltre: per ledger (un parente di Beancount), un utente ha creato un piccolo server che espone i dati di ledger a Grafana in tempo reale, dimostrando che un approccio simile si può adottare con Beancount – costruire sostanzialmente un daemon che alimenta continuamente dati ai dashboard. -
Integrazione diretta tramite API: Invece di passare tramite file, gli utenti avanzati potrebbero collegarsi direttamente alle API bancarie (come Plaid o API regionali di Open Banking) per scaricare frequentemente le transazioni. Una persona motivata può scrivere script per importazioni “live” in loop (con adeguati limiti di frequenza) – in pratica interrogando la banca per nuovi dati ogni pochi minuti. Nulla ti impedisce di “registrarti con Plaid API e fare la stessa [automazione] localmente”. Ogni nuova transazione può essere aggiunta al file Beancount non appena arriva. Con questo approccio, Fava diventa veramente un cruscotto in tempo reale per i tuoi conti, paragonabile al feed sempre aggiornato delle app commerciali.
Aggiornamento Dati in Fava: Una volta che i dati vengono aggiornati, far visualizzare a Fava le ultime informazioni è semplice: un aggiornamento della pagina del browser (F5) o cliccare sulla notifica di ricarica caricherà lo stato più recente del libro mastro. Nota che fava --debug non invia le modifiche del libro mastro al browser. Il suo testo di aiuto è “Abilita il debugging”. Esegue il debugger Werkzeug e il ricaricatore del codice per il codice di Fava e imposta il ri-caricamento automatico dei template Jinja. Questo ricarica il codice del server e i template delle pagine durante lo sviluppo di estensioni. Non è collegato al file watcher che rileva le modifiche del libro mastro. In alternativa, se stai costruendo un front-end personalizzato, potresti far sì che esegua un polling dell’endpoint get_changed di Fava e si aggiorni quando segnala nuovi dati.
Calcoli Istantanei: L’analisi rapida di Beancount significa che anche se aggiorni il file del libro mastro ogni pochi minuti, il tempo di risposta da recupero dati → aggiornamento file → ricarica Fava è veloce. Per esempio, un utente nota che ricaricare Fava dopo aver modificato il file “è appena percettibile… sicuramente meno di un secondo” per libri mastri di dimensioni ragionevoli. Quindi puoi tenere aperta una finestra di Fava e aggiornare periodicamente per simulare una dashboard live. (Per un’esperienza davvero live, si potrebbe costruire uno script piccolo per aggiornare automaticamente il browser o usare la funzione di aggiornamento del browser ogni N secondi.)
Riconciliazione e Avvisi: Per fidarsi dei dati in tempo reale, vuoi anche riconciliare frequentemente i saldi. Beancount lo rende facile con asserzioni di bilancio e un indicatore “aggiornato”. Infatti, Fava colora gli account in verde, giallo o rosso quando la direttiva open porta i metadati fava-uptodate-indication. Il colore riflette se i recenti controlli di saldo coprono le ultime voci dell’account. Questo può essere usato per vedere rapidamente se il saldo di un account nel libro mastro corrisponde all’ultimo estratto conto bancario. In una configurazione quasi in tempo reale, potresti automatizzare controlli giornalieri di saldo (così ogni mattina, il libro mastro ha il saldo di chiusura di ieri dalla banca per ogni account). L’indicatore di Fava ti direbbe allora se il tuo auto-import ha perso qualcosa o se c’è una discrepanza, fornendo la certezza che i dati “live” che vedi sono accurati.
Esempio di Automazione: Supponiamo che tu voglia aggiornamenti giornalieri del flusso di cassa. Potresti impostare un cron job per eseguire alle 3 del mattino ogni notte: esegue uno script Python che usa l’API della tua banca per recuperare le transazioni dell’ultimo giorno, le scrive in import_today.beancount, e poi aggiunge quel file al tuo libro mastro principale. Scrive anche una asserzione di bilancio per la fine della giornata. Quando ti svegli, apri Fava – mostra tutte le transazioni fino a ieri, e vedi i ricavi/spese del mese corrente aggiornati. Se effettui una spesa durante il giorno, potresti aggiungerla manualmente (ad esempio tramite il modulo di nuova transazione di Fava sul tuo telefono), oppure aspettare l’importazione notturna. Questo approccio ibrido (principalmente automatizzato, con la possibilità di aggiunte manuali ad hoc) offre un quadro quasi in tempo reale. Un altro metodo è lasciare aperta la pagina Journal di Fava e usarla come registro: mentre spendi, registri rapidamente la transazione (come scrivere nel registro assegni) – in quel momento sei il feed in tempo reale. Questo è più manuale, ma alcuni utenti apprezzano la consapevolezza che porta. Per aggiornamenti veramente streaming senza passaggi manuali, dovrai investire in scripting e possibilmente usare API di terze parti come discusso.
In sintesi, combinando l’automazione di importazione di Beancount con l’aggiornamento rapido di Fava, puoi ottenere dati finanziari quasi in tempo reale. Potrebbe non essere «facile come premere un pulsante» ottenere lo stesso livello di live feed di un servizio come QuickBooks (che estrae automaticamente i flussi bancari), ma è possibile – e cosa importante, mantieni pieno controllo e trasparenza del processo. Come ha notato un sostenitore della contabilità in testo semplice, un piccolo sforzo iniziale può generare un sistema automatizzato che è “molto migliore delle soluzioni commerciali, e molto più flessibile ed estensibile”. Nella sezione successiva, vedremo come le capacità di visualizzazione di Fava ti permettano di comprendere immediatamente questi dati aggiornati, trasformando le transazioni grezze in insight.
Capacità di Visualizzazione in Fava (Flussi di Cassa, Trend, Ispezione in Tempo Reale)
(GitHub - beancount/fava: Fava - interfaccia web per Beancount) Il report del Conto Economico di Fava (nell’interfaccia web) supporta visualizzazioni ricche come treemap (in figura) e diagrammi sunburst per ottenere rapidamente una visione sulla composizione di entrate e spese. In questo treemap, ogni rettangolo rappresenta una categoria di spesa, dimensionata in base all’importo – puoi vedere immediatamente come Affitto (grande blocco verde) domini le spese. La barra dei filtri in alto e i controlli (in alto a destra) permettono di cambiare valuta, tipo di grafico e periodo temporale (es. visualizzare dati mensili). Fava fornisce anche grafici a linee (es. patrimonio netto nel tempo) e a barre (es. entrate vs. spese per mese) per aiutarti a individuare trend nei tuoi dati finanziari.
Uno dei maggiori punti di forza di Fava è trasformare i dati del ledger in report visuali e interattivi all'istante. Non appena il ledger viene caricato, Fava genera grafici che facilitano la comprensione dei flussi di cassa e delle tendenze a colpo d’occhio:
-
Treemap/Sunburst Entrate & Spese: Nella pagina del Conto Economico, Fava può mostrare le tue entrate e spese come diagramma treemap o sunburst. Questi sono ottimi per una visualizzazione immediata dei flussi di cassa. Per esempio, se le tue spese mensili sono mostrate come un treemap, l’area di ciascun rettangolo corrisponde all’entità di ogni categoria di spesa. Blocchi grandi mostrano subito dove è andata la maggior parte del denaro (es. affitto o mutuo, tasse, ecc.), mentre blocchi più piccoli mostrano spese minori. Questo è estremamente utile per individuare tendenze nella spesa – se il blocco “Mangiare Fuori” cresce ogni mese, lo noterai visivamente. Puoi passare a un grafico sunburst per vedere suddivisioni gerarchiche (es. l’anello esterno mostra sottocategorie come Generi Alimentari vs Ristoranti all’interno della categoria Cibo). Questi grafici si aggiornano in base al periodo filtrato (un mese, anno in corso, ecc.), offrendo una visualizzazione immediata del flusso di cassa per quel periodo. Un utente sul forum di plaintext accounting ha osservato: “Utilizzo molto i treemap di entrate e spese. Forniscono un’ottima percezione visiva dei nostri movimenti fiscali.” – questo tipo di comprensione immediata è esattamente ciò a cui mirano i grafici di Fava.
-
Patrimonio Netto e Bilancio nel Tempo: Fava fornisce un grafico a linee per il patrimonio netto nel tempo (nella pagina “Balance Sheet” o “Statistics”). Questo grafico rappresenta la somma dei tuoi asset meno le passività in ogni momento (giornaliero, settimanale o mensile). È prezioso per individuare tendenze – puoi vedere la traiettoria delle tue finanze (es. in crescita costante, o cali in certi periodi). Se hai investimenti, puoi alternare tra valore a costo e valore di mercato (se sono registrati dati sui prezzi) – per esempio, potresti vedere che il tuo patrimonio netto a valore di mercato fluttua con i prezzi azionari, mentre a costo è più stabile. Fava può anche mostrare i saldi dei conti nel tempo. Se clicchi un conto (ad esempio Assets:Bank:Checking), la pagina del conto mostra un grafico della sua storia dei saldi. Puoi subito verificare come si muove il tuo conto di cassa – che è effettivamente un grafico di flussi di cassa (la pendenza della linea del saldo indica il flusso netto di cassa). Se tende a scendere, sai che stai spendendo più di quanto guadagni in quel periodo. Esaminando queste tendenze, potresti scorgere modelli come “ogni dicembre i miei risparmi calano (spese per le festività)” o “i miei investimenti sono cresciuti molto in questo trimestre”.
-
Grafici a Barre per il Confronto Periodico: Nella vista del Conto Economico, Fava ha schede per “Monthly Profit”, “Monthly Income”, “Monthly Expenses” ecc. Selezionando queste si mostrano grafici a barre mensili. Per esempio, Monthly Net Profit mostra il surplus/deficit di ogni mese come una barra, facilitando il confronto delle prestazioni tra i mesi. Puoi rapidamente individuare valori anomali (es. una barra fortemente negativa in aprile indica una perdita/spesa insolita in quel mese). Analogamente, il grafico a barre “Monthly Expenses” impila o raggruppa le spese per categoria ogni mese, così puoi vedere quali categorie variano. Questo è ottimo per osservare tendenze nel tempo – es. potresti notare che le spese “Travel” aumentano ogni estate, oppure che le bollette “Utilities” sono più alte in inverno. Fava ti offre sostanzialmente alcune funzionalità di un’app di budgeting (monitoraggio delle tendenze) ma con piena personalizzazione (poiché definisci tu le categorie e come si aggregano).
-
Filtraggio in tempo reale e ispezione dei dati: Le visualizzazioni in Fava non sono statiche; funzionano in sinergia con il filtraggio di Fava. Supponiamo che tu voglia esaminare uno scenario specifico: “Come sono i miei flussi di cassa trimestrali solo per i miei conti aziendali?” Puoi impostare il filtro temporale su Q1 2025 e filtrare i conti in base alla gerarchia Business – Fava aggiornerà immediatamente i grafici per mostrare il reddito netto, la mappa ad albero delle spese, ecc., ma solo per quel sottoinsieme. Questa segmentazione interattiva significa che puoi fare analisi ad hoc molto rapidamente, senza scrivere query. La vista Journal supporta anche il filtraggio live: puoi cercare per beneficiario o sottostringa nella narrazione e vedere immediatamente una lista filtrata di transazioni. Se stai guardando dati in tempo reale (ad esempio hai appena importato le transazioni della scorsa settimana), potresti filtrare per un tag come
#uncategorizedper vedere nuove transazioni che potrebbero necessitare di categorizzazione, o per@pending(se segni le voci in sospeso) per vedere cosa non è ancora stato saldato. Questa capacità di ispezione in tempo reale aiuta anche a garantire la qualità dei dati—perché puoi isolamento e gestione delle anomalie al volo. -
Rendiconto finanziario (indiretto): Sebbene Beancount/Fava non produca un rendiconto finanziario formale (ripartizione Operazioni/Investimenti/Finanziamenti) pronto all’uso, puoi simularlo con query personalizzate o strutturando i conti. Per esempio, potresti taggare certe transazioni o usare conti specifici per investimenti e finanziamenti, quindi interrogare i totali. L’interfaccia di query di Fava esegue BQL come
SELECT sum(position) WHERE account ~ 'Assets:Bank:Checking'. Restituisce il saldo del conto corrente dietro ai grafici. L’esempio pratico qui sotto mostra il ciclo completo. Detto questo, la maggior parte degli utenti personali trova sufficiente la combinazione di tendenze di saldo e grafici di reddito/spese per comprendere i flussi di cassa. -
Detenzioni e visualizzazione del portafoglio: Nella pagina Holdings, Fava elenca le tue detenzioni correnti di commodities (ad es. azioni, obbligazioni, criptovalute) con quantità, costo, valore di mercato e plusvalenze non realizzate. Anche se si tratta di una tabella, non di un grafico, è molto utile per l'ispezione in tempo reale dello stato del tuo portafoglio. Alcune estensioni della community (come fava-investor, discussa più avanti) aggiungono visualizzazioni aggiuntive per i portafogli, come grafici a torta per l'allocazione o grafici delle performance. Anche senza estensioni, puoi vedere ad es. come cambia il valore del tuo portafoglio azionario in base agli ultimi prezzi – se aggiorni regolarmente le quotazioni (operazione che può essere automatizzata giornalmente), i grafici di Fava rifletteranno il valore di mercato aggiornato dei tuoi investimenti.
Esempio pratico: due mesi di spese
Questo esempio è eseguito completamente con Beancount 3.2.3 e beanquery 0.2.0. Salva il libro contabile come example.beancount. Contiene due pagamenti di stipendio e quattro spese.
option "title" "Analytics example"
option "operating_currency" "USD"
2024-01-01 open Assets:Bank:Checking USD
2024-01-01 open Expenses:Food:Groceries USD
2024-01-01 open Expenses:Food:Dining USD
2024-01-01 open Expenses:Housing:Rent USD
2024-01-01 open Income:Salary USD
2024-01-01 open Equity:Opening-Balances USD
2024-01-05 * "Employer" "January salary"
Income:Salary -3000.00 USD
Assets:Bank:Checking 3000.00 USD
2024-01-08 * "Grocery Store" "Weekly groceries"
Expenses:Food:Groceries 120.00 USD
Assets:Bank:Checking -120.00 USD
2024-01-12 * "Restaurant" "Dinner out"
Expenses:Food:Dining 80.00 USD
Assets:Bank:Checking -80.00 USD
2024-02-01 * "Landlord" "February rent"
Expenses:Housing:Rent 1000.00 USD
Assets:Bank:Checking -1000.00 USD
2024-02-05 * "Employer" "February salary"
Income:Salary -3000.00 USD
Assets:Bank:Checking 3000.00 USD
2024-02-10 * "Grocery Store" "Weekly groceries"
Expenses:Food:Groceries 150.00 USD
Assets:Bank:Checking -150.00 USDControllalo prima. Poi esegui la query delle spese per categoria.
bea --file example.beancount check
bea --file example.beancount query "SELECT account, sum(position) WHERE account ~ 'Expenses' GROUP BY account ORDER BY account"Un libro contabile pulito restituisce 0 da bea check; gli errori sono elencati con un codice di uscita diverso da zero. La query restituisce una riga per ogni conto di spesa.
account sum(position)
----------------------- ------------
Expenses:Food:Dining 80.00 USD
Expenses:Food:Groceries 270.00 USD
Expenses:Housing:Rent 1000.00 USDAltre due query completano il quadro. Reddito totale e spese totali:
SELECT sum(position) WHERE account ~ 'Income'
SELECT sum(position) WHERE account ~ 'Expenses'Restituiscono (-6000.00 USD) e (1350.00 USD). Quindi la famiglia ha guadagnato 6.000,00 USD, speso 1.350,00 USD e risparmiato il 77,5%. Il saldo del conto corrente lo conferma:
SELECT sum(position) WHERE account ~ 'Assets:Bank:Checking'Restituisce (4650.00 USD). Le stesse query funzionano senza modifiche nella pagina Query di Fava. Fava 1.30.16 rende le stesse tre righe di spesa come tabella interattiva.
In pratica, i report visivi di Fava si aggiornano rapidamente come i dati sottostanti. Nel momento in cui viene aggiunta una nuova transazione e la pagina viene ricaricata, i grafici si ricalcolano. Non è necessario un lungo rielaborazione. Questo significa che se hai una pipeline semi-automatica che alimenta dati durante il giorno, puoi tenere Fava aperto e premere periodicamente aggiorna per ottenere grafici aggiornati – in pratica un monitoraggio finanziario in tempo reale.
Per esempio, immagina di gestire una piccola impresa e di voler monitorare la liquidità disponibile e le spese giornaliere. Potresti avere Fava aperto su una dashboard personalizzata (forse usando un'estensione o lo schermo delle query) che mostra "Saldo del conto cassa oggi" e "Spese – Oggi vs. Ieri". Ogni volta che aggiorni dopo l'arrivo di nuovi dati, vedresti quei numeri aggiornarsi. Questo è simile a ciò che forniscono costose dashboard in tempo reale, ma utilizzando strumenti open source. La differenza è che potresti dover aggiornare manualmente o programmare gli aggiornamenti, mentre quegli strumenti inviano aggiornamenti automaticamente. Ma funzionalmente, l'informazione che ottieni è la stessa, con il vantaggio aggiuntivo che puoi approfondire qualsiasi numero su Fava (cliccandolo per vedere le transazioni sottostanti) – qualcosa che molte dashboard BI non offrono.
In sintesi, Fava trasforma i tuoi dati contabili in intuizioni visive immediate: analisi dei flussi di cassa, linee di tendenza, confronti nel tempo e filtraggio interattivo ti aiutano a vedere la storia dietro i numeri. Che tu stia esaminando le spese della scorsa settimana per anomalie o rivedendo le tendenze pluriennali del patrimonio netto, i grafici e i report di Fava offrono chiarezza in tempo reale (non appena i tuoi dati sono disponibili). Successivamente vedremo come puoi estendere queste capacità o integrarle con strumenti esterni se ti servono analisi ancora più personalizzate.
Integrazione con Dashboard e Strumenti di Visualizzazione Esterni
Sebbene Fava offra un set ricco di report e grafici integrati, potresti voler integrare i dati di Beancount con altri strumenti di business intelligence (BI) o dashboard come Grafana, Metabase o frontend web personalizzati (es. un’app React). La motivazione potrebbe essere combinare dati finanziari con altre fonti di dati, usare capacità avanzate di visualizzazione, o condividere dashboard con altri in un formato differente. Grazie all’apertura di Beancount, ci sono molteplici modi per realizzare l’integrazione:
-
Integrazione Database (BeanSQL / Beanpost): Un approccio semplice è esportare o sincronizzare il tuo libro mastro Beancount in un database SQL. Una volta su SQL, qualsiasi strumento BI può interrogare i dati. Infatti, membri della comunità hanno creato strumenti per questo. Per esempio, Beanpost è un esperimento che rispecchia un libro mastro Beancount in un database PostgreSQL, implementando gran parte della logica di Beancount come funzioni SQL. Ciò fornisce “un backend flessibile che può integrarsi con altri strumenti come app web o sistemi di reporting.” Puoi eseguire Beanpost per sincronizzare continuamente il tuo libro mastro testuale su Postgres. Poi, uno strumento come Metabase o Tableau può connettersi a quel database Postgres e puoi costruire qualsiasi grafico o dashboard desideri (aggiornamento in tempo reale mentre il DB si aggiorna). Un utente ha riferito di aver usato Postgres + PostGraphile per esporre automaticamente una API GraphQL per i dati del libro mastro e poi scrivere un front-end React personalizzato sopra di essa – trattando essenzialmente il libro mastro come un servizio web. Questo approccio affronta casi in cui l’interfaccia di Fava potrebbe non essere sufficiente (es. accesso multi-utente, o interfacce più adatte al mobile). È più impegnativo dal punto di vista ingegneristico, ma mostra il potenziale: puoi integrare Beancount con stack web moderni relativamente facilmente. Una variante più leggera è esportare i risultati delle query in SQLite – eseguendo
bea --file ledger.beancount query "SELECT ..."stampa una tabella che puoi incollare o canalizzare, e l’esportazione CSV per fogli di calcolo dal CLI aspetta opzioni di esportazione native perbea query. Alcune persone usano SQLite come intermediario per collegarsi a strumenti come Metabase (che può leggere file SQLite tramite una connessione). -
Grafana (Cruscotti Time-Series): Grafana è popolare per il monitoraggio e i dati time-series. I dati finanziari nel tempo (spese, saldi) possono essere trattati come serie temporali. Ci sono state discussioni nella comunità su come collegare Beancount a Grafana. Un'idea era un Data Source Plugin per Grafana che potesse eseguire query BQL su un file Beancount al volo. Questo permetterebbe ai pannelli di Grafana di mostrare direttamente, ad esempio, “Saldo del conto corrente” come un indicatore o “Spese negli ultimi 30 giorni” come un grafico, interrogando il registro contabile. Al momento (2025), un plugin dedicato non è stato pubblicato, ma gli appassionati hanno creato soluzioni ad hoc. Per esempio, un utente Reddit aquilax ha realizzato un semplice server che rende disponibili a Grafana i dati di Ledger CLI, condividendo il progetto come grafana-ledger-datasource-server. Un concetto simile può essere applicato a Beancount: si potrebbe scrivere un piccolo server HTTP in Python che carica il registro Beancount (usando l'API di Beancount per interrogare i dati) ed espone endpoint che restituiscono frame di dati JSON per Grafana. Grafana ha un plugin di origine dati JSON generico che potrebbe quindi prelevare dati da questa API. In pratica, ciò significa che si potrebbe progettare una dashboard Grafana con pannelli come “Ricavi Mensili (istogramma)” o “Saldo Cassa Giornaliero (grafico a linee)”, e quei pannelli prelevano dati dalla tua API basata su Beancount. Grafana consentirebbe ricche opzioni di visualizzazione (annotazioni, soglie, combinazione con metriche del server, ecc.). Andreas Gerstmayr (uno dei manutentori di Fava) ha suggerito esattamente questo approccio e ha persino menzionato di aver creato un Fava extension chiamato fava-dashboards (di cui si parla più avanti) per generare grafici da query BQL, come alternativa a un’installazione completa di Grafana. Se preferisci l’interfaccia di Grafana, l’integrazione è fattibile – richiede solo di costruire il ponte dati.
-
Metabase (Query Ad-hoc e Dashboard): Metabase è uno strumento BI facile da usare che consente di eseguire query e creare dashboard senza codice. Se esporti il tuo libro contabile in un formato relazionale (tramite Beanpost o scrivendo tabelle di transazioni, registrazioni, ecc.), puoi puntare Metabase a quel database. Potresti creare tabelle personalizzate come
expenses (date, category, amount)dal tuo libro, e poi in Metabase puoi generare grafici facilmente (es. un grafico a torta delle spese per categoria del mese scorso). Il vantaggio è che utenti non tecnici (o colleghi) possono interagire con i dati tramite l’interfaccia GUI di Metabase senza dover modificare il file Beancount. Lo svantaggio è che devi mantenere l’esportazione/sincronizzazione. Alcuni utenti hanno automatizzato la conversione notturna del libro Beancount in SQLite, poi lasciano che Metabase legga da SQLite; altri possono usare l’approccio Postgres menzionato. L’aspetto chiave è che la portabilità dei dati di Beancount lo rende possibile – sei libero di duplicare i dati in qualsiasi forma serva al tuo strumento esterno. -
Frontend/Applicazioni Personalizzate: Se hai esigenze specifiche, puoi sempre scrivere un’applicazione personalizzata sopra Beancount. La libreria Python di Beancount ti dà accesso a tutte le voci parsate, saldi, ecc., quindi un framework web Python (Flask, Django, FastAPI) può essere usato per costruire un’app su misura. Per esempio, una piccola impresa potrebbe creare una dashboard che mostra KPI (come margine lordo, vendite giornaliere, ecc.) interrogando il libro contabile e magari combinando dati esterni (come il numero di clienti serviti). Un membro della community ha costruito un’interfaccia web ottimizzata per dispositivi mobili perché Fava non era intuitivo per il coniuge – ha sfruttato il libro in un database per alimentare questa UI personalizzata. Se preferisci JavaScript/TypeScript, potresti usare uno strumento per convertire il libro in JSON e partire da lì. Fava espone la sua pagina Query tramite un’API JSON di query, quindi un frontend personalizzato può inviargli BQL e mostrare le tabelle restituite invece di costruire un nuovo backend di query.
-
Integrazione Excel/PowerBI: Vale la pena notare che è possibile integrare anche con Excel o PowerBI. Fino a quando
bea querynon avrà un’esportazione CSV nativa, usa l’esportazione dalla pagina Query di Fava per file di fogli di calcolo che Excel apre direttamente. Un flusso di lavoro potrebbe essere: un processo notturno genera un file CSV dei principali dati finanziari da Beancount, e PowerBI è impostato per importare quel file. È un po’ indiretto, ma per organizzazioni che già usano intensamente Excel/PowerBI, è un’integrazione a basso attrito. PowerBI supporta anche fonti dati Python, quindi si potrebbe scrivere uno script Python breve che esegue query BQL e usarlo come fonte dati in PowerBI, ottenendo una connessione diretta.
Caso di Studio – Idea di Integrazione con Grafana: Josh, un utente Beancount, ha chiesto nella mailing list di inviare metriche Beancount a Prometheus e visualizzarle in Grafana. Gli sviluppatori principali hanno risposto che invece di duplicare i dati in Prometheus, un approccio migliore è un plugin Grafana o un servizio che interroghi direttamente il registro Beancount. Andreas ha condiviso la sua estensione fava-dashboards che rende grafici personalizzati all’interno di Fava stessa come soluzione esempio. La conclusione è: hai opzioni – integrare tramite infrastrutture BI esistenti (Prometheus+Grafana o SQL+Metabase) oppure estendere Fava per soddisfare le tue esigenze (la sezione successiva approfondirà questo).
Sicurezza e Considerazioni Multi-Utente: Se integri in strumenti esterni, fai attenzione alla sensibilità dei dati. Il testo semplice di Beancount spesso contiene info finanziarie private, quindi ogni server che li espone dovrebbe essere sicuro (autenticato). Se sposti dati a uno strumento BI cloud, potresti perdere un po’ di privacy. Strumenti self-hosted (versioni open source di Grafana/Metabase) possono essere eseguiti localmente per mitigare questo. Inoltre, se più persone devono vedere dashboard, un cruscotto esterno in sola lettura può essere preferibile rispetto a dare a tutti accesso a Fava (dove potrebbero modificare i dati se non attenti). Per esempio, una startup può usare Beancount internamente ma usare Metabase per far vedere ai responsabili di reparto la spesa rispetto al budget senza toccare i file del registro.
In sintesi, Beancount e Fava lavorano bene con altri strumenti. Puoi sfruttare l'intero ecosistema di strumenti dati con un po' di codice di collegamento: inviare i dati del ledger a un database SQL per strumenti BI, servirli tramite API per applicazioni web, o persino usare librerie specializzate per trasmetterli a sistemi di serie temporali. Questa flessibilità significa che non sei mai bloccato se le visualizzazioni integrate in Fava non soddisfano un'esigenza specifica – puoi sempre integrarti in un'altra piattaforma continuando a usare Beancount come fonte di verità. Successivamente, vedremo come estendere Fava stesso con plugin e dashboard personalizzati, spesso una via più semplice rispetto all'integrazione esterna se ti servono solo alcune funzionalità aggiuntive.
Dashboard personalizzate ed estensione di Fava con plugin (Esempi di codice)
Fava è progettato per essere estensibile: puoi aggiungere nuove pagine, grafici e comportamenti scrivendo plugin (estensioni) per Fava in Python. Questo permette di adattare l'interfaccia web alle tue esigenze specifiche senza dover costruire un'app separata. Esploreremo due strade principali per la personalizzazione: (1) usare o scrivere estensioni per Fava, e (2) configurare dashboard personalizzate tramite plugin della community come fava-dashboards.
Estensioni per Fava (Plugin personalizzati)
Un'estensione per Fava è essenzialmente un modulo Python che definisce una sottoclasse di fava.ext.FavaExtensionBase. Quando Fava si avvia, può caricare questo modulo e integrarlo nell'app. Le estensioni possono registrare nuove pagine di report, agganciarsi a eventi e includere anche JavaScript personalizzato per l'interattività. Fava 1.30.16 include due: fava.ext.auto_commit e fava.ext.portfolio_list. Altre possono essere installate tramite pip o scritte da zero.
Per abilitare un'estensione, si usa la direttiva personalizzata di Beancount nel file ledger:
2010-01-01 custom "fava-extension" "my_extension_module" "{'option': 'value'}"Questo indica a Fava di caricare il modulo specificato. Se hai installato un'estensione tramite pip, qui farai riferimento al nome del suo modulo. La stringa opzionale alla fine è la configurazione per l'estensione. Fava la interpreta come un literal Python, quindi "{'option': 'value'}" arriva come un dict.
Esempio – Estensione Auto-Commit: L'estensione fava.ext.auto_commit inclusa committa le modifiche su git quando modifichi il file tramite Fava. Se vuoi usarla, aggiungeresti:
2025-01-01 custom "fava-extension" "fava.ext.auto_commit"Sovrascrive after_write_source, after_insert_entry, after_entry_modified, after_delete_entry e after_insert_metadata. Ogni hook esegue un git commit nella directory del file ledger. Quindi il ledger deve già trovarsi in un checkout git. Dimostra come le estensioni si agganciano agli eventi di modifica di Fava.
Esempio – Estensione Lista Portafoglio: Il pacchetto incluso fava.ext.portfolio_list aggiunge una pagina che elenca i tuoi conti di investimento. Imposta report_title = "Portfolio List" e fornisce un template. Fava lo rileva e aggiunge una nuova voce nella barra laterale “Portfolio List” sotto Reports. Imposta anche has_js_module = True per caricare il suo JavaScript companion. Per abilitarlo esplicitamente, aggiungeresti:
2025-01-01 custom "fava-extension" "fava.ext.portfolio_list"(In questo caso non è necessaria alcuna configurazione.)
Scrivere un’Estensione Personalizzata: Supponiamo tu voglia una pagina report personalizzata, ad esempio “Receivables Aging” per le fatture. Potresti creare un file receivables.py come:
# receivables.py
from fava.ext import FavaExtensionBase
class ReceivablesReport(FavaExtensionBase):
report_title = "Receivables Aging"
def after_load_file(self):
# Runs after Fava loads the ledger. Summarise open
# invoices here so the template only renders.
self.overdue = [
txn for txn in self.ledger.all_entries
if "invoice" in getattr(txn, "tags", set())
]Creeresti inoltre un templates/ReceivablesReport.html accanto al modulo per definire l’HTML della pagina. In quel template puoi leggere attributi come self.overdue che il tuo hook ha preparato. Una volta scritta questa estensione, la aggiungi al tuo libro mastro:
2025-01-01 custom "fava-extension" "receivables"(assumendo che receivables.py sia nella directory del file Beancount o nel PYTHONPATH, Fava può trovarlo per nome). Avviando Fava, vedresti ora una pagina “Receivables Aging”.
Dietro le quinte, Fava chiama i metodi della tua estensione in punti fissi. I hook disponibili in Fava 1.30.16 sono after_load_file, before_request, after_entry_modified, after_insert_entry, after_delete_entry, after_insert_metadata e after_write_source. Un metodo decorato con @extension_endpoint diventa inoltre un endpoint API JSON sotto l’estensione. Tipicamente i hook forniti più un template sono sufficienti.
La documentazione di Fava segnala che il sistema di estensioni è ancora in evoluzione, ma è utilizzabile. Infatti, molte funzionalità avanzate sono state prototipate come estensioni.
Cruscotti Personalizzati con fava-dashboards (Estensione della Comunità)
Invece di scrivere un’estensione da zero, potresti usare il plugin terze parti fava-dashboards creato da un manutentore di Fava. Questa estensione permette di definire cruscotti arbitrari tramite un file di configurazione YAML, mescolando testo, tabelle e grafici, alimentati da query BQL. È fondamentalmente un modo per creare nuove “pagine” in Fava che contengono più pannelli personalizzati.
Installazione e Configurazione: Per prima cosa, installi il pacchetto (es. pip install fava-dashboards). La versione 2.0.2 si carica senza problemi accanto a Fava 1.30.16. Poi nel tuo file Beancount, lo attivi con una direttiva personalizzata che punta al file di configurazione dei cruscotti. Per esempio:
2010-01-01 custom "fava-extension" "fava_dashboards" "{ 'config': '/path/to/dashboards.yaml' }"(fava-dashboards/README.md at main · andreasgerstmayr/fava-dashboards · GitHub). Questo indica a Fava di caricare il modulo fava_dashboards e leggere il tuo file YAML per la configurazione.
Formato YAML per dashboard: Nel dashboards.yaml, definisci una o più dashboard e i loro pannelli. Due regole derivano dalla pipeline dell’estensione. Le colonne aggregate necessitano di un alias AS. E si applica la convenzione di segno BQL: le somme di entrate arrivano negative, le spese positive. Per esempio:
dashboards:
- title: "Cash Flow Dashboard"
panels:
- title: "Net Cash This Month"
width: 50%
queries:
- bql: "SELECT sum(position) AS net_cash WHERE account ~ 'Income' OR account ~ 'Expenses'"
type: "jinja2"
template: "<h1>{{ panel.queries[0].result[0][0] }}</h1>"
- title: "Spending by Category"
width: 50%
queries:
- bql: "SELECT account AS category, sum(position) AS total WHERE account ~ 'Expenses' GROUP BY account ORDER BY account"
type: "jinja2"
template: "<table>{% for row in panel.queries[0].result %}<tr><td>{{ row[0] }}</td><td>{{ row[1] }}</td></tr>{% endfor %}</table>"Il primo pannello mostra direttamente la posizione sommata. Nel ledger dell’esempio funziona rende (-4650.00 USD). Sono 6.000,00 USD di entrate nette dopo 1.350,00 USD di spese. Il secondo pannello cicla sulle righe della query in una tabella. Il progetto rende anche pannelli di grafici dalle stesse query. Consulta il README collegato per l’API dello script grafico.
L’estensione si occupa di renderizzare questi quando apri la pagina della dashboard in Fava. Puoi creare multiple dashboard (ognuna appare come una scheda o pagina separata). Questo è estremamente potente per creare dashboard finanziarie personalizzate. Per esempio, potresti creare una dashboard “Budget vs Effettivo”: un pannello mostra una tabella di budget versus effettivo per categoria (tramite una query che confronta due set di conti), un altro pannello mostra un grafico a barre della spesa da inizio anno contro l’anno precedente, ecc. Tutto ciò con solo configurazione e scripting minimo, sfruttando i dati del ledger via BQL.
Esempio di codice – Abilitare fava-dashboards: Come mostrato sopra, aggiungere l’estensione è una riga nel tuo ledger. Per completezza, ecco un esempio minimo di ciò nel contesto:
option "title" "My Ledger"
option "operating_currency" "USD"
plugin "beancount.plugins.auto_accounts" ; (auto-opens accounts)
1970-01-01 custom "fava-extension" "fava_dashboards" "{ 'config': 'dashboards.yaml' }"E nel dashboards.yaml:
dashboards:
- title: "Overview"
panels:
- title: "Net Worth"
queries:
- bql: "SELECT sum(position) AS net_worth WHERE account ~ 'Assets' OR account ~ 'Liabilities'"
type: "jinja2"
template: "<div>Net Worth: {{ panel.queries[0].result[0][0] }}</div>"Nel ledger dell’esempio funziona ciò rende <div>Net Worth: (4650.00 USD)</div>. Una vera dashboard formatterebbe bene e aggiungerebbe più pannelli.
Con questo in atto, quando avvii Fava e navighi alla dashboard “Overview”, mostrerà il tuo patrimonio netto calcolato. Puoi quindi raffinire il modello o aggiungere grafici secondo necessità.
Altre estensioni rilevanti: Oltre a fava-dashboards, membri della community hanno creato plugin come fava-investor per l’analisi degli investimenti e fava-review per la revisione delle transazioni. Questi sono pacchetti di terze parti con procedure di installazione proprie e compatibilità con Fava specifiche. Controlla i rispettivi README prima di installare. La community mantiene una lista “awesome-beancount” di plugin e strumenti. Consultandola, potresti trovare un’estensione prebuilt che soddisfa le tue esigenze.
Quando estendere vs integrare esternamente: Generalmente, se la tua esigenza è puramente di presentazione o calcolo sui dati del registro esistente, un’estensione Fava è l’ideale (mantiene tutto in un unico posto, rispetta i filtri, ecc.). Se la tua necessità implica la combinazione di dati esterni o richiedi un’interfaccia utente drasticamente diversa, potrebbe essere giustificata un’integrazione esterna (sezione precedente). Per esempio, mostrare le analisi di un sito web insieme alle finanze – meglio in Grafana/Metabase; ma aggiungere un nuovo KPI finanziario o un report – meglio come plugin di Fava.
Esempio – Un KPI personalizzato in Fava: Supponiamo che tu voglia monitorare il “Tasso di Risparmio” (percentuale del reddito risparmiata). Potresti farlo con un’estensione che lo calcoli e mostri una piccola casella nella pagina principale. Oppure con fava-dashboards, un pannello potrebbe essere un Jinja2 che produce Savings Rate: X% interrogando il reddito totale e le spese totali. Questo tipo di metrica personalizzata è molto facile da inserire con questi strumenti, mentre in un sistema chiuso come QuickBooks potrebbe essere impossibile creare una nuova metrica sul cruscotto.
Le stesse due query alimentano un pannello per il tasso di risparmio. Attenzione ai segni: BQL sum(position) restituisce il reddito come posizione negativa e le spese come positive, e Jinja non può sottrarre una posizione dall’altra. Quindi mostra entrambe le voci e indica il tasso nel testo del template:
- title: "Savings Rate"
panels:
- title: "Savings Rate"
queries:
- bql: "SELECT sum(position) AS income_total WHERE account ~ 'Income'"
- bql: "SELECT sum(position) AS expense_total WHERE account ~ 'Expenses'"
type: "jinja2"
template: "<h3>Savings Rate: 77.5% ({{ panel.queries[0].result[0][0] }} earned, {{ panel.queries[1].result[0][0] }} spent)</h3>"Sul registro dell’esempio pratico questo rende Savings Rate: 77.5% ((-6000.00 USD) earned, (1350.00 USD) spent). Il tasso è (6,000.00 − 1,350.00) / 6,000.00. Calcolalo dalle grandezze. Non negare né sottrarre le posizioni all’interno del template.
Il punto chiave: Fava non è uno strumento statico – è una piattaforma estendibile. Con un po’ di Python o anche solo codice di configurazione, puoi personalizzarlo ampiamente. Molti utenti condividono piccoli script o estensioni nei forum per fare cose come mostrare bollette imminenti, generare fatture PDF dalle transazioni, o integrare Beancount con librerie di calcolo fiscale. Quando investi nel imparare o usare queste estensioni, ottieni un sistema di analisi finanziaria molto personalizzato senza partire da zero.
Casi d’uso: Finanza personale vs. Contabilità per piccole imprese
Beancount e Fava possono essere usati sia per la finanza personale che per la contabilità delle piccole imprese, ma i casi d’uso e i vantaggi differiscono leggermente nell’enfasi:
Finanza personale
Per le persone, Beancount+Fava eccelle nel fornire piena visibilità e comprensione delle proprie finanze senza dipendere da app proprietarie. I casi d’uso comuni per la finanza personale includono:
-
Tracciamento delle Spese e Budgeting: Molti usano Beancount per registrare ogni spesa e poi analizzare i modelli di spesa. Con Fava, possono vedere dove va il denaro ogni mese (treemap delle spese) e monitorare i budget confrontandoli con i valori attesi (alcuni lo fanno tramite l'estensione Budgets o query personalizzate). Un utente ha descritto che dopo aver adottato Beancount, “l'analisi dei dati finanziari (spese, donazioni, tasse, ecc.) è banale. È facile farlo con Fava, ma anche con script... Ho uno script Python che estrae i dati da Beancount usando BQL, poi uso pandas per preparare un report.”. Questo dimostra come gli utenti personali beneficino sia dell'interfaccia integrata sia della capacità di scrivere analisi personalizzate quando necessario.
-
Patrimonio Netto e Monitoraggio degli Obiettivi: Poiché puoi includere tutti gli asset (conti bancari, investimenti, anche asset fisici se vuoi) in un unico libro mastro, ottieni una visione unica del patrimonio netto. Gli appassionati di finanza personale usano questo per tracciare i progressi verso gli obiettivi (es. “numero FI” o estinzione del debito). I grafici di Fava che mostrano il patrimonio netto nel tempo sono motivanti – puoi letteralmente vedere la curva della tua ricchezza. È comune monitorare passività come prestiti studenteschi o mutui in Beancount e aggiornare i loro saldi; il libro mastro fornisce così un quadro completo della salute finanziaria.
-
Investimenti e Crypto: L'uso personale spesso si estende al monitoraggio di un portafoglio. Beancount può gestire azioni, crypto, ecc., con calcoli del costo medio e dei guadagni realizzati (tramite plugin o query). Il vantaggio rispetto al sito di un broker è che puoi consolidare tutti i conti e vedere la vera allocazione degli asset. Plugin della community come fava-investor, ad esempio, aggiungono pagine di analisi degli investimenti a Fava. Questo è qualcosa tipicamente fatto in Excel da investitori amatoriali; Beancount fornisce un metodo più rigoroso e automatizzato. Un post sul blog intitolato “Beancount: DeFi Accounting For Noobs” illustra anche l'uso per tracciare transazioni di criptovalute e yield farming, evidenziando la flessibilità in scenari di finanza personale moderna.
-
Finanze Personali Multi-Valuta: Se vivi all'estero o possiedi investimenti esteri, Beancount è estremamente utile in quanto può convertire e aggregare valute. Gli utenti hanno osservato che “molti software di contabilità non sono bravi con le multi-valute… Con Beancount, puoi definire qualsiasi commodity desideri”, e ottenere report nella valuta preferita. Per un utente personale che percepisce, ad esempio, uno stipendio in USD ma ha spese in EUR, questo è un grande vantaggio.
-
Tracciamento della vita e diario: Un caso d'uso non convenzionale ma reale: alcuni trattano il libro mastro come un registro della vita, etichettando le transazioni con eventi della vita (come
#weddingo#vacation2025) e poi usando questo per calcolare i costi degli eventi o addirittura come un diario delle attività (i metadati finanziari come proxy per eventi di vita). Il formato in plain text e il tagging rendono questo possibile in un modo che gli strumenti tradizionali non permettono facilmente. -
Semplicità e Proprietà: La finanza personale riguarda anche la mentalità. Molti scelgono Beancount perché “volevano possedere questi dati e analizzarli facilmente, e non volevano essere vincolati a un abbonamento o a un fornitore”. La recente scomparsa di Mint.com (un popolare strumento gratuito per il budgeting) ha spinto gli appassionati verso la contabilità in plain text per la longevità. Con Beancount, sanno di poter ancora aprire il loro libro mastro tra 20 anni. Per le finanze di un singolo individuo, i dati di Beancount (forse sincronizzati tramite Dropbox o Git) e l'interfaccia web di Fava (che può essere eseguita localmente o su un server privato) offrono un equilibrio tra comodità e controllo difficile da trovare altrove.
Sfide potenziali per l’uso personale: la configurazione iniziale e l’apprendimento della partita doppia possono rappresentare un ostacolo per alcuni. Ma molte risorse (come il tutorial di Beancount e i forum della comunità) aiutano i nuovi utenti. Una volta configurato, la manutenzione può essere in gran parte automatizzata come descritto, il che è ottimo per chi gestisce le finanze domestiche con uno sforzo minimo.
Contabilità per piccole imprese
Le piccole imprese, le startup e i lavoratori autonomi possono utilizzare anche Beancount+Fava, anche se qui i requisiti includono reportistica più formale e forse collaborazione:
-
Contabilità e Bilanci: Un'azienda può mantenere il suo libro mastro generale in Beancount, registrando fatture, bollette, stipendi, ecc., e produrre Bilanci e Conti Economici. Beancount supporta la contabilità per competenza necessaria (puoi contrassegnare i conti come Conti Clienti/Foritori e registrare fatture con scritture a ricavi e crediti, poi successivamente un pagamento per estinguere i crediti). Fava mostrerà poi questi sotto Attivi o Passivi in modo appropriato. Una discussione su Reddit chiedeva se Beancount sia adatto per le aziende e se possa generare bilanci corretti – sì, può produrre bilanci, conti economici e (con qualche aiuto nelle query) rendiconti di flussi di cassa, poiché questi sono solo viste dei dati in partita doppia. Il problema è che Beancount non impone standard contabili particolari (dipende da come lo si usa). Quindi un utente esperto (o un commercialista) dovrebbe configurare correttamente il piano dei conti per l’attività. Esistono esempi comunitari di Beancount usato per startup – un commentatore di HN ha detto: “Mi piace davvero usare Beancount + Git per gestire il registro contabile della mia startup”, anche se ha notato che aggiungere le registrazioni periodicamente è un po’ tedioso. Questa noia può essere alleviata con l’automazione delle importazioni come abbiamo visto.
-
Monitoraggio Finanziario in Tempo Reale: Per una piccola impresa, il flusso di cassa è tutto. Usando Fava, un imprenditore può monitorare i saldi bancari e il flusso di cassa quasi in tempo reale, come per le finanze personali – ma qui è ancor più critico. Automatizzando gli import dei flussi bancari, può capire se è arrivato un pagamento da un cliente o se è stata effettuata una grossa spesa. QuickBooks offre feed bancari che “ti permettono di vedere come sta andando la tua attività in tempo reale”; con Beancount, si replica questo tramite la propria integrazione bancaria. Il vantaggio di Beancount è la trasparenza – vedi esattamente cosa è stato importato e come è categorizzato, invece di affidarti alla logica di abbinamento a volte oscura di QuickBooks.
-
Fatturazione e AR/AP: Beancount non dispone di un modulo di fatturazione integrato (come la generazione di fatture PDF o il tracciamento dei numeri di fattura). Tuttavia, utenti creativi hanno gestito questo con componenti aggiuntivi. Per esempio, si potrebbe generare un PDF della fattura da una transazione usando un template Jinja2 o persino uno script esterno che legge le voci AR aperte. Esiste un progetto chiamato “Beanie” che funge da sistema AR leggero sopra Beancount. Le piccole imprese potrebbero usare Beancount per il libro mastro e un altro strumento per emettere fatture, quindi importare i dati della fattura in Beancount. È un passaggio in più rispetto a QuickBooks (che può inviare fatture e poi registrarle automaticamente una volta pagate), ma garantisce che tutti i dati finiscano nel libro mastro aperto.
-
Libro paga e Ammortamenti: Questi sono compiti contabili che le piccole imprese gestiscono. Beancount può certamente registrare le voci del libro paga (dividendo la retribuzione lorda, tasse, ritenute, ecc. nei conti appropriati) – ma normalmente tali calcoli si fanno con strumenti esterni o tramite il fornitore del libro paga e poi si inseriscono. I piani di ammortamento delle immobilizzazioni fisse verrebbero allo stesso modo inseriti manualmente (o si potrebbe scrivere un plugin per automatizzare le scritture di ammortamento mensili). Beancount non ha magie per queste operazioni, ma neppure molti software per piccole imprese a parte offrire qualche modello. Il vantaggio è che si può programmare qualunque caso particolare. Per esempio, se si ha uno schema di ricavi personalizzato, si potrebbero programmare le scritture contabili in Python e includerle.
-
Trasparenza e Auditabilità: Le imprese potrebbero apprezzare che Beancount fornisce una chiara traccia di verifica. Ogni transazione è semplice e può essere annotata con link a documenti (ricevute, contratti). Se sottoposte a revisione, si può mostrare il file del libro mastro insieme ai documenti allegati, il che è piuttosto semplice. Inoltre, il controllo versione significa che si dispone di un registro di audit su chi/quando ha effettuato modifiche (se più persone collaborano tramite Git). Confronta questo con QuickBooks dove un commercialista potrebbe dover esaminare i log delle modifiche che non sono facilmente accessibili all’utente.
-
Costo: Beancount+Fava è gratuito, cosa attraente per startup o piccole imprese che vogliono minimizzare i costi software. QuickBooks, Xero, ecc., hanno costi mensili. Tuttavia, il compromesso è che questi includono supporto e configurazione più semplice. Un imprenditore esperto di tecnologia potrebbe volentieri investire un po’ di tempo per risparmiare sui costi e ottenere maggiore flessibilità.
Esempi reali: Un altro utente su HN ha detto di averlo usato per una società di consulenza LLC e ha funzionato bene, ma quando le transazioni sono cresciute, hanno iniziato a suddividere i file annualmente per mantenere la velocità. Il consenso è: per un'azienda piccola (diciamo decine di migliaia di transazioni all'anno o meno), Beancount è perfettamente capace. Se fossi una PMI più grande con centinaia di migliaia di transazioni, le prestazioni potrebbero giustificare l'uso di un approccio basato su database o la scelta di un sistema contabile costruito ad hoc – anche se abbiamo Beanpost per cercare di affrontare questo usando Postgres come backend.
Collaborazione: Un'area di differenza – QuickBooks Online permette a più utenti (proprietario, contabile, ecc.) di lavorare simultaneamente. Con Beancount, la collaborazione potrebbe avvenire tramite Git (più utenti effettuano commit delle modifiche). Questo funziona, ma richiede una certa conoscenza di Git e la risoluzione dei conflitti se le persone modificano contemporaneamente. Alcuni hanno usato piattaforme Git online o anche Google Drive per condividere il file del registro. È fattibile, ma non così fluido come un software di contabilità cloud. Tuttavia, per un piccolo team (o contabile singolo + proprietario) è gestibile, e puoi sempre concedere l'accesso in sola lettura tramite Fava (ospitalo su un server interno e lascia che altri vedano i report senza modificare).
Conformità normativa: Per le finanze personali, non è un problema. Per l’attività, potresti dover produrre rapporti ufficiali o seguire gli standard contabili. Beancount può essere usato per generare rendiconti conformi ai principi GAAP, ma richiede che l’utente inserisca i dati di conseguenza. Non c’è alcuna applicazione incorporata delle regole GAAP (es. nessun modulo integrato per le immobilizzazioni che garantisca l’ammortamento corretto). Un contabile esterno può comunque lavorare con un registro Beancount (essendo fondamentalmente un giornale generalizzato) – potrebbe esportarlo in Excel e fare aggiustamenti se necessario. Alcune aziende potrebbero preferire un software conosciuto per questo motivo, o almeno avere un contabile a proprio agio con dati in formato testo semplice.
Chi lo usa per affari? Probabilmente utenti esperti: startup tech, freelancer con background di programmazione, o aziende che danno grande valore al controllo dei dati (es. forse società di trading finanziario che vogliono reporting personalizzato). Un thread su Reddit aveva qualcuno che chiedeva se Beancount fosse adatto per una società di trading – le risposte indicavano di sì, gestisce multivaluta e può produrre i rendiconti necessari, ma dovrai costruirci attorno alcuni strumenti.
Per concludere questa sezione: gli utenti di finanza personale amano Beancount per l'intuizione e il controllo che offre sul loro denaro personale – trasforma le finanze in un insieme di dati interrogabili da cui imparare, permettendo ad esempio di monitorare facilmente ogni spesa e calcolare metriche che gli strumenti di budgeting tipici non possono. Gli utenti di piccole imprese apprezzano la trasparenza, il risparmio sui costi e la possibilità di personalizzazione – possono integrare la contabilità con il resto della loro suite software, ed evitare il vincolo con un fornitore o le tariffe mensili. Entrambi i casi d'uso beneficiano di analisi in tempo reale: una persona può seguire l'andamento del budget mensile, un'azienda può monitorare i flussi di cassa giornalieri – in entrambi i casi, Fava può presentare informazioni aggiornate se alimentato con dati tempestivi.
Confronto con altre piattaforme di analisi in tempo reale
È utile confrontare Beancount+Fava con altre soluzioni che offrono analisi finanziarie “in tempo reale”, come QuickBooks (con feed bancari live) e Power BI (o dashboard BI simili). Ogni approccio ha punti di forza e compromessi in termini di trasparenza, flessibilità e reattività:
| Aspetto | Beancount + Fava (Open-Source) | QuickBooks (con Flussi Bancari) | Power BI / BI Generico |
|---|---|---|---|
| Trasparenza e Proprietà dei Dati | Completamente trasparente – i dati sono in testo semplice, puoi ispezionare ogni transazione. La logica è tutta visibile (nessun algoritmo nascosto). Possiedi il formato per sempre. Il controllo di versione può mostrare una traccia di audit delle modifiche. | Opaco – i dati sono memorizzati in un database cloud proprietario. Dipendi dall’export di Intuit per i backup. Alcuni processi (es. auto-categorizzazione) non sono completamente visibili. Log di audit limitati. Se smetti di pagare, rischi di perdere l’accesso facile ai tuoi dati. | Dipende dalla fonte dati – Power BI è solo uno strumento. Se connesso a un database aperto, mantieni la proprietà di quei dati. Tuttavia, i file o dashboard Power BI sono in formato proprietario e richiedono Power BI per la visualizzazione. La trasparenza dei calcoli è buona (li definisci tu), ma il sistema complessivo è complesso. |
| Flessibilità e Personalizzazione | Estremamente flessibile. Puoi definire qualsiasi struttura di conti, qualsiasi merce/valuta. Puoi scrivere comportamenti o analisi personalizzati (Python, plugin). Nessun workflow imposto – lo adatti alle tue esigenze (personali o aziendali). Il sistema di estensioni di Fava e strumenti come fava-dashboards permettono dashboard personalizzati nell’app. Se manca qualcosa, è probabile che tu possa costruirlo o integrarlo da solo. | Moderato. QuickBooks offre molte funzionalità per la contabilità tipica di piccole imprese (fatturazione, payroll (add-on separato), report base). Ma sei limitato alle funzionalità fornite da Intuit. Piano dei conti e categorie devono adattarsi al suo paradigma. Rapporto personalizzati sono limitati; non puoi interrogare arbitrariamente il database. Esistono integrazioni ma tramite API Intuit (limitata) o esportazione in Excel. Si scambia flessibilità per convenienza. | Molto flessibile per analisi e visualizzazione. Puoi creare quasi ogni grafico o KPI se i dati sono accessibili. Power BI può mescolare dati finanziari con altri dati (vendite, analisi web, ecc.) facilmente. Tuttavia, non è un sistema contabile – devi avere dati preparati (anche da Beancount!). Non impone partita doppia o principi contabili; è una tela bianca. La flessibilità nella visualizzazione è alta (misure DAX personalizzate, ecc.), ma richiede competenze. |
| Reattività in Tempo Reale | Quasi in tempo reale con configurazione. Se automatizzi l’inserimento dati (flussi o import frequenti), Fava lo rifletterà non appena il registro è aggiornato e ricaricato. Non è “push” in tempo reale di default (serve aggiornamento manuale), ma puoi aggiornare quanto vuoi (minuti, ore). La velocità di aggiornamento è molto veloce (parsing testuale in millisecondi per piccole modifiche). Controlli la frequenza – può essere continua se scriptata. Niente attese per cicli di sincronizzazione del fornitore. | Progettato per quasi tempo reale per transazioni bancarie: “I flussi bancari ti permettono di vedere come va la tua attività in tempo reale.” In pratica, i flussi bancari in QuickBooks Online si aggiornano una volta al giorno o su richiesta (dipende dalla banca). Estrae automaticamente nuove transazioni e tenta di categorizzarle, quindi non devi importare manualmente. Le modifiche appaiono sulla dashboard senza intervento manuale. Tuttavia, alcuni dati (come transazioni pendenti) potrebbero non mostrare fino a che non vengono registrate. Alcuni report potrebbero non aggiornarsi senza un’azione. Generalmente buona reattività per dati bancari; meno per voci manuali (sono comunque in tempo reale, ma inserite da te). | Se configurato con connessione live, i dashboard possono aggiornarsi in tempo reale o a intervalli. Per esempio, un dashboard Power BI con DirectQuery su database SQL si aggiorna ogni volta che apri o automaticamente. In modalità Importazione, si aggiorna a intervalli (es. ogni ora). Quindi può essere quasi in tempo reale, ma la complessità è nel mantenere la pipeline dati. Ogni modifica ai dati richiede l’aggiornamento del modello o delle query. Ci può essere un leggero ritardo a seconda della configurazione (e se usi Power BI cloud, ci sono limiti alla frequenza di aggiornamento automatico nelle versioni gratuite). |
| Automazione e Inserimento Dati | Gli import possono essere molto automatizzati ma richiedono configurazione personalizzata. Potresti dover scrivere/mantenere script o usare importer comunitari per ogni banca o fonte dati. Nessuna connessione bancaria predefinita (tranne quelle che crei). Quindi la configurazione iniziale richiede impegno. D’altra parte, una volta configurato, può essere completamente automatizzato senza inserimento manuale (alcuni utenti hanno raggiunto ~95% automazione). Supporta anche inserimento manuale per cose non automatizzabili (con form web di Fava o editing testo). | Molto automatizzato per flussi bancari/carte di credito (nessun codice, basta collegare i conti in QuickBooks). Suggerisce automaticamente categorie (usando dati passati e un po’ di ML). “Ogni transazione è sincronizzata e ordinata istantaneamente… QuickBooks raccomanda categorie e impara col tempo.”. Grande vantaggio di comodità – meno lavoro manuale. L’automazione è soprattutto per conti finanziari; alcune cose (es. dividere una spesa in classi) richiedono ancora revisione manuale. Se il flusso bancario si rompe, l’utente deve riconnettere o caricare file. | Power BI non si occupa di inserimento dati – dipende dall’automazione della fonte dati. Se i dati provengono da un foglio manuale non è real-time. Se da database aggiornato tramite ETL può essere vicino al tempo reale. Quindi l’automazione dipende da cosa alimenti Power BI. Power BI può programmare l’aggiornamento dati. In sintesi, Power BI riflette bene dati automatizzati ma non crea l’automazione (devi avere pipeline dati automatizzata). |
| Collaborazione e Condivisione | Collaborazione via testo (es. Git) è potente ma tecnica. Più persone possono contribuire editando file del registro e unendo modifiche. Fava può essere ospitato in sola lettura per condividere report, ma manca ruoli utente o controllo accesso granulare out-of-the-box. Per utente singolo o team esperto va bene. Revisori o commercialisti potrebbero voler esportare i dati (es. bilancio di verifica in Excel) se non sono a loro agio col formato. | Accesso web multiutente con permessi (QuickBooks Online supporta commercialisti, più utenti business con ruoli). Condivisione facile – il commercialista può accedere e vedere i libri in tempo reale. Punto forte per aziende. Per finanza personale multiutente è meno rilevante, ma accesso cloud multi-dispositivo è un vantaggio (anche se si può far girare Fava su cloud/VPS personale). QuickBooks integra anche altri servizi (payroll, prestiti bancari, ecc.) utili per aziende e difficili da replicare in Beancount. | Power BI eccelle nel condividere dashboard, specialmente con Power BI Service: puoi pubblicare dashboard ai colleghi, incorporare siti web (con licenza adeguata) ecc. È pensato per collaborazione su insight. Tuttavia è condivisione in sola lettura dell’analisi, non editing collaborativo dei dati. Se più utenti devono analizzare, possono se hanno accesso al progetto BI. In sintesi, per comunicare risultati finanziari vistosamente ai stakeholder Power BI è insuperabile. Ma non è contabilità collaborativa; è analisi collaborativa. |
| Costo | Gratis (open source). Potresti investire tempo invece che soldi (configurazione/manutenzione). Ospitare Fava potrebbe avere costo trascurabile (su PC o server economico). Nessuna licenza per utenti aggiuntivi. | A pagamento (abbonamento mensile o annuale). QuickBooks Online va da $20 a $70+ al mese a seconda del piano. Ci sono tariffe per payroll o funzionalità avanzate. Molte piccole imprese pagano perché include supporto e aggiornamenti continui. Ma nel tempo il costo si accumula. Se smetti di pagare, potresti perdere accesso completo. | Misto. Power BI Desktop è gratuito, ma l’abbonamento Pro (per condivisione dashboard) costa ~$10/utente/mese. Se l’hai già tramite Office 365 o simili il costo aggiuntivo potrebbe essere zero. Altri strumenti BI variano (alcuni open source come Metabase sono gratuiti). Tuttavia considera il costo tempo di sviluppo BI e quello di mantenere database o infrastruttura cloud. |
In sintesi, Beancount+Fava vs QuickBooks: Beancount offre una trasparenza superiore (vedi e controlli tutto, e i tuoi dati non spariranno né saranno bloccati) e flessibilità (puoi modellare qualsiasi cosa nel libro mastro, non solo ciò che QuickBooks si aspetta). Richiede più fai-da-te, specialmente per l'automazione e rifiniture UI gradevoli. QuickBooks è una soluzione plug-and-play ottimizzata per le esigenze delle piccole imprese – feed bancari, fatturazione, paghe (con componenti aggiuntivi) – e offre aggiornamenti quasi in tempo reale con minimo sforzo da parte dell'utente. Tuttavia, è in molti modi una scatola nera; ti basi sul software per gestire correttamente i tuoi dati, e a volte questo significa che è difficile correggere errori o capire come si è arrivati a un numero. Molti utenti di Beancount sono persone che si sono frustrate con queste scatole nere. Scambiano un po' di comodità per chiarezza.
Beancount+Fava vs Power BI (o altri BI): Possono essere complementari. Power BI non è un sistema contabile; serve per l'analisi. In effetti, una configurazione avanzata potrebbe usare Beancount per consolidare e assicurare l'accuratezza dei dati, quindi usare Power BI per creare dashboard esecutive da quei dati. Se confrontiamo direttamente, Power BI punta più sulla flessibilità visiva e sulla combinazione di fonti dati. I grafici di Fava sono più semplici per design (focalizzati sulle esigenze contabili) ma richiedono molto meno lavoro per partire (funzionano subito sul tuo libro mastro, senza necessità di modellazione). Se il tuo obiettivo è solo ottenere insight e visualizzazioni belle e sei disposto a preparare i dati, uno strumento BI potrebbe essere appropriato. Ma se vuoi mantenere i libri contabili e ottenere report interattivi come sottoprodotto, spesso Fava da solo è sufficiente.
Si potrebbe anche fare un confronto con altri strumenti di finanza personale (es. Mint o YNAB) o sistemi ERP, ma la domanda menziona specificamente piattaforme di analisi in tempo reale. Nel campo delle viste finanziarie in tempo reale: Beancount+Fava è come avere una dashboard finanziaria "live" personalizzata e open-source, QuickBooks è una contabilità automatizzata a sorgente chiusa con sincronizzazione bancaria in tempo reale, e Power BI è una piattaforma di analisi flessibile (non specifica per la finanza ma utilizzabile per la finanza se alimentata con dati).
Una citazione significativa che contrappone open-source e commerciale: “Con un piccolo sforzo iniziale, gli strumenti open source possono essere in realtà molto migliori delle soluzioni commerciali, e molto più flessibili ed estensibili.” Questo riassume il compromesso. QuickBooks è raffinato e funziona subito per scenari comuni con pochissimo sforzo. Ma una volta che vuoi qualcosa che non fa, ti trovi davanti a un muro. Con Beancount, raramente incontri un muro – hai il codice sorgente e i dati, puoi estendere o integrare secondo necessità. Il costo è che devi essere disposto a smanettare.
Pro e contro dell'uso di Fava e Beancount per approfondimenti basati sui dati
Infine, distilliamo i vantaggi e gli svantaggi di Beancount+Fava come soluzione per l'analisi finanziaria:
Vantaggi
-
Trasparenza e Fiducia: Tutti i calcoli (totali, saldi) derivano da un libro mastro in testo semplice che puoi ispezionare. Non ci sono comportamenti misteriosi. Questo costruisce una grande fiducia nei numeri – cruciale se stai basando decisioni su di essi. È una “contabilità pulita e trasparente” senza vincoli. Puoi sempre rintracciare un dato riportato fino alle transazioni sottostanti, che è l'essenza dell'analisi basata sui dati.
-
Riproducibilità e Tracciabilità: Poiché puoi versionare il libro mastro, hai una cronologia delle modifiche. Se qualcosa sembra anomalo questo mese, puoi confrontare le versioni del libro per vedere cosa è cambiato. Questo significa anche che puoi fare esperimenti (“e se riclassificassi questa spesa?”) e annullare facilmente. Il lavoro basato sui dati spesso comporta iterazioni, e un libro mastro auditabile lo incoraggia.
-
Flessibilità nell’Analisi: Non sei limitato a rapporti predefiniti. La combinazione di query BQL, scripting Python e filtri di Fava significa che puoi rispondere a quasi ogni domanda finanziaria. Vuoi sapere “Quanto ho speso da Starbucks ogni anno negli ultimi 5 anni?” – basta una query. O “Qual è la media mobile delle mie spese rispetto al reddito in 3 mesi?” – scriptabile con Python+pandas su una query. Questa flessibilità è un enorme vantaggio per chi ama scavare nei dati. Gli utenti avanzati hanno anche creato estensioni per calcolare indicatori finanziari (es. metriche di performance del portafoglio) all’interno di Fava. In breve, puoi ottenere approfondimenti molto granulari che molti software pronti non forniscono.
-
Integrazione ed Estendibilità: Il sistema di plugin di Fava e l’API accessibile di Beancount permettono agli strumenti di evolvere con le tue necessità. Se domani inizi a dover tracciare un nuovo tipo di asset o vuoi integrare un nuovo feed dati, puoi estendere il sistema. L’architettura (testo semplice in input, diversi output) è molto estensibile. Questo contrasta con sistemi chiusi dove potresti dover richiedere una funzione e attendere.
-
Consolidamento Dati: Per privati e aziende, poter consolidare tutti i conti (diverse banche, broker, ecc.) in un solo sistema è potente. Molte soluzioni commerciali ti isolano (o fanno pagare extra per multi-valuta o entità multiple). Con Beancount puoi unire tutto. Questo dà una visione olistica dei dati, permettendo analisi trasversali. Per esempio, puoi calcolare la tua vera allocazione complessiva degli asset o il flusso di cassa netto tra personale e aziendale, essendo solo voci di dati.
-
Rapporto Qualità-Prezzo: È gratuito e open source. Per uso personale, questo è un grande vantaggio (niente abbonamenti come molte app di budgeting). Per startup o piccole organizzazioni, questi risparmi si sommano. Ma oltre al costo monetario, è anche efficiente in termini di esecuzione (Fava può girare su un server minimo) e portabilità (nessuna migrazione costosa se lo superi – è solo testo).
-
Comunità e Condivisione della Conoscenza: La comunità della contabilità in testo semplice (Beancount, Ledger, ecc.) è molto collaborativa. Le persone condividono le loro configurazioni, script personalizzati e consigli su forum e blog. Questo significa che se hai una necessità di nicchia, qualcuno potrebbe aver già affrontato qualcosa di simile. Per esempio, diversi utenti hanno contribuito a strumenti di importazione intelligenti e persino alla categorizzazione tramite machine learning (es. la libreria “smartimporter” che usa scikit-learn per auto-categorizzare i beneficiari basandosi sui dati storici). Col tempo, usare Beancount può effettivamente diventare _più intelligente se sfrutti questi strumenti della comunità – avvicinandosi alla comodità dei software commerciali mantenendo la trasparenza.
-
Empowerment e Apprendimento: Usare Fava/Beancount ti costringe a interagire con i tuoi dati finanziari a un livello più profondo. Molti utenti riferiscono di aver ottenuto una comprensione molto migliore delle loro finanze tramite questo sistema rispetto a quanto mai fatto con app automatizzate. È un po’ come la differenza tra cucinare il proprio pasto e prendere fast food – più impegno, ma sai esattamente cosa c’è dentro e può essere più salutare a lungo termine. Per insight basati sui dati, questa “proprietà” del processo può portare a scoperte più significative, perché puoi inquadrare e riformulare facilmente il modo in cui guardi i dati.
Contro
-
Configurazione iniziale e curva di apprendimento: Siamo onesti – Beancount e Fava non sono plug-and-play come, per esempio, QuickBooks o Mint. È necessario imparare le basi della contabilità a partita doppia (se non le conoscete), la sintassi del file Beancount e possibilmente un po' di Python se si vuole personalizzare profondamente. Questo investimento iniziale può rappresentare una barriera. Per gli utenti non tecnici può essere scoraggiante (anche se l'interfaccia di Fava aiuta molto fornendo un'esperienza più amichevole una volta configurato). In confronto, molti strumenti commerciali nascondono i concetti contabili dietro interfacce più semplici (il che può essere sia un vantaggio che uno svantaggio).
-
Nessuna sincronizzazione banca integrata: Per progettazione, non si connette automaticamente alle API bancarie (che spesso sono proprietarie o richiedono accordi). Quindi bisogna scaricare manualmente gli estratti conto o configurare la propria automazione (tramite script Python o servizi come Plaid che spesso costano). Per chi è abituato ad avere i flussi bancari che "funzionano semplicemente", questo può sembrare un passo indietro. Come ha notato un utente, provando Beancount "non ha trovato un modo ragionevole per ottenere flussi bancari" – questo può essere una fonte di frustrazione a meno che non si sia disposti a programmare o usare soluzioni di terze parti.
-
"In tempo reale" significa Tempo tuo: Ottenere una reattività in tempo reale è possibile ma non immediato. Bisogna configurare cron job o trigger come descritto. Se qualcosa si rompe (per esempio, una banca cambia il formato CSV), bisogna riparare il proprio importatore. Con un servizio come QuickBooks, il fornitore gestisce tali cambiamenti. Essenzialmente, sei il tuo reparto IT. Questo è il compromesso classico dell’open source. Per un hobbista può andare bene o essere addirittura divertente; per un piccolo imprenditore impegnato potrebbe essere un fastidio.
-
Scalabilità e limiti di prestazioni: Per dataset molto grandi (molti anni di transazioni dettagliate), Beancount può rallentare. È generalmente efficiente (ci sono persone con decine di migliaia di voci senza problemi). Ma come visibile nel thread di HN, un utente ha dovuto "chiudere i libri" ogni anno dopo 3 anni a causa della crescita del file per mantenere veloci le interrogazioni. Il codice Beancount v2 è in Python e può essere un po' lento con dati enormi, mentre la v3 (in sviluppo con un core in C++) migliorerà questo aspetto. Ci sono mitigazioni (file suddivisi, uso di Beanpost per caricare su DB ecc.), ma è una considerazione importante. QuickBooks probabilmente ha scalabilità interna e la maggior parte degli strumenti BI si basa su database progettati per grandi dati – quindi gestiscono set di dati grandi in modo più elegante.
-
Lacune funzionali (rispetto a software dedicati): Beancount+Fava si concentrano sulla contabilità e l’analisi. Mancano alcune funzionalità ausiliarie: ad esempio, nessun trattamento paghe, nessuna generazione di fatture (senza scripting personalizzato), nessuna integrazione di moduli fiscali, ecc. Se il tuo obiettivo è una gestione finanziaria completa, potresti dover integrare altri strumenti. Per esempio, potresti fare le paghe tramite un servizio esterno e importare le scritture contabili. Funziona, ma non è integrato in modo fluido come un ERP che fa tutto in uno. Per la finanza personale, Beancount non offre strumenti come piani di ammortamento debiti integrati o buste di bilancio (anche se si possono simulare). Si presume che si ricavino insight e si prendano decisioni, piuttosto che fornire consigli prescrittivi o moduli di pianificazione.
-
Interfaccia utente e rifinitura: Sebbene Fava sia abbastanza gradevole, non è altrettanto rifinito o guidato come alcune offerte commerciali. Non c’è uno "wizard" per guidarti nella configurazione o per assicurarsi che non commetti errori. Potresti dover leggere la documentazione per sapere come fare X. E alcune funzionalità UI che ci si aspetterebbe (categoria drag-and-drop, undo multi-step, notifiche push mobile, ecc.) non ci sono. L’interfaccia di Fava migliora costantemente (grazie ai contributi), ma è sviluppata da una comunità piccola. Se sei abituato a UI SaaS moderne e eleganti, Fava può sembrare un po' utilitaristico (anche se alcuni preferiscono proprio la sua semplicità pulita). Su mobile, Fava funziona (soprattutto in sola lettura), ma non è ottimizzato pienamente per schermi piccoli; QuickBooks ha app mobile dedicate, per esempio.
-
Dipendenza dalla comunità/manutentore: Martin Blais (autore di Beancount) e altri contributori mantengono Beancount, mentre altri mantengono Fava. Lo sviluppo può essere discontinuo (come tipico nell’open source). Anche se il software è molto utilizzabile ora, se ti serve una nuova funzionalità o c’è un bug, potresti doverlo correggere da solo o aspettare. Con un prodotto a pagamento, puoi contattare il supporto (la qualità varia, ma è sempre disponibile). Detto questo, la comunità è generalmente molto disponibile tramite mailing list o issue su GitHub.
-
Conoscenze contabili richieste: Soprattutto per uso aziendale, devi sapere cosa stai facendo. Beancount non ti impedirà di inserire una registrazione “errata” dal punto di vista contabile (eccetto squilibri o transazioni non abbinate). QuickBooks, al contrario, ha delle protezioni (e anche una complessità nascosta come la tracciatura automatica dei ricavi differiti, ecc., se le abiliti). Se non stai attento con Beancount, potresti sbagliare un rateo e non accorgertene finché non noti un problema in un report. In sostanza, Beancount presume che tu abbia una conoscenza base della contabilità o sia disposto ad imparare. Questo in effetti è un vantaggio per alcuni (costringe a farlo correttamente), ma uno svantaggio se vuoi un sistema che non richieda riflessioni.
Per riassumere pro e contro: Beancount + Fava offre un controllo e un’adattabilità senza pari a chi desidera impegnarsi profondamente con i propri dati finanziari, rendendolo uno strumento potente per approfondimenti basati sui dati. Trasforma i tuoi libri contabili in un dataset interrogabile e i tuoi report in un’app web estendibile. Il prezzo di questo potere è il lavoro che investi per configurarlo e mantenerlo, e la necessità di essere in parte autosufficienti nella gestione del sistema. A differenza di qualcosa come QuickBooks o una suite BI, che tengono per mano di più e offrono certe funzionalità automaticamente, Beancount ti dà una cassetta degli attrezzi. Se hai una mentalità analitica, questa cassetta può essere incredibilmente liberatoria – puoi estrarre insight che i report preconfezionati potrebbero non mostrare mai. Come ha scritto un utente che ha automatizzato il suo registro Beancount nel tempo, “gli strumenti open-source (come Beancount) non soddisfano tutte le mie esigenze [immediatamente]… sono ossessionato dall’automazione di tutto… ho costruito quello che mi serve”. Questo riassume l’approccio: se sei disposto a costruire quello di cui hai bisogno, piccolo o grande che sia, Fava/Beancount ti supporterà e non nasconderà mai i tuoi dati. Per una mentalità basata sui dati, è un enorme vantaggio.
In conclusione, utilizzare Fava e Beancount per l'analisi finanziaria in tempo reale è un po' come avere il proprio laboratorio personalizzabile per le finanze. Ottieni chiarezza, flessibilità e controllo difficili da trovare nelle piattaforme proprietarie, rendendolo ideale per chi apprezza questi aspetti ed è disposto a scambiare un po' di comodità per ottenerli. Il panorama moderno mostra persino approcci ibridi – per esempio, alcuni potrebbero usare uno strumento commerciale ma esportare periodicamente in Beancount per un'analisi più approfondita, o viceversa usare Beancount come principale e uno strumento BI per la presentazione. Con la conoscenza acquisita da questa indagine, si può prendere una decisione informata sulla corrispondenza di Fava+Beancount con le proprie esigenze e, in tal caso, procedere con fiducia a sfruttare le sue capacità per approfondimenti finanziari ricchi e in tempo reale.
Fonti:
- Blais, M. (2020). Beancount Documentation – Design principles and usage. [Online]. Disponibile: beancount.github.io
- Aumayr, D., Gerstmayr, A. (2025). Fava Documentation & GitHub Repository. [Online]. Disponibile: beancount.github.io/fava/ e github.com/beancount/fava
- LowEndBox. (2025). “Beancount: Lightweight FOSS Double-Entry Accounting...from the Command Line!” LowEndBox Tutorial.
- Fang-Pen Lin. (2024). “My Beancount books are 95% automatic after 3 years.” Personal Blog Post.
- Google Groups – Beancount Forum. (2023). Discussione sull'integrazione di Grafana (Josh D. e Andreas G.)
- QuickBooks Marketing Page. “Bank Feeds – Understand all your transactions in an instant.” Intuit QuickBooks.
- Watt, A. (2023). “Beancount for Personal Finance.” Alex Watt Blog.
- Reddit – r/plaintextaccounting. Varie discussioni (2021-2023) sull’uso commerciale di Beancount e sulla visualizzazione del libro mastro.
- Fava Extension Documentation – Help: Extensions.
- fava-dashboards GitHub README – plugin personalizzato per dashboard di Andreas Gerstmayr.
- Awesome Beancount list – risorse curate dalla comunità per Beancount.