Naar hoofdinhoud springen

Toekomstige Transacties Voorspellen

Bouw een apart, gevalideerd Beancount-scenarioboek met toekomstig gedateerde inkomsten, uitgaven en leningbetalingen.

Plaats toekomstig gedateerde transacties in een apart scenarioboek om contant geld, uitgaven en schulden te projecteren in uw financiële rapporten. Deze handleiding gebruikt gewone Beancount-regels en een vaste planningsperiode. Uw gerealiseerde boeken blijven gescheiden van uw aannames.

Compatibiliteit, gecontroleerd op 7 september 2026: de voorbeelden zijn getest met standaard Beancount 3.2.3, beanquery 0.2.0 en Fava 1.30.16. Die Fava-release bevat geen forecast-plugin. De aangepaste bron van Beancount.io bevat wel een fava.plugins.forecast-implementatie; dat is een andere runtime, en beschikbaarheid van de bron bepaalt niet welke versie op uw account is geïmplementeerd. De draagbare workflow hieronder heeft geen extensie nodig.

Stap 1: De Forecast-plugin inschakelen

Sla de plugin-activering voor deze workflow over. Het toevoegen van plugin "fava.plugins.forecast" aan de geteste standaardinstallatie veroorzaakt een importfout. Voor algemene plugin-instellingen, zie de plugingids; een module moet daadwerkelijk geïnstalleerd zijn voordat een boekhouding deze kan laden.

Vereisten: een lokale Python-omgeving met beancount==3.2.3, beanquery==0.2.0 en fava==1.30.16 geïnstalleerd. Volg de vastgelegde Fava-installatie om die omgeving te creëren. Sla alle drie de onderstaande bestanden op in dezelfde map en voer daar de opdrachten uit.

Maak books.beancount met dit volledige voorbeeldoverzicht. De peildatum is 31 december 2023, na de openingsboekingen. De betaalrekening bevat 10.000,00 USD en de openstaande autolening-hoofdsom is 14.400,00 USD. Het eigen vermogen balanceert dit vereenvoudigde openingsoverzicht.

; books.beancount — realized balances as of 2023-12-31
option "operating_currency" "USD"
2023-12-31 open Assets:Checking USD
2023-12-31 open Liabilities:Auto-Loan USD
2023-12-31 open Equity:Opening-Balances USD
2023-12-31 open Income:Salary USD
2023-12-31 open Expenses:Housing:Rent USD
2023-12-31 open Expenses:Food:Groceries USD
2023-12-31 open Expenses:Health:Gym USD
2023-12-31 open Expenses:Insurance:Auto USD
2023-12-31 open Expenses:Transportation:Interest USD
 
2023-12-31 * "Opening snapshot"
  Assets:Checking                  10000.00 USD
  Liabilities:Auto-Loan            -14400.00 USD
  Equity:Opening-Balances           4400.00 USD

Maak scenario.beancount als het planningsingangspunt. De twee includes laden het gerealiseerde overzicht en de aannames die u hierna schrijft. Beancount leest de include-paden relatief ten opzichte van dit bestand.

; scenario.beancount — planning entry point
option "title" "January 2024 planning scenario"
option "operating_currency" "USD"
include "books.beancount"
include "scenario-2024-01.beancount"

Neem scenario.beancount of scenario-2024-01.beancount nooit op vanuit books.beancount. Het gerealiseerde ingangspunt mag geen geplande transacties laden, zelfs niet nadat hun data verstreken zijn.

Stap 2: Een Forecast-transactie maken

Maak scenario-2024-01.beancount met deze eerste boeking. Voeg de vier latere scenarioblokken elk één keer toe aan datzelfde bestand. Dit zijn contextuele transactieblokken: hun rekeningdeclaraties komen uit books.beancount, en u valideert ze via scenario.beancount.

2024-01-01 ! "Scenario: January rent" #forecast
  Expenses:Housing:Rent              2500.00 USD
  Assets:Checking                  -2500.00 USD

De vlag ! markeert een transactie ter controle; #forecast is een gewone transactietag. Geen van beide creëert herhalingen of sluit een transactie uit van rapporten. Het aparte ingangspunt bepaalt de opname. Gebruik deze tag alleen voor geplande boekingen, zodat u ze tijdens de controle kunt identificeren.

De Forecast-syntaxis begrijpen

