Reálne zostavy Beancount z praxe
Úvod
Beancount je všestranný účtovný systém pracujúci s čistým textom a jeho používatelia si ho prispôsobili širokej škále potrieb z reálneho sveta. V tejto komunitnej prehliadke predstavujeme anonymizované príklady toho, ako rôzni ľudia štruktúrujú a používajú svoje účtovné pracovné postupy v Beancount – od freelancerov a majiteľov malých firiem až po nadšencov do osobných financií. Tieto príklady poukazujú na kreatívne postupy, ako označovanie transakcií metadátami, automatizáciu aktualizácií hlavnej knihy pomocou vlastných skriptov, prácu s viacerými menami, zostavovanie rozpočtov a prognózovanie a rozširovanie Beancount pomocou pluginov alebo integrácií (napríklad webového rozhrania Fava). Cieľom je inšpirovať a informovať účtovníkov, vývojárov a finančne zdatných používateľov o tom, čo všetko je možné s flexibilným systémom Beancount.
Živé prehľady toho istého súboru nástrojov nájdete v článkoch Beancount v3: Čo je nové?, Základné natívne pluginy Beancount, ktoré by ste mali poznať, Ekosystém Beancount a Technická výhoda Beancount.

Príklad rozhrania: Mnohí používatelia Beancount sa spoliehajú na Fava – open-source webový dashboard – alebo na jeho hostovaný ekvivalent na beancount.io na vizualizáciu svojich financií. Tieto nástroje premieňajú hlavnú knihu Beancount na interaktívne reporty a grafy. Napríklad toto zobrazenie Výkazu ziskov a strát rozdeľuje výnosy a náklady podľa kategórie v priebehu času a poskytuje rýchly prehľad o tom, odkiaľ peniaze prichádzajú a kam odchádzajú. Používatelia môžu toto zobrazenie filtrovať podľa času, účtu alebo značiek, aby sa dostali k konkrétnym projektom alebo obdobiam. Takéto vizualizácie pomáhajú sprístupniť údaje v čistom texte a umožňujú používateľom na prvý pohľad odhaliť trendy a anomálie.
Každé nastavenie Beancount je jedinečné, no vynárajú sa spoločné témy. Nižšie sa ponárame do troch scenárov – freelancer, majiteľ malej firmy a nadšenec do osobných financií – aby sme videli, ako si organizujú účty a využívajú funkcie Beancount. Všetky osobné údaje boli odstránené alebo zovšeobecnené, pričom sa zameriavame len na techniky a konfigurácie.
Freelancer: Označovanie projektov a sledovanie faktúr
Naším prvým príkladom je nezávislý konzultant, ktorý používa Beancount ako chrbticu financií svojej firmy. Hlavná kniha tohto freelancera je usporiadaná tak, aby sledovala výnosy a náklady na projekt a spravovala faktúry pre viacerých klientov. Vytvoril si vyhradené účty pre pohľadávky (A/R) v rámci aktív pre každého klienta, čo pomáha oddeliť, kto komu dlhuje. Keď dokončí projekt a vystaví klientovi faktúru, zaznamená transakciu, ktorá zaťaží klientský účet pohľadávok a v prospech výnosového účtu. Napríklad nová faktúra môže byť zaznamenaná takto:
2025-08-01 * "Project X Completed" ^INV-0001
Assets:AccountsReceivable:ClientA 5,000 USD
Income:Consulting -5,000 USDZápis ^INV-0001 je tu odkaz (link – vstavaná funkcia metadát Beancount) používaný na označenie tejto transakcie číslom faktúry. Keď klient zaplatí časť alebo celú faktúru, platobná transakcia obsahuje rovnaký odkaz ^INV-0001, čím sa oba záznamy prepájajú. Toto prepojenie uľahčuje priradenie platieb ku konkrétnym faktúram a zobrazenie neuhradených zostatkov. Ako vysvetlil jeden člen komunity, takéto značky alebo odkazy môžete použiť na označenie čiastočných platieb – napríklad platby 20 $ voči faktúre na 30 $ – na zázname faktúry aj na zázname platby. Dotazovaním hlavnej knihy na tento odkaz faktúry môže freelancer okamžite vidieť, koľko z faktúry už bolo zaplatené a čo zostáva otvorené.
Okrem odkazov freelancer vo veľkej miere používa značky na kategorizáciu. Značky v Beancount sú štítky s predponou #, ktoré môžu označiť transakcie na neskoršie filtrovanie. Tento používateľ označuje každý náklad, ktorý je pre klienta fakturovateľný, kódom projektu, napríklad #ProjectX, a náklady podliehajúce preplateniu označuje #Reimbursable. Napríklad ak kúpi letenky pre klientsky projekt, záznam o náklade môže obsahovať #ProjectX #Reimbursable. Táto prax umožňuje generovať reporty podľa projektu alebo klienta filtrovaním podľa značiek. Po skončení projektu môže freelancer spustiť dotaz, ktorý vymenuje všetky náklady s #Reimbursable pre daný projekt, a uistiť sa, že každý z nich vyfakturoval klientovi. Jeden používateľ Beancount poznamenal, že označovanie nákladov na pracovné cesty pomohlo odhaliť tie, ktoré neboli preplatené – v ideálnom prípade sa náklady na pracovnú cestu vynulujú na 0 $, keď prídu všetky refundácie od klienta. To poukazuje na to, ako označovanie v kombinácii s možnosťami dotazov Beancount poskytuje freelancerom spravujúcim fakturovateľné náklady dodatočnú vrstvu dohľadu.
Na správu stavu neuhradených platieb používa náš freelancer špeciálnu konvenciu pre nevyriešené pohľadávky. Značku #UNRESOLVED aplikuje na každú transakciu faktúry, ktorá ešte nebola úplne zaplatená. Beancount (ani Fava) túto značku nevynucuje, no je to komunitou zavedený vzor na označenie transakcií čakajúcich na vyrovnanie. Napríklad kým klient A nezaplatí celých 5 000 $, transakcia faktúry vyššie by obsahovala #UNRESOLVED. Filtrovaním podľa tejto značky môže freelancer kedykoľvek vypísať všetky otvorené faktúry. Keď je platba prijatá a priradená (zaznamená sa zodpovedajúca transakcia pohľadávky), značku #UNRESOLVED odstráni alebo ignoruje a účet pohľadávok pre daného klienta sa vyrovná na nulu. Tento systém zaisťuje, že žiadna faktúra „neprepadne pomedzi prsty“. Je to v podstate správa o starnutí pohľadávok robená v čistom texte – ak pohľadávka zostáva nenulová a označená ako nevyriešená, vyžaduje pozornosť.
Keďže freelanceri často pracujú s viacerými spôsobmi platby a niekedy aj s viacerými menami, zostava Beancount to hladko zvláda. V našom príklade môže konzultant fakturovať niektorým klientom v USD a iným v EUR. Spracovanie viacerých mien je v Beancount priamočiare: každý účet môže držať viacero komodít (meny sa považujú za komodity). Freelancer môže buď viesť samostatné podúčty pre každú menu (napr. Assets:AccountsReceivable:ClientA:EUR vs ...:USD), alebo jednoducho zaúčtovať transakcie v príslušnej mene na ten istý účet. Beancount bude automaticky sledovať zostatky podľa meny. Jeden používateľ zdôraznil, aké príjemné je, že „Beancount dokáže sledovať množstvá v akejkoľvek mene, či už USD alebo ticker symbol“, a to všetko v jednej hlavnej knihe. Náš freelancer to využíva tak, že zaznamenáva výmenné kurzy pomocou direktív price, kedykoľvek potrebuje previesť meny pre reporting. Po zadaní pravidelných výmenných kurzov alebo trhových cien môže vygenerovať výkaz o výnosoch prevedený na svoju domácu menu.
Napokon tento freelancer integruje svoju hlavnú knihu Beancount s praktickými nástrojmi na zefektívnenie svojho pracovného postupu. Napríklad prikladá PDF kópie každej faktúry k hlavnej knihe pomocou metadát dokumentu. Typický záznam o platbe faktúry môže vyzerať takto:
2025-08-30 * "ClientA" "Payment for INV-0001" ^INV-0001
Assets:Bank:Checking 5,000 USD
Assets:AccountsReceivable:ClientA -5,000 USD
document: "Invoices/ClientA/INV-0001.pdf"Direktíva alebo metadáta document v Beancount umožňujú priradiť súbory k záznamom a Fava zobrazí hypertextový odkaz na tieto prílohy. To znamená, že freelancer (alebo jeho účtovník) môže kliknúť priamo z reportu hlavnej knihy a zobraziť pôvodné PDF faktúry, čím sa zabezpečí ľahký prístup k podkladovej dokumentácii. Freelancer tiež používa reporty Fava na sledovanie svojho podnikania: filtrovaním Výkazu ziskov a strát alebo Súvahy podľa klienta vidí ziskovosť jednotlivých klientov a kontroluje, či sú všetky projekty zaplatené. Stručne povedané, systém Beancount tohto freelancera demonštruje intenzívne používanie označovania a odkazovania na riadenie projektového účtovníctva. Premieňa hlavnú knihu v čistom texte na robustný nástroj pre účtovníctvo freelancera s jasnou viditeľnosťou projektových nákladov, viacmenových výnosov a stavov faktúr.
Kľúčové postupy v zostave freelancera: Používanie značiek na zoskupenie transakcií podľa projektu alebo účelu, prepájanie faktúr a platieb pomocou jedinečných ID, označovanie neuhradených pohľadávok značkou #UNRESOLVED, prikladanie dokumentov faktúr k záznamom hlavnej knihy pre referenciu a využívanie podpory viacerých mien v Beancount na bezproblémové fakturovanie medzinárodným klientom. To všetko sa dosahuje pomocou záznamov v čistom texte a niekoľkých pomocných nástrojov, čo ukazuje silu metadát v Beancount.
Malé podnikanie: Automatizácia a viacmenové účtovníctvo
Ďalej sa pozrieme na majiteľa malej firmy – konkrétne zakladateľa startupu – ktorý prijal Beancount na vedenie firemných kníh. Malé firmy majú potreby podobné freelancerom (faktúry, náklady, viac mien), no často vo väčšom rozsahu a s väčším dôrazom na automatizáciu, konzistenciu a spoluprácu. V tomto prípade bol zakladateľ technicky zdatný a vytvoril vysoko automatizovaný pracovný postup Beancount, aby minimalizoval manuálne účtovanie. Po zvážení tradičného účtovného softvéru, ako je QuickBooks, sa rozhodol pre prístup Beancount s čistým textom, aby si zachoval plnú kontrolu nad údajmi. V priebehu niekoľkých rokov postupne vyvinul vlastné nástroje na dosiahnutie 95 % automatizovaného procesu účtovania.
Automatizované importy a zosúlaďovanie: Jednou z prvých výziev bol import transakcií z rôznych zdrojov (bankové účty, kreditné karty, spracovatelia platieb) do hlavnej knihy. Namiesto vypisovania každej transakcie si tento používateľ nastavil importné skripty na načítanie a prevod údajov do formátu Beancount. Napísal vlastné importéry v Pythone pre CSV alebo API formát každej finančnej inštitúcie, takže jedným príkazom môže stiahnuť nové transakcie a pripojiť ich k hlavnej knihe. Napríklad pomocou importérov beangulp môže zakladateľ spustiť skript, ktorý prehľadá priečinok so stiahnutými súbormi a nové výpisy vypíše ako záznamy Beancount. Ďalší používateľ, Rhyd Lewis, opísal podobné nastavenie, v ktorom má samostatné importné skripty pre každú banku a môže ich spustiť jednoduchým príkazom (pomocou Justfile) na aktualizáciu svojej hlavnej knihy. Náš majiteľ malej firmy robí to isté – všetky bankové transakcie, platby kreditnou kartou a dokonca transakcie PayPal alebo Stripe sa automaticky načítajú a pridajú do kníh, kategorizované príslušnými účtami.
Aby sa zabezpečila integrita údajov aj pri automatickom pridávaní týchto záznamov, pred každým commitom overuje hlavnú knihu a používa pluginy Beancount. Napríklad je zapnutý plugin beancount.plugins.noduplicates, ktorý zabraňuje náhodnému importu tej istej transakcie dvakrát, a beancount.plugins.nounused označí všetky účty bez záznamov (užitočné na čistenie zastaraných účtov). Na tento overovací krok odporúčame bea check. Zakladateľ tiež používa komunitný formátovač (napríklad beancount-black) na udržanie konzistentného štýlu súboru hlavnej knihy. To je dôležité, pretože pri mnohých automatizovaných úpravách uniformný štýl uľahčuje diffy a audity. Zakladateľ v skutočnosti vedie hlavnú knihu v repozitári Git a zaobchádza s aktualizáciami hlavnej knihy ako so zmenami kódu. Každá nová dávka importovaných transakcií sa stáva commitom v Git a môže skontrolovať diffy, aby videl, čo sa zmenilo. Na jednej snímke obrazovky ukazuje históriu Git, kde transakcia kreditnou kartou pre „Costco“ prechádza zo stavu čakajúca na vyrovnanú v hlavnej knihe, a to všetko bez manuálneho zásahu. Verzionovanie poskytuje auditnú stopu: vidí presne, kedy bola transakcia pridaná alebo upravená, a dokonca môže vrátiť zmeny, ak bolo niečo importované nesprávne. To je skvelý príklad prenesenia osvedčených postupov vývoja softvéru (ako správa zdrojového kódu) do účtovných záznamov.
Viacmenové a medzinárodné transakcie: Malé firmy často obchodujú vo viacerých menách – napríklad startup môže mať náklady v USD, ale tiež prijímať platby v EUR alebo mať bankový účet v GBP. Naša ukážková spoločnosť používa viacmenové funkcie Beancount na konsolidáciu toho všetkého v jednej hlavnej knihe. Otvorili samostatné účty pre každú menu (napr. Assets:Bank:Checking:USD a Assets:Bank:Checking:EUR), čo je jeden bežný prístup. Aj keď však rôzne meny zdieľajú účet, Beancount bude sledovať zostatok každej meny samostatne a bude vyžadovať, aby sa transakcie vyvažovali podľa meny. Zakladateľ často spúšťa oceňovacie reporty, aby videl celkové zostatky spoločnosti prevedené na základnú menu. Keďže Beancount podporuje vyhľadávanie cien, nastavil denné cenové kanály pre výmenné kurzy mien (a ceny akcií pre prípadné investície) pomocou skriptu na plánované načítanie kotácií. Výsledkom je, že kedykoľvek môže vygenerovať súvahu napríklad v USD, ktorá zahŕňa účet v EUR prevedený podľa najnovšieho kurzu. Členovia komunity poukazujú na to, že spracovanie viacerých mien v účtovníctve v štýle hlavnej knihy je jednoduché – jednoducho pridáte transakcie v danej mene a podľa potreby zaznamenáte výmenné kurzy. Napríklad jeden používateľ zdieľal príklad konverzie USD na EUR a potom na CAD cez sprostredkujúce účty ako spôsob správy konverzií mien v Beancount. V našom prípade malá firma nemusí nevyhnutne konvertovať meny v transakciách (drží ich v pôvodnej mene), ale používa reporty na konsolidáciu. Táto flexibilita bola kľúčová, keď sa startup rozširoval globálne.
Vlastné skripty a rozšírenia: Nie všetko, čo zakladateľ potreboval, bolo dostupné hneď po inštalácii, a tak Beancount rozšíril o vlastné pluginy. Postupom času napísal parserovú knižnicu, nástroj na formátovanie a importér transakcií založený na pravidlách, pričom mnohé z nich vydal ako open-source balíčky. Napríklad vytvoril importný engine založený na pravidlách, ktorý používa konfiguráciu YAML na automatickú kategorizáciu transakcií. Úryvok tejto konfigurácie ukazuje, ako sa konkrétni príjemcovia platieb alebo popisy (napríklad „Comcast“ alebo „PG&E“) mapujú na určité nákladové účty a narácie, takže keď sa objavia v bankovom kanáli, vygeneruje sa správny záznam Beancount bez manuálnej úpravy. Je to v podstate vlastná automatizácia na aplikovanie účtovných pravidiel (pre energie, predplatné atď.) za behu. Ďalší plugin zaisťuje, že hlavná kniha zostáva vždy vyvážená a naformátovaná. Všetky tieto nástroje sa spúšťajú ako súčasť pracovného postupu zakladateľa vždy, keď sa načítajú nové údaje. Výsledkom je hlavná kniha, ktorá sa „aktualizuje sama“ s minimálnym zásahom, čo podľa zakladateľa prináša „čistú radosť“ developerovi posadnutému automatizáciou.
Bezpečnosť a prístupnosť boli tiež dôležité. Zakladateľ chcel, aby jeho finančný tím (a dokonca aj jeho manželka v úlohe dozorcu) mohol jednoducho prezerať knihy. Na tento účel nastavil súkromné nasadenie Fava v cloude. Vždy, keď odošle nový commit hlavnej knihy do súkromného repozitára Git, CI pipeline (pomocou GitHub Actions a AWS Elastic Beanstalk) nasadí aktualizovanú inštanciu Fava. Webové rozhranie je za heslom (pomocou Nginx proxy so základnou autentifikáciou), takže ho vidia len oprávnené osoby. Takto sú najnovšie finančné výkazy vždy dostupné prostredníctvom dashboardu v prehliadači bez potreby lokálnej inštalácie. Architektonický diagram nižšie ilustruje toto nastavenie: súbor Beancount a potrebná konfigurácia sa zabalia do Docker image spolu s Fava a obsluhujú sa na AWS, pričom Cloudflare stojí vpredu pre bezpečnosť.
flowchart LR
A[Edit ledger locally] --> B[Push to private Git repo]
B --> C[CI builds Docker image<br/>Fava + Nginx basic auth]
C --> D[Deploy to AWS<br/>Elastic Beanstalk]
D --> E[Cloudflare proxy]
E --> F[Owner & team view<br/>reports in browser]Automatizácia Beancount v cloude: používateľ aktualizuje súbor hlavnej knihy lokálne a odošle ho do Git; vytvorí sa Docker kontajner (vrátane Fava a Nginx pre autentifikáciu) a nasadí sa na server AWS Beanstalk a Cloudflare funguje ako proxy. Výsledkom je bezpečný webový portál, kde sú finančné údaje malej firmy prístupné odkiaľkoľvek (majiteľovi alebo tímu) v reálnom čase. Toto pokročilé nastavenie demonštruje, ako môže malá firma integrovať Beancount s modernými cloudovými nástrojmi, aby dosiahla pohodlie bez toho, aby sa vzdala vlastníctva údajov.
V každodennom používaní sa majiteľ malej firmy sústreďuje skôr na riešenie výnimiek než na zadávanie údajov. Každý mesiac stručne skontroluje automaticky importované transakcie (pomocou diffov Git alebo zobrazenia denníka vo Fava), aby zachytil nekategorizované alebo nesprávne záznamy. Používa tiež tvrdenia o zostatku Beancount na zosúladenie účtov. Napríklad po zadaní všetkých júnových transakcií môže pridať kontrolu zostatku, aby potvrdil, že konečný zostatok bankového účtu zodpovedá výpisu; ak nie, Beancount vyhlási chybu, čo naznačuje, že niečo chýba alebo je zadané nesprávne. To zaisťuje, že knihy zostávajú presné.
Kľúčové postupy v zostave malej firmy: Intenzívna automatizácia prostredníctvom vlastných importérov a skriptov (čím sa hlavná kniha stáva „na 95 % automatickou“), používanie verzionovania na auditné stopy a spoluprácu, viacmenové účtovníctvo s cenovými kanálmi na ocenenie a nasadenie Fava pre jednoduchý, zdieľateľný prístup k finančným reportom. Scenár malej firmy ukazuje, ako ďaleko sa dá Beancount dostať s inžinierskym úsilím – premeniť účtovníctvo na prevažne automatizovaný proces pri zachovaní transparentnosti a flexibility. Aj keď človek nie je programátor, mnohé z týchto výhod sa dajú dosiahnuť používaním komunitných pluginov (na formátovanie, detekciu duplicít atď.) a osvojením si pracovného postupu s čistým textom, ktorý podporuje časté kontroly a zálohovanie.
Nadšenec pre osobné financie: rozpočtovanie a vlastné analýzy
Naša posledná ukážka je nadšenec do osobných financií – niekto, kto používa Beancount na správu financií domácnosti a investícií na vysokej úrovni detailu. Tento používateľ pristupuje k svojim osobným financiám s dôslednosťou účtovníka a zvedavosťou dátového analytika. Výsledkom je hlavná kniha Beancount, ktorá nielen sleduje každý cent, ale slúži aj ako základ pre rozpočtovanie, prognózovanie a analytické experimenty.
Organizácia osobnej hlavnej knihy: Mnohí jednotlivci začínajú s jediným súborom Beancount pre všetky svoje účty a tento nadšenec nie je výnimkou. Vedie jednu hlavnú knihu (napr. main.beancount), ktorá obsahuje všetky účty (bankové účty, kreditné karty, pôžičky, investičné portfóliá atď.) a transakcie. Postupom času zaviedol určitú štruktúru rozdelením sekcií – napríklad má súbor na otváranie/zatváranie účtov a samostatné súbory pre ročné transakcie – ktoré sa vkladajú do hlavného súboru. Táto modulárna organizácia uľahčuje navigáciu v rokoch údajov (staré roky možno archivovať v samostatných súboroch) a zároveň zostáva logicky jednou hlavnou knihou. Ďalší osobný používateľ na komunitnom fóre opísal podobné usporiadanie: hlavný súbor, ktorý vkladá ostatné podľa kategórie (napr. Income.beancount, Expenses.beancount, Investments.beancount). Náš nadšenec to zatiaľ drží jednoducho: jeden súbor synchronizovaný medzi zariadeniami.
Keď už hovoríme o synchronizácii, keďže ide o osobné financie, tento používateľ chce zachytiť transakcie kdekoľvek sa nachádza. Používa mobilnú aplikáciu Beancount Mobile na rýchle pridávanie záznamov na cestách (napríklad zaznamenanie hotovostného výdavku priamo v obchode). Súbor hlavnej knihy sa zdieľa prostredníctvom cloudovej synchronizácie (v tomto prípade Syncthing), takže telefón, notebook a VPS (server) majú všetky najnovšiu kópiu. Na počítači uprednostňujú používanie Emacs s beancount-mode pre pohodlné editovanie so zvýrazňovaním syntaxe. Toto nastavenie zaisťuje, že či už sú pri stole alebo na cestách, môžu transakcie zaznamenať okamžite a vyhnúť sa zabudnutiu. Je to skvelý príklad prispôsobenia technologických nástrojov osobnému pohodliu – v podstate vybudovanie self-hosted alternatívy ku komerčným rozpočtovým aplikáciám.
Označovanie a metadáta pre granulárne sledovanie: Tento používateľ využíva značky na pridanie druhej dimenzie k svojim údajom nad rámec účtovej osnovy. Pre bežné rozpočtové kategórie postačujú účty (majú účty ako Expenses:Groceries, Expenses:Rent atď.), ale pre prierezové témy ako udalosti alebo ciele používajú značky. Napríklad označujú všetky transakcie súvisiace s projektom rekonštrukcie domu značkou #HomeReno, či už ide o nákup reziva v železiarstve (náklad) alebo prijatie rabatu od výrobcu (výnos). Takto môžu ľahko vygenerovať report celkových nákladov projektu bez toho, aby boli tieto náklady roztrieštené pod rôznymi účtami. Jeden používateľ Redditu demonštroval tento prístup označovaním nákladov ako #garage-improvement alebo #lighting-improvement pre domáce projekty, čo umožňuje triviálne filtrovanie a sčítanie pomocou dotazov Beancount. Náš nadšenec robí to isté pre dovolenky (#ItalyTrip2025), veľké nákupy a jednorazové udalosti.
Metadáta (páry kľúč-hodnota pri transakciách) sa tiež používajú na niektoré konkrétne účely. Napríklad pridávajú metadátum location: ... k veľkým výdavkom na sledovanie, kde peniaze minuli, alebo note: ... pre dodatočný kontext nad rámec príjemcu platby a narácie. V niekoľkých prípadoch dokonca vytvorili vlastné metadátové polia na pomoc s prognózovaním. Jedným príkladom je pridanie budget: X a frequency: monthly k určitým opakujúcim sa nákladom – nápad inšpirovaný diskusiou na e-mailovej konferencii Beancount, kde používateľ ukladal rozpočtové projekcie do metadát pre každý náklad. Tieto metadátové polia neovplyvňujú jadro Beancount, ale nadšenec napísal malý skript v Pythone, ktorý ich číta a porovnáva skutočné výdavky s plánovaným rozpočtom. Je to alternatíva k používaniu vstavaných rozpočtov Fava (opísaných nižšie), ktorá ukazuje, ako sa metadáta dajú ohnúť podľa vôle používateľa. Ako poznamenal tvorca Beancount, metadáta sú „len pre vás [na použitie vo vlastných skriptoch] – Beancount ich parsuje, ale sám ich ignoruje“. Stručne povedané, tento používateľ sa nebojí rozšíriť hlavnú knihu o extra informácie na podporu svojej osobnej analýzy.
Rozpočtovanie s Beancount: Jedným z hlavných cieľov tohto používateľa je dodržať mesačný rozpočet. Predtým používal rozpočtovú aplikáciu (YNAB) a chcel replikovať niektoré z jej konceptov obálkového rozpočtovania. Existuje niekoľko spôsobov, ako robiť rozpočtovanie v Beancount, ale najjednoduchšie je použiť direktívy rozpočtu Fava. Náš nadšenec pridáva do hlavnej knihy záznamy budget takto:
2025-01-01 custom "budget" Expenses:Groceries "monthly" 500 USD
2025-01-01 custom "budget" Expenses:DiningOut "monthly" 200 USD
2025-01-01 custom "budget" Expenses:Travel "yearly" 3000 USDKaždý riadok nastavuje rozpočet pre účet (kategóriu) na určité obdobie. Fava potom vo webovom rozhraní zobrazuje stĺpce rozpočet vs. skutočnosť, čo používateľovi umožňuje vidieť napríklad to, že tento mesiac minul 480 USD na Groceries z rozpočtovaných 500 a možno 220 na DiningOut (nad rozpočet). Nadšenec pravidelne kontroluje reporty Výkaz ziskov a strát a Náklady vo Fava, ktoré zobrazujú mesačné súčty aj rozpočtové ciele. Fava pohodlne agreguje denné/týždenné rozpočty do príslušných časových období. Používaním rozhrania Fava tak používateľ nepotrebuje samostatnú tabuľku na rozpočtovanie; všetko je integrované. (Experimentovali aj s automatizovanejším „obálkovým“ systémom presúvaním prostriedkov na fiktívne účty na začiatku každého mesiaca, ako sa navrhuje na fórach, ale zistili, že vlastné direktívy rozpočtu sa jednoduchšie udržiavajú.)
Pre prognózovanie, nad rámec rozpočtov, sledujú nadchádzajúce účty. Niektorí členovia komunity vytvorili pluginy na generovanie budúcich transakcií pre predplatné alebo splátkové kalendáre pôžičiek, ale tento používateľ sa rozhodol pre jednoduchší prístup: vedie samostatnú sekciu hlavnej knihy s transakciami s budúcim dátumom pre známe položky (ako budúci mesačný nájom alebo nadchádzajúcu ročnú platbu poistenia). Tie zostávajú v hlavnej knihe, ale neovplyvňujú dnešné zostatky, a keď príde dátum a transakcia sa stane aktuálnou, slúži ako pripomienka (a sumu podľa potreby upravia tak, aby zodpovedala skutočnému poplatku). Je to trochu hack, ale funguje na prognózovanie cash flow bez zložitých nástrojov.
Sledovanie investícií a viackomoditné účtovníctvo: Ako nadšenec do financií používa tento používateľ Beancount aj na konsolidáciu investičných účtov – akcií, podielových fondov a kryptomien – spolu s hotovostnými účtami. Má maklérske účty, ktorých držby (napr. akcie AAPL, GOOG atď.) sa v Beancount zaznamenávajú ako komodity. Napríklad nákup 10 akcií Apple by bol záznam, ktorý v prospech hotovosti makléra a zaťaží účet aktív s 10 AAPL ako množstvom komodity. Schopnosť Beancount pracovať s akoukoľvek komoditou je tu veľmi užitočná; meny a akcie sa dajú voľne miešať. „Beancount dokáže sledovať množstvá v akejkoľvek mene, či už USD alebo ticker symbol,“ ako poznamenal jeden používateľ, čo bolo veľké zlepšenie oproti aplikáciám pre osobné financie, ktoré často akciové pozície dobre nepodporujú. Náš nadšenec používa nočnú úlohu cron na načítanie najnovších trhových cien všetkých svojich cenných papierov a cudzích mien. Každú noc o 4:00 skript načíta ceny (z Yahoo Finance alebo iného zdroja) a pripojí cenové záznamy k hlavnej knihe pre daný deň. Takto pri ďalšom otvorení Fava alebo spustení reportu vidia aktuálne hodnoty portfólia a dokonca výkonnosť investícií v čase. Celé čisté imanie, naprieč bankovými účtami, dôchodkovými fondmi a krypto peňaženkami, je dostupné v jednom zjednotenom zobrazení. To je sen pre investora riadeného dátami: žiadna potreba prihlasovať sa na viacero platforiem, aby videli celý obraz. V podstate si vybudovali osobný finančný dashboard poháňaný Beancount.
Analýza a integrácia: To, čo skutočne odlišuje tohto power-usera osobných financií, je spôsob, akým analyzujú údaje, keď už sú v Beancount. Keďže všetky transakcie sú v databáze SQLite (Beancount dokáže dotazovať údaje prostredníctvom svojho vstavaného dotazovacieho jazyka, ktorý je podobný SQL), používateľ môže robiť vlastnú analýzu. Napísali skripty v Pythone na odpovede na otázky ako „Aký je 3-mesačný kĺzavý priemer mojich výdavkov na potraviny?“ alebo „Ako sa tohtoročné výdavky na energie porovnávajú s minulým rokom?“ Jeden skript dotazuje hlavnú knihu na konkrétne značky a výsledky vypisuje do Pandas dataframe na ďalšie spracovanie čísel. Keďže hlavná kniha je v čistom texte, použili aj Jupyter notebooky na experimentovanie s rôznymi vizualizáciami (nad rámec toho, čo ponúka Fava). Napríklad vytvorili vlastný stĺpcový graf mesačnej miery úspor pomocou Matplotlib agregovaním údajov Beancount v Pythone. Tento druh ad-hoc analýzy je možný len preto, že Beancount udržiava údaje prístupné a strojovo čitateľné. Ako to vyjadril jeden používateľ, extrahovanie údajov je triviálne – „Mám jeden skript v Pythone, ktorý vytiahne údaje z Beancount pomocou dotazovacieho jazyka, a potom použijem pandas dataframe na prípravu údajov do reportu“. Náš nadšenec má repozitár podobných malých skriptov, ktoré spúšťa na svoju ročnú finančnú revíziu.
Samozrejme, nie všetko si vyžaduje kódovanie – väčšinu času sa spoliehajú na vstavané grafy Fava. Fava poskytuje čiarový graf čistého imania, trend výnosov vs. nákladov a dokonca rozpad vo forme treemap (ako je znázornené vyššie), ktoré sú vzdialené len jedno kliknutie. Používateľ oceňuje, že celá história ich financií od roku 2018 je dotazovateľná a auditovateľná. Napríklad ak ich zaujíma „koľko som minul na opravy auta za posledných 5 rokov“, môžu napísať rýchly dotaz alebo filter vo Fava a získať odpoveď namiesto prehrabávania sa v účtenkách. Toto posilnenie je presne to, čo ich pritiahlo k Beancount: plné vlastníctvo údajov a nekonečná flexibilita v analýze. Ako bonus je hlavná kniha v čistom texte odolná voči budúcnosti – dá sa verzionovať, migrovať alebo dokonca parsovať inými nástrojmi, ak je to potrebné. Na rozdiel od uzavretej aplikácie neexistuje riziko straty prístupu k ich finančnej histórii.
Kľúčové postupy v osobnej zostave: Využívanie mobilných a desktopových nástrojov na pohodlné zadávanie údajov, používanie značiek a vlastných metadát na sledovanie životných udalostí a medzikategóriových zoskupení, implementácia rozpočtov prostredníctvom direktív budget Fava na priebežné výdavkové ciele, sledovanie investícií a viacerých mien v tej istej hlavnej knihe (s automatickými aktualizáciami cien) a vykonávanie vlastnej analýzy priamym dotazovaním údajov hlavnej knihy. Tento prípad ukazuje, že s trochou nastavenia môžu aj nadšenci do osobných financií dosiahnuť úroveň vhľadu a kontroly, ktorá je zvyčajne vyhradená firmám – a to všetko pri zachovaní zábavy a zaujatia pre technicky zdatného používateľa.
Pre hostovaný ekvivalent skriptov na načítavanie cien v týchto príkladoch použite Live Prices. Vyberte podporované aktíva a menu ocenenia, potom pridajte vygenerované include súbory do svojej hostovanej hlavnej knihy. Lokálne zostavy Fava stále potrebujú lokálne cenové súbory. Automatické ceny aktualizujú údaje o ocenení; nemenia transakcie ani náklady na loty v týchto zostavách.
Záver
Vo všetkých týchto komunitných príkladoch je jasnou témou to, že flexibilita Beancount umožňuje vysoko personalizovaný účtovný systém. Power-useri v komunite využili jednoduché textové súbory na vytvorenie riešení, ktoré schopnosťami konkurujú komerčnému softvéru, no sú ušité na mieru ich pracovným postupom. Freelanceri označujú a prepájajú záznamy, aby ľahko spravovali klientske projekty a faktúry. Majitelia malých firiem skriptujú únavné účtovné úlohy a integrujú Beancount s modernou infraštruktúrou pre vždy aktuálne finančné údaje. Nadšenci do osobných financií používajú hlavnú knihu ako jediný zdroj pravdy pre rozpočtovanie, investovanie a rozhodovanie a rozširujú ju o značky a nástroje na odpovede prakticky na akúkoľvek otázku o svojich peniazoch. To všetko sa dosahuje pri zachovaní základných výhod účtovníctva v čistom texte: transparentnosti, auditovateľnosti a kontroly nad vlastnými údajmi.
Komunita Beancount tiež vytvorila bohatý ekosystém pluginov a integrácií. Od režimov editorov a mobilných aplikácií na zadávanie, cez webové rozhranie Fava na vizualizáciu, až po nespočetné importéry a utility na GitHube – existujú zdroje takmer pre každú potrebu. Používatelia často zdieľajú svoje zostavy hlavnej knihy na fórach a blogoch, aby sa ostatní mohli učiť a osvojiť si osvedčené postupy. Dôležité je, že citlivé informácie môžu zostať súkromné (alebo sa dajú ľahko redigovať na zdieľanie) vďaka formátu čitateľnému pre ľudí – ako sme to urobili v tejto prehliadke. Príklady vyššie demonštrujú, že či už ste nezávislý vývojár, zakladateľ startupu alebo fanúšik osobných financií, môžete si Beancount ohnúť podľa svojej vôle. Kreatívnym používaním označovania a metadát, automatizáciou tam, kde je to možné, spracovaním viacmenových transakcií, plánovaním s rozpočtami a rozširovaním prostredníctvom pluginov komunita neustále posúva hranice toho, čo je v čistom texte možné. Výsledkom sú účtovné hlavné knihy na profesionálnej úrovni, ktoré je zároveň zaujímavé udržiavať, a dávajú používateľom jasnosť aj kontrolu nad ich financiami.