Salta al contenuto principale

Cos'è Beancount: libri contabili a partita doppia in testo

Beancount è la contabilità a partita doppia in testo semplice per azioni, criptovalute e libri quotidiani — cos'è e perché gli ingegneri la usano.

Questa guida sintetizza le migliori pratiche per la contabilità in testo semplice utilizzando il potente strumento open-source Beancount. Copre la filosofia di base, la sintassi da base ad avanzata, casi di studio pratici per attività complesse e strategie di gestione del registro a lungo termine.

Parte 1: Il "Perché" - Fondamenti della Contabilità Intelligente

Prima di addentrarci nel "come", è fondamentale capire il "perché". Una contabilità efficace è la base della gestione finanziaria personale e un passo necessario verso chiarezza e libertà finanziaria.

Oltre il Monitoraggio delle Spese: Il Percorso verso la Chiarezza Finanziaria

Le semplici app di monitoraggio delle spese ti dicono dove sono andati i tuoi soldi. Un sistema contabile robusto ti dice questo e molto altro: fornisce un quadro completo della tua salute finanziaria, inclusi patrimonio netto, flusso di cassa e performance dei tuoi investimenti. L'obiettivo principale è l'osservabilità—ottenere una comprensione chiara e basata sui dati della tua vita finanziaria, che ti consente di prendere decisioni informate, valutare i rischi e lavorare verso obiettivi a lungo termine come la pensione.

Perché la Partita Doppia? Il Potere di un Sistema Bilanciato

A differenza della contabilità a partita singola (un semplice elenco di spese), il metodo a partita doppia registra ogni transazione come un flusso di valore tra almeno due conti. Il suo principio fondamentale è l'equazione contabile di base:

Attivitaˋ=Passivitaˋ+Patrimonio Netto\text{Attività} = \text{Passività} + \text{Patrimonio Netto}

Questo sistema garantisce che i tuoi libri contabili siano sempre bilanciati, riducendo drasticamente gli errori. Fornisce un quadro finanziario completo generando report essenziali come il Bilancio (cosa possiedi e cosa devi) e il Conto Economico (cosa hai guadagnato e speso).

Parte 2: Iniziare con Beancount

Beancount è un potente strumento basato su Python per la contabilità in testo semplice.

Il Tuo Primo Sguardo con Fava su Beancount.io

Beancount.io fornisce un ambiente potente che combina il motore Beancount con un'app mobile (iOS, Android) e un'app web - Fava, un'interfaccia web fantastica per visualizzare il tuo registro. Non è necessaria alcuna installazione. Quando usi la piattaforma, interagisci direttamente con un editor di testo per il tuo file di registro (ad es., main.bean) e vedi i report generati da Fava aggiornarsi in tempo reale.

Fava trasforma il testo semplice che scrivi in grafici interattivi, rendiconti finanziari e elenchi di transazioni filtrabili, dandoti una visione chiara dei tuoi report finanziari.

Oppure inizia dal terminale con bea

Se preferisci lavorare da una shell, bea è la riga di comando di Beancount.io. Non è necessario alcun account: installalo con brew install bex-co/tap/bea o uv tool install beancount-io, e crea, convalida, interroga e genera report sullo stesso file di testo semplice. La guida rapida alla CLI ti dà il primo ledger in pochi minuti, e Il tuo primo mese con bea chiude un mese completo dall'inizio alla fine.

I Cinque Tipi di Conto Principali

Beancount utilizza cinque tipi di conto di primo livello, che formano la struttura del tuo registro:

Tipo di ContoDescrizioneSaldo Tipico
Attività (Assets)Cosa possiedi (contanti, conti bancari, investimenti, proprietà).Positivo
Passività (Liabilities)Cosa devi (debiti su carte di credito, prestiti, mutui).Negativo
Reddito (Income)Da dove provengono i soldi (stipendio, bonus, interessi).Negativo
Spese (Expenses)Dove vanno i soldi (cibo, affitto, viaggi, tasse).Positivo
Patrimonio Netto (Equity)Il tuo patrimonio netto; usato per i saldi iniziali.Negativo

L'Equazione di Beancount

Beancount applica la propria versione dell'equazione contabile dove la somma di tutte le registrazioni nell'intero registro è pari a zero:

Attivitaˋ+Spese+Passivitaˋ+Reddito+Patrimonio Netto=0\text{Attività} + \text{Spese} + \text{Passività} + \text{Reddito} + \text{Patrimonio Netto} = 0

