Preskočiť na hlavný obsah

Predikcia budúcich transakcií

Vytvorte samostatný, validovaný Beancount scenárový ledger s budúcimi príjmami, výdavkami a splátkami úverov.

Umiestnite transakcie s budúcim dátumom do samostatného scenárového ledgera, aby ste mohli projektovať hotovosť, výdavky a dlh vo svojich finančných správach. Tento návod používa bežné Beancount záznamy a pevné plánovacie obdobie. Vaše skutočné účtovníctvo zostáva oddelené od vašich predpokladov.

Kompatibilita, overená 7. septembra 2026: príklady boli testované so štandardným Beancount 3.2.3, beanquery 0.2.0 a Fava 1.30.16. Táto verzia Fava nedodáva forecast plugin. Vlastný zdroj Beancount.io obsahuje implementáciu fava.plugins.forecast; to je iné prostredie a dostupnosť zdroja neurčuje verziu nasadenú vo vašom účte. Nižšie uvedený prenosný postup nevyžaduje žiadne rozšírenie.

Krok 1: Povolenie Forecast pluginu

Pre tento postup preskočte aktiváciu pluginu. Pridanie plugin "fava.plugins.forecast" do testovanej štandardnej inštalácie spôsobí importovú chybu. Všeobecný návod na nastavenie pluginov nájdete v príručke o pluginoch; modul musí byť skutočne nainštalovaný, aby ho ledger mohol načítať.

Predpoklady: lokálne Python prostredie s nainštalovanými beancount==3.2.3, beanquery==0.2.0 a fava==1.30.16. Postupujte podľa návodu na pevne stanovené Fava nastavenie, aby ste takéto prostredie vytvorili. Uložte všetky tri nižšie uvedené súbory do rovnakého adresára a spustite príkazy tam.

Vytvorte books.beancount s týmto kompletným príkladom snímky. Jej rozhodný dátum je 31. december 2023 po otváracej transakcii. Bežný účet drží 10 000,00 USD a nesplatený istina úveru na auto je 14 400,00 USD. Vlastné imanie vyrovnáva túto zjednodušenú otváraciu snímku.

; 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

Vytvorte scenario.beancount ako plánovací vstupný bod. Jeho dva include príkazy načítajú realizovanú snímku a predpoklady, ktoré napíšete ďalej. Beancount číta include cesty relatívne k tomuto súboru.

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

Nikdy nezahŕňajte scenario.beancount alebo scenario-2024-01.beancount z books.beancount. Realizovaný vstupný bod nesmie načítať plánované transakcie, ani po uplynutí ich dátumov.

Krok 2: Vytvorenie predikovanej transakcie

Vytvorte scenario-2024-01.beancount s týmto prvým záznamom. Pripojte štyri neskoršie scenárové bloky do toho istého súboru vždy iba raz. Toto sú kontextové transakčné bloky: ich deklarácie účtov pochádzajú z books.beancount a validujete ich cez scenario.beancount.

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

Príznak ! označuje transakciu na kontrolu; #forecast je bežná transakčná značka. Žiadna z nich nevytvára opakovania ani nevylučuje transakciu zo správ. Oddelený vstupný bod riadi zahrnutie. Použite túto značku iba na plánované záznamy, aby ste ich mohli identifikovať pri kontrole.

Pochopenie syntaxe predikcie

Každý datovaný záznam predstavuje jeden výskyt. Text narácie ako [MONTHLY] nemá v štandardnom Beancount žiadny účinok opakovania. Staršie inštrukcie UNTIL, REPEAT a SKIP patria k vlastnej konvencii pluginu, nie k jadru jazyka. Tento postup explicitne vyjadruje ich zamýšľané dátumy.

Scenár pokrýva 1. – 31. januára 2024 vrátane. Všetky plánované dátumy sú po pevnom rozhodnom dátume a pred 1. februárom. Tieto historické dátumy robia príklad reprodukovateľným; nič nezávisí od dnešného dátumu. Pri adaptácii zvoľte nový rozhodný dátum a konečný horizont pred pridaním záznamov.

Frekvencia

Napíšte jednu transakciu pre každý dátum splatnosti v rámci plánovacieho obdobia. Kompletný januárový príklad používa tieto pravidlá:

PoložkaHarmonogramDátumy zahrnuté v januári 2024
NájomMesačne, 1. deň1. január
PotravinyKaždých 7 dní, od 1. januára1., 8., 15., 22., 29. január
MzdaKaždých 14 dní, od 5. januára5., 19. január
PosilňovňaMesačne, 15. deň15. január
Splátka úveruMesačne, 25. deň25. január
Poistenie autaKaždé 3 kalendárne mesiace, od 15. januára15. január; ďalšia platba 15. apríla je mimo tohto horizontu

Pre iné denné alebo ročné plány vymenujte skutočné dátumy splatnosti rovnakým spôsobom. Stanovte pravidlo pre dátumy ako 31. alebo 29. február pred predĺžením harmonogramu. Nepresúvajte ich ticho ani nepredpokladajte, že každý mesiac má rovnaký počet dní.

Podmienky (Voliteľné)

1. Nastavte koncový dátum explicitne

Predpokladajme, že členstvo v posilňovni končí 31. decembra 2024. Jeho januárový výskyt je nižšie. Januárový scenár končí 31. januára, takže neobsahuje žiadne záznamy od februára do decembra. Ak predĺžite horizont, napíšte každú neskoršiu platbu do 15. decembra a tam zastavte.

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