Elke gedateerde boeking vertegenwoordigt één voorkomen. Verhaalttekst zoals [MONTHLY] heeft geen herhalingseffect in standaard Beancount. De oudere UNTIL, REPEAT en SKIP-instructies behoren tot een aangepaste plugin-conventie, niet tot de kerntaal. Deze workflow geeft hun beoogde data expliciet weer.

Het scenario beslaat 1–31 januari 2024, inclusief. Alle geplande data liggen na de vaste peildatum en vóór 1 februari. Deze historische data maken het voorbeeld reproduceerbaar; niets hangt af van de huidige datum. Kies bij aanpassing een nieuwe peildatum en een eindige horizon voordat u boekingen toevoegt.

Frequentie

Schrijf één transactie voor elke vervaldatum binnen de planningsperiode. Het volledige januarivoorbeeld gebruikt deze regels:

ItemSchemaData in januari 2024
HuurMaandelijks, op de 1e1 januari
BoodschappenElke 7 dagen, startend op 1 januari1, 8, 15, 22, 29 januari
SalarisElke 14 dagen, startend op 5 januari5, 19 januari
SportschoolMaandelijks, op de 15e15 januari
LeningbetalingMaandelijks, op de 25e25 januari
AutoverzekeringElke 3 kalendermaanden, startend op 15 januari15 januari; volgende betaling op 15 april valt buiten deze horizon

Voor andere dagelijkse of jaarlijkse plannen, som de werkelijke vervaldata op dezelfde manier op. Stel een beleid vast voor data zoals de 31e of 29 februari voordat u een schema verlengt. Verplaats ze niet stilletjes en ga niet ervan uit dat elke maand hetzelfde aantal dagen heeft.

Voorwaarden (Optioneel)

1. Stel een einddatum expliciet in

Stel dat het sportschoollidmaatschap eindigt op 31 december 2024. Het januarivoorval staat hieronder. Het januariscenario stopt op 31 januari, dus het bevat geen boekingen van februari–december. Als u de horizon verlengt, schrijf dan elke latere betaling tot en met 15 december en stop daar.

2024-01-15 ! "Scenario: gym membership" #forecast
  Expenses:Health:Gym                  80.00 USD
  Assets:Checking                    -80.00 USD

2. Beperk voorkomens en scheid leninghoofdsom en rente

Stel dat de autolening nog 36 betalingen heeft. Neem alleen de eerste betaling op in deze januarihorizon. Ga voor deze hypothetische termijn uit van een 450,00 USD contante betaling bestaande uit 400,00 USD hoofdsom en 50,00 USD rente. Dit zijn scenarioaannames; er worden geen latere termijnen gegenereerd.

2024-01-25 ! "Scenario: car loan payment 1 of 36" #forecast
  Liabilities:Auto-Loan               400.00 USD
  Expenses:Transportation:Interest     50.00 USD
  Assets:Checking                   -450.00 USD

De positieve passivaboeking verlaagt het schuldsaldo van −14.400,00 USD naar −14.000,00 USD. Contant geld daalt met 450,00 USD, en slechts 50,00 USD is een uitgave. De boekingen balanceren omdat 400.00 + 50.00 - 450.00 = 0. Een negatieve passivaboeking zou de schuld verhogen.

Herhaal dezelfde hoofdsom/rente-splitsing niet voor alle 36 betalingen zonder ondersteunend schema. Toekomstige rente en de laatste betaling kunnen verschillen. Gebruik het betalingsschema van de geldverstrekker bij het verlengen van dit voorbeeld; zie amortisatie voor het onderscheid tussen kostenherkenning en schuldaflossing.

3. Schrijf onregelmatige intervallen als werkelijke data

Voor een tweewekelijks salaris startend op 5 januari zijn de januaridata 5 januari en 19 januari. Het volgende voorval is 2 februari, buiten dit scenario. Tweewekelijks betekent elke 14 dagen, niet twee keer per kalendermaand.

2024-01-05 ! "Scenario: salary" #forecast
  Assets:Checking                   3000.00 USD
  Income:Salary                    -3000.00 USD
 
2024-01-19 ! "Scenario: salary" #forecast
  Assets:Checking                   3000.00 USD
  Income:Salary                    -3000.00 USD

Praktisch Voorbeeld: Een Maandelijks Budget

Vul uw maandelijkse budget aan door de boodschappen- en autoverzekeringsboekingen hieronder toe te voegen aan scenario-2024-01.beancount. Samen met huur, sportschool, de leningbetaling en beide salarisboekingen hierboven levert dit 11 geplande transacties op.

