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 USDMaak 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 USDDe 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:
| Item | Schema | Data in januari 2024 |
|---|---|---|
| Huur | Maandelijks, op de 1e | 1 januari |
| Boodschappen | Elke 7 dagen, startend op 1 januari | 1, 8, 15, 22, 29 januari |
| Salaris | Elke 14 dagen, startend op 5 januari | 5, 19 januari |
| Sportschool | Maandelijks, op de 15e | 15 januari |
| Leningbetaling | Maandelijks, op de 25e | 25 januari |
| Autoverzekering | Elke 3 kalendermaanden, startend op 15 januari | 15 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 USD2. 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 USDDe 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 USDPraktisch 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 USDValideer 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:
| Resultaat | Gerealiseerde boeken, 31 december | Januari-scenario, 31 januari |
|---|---|---|
| Betaalrekening | 10.000,00 USD | 10.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 |
| Salarisinkomstenboeking | 0,00 USD | −6.000,00 USD |
| Totale uitgavenboekingen | 0,00 USD | 2.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.beancountStel 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.beancountin plaats van alleen het scenariofragment. - Forecasts ontbreken in Fava: laad
scenario.beancounten stel het tijdsfilter in op2024-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.beancountvoor 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.