2. Obmedzte výskyty a oddeľte istinu úveru od úroku

Predpokladajme, že autoúver má 36 zostávajúcich splátok. Zahrňte do tohto januárového horizontu iba prvú splátku. Pre túto hypotetickú splátku predpokladajte, že jej 450,00 USD hotovostná platba pozostáva z 400,00 USD istiny a 50,00 USD úroku. Toto sú scenárové predpoklady; žiadne neskoršie splátky sa negenerujú.

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

Pozitívny zápis na záväzku znižuje dlh z −14 400,00 USD na −14 000,00 USD. Hotovosť klesne o 450,00 USD a iba 50,00 USD je výdavok. Zápisy sa vyrovnávajú, pretože 400.00 + 50.00 - 450.00 = 0. Negatívny zápis na záväzku by dlh zvýšil.

Neopakujte rovnaké rozdelenie istiny/úroku pre všetkých 36 splátok bez podporného harmonogramu. Budúci úrok a posledná splátka sa môžu líšiť. Pri rozširovaní tohto príkladu použite splátkový kalendár veriteľa; pozri amortizácia pre rozdiel medzi vykazovaním nákladov a splácaním dlhu.

3. Zapisujte nepravidelné intervaly ako skutočné dátumy

Pre dvojtýždňovú mzdu začínajúcu 5. januára sú januárové dátumy 5. január a 19. január. Ďalší výskyt je 2. február, mimo tohto scenára. Dvojtýždenne znamená každých 14 dní, nie dvakrát za kalendárny mesiac.

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

Praktický príklad: Mesačný rozpočet

Doplňte svoj mesačný rozpočet pridaním záznamov o potravinách a poistení auta nižšie do scenario-2024-01.beancount. Spolu s nájmom, posilňovňou, splátkou úveru a oboma mzdovými záznamami vyššie to vytvorí 11 plánovaných transakcií.

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

Validujte oba vstupné body a potom zistite ich konečné zostatky. date < 2024-02-01 zahŕňa všetky januárové zápisy. Dotaz na knihy používa pevný rozhodný dátum 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"

Oba príkazy bea check by mali skončiť úspešne. Odsúhlaste výsledky dotazov proti týmto nezávislým výpočtom:

VýsledokRealizované knihy, 31. decemberJanuárový scenár, 31. január
Bežný účet10 000,00 USD10 000 + 6 000 − 2 500 − 750 − 80 − 450 − 450 = 11 770,00 USD
Zostatok úveru−14 400,00 USD−14 400 + 400 = −14 000,00 USD
Mzdový príjmový zápis0,00 USD−6 000,00 USD
Celkové výdavkové zápisy0,00 USD2 500 + 750 + 80 + 450 + 50 = 3 830,00 USD

Januárový projektovaný zisk je 2 170,00 USD: 6 000 príjmov mínus 3 830 výdavkov. Bežný účet sa zvýši o 1 770,00 USD, pretože dodatočná splátka istiny 400 znižuje dlh, nie zisk.

Otvorte scenár v štandardnej Fava:

fava scenario.beancount

Nastavte Fava Time filter na 2024-01. Jeho časové filtrovanie prenáša predchádzajúce zostatky aktív a záväzkov do obdobia a odstraňuje neskoršie záznamy. Skontrolujte súvahu na 11 770,00 USD hotovosti a 14 000,00 USD nesplateného dlhu. Výkaz ziskov a strát by mal ukazovať 2 170,00 USD projektovaného zisku. Otvorenie books.beancount namiesto toho poskytne realizovanú snímku.

Riešenie problémov a najlepšie postupy

  • Importová chyba starého pluginu: odstráňte aktivačný riadok pri použití tohto prenosného postupu. Štandardná inštalácia Fava neposkytuje vlastné moduly Beancount.io.
  • Neznámy účet alebo chýbajúci include súbor: uložte všetky tri súbory do rovnakého adresára, skopírujte otváracie záznamy a validujte scenario.beancount namiesto samotného scenárového fragmentu.
  • Predikcie chýbajú vo Fave: načítajte scenario.beancount a nastavte Time filter na 2024-01. Značka alebo narácia negeneruje záznamy.
  • Neočakávané zostatky: porovnajte 11 plánovaných dátumov a súm s tabuľkou. Načítanie výskytu dvakrát zdvojnásobí jeho finančný účinok, aj keď je každá transakcia vyrovnaná.
  • Uchovávajte predikcie oddelene: bežné príznaky, značky a budúce dátumy nebránia záznamom ovplyvňovať nefiltrovanú správu. Použite books.beancount pre skutočné výsledky. Keď dôjde k platbe, zaznamenajte jej skutočnú sumu tam a odstráňte zodpovedajúci predpoklad z vášho ďalšieho scenára, aby ste ho nezapočítali dvakrát.
  • Skontrolujte horizont: pri ukladaní scenára zachovajte datovanú snímku. Predĺženie jeho koncového dátumu znamená pridanie konkrétnych výskytov a opätovnú kontrolu rozdelenia úveru, dátumov zrušenia a zaokrúhľovania.

Zdroj: https://beancount.io/sk/docs/Tips/forecast-plugin