Per questo, per convenzione, i conti Reddito, Passività e Patrimonio Netto hanno valori negativi—sono le fonti di fondi che aumentano le tue Attività e Spese.

Parte 3: Il Linguaggio di Beancount - Sintassi Principale

Tutte le voci in Beancount sono direttive che iniziano con una data.

Definire i Conti (open) e le Commodity

Prima di poter utilizzare un conto, devi dichiararlo con la direttiva open. Puoi anche specificare facoltativamente le valute o "commodity" che conterrà.

; YYYY-MM-DD open Account:Name [Commodity1, Commodity2, ...]
2020-01-01 open Assets:Bank:US:Chase:Checking      USD
2020-01-01 open Liabilities:CreditCard:US:Discover USD
2020-01-01 open Expenses:Food:Groceries
2020-01-01 open Income:Salary:Google

Le commodity possono essere valute del mondo reale (ad es., USD, JPY) o qualsiasi unità personalizzata che definisci, come miglia aeree (MILES_UA) o ticker azionari (HOOL).

Registrare la Tua Prima Transazione (*)

Le transazioni sono la voce più comune. Iniziano con una data, un flag (* per una transazione completa o ! per una incompleta), un beneficiario facoltativo e una descrizione. Ogni riga successiva (indentata di due spazi) è una "registrazione" (posting) su un conto.

; YYYY-MM-DD * "Payee" "Description"
;   Account1      Amount Commodity
;   Account2     -Amount Commodity
 
2024-07-28 * "Trader Joe's" "Weekly groceries"
  Expenses:Food:Groceries     125.50 USD
  Liabilities:CreditCard:US:Discover  -125.50 USD

Per comodità, se una transazione ha solo due registrazioni, puoi omettere l'importo sulla seconda riga e Beancount lo calcolerà automaticamente.

2024-07-28 * "Trader Joe's" "Weekly groceries"
  Expenses:Food:Groceries     125.50 USD
  Liabilities:CreditCard:US:Discover

Bilanciamento a Livello di Transazione: Più importante per l'uso quotidiano, ogni singola transazione deve anche bilanciarsi—la somma di tutte le registrazioni all'interno di una singola transazione deve essere zero. Se una transazione non si bilancia, Beancount mostrerà un errore come questo:

Avviso di errore Beancount

Gestire Transazioni Multi-Valuta (@ e @@)

Beancount eccelle nella contabilità multi-valuta.

  • Usa @ per specificare un prezzo di conversione per unità.
  • Usa @@ per specificare il costo totale della conversione.
; Buying a flight in EUR with a USD card
2024-08-01 * "Lufthansa" "Flight to Berlin"
  Expenses:Travel:Flights      500.00 EUR @@ 545.00 USD  ; 500 EUR cost me 545 USD in total
  Liabilities:CreditCard:US:Discover  -545.00 USD

Parte 4: Garantire l'Accuratezza - L'Arte della Riconciliazione

Una pratica fondamentale per mantenere un registro accurato è la riconciliazione regolare. Ciò comporta il confronto dei saldi nel tuo registro Beancount con gli estratti conto ufficiali delle tue istituzioni finanziarie.

Automazione dei Controlli con le Verifiche di Saldo (balance)

La direttiva balance è il tuo strumento principale per i controlli automatizzati. Dichiari che in una data specifica, un conto aveva un saldo specifico. Beancount genererà un errore se il suo saldo calcolato non corrisponde alla tua dichiarazione. Questo è prezioso per individuare rapidamente gli errori.

Nota: La verifica di saldo controlla lo stato del conto all'inizio del giorno specificato (prima di qualsiasi transazione in quel giorno).

; From your monthly credit card statement
2024-08-01 balance Liabilities:CreditCard:US:Discover  -1432.78 USD

Collegare Documenti di Supporto (document)

Puoi collegare file esterni come estratti conto bancari o ricevute, creando una traccia verificabile. Fava rende questi collegamenti cliccabili.

2024-08-01 document Liabilities:CreditCard:US:Discover "statements/discover-2024-07.pdf"

Correggere gli Errori e Inizializzare i Saldi

Quando inizi il tuo registro o trovi una discrepanza che non riesci a tracciare, devi fare una rettifica. La pratica standard è usare un conto speciale Patrimonio Netto (Equity).

; Initializing a cash account when starting your ledger
2020-01-01 * "Initial Balance" "Setting up cash account"
  Assets:Cash:Wallet           200.00 USD
  Equity:Opening-Balances     -200.00 USD

