Въведение в Beancount.io
Това ръководство синтезира най-добрите практики за счетоводство в обикновен текст, използвайки мощния инструмент с отворен код за счетоводство в обикновен текст, Beancount. То обхваща основополагащата философия, основен до разширен синтаксис, практически казуси за сложни активи и дългосрочни стратегии за управление на счетоводната книга.
Част 1: "Защо" - Основи на интелигентното счетоводство
Преди да се потопим в "как", от решаващо значение е да разберем "защо". Ефективното счетоводство е основата на личното финансово управление и необходима стъпка към финансова яснота и свобода.
Отвъд проследяването на разходите: Пътят към финансова яснота
Обикновените приложения за проследяване на разходите ви казват къде са отишли парите ви. Една стабилна счетоводна система ви казва това и много повече: тя предоставя пълна картина на вашето финансово здраве, включително вашата нетна стойност, паричен поток и представянето на вашите инвестиции. Основната цел е наблюдаемост — придобиване на ясен, базиран на данни разбиране на вашия финансов живот, което ви позволява да вземате информирани решения, да оценявате риска и да работите за дългосрочни цели като пенсиониране.
Защо двойно счетоводство? Силата на балансирана система
За разлика от едностранното счетоводство (прост списък на разходите), методът на двойното счетоводство записва всяка транзакция като поток на стойност между най-малко два сметки. Неговият основен принцип е основното счетоводно уравнение:
Тази система гарантира, че вашите книги винаги са балансирани, което драстично намалява грешките. Тя предоставя пълна финансова картина, като генерира основни отчети като Баланс (какво притежавате и дължите) и Отчет за приходите (какво сте спечелили и похарчили).
Част 2: Първи стъпки с Beancount
Beancount е мощен, базиран на Python инструмент за счетоводство в обикновен текст.
Първият ви поглед с Fava на Beancount.io
Beancount.io предоставя мощна среда, която комбинира Beancount двигателя с мобилно приложение (iOS, Android) и уеб приложение - Fava, фантастичен уеб-базиран интерфейс за визуализиране на вашата счетоводна книга. Не е необходима инсталация. Когато използвате платформата, вие директно взаимодействате с текстов редактор за вашия счетоводен файл (напр. main.bean) и виждате отчетите, генерирани от Fava, да се актуализират в реално време.
Fava взема обикновения текст, който пишете, и го превръща в интерактивни графики, финансови отчети и филтрируеми списъци с транзакции, давайки ви ясен изглед на вашите финансови отчети.
Петте основни типа сметки
Beancount използва пет типа сметки от най-високо нив о, които формират структурата на вашата счетоводна книга:
| Тип сметка | Описание | Типичен баланс |
|---|---|---|
Assets | Какво притежавате (пари в брой, банкови сметки, инвестиции, имоти). | Положителен |
Liabilities | Какво дължите (дълг по кредитна карта, заеми, ипотеки). | Отрицателен |
Income | Откъде идват парите (заплата, бонуси, лихви). | Отрицателен |
Expenses | Къде отиват парите (храна, наем, пътуване, данъци). | Положителен |
Equity | Вашата нетна стойност; използва се за първоначални салда. | Отрицателен |
Уравнението на Beancount
Beancount налага своя собствена версия на счетоводното уравнение, където сумата на всички статии в цялата ви счетоводна книга е равна на нула:
Ето защо, по конвенция, сметките Income, Liabilities и Equity притежават отрицателни стойности — те са източниците на средства, които увеличават вашите Assets и Expenses.
Част 3: Езикът на Beancount - Основен синтаксис
Всички записи в Beancount са директиви, които започват с дата.
Дефиниране на сметки (open) и стоки
Преди да можете да използвате сметка, трябва да я декларирате с директивата open. Можете също така да посочите по избор валутите или "стоките", които ще съдържа.
; 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
Стоките могат да бъдат валути от реалния свят (напр. USD, JPY) или всяка потребителска единица, която дефинирате, като например самолетни мили (MILES_UA) или стокови символи (HOOL).
Записване на първата ви транзакция (*)
Транзакциите са най-честият запис. Те започват с дата, флаг (* за пълна т ранзакция или ! за непълна), незадължителен платец и описание. Всеки ред, който следва (отстъпен с два интервала), е "статия" в сметка.
; 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
За удобство, ако транзакцията има само две статии, можете да пропуснете сумата на втория ред и Beancount ще я изчисли автоматично.
2024-07-28 * "Trader Joe's" "Weekly groceries"
Expenses:Food:Groceries 125.50 USD
Liabilities:CreditCard:US:Discover
Балансиране на ниво транзакция: По-важното за ежедневната употреба е, че всяка отделна транзакция също трябва да бъде балансирана — сумата на всички статии в рамките на една транзакция трябва да бъде равна на нула. Ако транзакцията не е балансирана, Beancount ще покаже грешка като тази:

