Beancount против hledger: какой инструмент учета в текстовом формате вам подходит?
Если вы решили управлять своими финансами с помощью учета в текстовом формате (plain-text accounting), вы уже сделали разумный выбор. Ваши финансовые данные будут храниться в человекочитаемых файлах, которые вы полностью контролируете, отслеживаются с помощью системы контроля версий и свободны от привязки к конкретному поставщику ПО. Но теперь возникает следующий вопрос: какой инструмент использовать?
Beancount и hledger — два самых популярных инструмента для учета в текстовом формате (PTA) на сегодняшний день. Оба имеют открытый исходный код, активно поддерживаются и способны справиться с чем угодно: от личного бюджета до сложных инвестиционных портфелей. Тем не менее, они используют принципиально разные подходы к тому, как вы записываете, проверяете и анализируете свои финансовые данные.
В этом руководстве разобраны основные различия, чтобы вы могли выбрать тот вариант, который лучше всего соответствует вашему рабочему процессу, уровню опыта и потребностям в финансовом отслеживании.
Основная философия: Строгость против Гибкости
Самое большое различие между Beancount и hledger заключается не в функциях, а в подходе.
Beancount — это строгий учитель. Он предполагает, что вы будете совершать ошибки при вводе данных, и создает защитные механизмы, чтобы поймать их на ранней стадии. Каждый счет должен быть явно открыт перед исполь зованием. Каждая транзакция должна балансироваться в ноль. Валюты должны соответствовать жесткому формату. Если что-то выглядит неправильно, Beancount откажется обрабатывать ваш файл, пока вы это не исправите.
hledger — это понимающий друг. Он использует более свободный синтаксис, позволяет пропускать предварительное объявление счетов и даже может самостоятельно выводить балансирующие записи. Вы можете начать отслеживать финансы с минимальной настройкой и постепенно добавлять структуру по мере роста ваших потребностей.
Ни один из подходов не является объективно лучшим. Если вам важно находить ошибки до того, как они превратятся в часы отладки, строгость Beancount — это преимущество. Если вы хотите быстро начать и предпочитаете гибкость, преимуществом будет снисходительность hledger.
Синтаксис и формат данных
Оба инструмента хранят транзакции в текстовых файлах, но правила синтаксиса существенно различаются.
Синтаксис Beancount
2026-03-15 * "Whole Foods" "Weekly groceries"
Expenses:Food:Groceries 85.42 USD
Liabilities:CreditCard:Visa
Основные правила:
- Даты используют формат ISO 8601 (
ГГГГ-ММ-ДД) - Валюты должны быть написаны заглавными буквами (например,
USD,EUR) — никаких символов вроде$или€ - Названия счетов должны состоять минимум из двух компонентов, разделенных двоеточием (например,
Expenses:Food) - Описания должны быть строками в кавычках
- Все счета должны быть явно открыты с помощью дирек тивы
open
Синтаксис hledger
2026-03-15 Whole Foods | Weekly groceries
expenses:food:groceries $85.42
liabilities:creditcard:visa
Основные правила:
- Более гибкие форматы дат
- Разрешены символы валют, такие как
$и€ - Названия счетов могут быть в нижнем регистре и иметь более свободную форму
- Описания не требуют кавычек
- Нет необходимости предварительно объявлять счета
Вывод: более строгий синтаксис Beancount означает больше предварительной работы, но меньше двусмысленностей. Свободный синтаксис hledger легче в освоении, но требует больше дисциплины для поддержания порядка.
Целостность данных и проверка
Именно здесь Beancount проявляет себя в полной мере.
Подтверждение баланса (Balance Assertions)
Оба инструмента поддерживают подтверждение баланса — утверждения, которые проверяют, совпадает ли ваш записанный баланс с выпиской из банка. Но работают они по-разному.
Beancount использует датированные подтверждения баланса, которые не зависят от порядка записей. Вы можете переставлять файлы транзакций как угодно, и подтверждения все равно будут работать правильно. Подтверждения в hledger зависят от порядка в файле, что означает, что перемещение транзакций может их нарушить.
Отслеживание инвентаря
Для тех, кто отслеживает инвестиции, это очень важно. Beancount применяет строгий учет инвентаря: вы не можете продать акции, которые никогда не покупали, и он с высокой точностью отслеживает базисную стоимость (cost basis). Это предотвращает «утечку базисной стоимости» — тонкую ошибку, при которой расчеты прироста капитала со временем начинают расходиться с реальностью.
hledger обрабатывает товары (commodities) и лоты, но с меньшим контролем. Он более гибок, что также означает большую терпимость к ошибкам, которые могут остаться незамеченными до налогового периода.
Категории счетов
Beancount требует, чтобы каждый счет относился к одной из пяти категорий: Assets (Активы), Liabilities (Обязательства), Income (Доходы), Expenses (Расходы) или Equity (Собственный капитал). Это ограничение позволяет ему автоматически генерировать правильные балансовые отчеты и отчеты о прибылях и убытках.
hledger допускает произвольные иерархии счетов без обязательных корневых категорий. Это дает больше свободы, но означает, что вам нужно вручную следовать соглашениям, чтобы получать осмысленные финансовые отчеты.
Пользовательский интерфейс и отчетность
Beancount + Fava
Главная особенность Beancount — это Fava, продуманный веб-интерфейс, который предоставляет:
- Интерактивные чарты и графики (тренды чистого капитала, разбивка расходов, доходы против расходов)
- Визуализации тtree-map (древовидные карты) для категорий трат
- Мощную фильтрацию по счету, тегу, периоду времени и получателю
- Язык запросов для создания кастомных отчетов
- Встроенный редактор для ваших ledger-файлов
Fava по праву считается лучшим пользовательским интерфейсом в экосистеме plain-text accounting. Если вы визуал и вам нужны дашборды и графики, это серьезный аргумент в пользу Beancount.
Интерфейсы hledger
hledger использует мультиинтерфейсный подход:
- CLI: Широкие возможности отчетности в командной строке с десятками встроенных команд (
balance,register,incomestatement,cashflowи др.) - hledger-ui: Терминальный интерфейс для интерактивного просмотра счетов и транзакций
- hledger-web: Более простой веб-интерфейс для базового просмотра и ввода данных
CLI-интерфейс hledger мощнее «из коробки», чем у Beancount. Если вы предпочитаете работать в терминале и вам нужны быстрые отчеты с поддержкой скриптов, hledger обеспечит это.
Производительность
hledger написан на Haskell и обрабатывает примерно 25 000 транзакций в секунду. Для большинства пользователей личных финансов оба инструмента работают практически мгновенно. Но если вы управляете огромным набором данных — транзакциями за много лет по нескольким организациям — высокая скорость hledger дает ему преимущество.
Beancount (v3) был переписан на C++ (основной парсер), что значительно повысило производительность по сравнению с оригинальной реализацией на Python. При обычном использовании в личных целях или для малого бизнеса вы не заметите разницы.