Il conto Patrimonio Netto:SaldoIniziale (Equity:Opening-Balances) contiene importi che entrano nel tuo registro da fonti sconosciute o esterne.

Per correzioni rapide dove la discrepanza esatta non è importante, la direttiva pad può regolare automaticamente il saldo di un conto per soddisfare una successiva verifica di saldo, registrando la differenza su un conto patrimoniale. Usala con cautela, poiché può nascondere problemi più grandi. Le rettifiche esplicite sono generalmente più sicure.

Parte 5: Modelli di Transazione Avanzati e Realistici

Tracciare i Debiti: Gestire Crediti e Debiti

La contabilità a partita doppia è perfetta per tracciare il denaro che ti è dovuto (Assets:Receivables) o che devi (Liabilities:Payable).

Esempio: Paghi una cena di gruppo di $90, e il tuo amico Bob ti deve la sua quota di $45.

  1. Registra la spesa iniziale e il credito:

    2024-08-05 * "Dinner Place" "Dinner with Bob"
      Expenses:Food:Restaurant          45.00 USD  ; Your share
      Assets:Receivables:Bob            45.00 USD  ; Bob owes you
      Assets:Bank:US:Chase:Checking    -90.00 USD
  2. Quando Bob ti rimborsa:

    2024-08-06 * "Bob" "Paid me back for dinner"
      Assets:Bank:US:Chase:Checking     45.00 USD
      Assets:Receivables:Bob           -45.00 USD

Il conto Assets:Receivables:Bob ora è a zero e i tuoi libri contabili sono perfettamente bilanciati.

Attività vs. Spese: Acquisto di un'Auto e Ammortamento

Un acquisto importante come un'auto non è una semplice spesa; è l'acquisizione di un'attività che perde valore nel tempo (ammortamento).

  1. Registra l'acquisto come attività:

    2023-01-15 * "Toyota Dealer" "Purchase of a new car"
      Assets:Car:ToyotaCamry         30000.00 USD
      Assets:Bank:US:Chase:Checking -30000.00 USD
  2. Registra l'ammortamento annuale: Supponiamo che stimi che l'auto perda $3.000 di valore ogni anno. Alla fine dell'anno, registri questo come una spesa.

    2023-12-31 * "Depreciation" "Annual car value depreciation"
      Expenses:Depreciation:Car      3000.00 USD
      Assets:Car:ToyotaCamry        -3000.00 USD

Dopo questa voce, il tuo conto Assets:Car:ToyotaCamry riflette correttamente il nuovo valore dell'auto ($27.000) e hai contabilizzato correttamente il costo d'uso come spesa per quell'anno.

Parte 6: Approfondimento - Modellare Attività Complesse del Mondo Reale

Caso di Studio 1: Contabilità per Immobili

Una casa è spesso la tua attività e passività più grande. Ecco come modellarla.

  1. Crea Conti e una Commodity Personalizzata:

    2022-01-01 commodity HOUSE_123MAIN
      name: "Property at 123 Main St"
    2022-01-01 open Assets:Property:Home:123Main        HOUSE_123MAIN
    2022-01-01 open Liabilities:Mortgage:HomeLoan       USD
    2022-01-01 open Expenses:Home:Interest
    2022-01-01 open Expenses:Home:PropertyTax
  2. Registra l'Acquisto: Diciamo che compri una casa da $500k con un anticipo di $100k e un prestito di $400k.

    2022-03-15 * "Settlement Company" "Purchase of 123 Main St"
      Assets:Property:Home:123Main          1 HOUSE_123MAIN {500000.00 USD}
      Assets:Bank:DownPayment          -100000.00 USD
      Liabilities:Mortgage:HomeLoan    -400000.00 USD
  3. Registra i Pagamenti Mensili del Mutuo: Il tuo pagamento mensile consiste in una quota capitale (riduce la passività) e interessi (una spesa).

    2022-04-01 * "Mortgage Bank" "Monthly Mortgage Payment"
      Liabilities:Mortgage:HomeLoan      800.00 USD   ; Principal
      Expenses:Home:Interest            1200.00 USD   ; Interest
      Assets:Bank:US:Chase:Checking    -2000.00 USD
  4. Tracciare l'Apprezzamento (Plusvalenze Non Realizzate): Il valore di mercato di una casa cambia. Per tracciarlo senza influenzare il tuo patrimonio netto ufficiale (poiché il guadagno non è realizzato finché non vendi), puoi usare una direttiva di prezzo con una valuta "virtuale".

    ; The purchase price is the real cost basis
    2022-03-15 price HOUSE_123MAIN   500000.00 USD
     
    ; An updated market estimate is an unrealized gain
    2024-01-01 price HOUSE_123MAIN   550000.00 USD.UNREALIZED