Работа с многовалутни транзакции (@ и @@)
Beancount се отличава с многовалутното счетоводство.
- Използвайте
@, за да посочите цена на преобразуване на единица. - Използвайте
@@, за да посочите общата цена на преобразуването.
; 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
Част 4: Гарантиране на точност - Изкуството на съгласуване
Ключова практика за поддържане на точна счетоводна книга е редовното съгласуване. Това включва сравняване на салдата във вашата счетоводна книга Beancount с официални извлечения от вашите финансови институции.
Автоматизиране на проверки с твърдения за баланс (balance)
Директивата balance е вашият основен инструмент за автоматизирани проверки. Вие твърдите, че на дадена дата дадена сметка е имала конкретен баланс. Beancount ще предизвика грешка, ако изчисленият от нея баланс не съвпада с вашето твърдение. Това е безценно за бързото локализиране на грешки.
Забележка: Твърдението за баланс проверява състоянието на сметката в началото на посочения ден (преди всички транзакции в този ден).
; From your monthly credit card statement
2024-08-01 balance Liabilities:CreditCard:US:Discover -1432.78 USD
Свързване на поддържащи документи (document)
Можете да свържете към външни файлове като банкови извлечения или разписки, създавайки одиторска пътека. Fava прави тези връзки кликаеми.
2024-08-01 document Liabilities:CreditCard:US:Discover "statements/discover-2024-07.pdf"
Коригиране на грешки и инициализиране на салда
Когато започнете своята счетоводна книга или откриете несъответствие, което не можете да проследите, трябва да направите корекция. Стандартната практика е да използвате специална сметка 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
Сметката Equity:Opening-Balances държи суми, които влизат във вашата счетоводна книга от неизвестни или външни източници.
За бързи корекции, когато точното несъответствие е маловажно, директивата pad може автоматично да коригира салдото на сметката, за да отговори на последващо твърдение balance, като резервира разликата в сметка на собствен капитал. Използвайте това с повишено внимание, тъй като може да скрие по-големи проблеми. Изричните корекции обикновено са по-безопасни.
Част 5: Разширени и реалистични модели на транзакции
Проследяване на дългове: Управление на вземания и задължения
Двойното счетоводство е идеално за проследяване на пари, дължими на вас (Assets:Receivables) или от вас (Liabilities:Payable).
Пример: Плащате за групова вечеря от 90 долара, а вашият приятел Боб ви дължи за своя дял от 45 долара.
-
Запишете първоначалния разход и вземането:
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 -
Когато Боб ви върне парите:
2024-08-06 * "Bob" "Paid me back for dinner"
Assets:Bank:US:Chase:Checking 45.00 USD
Assets:Receivables:Bob -45.00 USD
Сметката Assets:Receivables:Bob вече е нула и вашите книги са перфектно балансирани.
Активи срещу разходи: Покупка на кола и амортизация
Голяма покупка като кола не е прост разход; това е придобиване на актив, който губи стойност с течение на времето (амортизация).
-
Запишете покупката като актив:
2023-01-15 * "Toyota Dealer" "Purchase of a new car"
Assets:Car:ToyotaCamry 30000.00 USD
Assets:Bank:US:Chase:Checking -30000.00 USD -
Запишете годишна амортизация: Приемете, че оценявате, че колата губи 3 000 долара стойност всяка година. В края на годината записвате това като разход.
2023-12-31 * "Depreciation" "Annual car value depreciation"
Expenses:Depreciation:Car 3000.00 USD
Assets:Car:ToyotaCamry -3000.00 USD
След този запис, вашата сметка Assets:Car:ToyotaCamry правилно отразява новата стойност на колата (27 000 долара) и вие сте отчели правилно разходите за използване като разход за тази година.
Част 6: Дълбоко гмуркане - Моделиране на сложни реални активи
Казус 1: Счетоводство на недвижими имоти
Домът често е вашият най-голям актив и пасив. Ето как да го моделирате.
-
Създайте сметки и стока по избор:
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 -
Запишете покупката: Да кажем, че купувате къща за 500 хиляди долара със 100 хиляди долара първоначална вноска и заем от 400 хиляди долара.
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 -
Запишете месечни ипотечни плащания: Вашето месечно плащане се състои от главница (намалява пасивите) и лихва (разход).
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 -
Проследяване на повишаването на стойността (нереализирани печалби): Пазарната стойност на къщата се променя. За да проследите това, без да засягате официалната си нетна стойност (тъй като печалбата не е реализирана, докато не продадете), можете да използвате ценова директива с "виртуална" валута.
; 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
Това ви позволява да видите прогнозната стойност в графиките на Fava, без да надувате неправилно вашия баланс.
Казус 2: Проследяване на ограничени акции (RSUs)
RSUs са често срещана форма на компенсация на собствения капитал. Счетоводството за тях включва проследяване на първоначалната безвъзмездна помощ, събитията на придобиване и удържането на данъци.
-
Първоначална настройка: Създайте стоки за придобити (
HOOL) и непридобити (HOOL.UNVEST) акции, заедно с необходимите сметки.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:Salary:Hooli:RSU
2021-01-01 open Expenses:Taxes:Federal -
Запишете първоначалната безвъзмездна помощ: Тази транзакция показва общата безвъзмездна помощ, която се премества в сметка за непридобити активи.
2021-02-01 * "Hooli" "Initial RSU Grant"
Assets:Grant:Unvested 1000 HOOL.UNVEST
Income:Grant:Awards -1000 HOOL.UNVEST -
Запишете събитие на придобиване: Това е ключовата транзакция. Когато акциите се придобият, вие признавате доход, плащате данъци (често чрез продажба на някои акции) и получавате нетните акции. Приемете, че 100 акции се придобиват при 150 долара на акция.
2022-02-01 * "Hooli" "RSU Vesting Event"
; Recognize total income of 100 * $150 = $15,000
Income:Salary:Hooli:RSU -15000.00 USD
; Show taxes paid from this income
Expenses:Taxes:Federal 4000.00 USD
Expenses:Taxes:State 1000.00 USD
; You receive the net shares (assume 60 shares) at their cost basis
Assets:Brokerage:Etrade:HOOL 60 HOOL {150.00 USD}
; The other 40 shares were sold to cover $6000 in taxes.
; This transaction balances the income, taxes, and received shares.
; We must also show the reduction in unvested shares.
Assets:Grant:Unvested -100 HOOL.UNVEST
Expenses:Grant:Vested 100 HOOL.UNVEST
Тази единична, балансирана транзакция правилно моделира цялото събитие: непридобитата безвъзмездна помощ е намалена, доходът е признат, данъците са платени и нетните придобити акции се появяват във вашата брокерска сметка с правилната себестойност за бъдещи изчисления на капиталови печалби.
Част 7: Управление на проекти за вашата счетоводна книга
С разрастването на вашата счетоводна книга организацията става ключова.
Използване на контрол на версиите (Git) за защита на вашите данни
Тъй като вашата счетоводна книга е текстов файл, тя е идеална за контрол на версиите с Git. Това ви дава пълна история на всички промени, предпазвайки ви от случайни изтривания или грешки. Предупреждение: Вашите финансови данни са изключително чувствителни. Използвайте частно хранилище в услуги като GitHub/GitLab или хоствайте свое собствено.
Организиране с тагове (#) и връзки (^)
Beancount предоставя два начина за групиране на транзакции отвъд сметките:
- Тагове (
#): Използвайте за събития или проекти. Можете да филтрирате всички транзакции, свързани с конкретно пътуване, например.2024-07-20 * "Hotel" "Vienna" #trip-europe-2024 - Връзки (
^): Използвайте, за да свържете финансово свързани транзакции, които се случват по различно време, като например теглене на пари в брой и свързаната банкова такса.
Мащабируема стратегия за структуриране на вашите файлове (include)
Един огромен файл е труден за управление. Използвайте директивата include, за да разделите вашата счетоводна книга на множество файлове.
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"
Стабилна организационна стратегия, по ред на старшинство:
- По събитие: Създайте отделен файл за голямо, самостоятелно събитие (напр.
trip-europe-2024.bean). - По категория/платец: За много редовни, повтарящи се транзакции като сметки за комунални услуги или заплата, ги групирайте в техен собствен файл (напр.
recurring-rent.bean). - По сметка: За транзакции, тясно свързани с конкретна сметка (лихви, такси, плащания с кредитна карта), помислете за файл, специфичен за сметката.
- По дата: За всички други общи транзакции е ефективно просто разделяне по година (
2024.bean) или месец (2024/07.bean).
Част 8: Заключение
Beancount предлага стръмна крива на обучение, но възнаграждава усилията с несравнима мощност, гъвкавост и контрол върху вашите финансови данни. Като възприемете принципите на двойното счетоводство и практическите инструменти, които Beancount предоставя, можете да преминете от просто проследяване на разходите към пълна, точна и проницателна система за лично финансово управление. Вашата счетоводна книга се превръща в постоянен, частен и безценен актив за разбиране на вашето минало и планиране на вашето бъдеще.
Първи стъпки с Beancount.io
Beancount.io е модерна облачна платформа за финансово управление, която преобразува вашите текстови записи на транзакции в изчерпателни финансови отчети, включително отчети за приходите, баланси и оборотни ведомости. Чрез комбиниране на надеждността на обикновените текстови файлове с мощни инструменти за визуализация, Beancount.io ви помага да поддържате прецизен контрол върху финансовия си живот, като същевременно получавате ценна инф ормация за ефективността на вашите инвестиции.