2024-01-01 ! "Scenario: groceries" #forecast
  Expenses:Food:Groceries             150.00 USD
  Assets:Checking                   -150.00 USD
 
2024-01-08 ! "Scenario: groceries" #forecast
  Expenses:Food:Groceries             150.00 USD
  Assets:Checking                   -150.00 USD
 
2024-01-15 ! "Scenario: groceries" #forecast
  Expenses:Food:Groceries             150.00 USD
  Assets:Checking                   -150.00 USD
 
2024-01-22 ! "Scenario: groceries" #forecast
  Expenses:Food:Groceries             150.00 USD
  Assets:Checking                   -150.00 USD
 
2024-01-29 ! "Scenario: groceries" #forecast
  Expenses:Food:Groceries             150.00 USD
  Assets:Checking                   -150.00 USD
 
2024-01-15 ! "Scenario: quarterly car insurance" #forecast
  Expenses:Insurance:Auto             450.00 USD
  Assets:Checking                   -450.00 USD

Valideer beide ingangspunten en vraag vervolgens hun eindsaldi op. date < 2024-02-01 omvat alle januariboekingen. De boekenquery gebruikt de vaste peildatumgrens date < 2024-01-01.

bea --file books.beancount check
bea --file scenario.beancount check
bea --file books.beancount query "SELECT account, sum(position) WHERE date < 2024-01-01 GROUP BY account ORDER BY account"
bea --file scenario.beancount query "SELECT account, sum(position) WHERE date < 2024-02-01 GROUP BY account ORDER BY account"

Beide bea check-opdrachten moeten succesvol eindigen. Vergelijk de queryresultaten met deze onafhankelijke berekeningen:

ResultaatGerealiseerde boeken, 31 decemberJanuari-scenario, 31 januari
Betaalrekening10.000,00 USD10.000 + 6.000 − 2.500 − 750 − 80 − 450 − 450 = 11.770,00 USD
Leningbalans−14.400,00 USD−14.400 + 400 = −14.000,00 USD
Salarisinkomstenboeking0,00 USD−6.000,00 USD
Totale uitgavenboekingen0,00 USD2.500 + 750 + 80 + 450 + 50 = 3.830,00 USD

De geprojecteerde winst voor januari is 2.170,00 USD: 6.000 inkomsten minus 3.830 uitgaven. De betaalrekening stijgt met 1.770,00 USD, omdat de extra 400 hoofdsomafbetaling schuld vermindert in plaats van winst.

Open het scenario in standaard Fava:

fava scenario.beancount

Stel Fava's tijdsfilter in op 2024-01. Het tijdsfilter neemt eerdere activa- en passivasaldi mee naar de periode en verwijdert latere boekingen. Controleer de balans voor 11.770,00 USD contant geld en 14.000,00 USD openstaande schuld. De resultatenrekening moet 2.170,00 USD geprojecteerde winst tonen. Het openen van books.beancount geeft in plaats daarvan het gerealiseerde overzicht.

Problemen oplossen & Beste Praktijken

  • Importfout voor de oude plugin: verwijder de activeringsregel bij gebruik van deze draagbare workflow. Een standaard Fava-installatie biedt de aangepaste modules van Beancount.io niet.
  • Onbekende rekening of ontbrekend include-bestand: sla alle drie de bestanden op in dezelfde map, kopieer de opens en valideer scenario.beancount in plaats van alleen het scenariofragment.
  • Forecasts ontbreken in Fava: laad scenario.beancount en stel het tijdsfilter in op 2024-01. Een tag of verhaalttekst genereert geen boekingen.
  • Onverwachte saldi: vergelijk de 11 geplande data en bedragen met de tabel. Het twee keer laden van een voorval verdubbelt het financiële effect, zelfs wanneer elke transactie balanceert.
  • Houd forecasts gescheiden: gewone vlaggen, tags en toekomstige data voorkomen niet dat boekingen een ongefilterd rapport beïnvloeden. Gebruik books.beancount voor werkelijke resultaten. Wanneer een betaling plaatsvindt, boek het werkelijke bedrag daar en verwijder de overeenkomstige aanname uit uw volgende scenario om dubbeltelling te voorkomen.
  • Controleer de horizon: bewaar een gedateerd overzicht bij het opslaan van een scenario. Het verlengen van de einddatum betekent het toevoegen van specifieke voorkomens en het opnieuw controleren van leningopsplitsingen, annuleringsdata en afronding.

Bron: https://beancount.io/nl/docs/Tips/forecast-plugin