Questo ti permette di vedere il valore stimato nei grafici di Fava senza gonfiare impropriamente il tuo stato patrimoniale.

Esplora un esempio di registro immobiliare dal vivo con tracciamento del mutuo, ammortamento e vendita di proprietà:

Apri Esempio di Registro Immobiliare in una nuova scheda

Caso di Studio 2: Tracciare le Unità Azionarie Vincolate (RSU)

Le RSU sono una forma comune di compensazione in azioni. La loro contabilità implica il tracciamento della concessione iniziale, degli eventi di maturazione e della ritenuta fiscale.

  1. Configurazione Iniziale: Crea le commodity per le azioni maturate (HOOL) e non maturate (HOOL.UNVEST), insieme a tutti i conti toccati dalle voci successive. Dichiararle tutte in anticipo è ciò che consente alle due transazioni sottostanti di caricarsi da sole.

    2021-01-01 commodity HOOL
    2021-01-01 commodity HOOL.UNVEST
    2021-01-01 open Assets:Brokerage:Etrade:HOOL          HOOL
    2021-01-01 open Assets:Grant:Unvested                 HOOL.UNVEST
    2021-01-01 open Income:Grant:Awards                   HOOL.UNVEST
    2021-01-01 open Expenses:Grant:Vested                 HOOL.UNVEST
    2021-01-01 open Income:Salary:Hooli:RSU               USD
    2021-01-01 open Expenses:Taxes:Federal                USD
    2021-01-01 open Expenses:Taxes:State                  USD
  2. Registra la Concessione Iniziale: Questa transazione mostra il totale della concessione che si sposta in un conto attività non maturato. Nulla è ancora tassabile, quindi l'intera voce è denominata nella commodity di tracciamento HOOL.UNVEST.

    2021-02-01 * "Hooli" "Initial RSU Grant"
      Assets:Grant:Unvested        1000 HOOL.UNVEST
      Income:Grant:Awards         -1000 HOOL.UNVEST
  3. Registra un Evento di Maturazione: Questa è la transazione chiave. Quando le azioni maturano, riconosci un reddito, il datore di lavoro trattiene azioni per pagare le tasse e tu tieni il resto. Supponiamo che 100 azioni maturino a $150,00, quindi:

    • Compensazione lorda: 100 × $150,00 = $15.000,00
    • Azioni trattenute per le tasse: 40 × $150,00 = $6.000,00 (federale $4.800,00 + statale $1.200,00)
    • Azioni che tieni: 60 × $150,00 = $9.000,00 di costo base
    • Contanti per te: $0,00 — l'intera ritenuta è pagata in azioni

    Questi importi sono la voce e si riconciliano: $6.000,00 di tasse più $9.000,00 di azioni trattenute equivalgono esattamente ai $15.000,00 di reddito.

    2022-02-01 * "Hooli" "RSU Vesting Event"
      ; Ordinary income: 100 shares * $150.00
      Income:Salary:Hooli:RSU                   -15000.00 USD
      ; Tax withheld, funded by 40 of the 100 shares (40 * $150.00 = $6,000.00)
      Expenses:Taxes:Federal                      4800.00 USD
      Expenses:Taxes:State                        1200.00 USD
      ; The 60 shares you keep, at their $150.00 vesting-day basis
      Assets:Brokerage:Etrade:HOOL                  60 HOOL {150.00 USD}
      ; Retire the 100 unvested units the grant was tracking
      Assets:Grant:Unvested                       -100 HOOL.UNVEST
      Expenses:Grant:Vested                        100 HOOL.UNVEST

Questa singola transazione bilanciata modella l'intero evento: la concessione non maturata viene ridotta, il reddito viene riconosciuto, le tasse vengono trattenute e le 60 azioni nette maturate appaiono nel tuo conto di intermediazione con il corretto costo base per futuri calcoli di plusvalenze.

Due dettagli vale la pena copiare nel tuo registro. Primo, scrivi la ritenuta conto per conto piuttosto che lasciare che un conto di bilanciamento generico la assorba—se le registrazioni federali e statali non sommano al valore delle azioni trattenute, la transazione non si bilancerà e Beancount te lo dirà. Secondo, non lasciare una riga vuota tra le registrazioni: una riga vuota termina la transazione e Beancount segnala un errore di sintassi sulle registrazioni successive.

Se il tuo datore di lavoro vende le azioni trattenute sul mercato aperto invece di riprendersele al prezzo di maturazione, la vendita è una transazione separata—una riduzione di Assets:Brokerage:Etrade:HOOL contro contanti—e qualsiasi differenza tra il prezzo di vendita e la base di $150,00 è una piccola plusvalenza o minusvalenza. Tienila fuori dalla voce di maturazione.

Parte 7: Gestione del Progetto per il Tuo Registro

Man mano che il tuo registro cresce, l'organizzazione diventa fondamentale.

Usare il Controllo di Versione (Git) per Proteggere i Tuoi Dati

Poiché il tuo registro è un file di testo, è perfetto per il controllo di versione con Git. Questo ti dà una cronologia completa di tutte le modifiche, proteggendoti da cancellazioni accidentali o errori. Avviso: I tuoi dati finanziari sono estremamente sensibili. Usa un repository privato su servizi come GitHub/GitLab o ospitalo tu stesso.

Organizzare con Tag (#) e Collegamenti (^)

Beancount fornisce due modi per raggruppare le transazioni oltre ai conti:

  • Tag (#): Usali per eventi o progetti. Puoi filtrare tutte le transazioni relative a un viaggio specifico, per esempio. 2024-07-20 * "Hotel" "Vienna" #viaggio-europa-2024
  • Collegamenti (^): Usali per connettere transazioni finanziariamente correlate che avvengono in momenti diversi, come un prelievo di contanti e la relativa commissione bancaria.

Una Strategia Scalabile per Strutturare i Tuoi File (include)

Un singolo file enorme è difficile da gestire. Usa la direttiva include per dividere il tuo registro in più file. main.bean:

; Main ledger file
 
; Global options
option "title" "My Personal Ledger"
option "operating_currency" "USD"
 
; Include account declarations and other files
include "accounts.bean"
include "years/2023.bean"
include "years/2024.bean"
include "events/trip-europe-2024.bean"

Una strategia organizzativa robusta, in ordine di priorità:

  1. Per Evento: Crea un file separato per un evento importante e autonomo (ad es., viaggio-europa-2024.bean).
  2. Per Categoria/Beneficiario: Per transazioni ricorrenti altamente regolari come bollette o stipendio, raggruppale in un loro file (ad es., affitto-ricorrente.bean).
  3. Per Conto: Per transazioni strettamente legate a un conto specifico (interessi, commissioni, pagamenti con carta di credito), considera un file specifico per conto.
  4. Per Data: Per tutte le altre transazioni generali, una semplice divisione per anno (2024.bean) o mese (2024/07.bean) è efficace.

Parte 8: Conclusione

Beancount offre una curva di apprendimento ripida ma ripaga lo sforzo con un potere, una flessibilità e un controllo senza pari sui tuoi dati finanziari. Abbracciando i principi della contabilità a partita doppia e gli strumenti pratici che Beancount fornisce, puoi passare dal semplice monitoraggio delle spese a un sistema completo, accurato e illuminante di gestione finanziaria personale. Il tuo registro diventa un'attività permanente, privata e inestimabile per capire il tuo passato e pianificare il tuo futuro.

Iniziare con Beancount.io

Beancount.io è una piattaforma moderna di gestione finanziaria basata sul cloud che trasforma i tuoi record di transazioni in testo semplice in rendiconti finanziari completi, inclusi conti economici, stati patrimoniali e bilanci di verifica. Combinando l'affidabilità dei file di testo semplice con potenti strumenti di visualizzazione, Beancount.io ti aiuta a mantenere un controllo preciso sulla tua vita finanziaria ottenendo preziose informazioni sulla performance dei tuoi investimenti.

Inizia il tuo viaggio finanziario con Beancount.io — vedi piani e prezzi attuali per cosa include ogni livello.

Dashboard del registro beancount.io che mostra un grafico dell'andamento del patrimonio netto, saldi dei conti e una barra dell'assistente AI

Esplora il registro dal vivo →

Conto economico del registro pubblico Beancount di Apple su beancount.io con grafico dell'utile netto e suddivisione di entrate e spese

Esplora il registro dal vivo →

Stato patrimoniale del registro pubblico Beancount di Apple su beancount.io con grafico del patrimonio netto e dettagli di attività e passività

Esplora il registro dal vivo →

Fonte: https://beancount.io/it/docs/introduction-to-beancount