Обзор сообщества: Реальные настройки Beancount
Реальные настройки Beancount
Введение
Beancount — это универсальная plain-text система бухгалтерского учета, и ее пользователи адаптировали ее для самых разных реальных потребностей. В этом обзоре сообщества мы представляем анонимизированные примеры того, как разные люди структурируют и используют свои бухгалтерские процессы Beancount — от фрилансеров и владельцев малого бизнеса до энтузиастов личных финансов. Эти примеры демонстрируют творческие методы, такие как пометка транзакций метаданными, автоматизация обновлений книги учета с помощью пользовательских скриптов, обработка нескольких валют, бюджетирование и прогнозирование, а также расширение Beancount с помощью плагинов или интеграций (таких как веб-интерфейс Fava). Цель состоит в том, чтобы вдохновить и проинформировать бухгалтеров, разработчиков и пользователей, разбирающихся в финансах, о возможностях гибкой системы Beancount.
Пример интерфейса Fava: Многие пользователи Beancount полагаются на Fava — веб-панель управления с открытым исходным кодом — для визуализации своих финансов. Fava может превратить книгу учета Beancount в интерактивные отчеты и графики. Например, на скриншоте выше показана древовидная карта Отчета о прибылях и убытках, разбивающая доходы и расходы по категориям, дающая быстрый обзор того, откуда поступают деньги и куда они уходят. Пользователи могут фильтровать это представление по времени, счету или тегам, чтобы углубиться в конкретные проекты или периоды. Такие визуализации помогают сделать plain-text данные более доступными, позволяя пользователям сразу замечать тенденции и аномалии.
Каждая настройка Beancount уникальна, но есть общие темы. Ниже мы рассмотрим три сценария — фрилансера, владельца малого бизнеса и опытного пользователя личных финансов — чтобы увидеть, как они организуют свои счета и используют функции Beancount. Все личные данные были удалены или обобщены, основное внимание уделяется только методам и конфигурациям.
Фрилансер: Теги проектов и отслеживание счетов
Наш первый пример — консультант-фрилансер, который использует Beancount в качестве основы для финансов своего бизнеса. Книга учета этого фрилансера организована для отслеживания доходов и расходов по каждому проекту, а также для управления счетами для нескольких клиентов. Они настроили выделенные счета для дебиторской задолженности (A/R) в разделе «Активы» для каждого клиента, что помогает разделить, кто кому что должен. Когда они завершают проект и выставляют счет клиенту, они записывают транзакцию, дебетуя счет A/R клиента и кредитуя счет доходов. Например, новый счет может быть записан как:
2025-08-01 * "Проект X завершен" ^INV-0001
Assets:AccountsReceivable:ClientA 5,000 USD
Income:Consulting -5,000 USD
Здесь обозначение ^INV-0001 является ссылкой (встроенная функция метаданных Beancount), используемой для пометки этой транзакции номером счета. Когда клиент оплачивает часть или весь этот счет, транзакция оплаты включает ту же ссылку ^INV-0001, которая связывает эти две записи вместе. Эта связь позволяет легко распределять платежи по конкретным счетам и видеть непогашенные остатки. Как объяснил один из членов сообщества, вы можете использовать такие теги или ссылки для отметки частичных платежей — например, платеж в размере 20 долларов США против счета в 30 долларов США — как в записи счета, так и в записи платежа. Запросив книгу учета по этой ссылке счета, фрилансер может мгновенно увидеть, какая часть счета была оплачена и что осталось открытым.
В дополнение к ссылкам фрилансер активно использует теги для категоризации. Теги в Beancount — это метки с префиксом #, которые могут отмечать транзакции для последующей фильтрации. Этот пользователь помечает каждый расход, который выставляется клиенту, кодом проекта, например #ProjectX, и помечает возмещаемые расходы #Reimbursable. Например, если они покупают авиабилеты для проекта клиента, запись расходов может включать #ProjectX #Reimbursable. Эта практика позволяет создавать отчеты по проекту или клиенту, фильтруя по тегам. После проекта фрилансер может выполнить запрос, чтобы перечислить все расходы #Reimbursable для этого проекта и убедиться, что они выставили счет клиенту за каждый из них. Один из пользователей Beancount отметил, что пометка расходов на рабочи е поездки помогла выявить любые, которые не были возмещены — в идеале, расходы на рабочую поездку должны быть равны 0 долларов США, когда будут получены все возмещения от клиента. Это подчеркивает, как теги в сочетании с возможностями запросов Beancount обеспечивают дополнительный уровень контроля для фрилансеров, управляющих оплачиваемыми расходами.
Для управления статусом непогашенных платежей наш фрилансер использует специальное соглашение для незавершенной дебиторской задолженности. Они применяют тег #UNRESOLVED к любой транзакции счета, которая еще не была полностью оплачена. Beancount (и Fava) не применяют этот тег принудительно, но это общепринятый шаблон для обозначения транзакций, ожидающих расчета. Например, пока Клиент A не оплатит все 5000 долларов США, запись счета выше будет включать #UNRESOLVED. Фильтруя по этому тегу, фрилансер может в любое время перечислить все открытые счета. После получения и применения платежа (введена соответствующая транзакция A/R) они удаляют или игнорируют тег #UNRESOLVED, и счет дебиторской задолженности для этого клиента будет сбалансирован до нуля. Эта система гарантирует, что ни один счет не будет «провален». По сути, это отчет о старении, выполненный в plain text — если A/R остается ненулевым и помеченным как неразрешенный, ему необходимо уделить внимание.
Поскольку фрилансеры часто имеют дело с несколькими способами оплаты, а иногда и с несколькими валютами, настройка Beancount легко это учитывает. В нашем примере консультант может выставлять счета некоторым клиентам в долларах США, а другим — в евро. Обработка нескольких валют проста в Beancount: любой счет может содержать несколько товаров (валюты рассматриваются как товары). Фрилансер может либо вести отдельные субсчета для каждой валюты (например, Assets:AccountsReceivable:ClientA:EUR vs ...:USD), либо просто размещать транзакции в соответствующей валюте на одном и том же счете. Beancount будет автоматически отслеживать остатки по каждой валюте. Один пользователь подчеркнул, как приятно, что «Beancount может отслеживать количество в любой валюте, будь то доллары США или тикер», и все это в одной книге учета. Наш фрилансер использует это преимущество, записывая обменные курсы с помощью директив price вся кий раз, когда им необходимо конвертировать валюты для отчетности. Они могут создать отчет о доходах, конвертированный в их домашнюю валюту, после того, как ввели периодические обменные курсы или рыночные цены.
Наконец, этот фрилансер интегрирует свою книгу учета Beancount с практическими инструментами для оптимизации своего рабочего процесса. Например, они прикрепляют PDF-копии каждого счета к книге учета, используя метаданные документа. Типичная запись оплаты счета может выглядеть так:
2025-08-30 * "ClientA" "Оплата по INV-0001" ^INV-0001
Assets:Bank:Checking 5,000 USD
Assets:AccountsReceivable:ClientA -5,000 USD
document: "Invoices/ClientA/INV-0001.pdf"
Директива или метаданные document Beancount позволяют связывать файлы с записями, и Fava покажет гиперссылку для этих вложений. Это означает, что фрилансер (или их бухгалтер) может щелкнуть непосредственно из отчета книги учета, чтобы просмотреть исходный PDF-файл счета, обеспечивая легкий доступ к резервной документации. Фрилансер также использует отчеты Fava для мониторинга своего бизнеса: фильтруя отчет о прибылях и убытках или баланс по клиенту, она может видеть прибыльность по каждому клиенту и проверять, оплачены ли все проекты. В заключение, система Beancount этого фрилансера демонстрирует активное использование тегов и ссылок для управления бухгалтерским учетом на основе проектов. Она превращает plain text книгу учета в надежный инструмент бухгалтерского учета для фрилансера, с четкой видимостью расходов по проекту, доходов в нескольких валютах и статусов счетов.
Ключевые практики в настройке фрилансера: Использование тегов для группировки транзакций по проекту или цели, связывание счетов и платежей с уникальными идентификаторами, пометка непогашенной дебиторской задолженности тегом #UNRESOLVED, прикрепление документов счетов к записям книги учета для справки и использование поддержки нескольких валют Beancount для выставления счетов международным клиентам без хлопот. Все это достигается с помощью plain text записей и нескольких вспомогательных инструментов, демонстрирующих мощь метаданных в Beancount.
Малый бизнес: Автоматизация и мультивалютный учет
Далее мы рассмотрим владельца малого бизнеса — в частности, основателя стартапа — который принял Beancount для ведения бухгалтерского учета компании. Малые предприятия имеют потребности, аналогичные фрилансерам (счета, расходы, несколько валют), но часто в большем масштабе и с большим упором на автоматизацию, последовательность и сотрудничество. В этом случае основатель был технически подкован и построил высокоавтоматизированный рабочий процесс Beancount, чтобы минимизировать ручной бухгалтерский учет. После оценки традиционного бухгалтерского программного обеспечения, такого как QuickBooks, они выбрали plain-text подход Beancount, чтобы сохранить полный контроль над данными. В течение нескольких лет они итеративно разрабатывали пользовательские инструменты для достижения 95% автоматизированного процесса бухгалтерского учета.
Автоматизированный импорт и выверка: Одной из первых задач был импорт транзакций из различных источников (банковские счета, кредитные карты, платежные системы) в книгу учета. Вместо того, чтобы вводить каждую транзакцию, этот пользователь настроил скрипты импорта для получения и преобразования данных в формат Beancount. Они написали пользовательские импортеры Python для формата CSV или API каждого финансового учреждения, так что одной командой они могут извлекать новые транзакции и добавлять их в книгу учета. Например, используя фреймворк bean-extract Beancount, основатель может запустить скрипт, который сканирует папку загрузок на наличие новых выписок и выводит их в виде записей Beancount. Другой пользователь, Rhyd Lewis, описал аналогичную настройку, в которой у него есть отдельные скрипты импортера для каждого банка, и он может вызывать их с помощью простой команды (с использованием Justfile) для обновления своей книги учета. Наш владелец малого бизнеса делает то же самое — все банковские транзакции, операции по кредитным картам и даже транзакции PayPal или Stripe автоматически извлекаются и добавляются в книги, классифицируются по соответствующим счетам.
Чтобы обеспечить целостность данных, даже когда эти записи добавляются автоматически, они также используют инструменты и плагины проверки Beancount. Например, плагин beancount.plugins.noduplicates включен для предотвращения случайного повторного импорта одной и той же транзакции дважды, а beancount.plugins.nounused помечает любые счета, которые не имеют записей (полезно для очистки устаревших счетов). Основатель также использует форматировщик (например, bean-format или инструмент сообщества beancount-black), чтобы сохранить последовательный стиль файла книги учета. Это важно, потому что при большом количестве автоматических изменений наличие единого стиля упрощает сравнение и аудит. Фактически, основатель хранит книгу учета в репозитории Git, рассматривая обновления книги учета как изменения кода. Каждая новая партия импортированных транзакций становится коммитом Git, и они могут просматривать изменения, чтобы увидеть, что изменилось. На одном скриншоте они показывают историю Git, где транзакция по кредитной карте для «Costco» переходит из состояния ожидания в очищенное состояние в книге учета, и все это без ручного вмешательства. Система контроля версий обеспечивает контрольный журнал: они могут точно видеть, когда транзакция была добавлена или изменена, и даже отменить изменения, если что-то было импортировано неправильно. Это отличный пример привнесения лучших практик разработки программного обеспечения (таких как система контроля версий) в бухгалтерские записи.
Мультивалютные и международные транзакции: Малые предприятия часто совершают транзакции в нескольких валютах — например, стартап может иметь расходы в долларах США, но также получать платежи в евро или иметь банковский счет в фунтах стерлингов. Наша показательная компания использует мультивалютные функции Beancount для объединения всего этого в одной книге учета. Они открыли отдельные счета для каждой валюты (например, Assets:Bank:Checking:USD и Assets:Bank:Checking:EUR), что является одним из распространенных подходов. Однако, даже если разные валюты имеют общий счет, Beancount будет отслеживать баланс каждой валюты отдельно и требовать, чтобы транзакции балансировали по каждой валюте. Основатель часто запускает отчеты об оценке, чтобы увидеть общие балансы компании, конвертированные в базовую валюту. Поскольку Beancount поддерживает поиск цен, он настроил ежедневные каналы цен для валютных курсов (и цен на акции для любых инвестиций) с помощью инструмента bean-price или плагина. В результате в любое время он может создать баланс, скажем, в долларах США, который включает счет в евро, переведенный по последнему курсу. Члены сообщества отмечают, что обработка нескольких валют в бухгалтерском учете в стиле книги учета проста — вы просто добавляете транзакции в данной валюте и записываете обменные курсы по мере необходимости. Например, один пользователь поделился примером конвертации долларов США в евро в канадские доллары через промежуточные счета в качестве способа управления конвертацией валюты в Beancount. В нашем случае малый бизнес не обязательно конвертирует валюты в транзакциях (они хранят их в родной валюте), но использует отчеты для консолидации. Эта гибкость имеет решающее значение по мере того, как стартап расширяется по всему миру.
Пользовательские скрипты и расширения: Не все, что нужно было основателю, было доступно из коробки, поэтому они расширили Beancount с помощью пользовательских плагинов. Со временем они написали библиотеку синтаксического анализатора, инструмент форматирования и механизм импорта транзакций на основе правил, выпустив многие из них в виде пакетов с открытым исходным кодом. Например, они создали механизм импорта на основе правил, который использует конфигурацию YAML для автоматической классификации транзакций. Фрагмент этой конфигурации показывает, как конкретные получатели или описания (например, «Comcast» или «PG&E») сопоставляются с определенными счетами расходов и повествованиями, так что, когда они появляются в банковской ленте, создается правильная запись Beancount без ручного редактирования. По сути, это пользовательская автоматизация для применения правил бухгалтерского учета (для коммунальных услуг, подписок и т. д.) на лету. Другой плагин гарантирует, что книга учета всегда остается сбалансированной и отформатированной. Все эти инструменты запускаются как часть рабочего процесса основателя всякий раз, когда вводятся новые данные. В результате получается книга учета, которая «обновляется сама» с минимальным вмешательством, что, по словам основателя, приносит ему «чистую радость» как разработчику, одержимому автоматизацией.
Безопасность и доступность также вызывали беспокойство. Основатель хотел, чтобы его финансовая команда (и даже его супруга, выступающая в качестве наблюдателя) могли легко просматривать книги. Для этого он настроил частное развертывание Fava в облаке. Каждый раз, когда он отправляет новый коммит книги учета в частный репозиторий Git, конвейер CI (с использованием GitHub Actions и AWS Elastic Beanstalk) развертывает обновленный экземпляр Fava. Веб-интерфейс защищен паролем (с использованием прокси-сервера Nginx с базовой аутентификацией), поэтому его могут видеть только уполномоченные лица. Таким образом, последние финансовые отчеты всегда доступны через панель управления браузера без необходимости устанавливать что-либо локально. На схеме архитектуры ниже показана эта настройка: файл Beancount и необходимая конфигурация объединены в образ Docker вместе с Fava и обслуживаются на AWS, а Cloudflare выступает в качестве прокси-сервера для обеспечения безопасности.
Автоматизация Beancount в облаке: На этой диаграмме показан конвейер развертывания для книги учета Beancount + Fava. Пользователь обновляет файл книги учета локально и отправляет в Git; контейнер Docker (включая Fava и Nginx для аутентификации) создается и развертывается на сервере AWS Beanstalk, а Cloudflare действует как прокси-сервер. Результатом является безопасный веб-портал, где данные о финансах малого бизнеса могут быть доступны из любого места (владельцем или командой) в режиме реального времени. Эта расширенная настройка демонстрирует, как малый бизнес может интегрировать Beancount с современными облачными инструментами для достижения удобства, не отказываясь от владения данными.
В повседневном использовании владелец малого бизнеса сосредотачивается на обработке исключений, а не на вводе данных. Каждый месяц он кратко просматривает автоматически импортированные транзакции (с помощью Git diffs или журнала Fava), чтобы выявить любые некатегоризированные или неправильные записи. Он также использует утверждения баланса Beancount для выверки счетов. Например, после ввода всех транзакций за июнь он может добавить проверку баланса, чтобы подтвердить, что конечный баланс банковского счета соответствует выписке; если нет, Beancount выдаст ошибку, указывающую на то, что что-то отсутствует или введено неправильно. Это гарантирует, что книги остаются точными.
Ключевые практики в настройке малого бизнеса: Интенсивная автоматизация с помощью пользовательских импортеров и скриптов (делающая книгу учета «на 95% автоматической»), использование системы контроля версий для контрольных журналов и сотрудничества, мультивалютный учет с каналами цен для оценки и развертывание Fava для легкого, общедоступного доступа к финансовым отчетам. Сценарий малого бизнеса показывает, как далеко можно зайти с Beancount, приложив инженерные усилия, — превратив бухгалтерский учет в в значительной степени автоматизированный конвейер, сохраняя при этом прозрачность и гибкость. Даже если человек не является программистом, многих из этих преимуществ можно достичь, используя плагины сообщества (для форматирования, обнаружения дубликатов и т. д.) и приняв plain-text рабочий процесс, который поощряет частые проверки и резервные копии.
Энтузиаст личных финансов: бюджетирование и пользовательский анализ
Наш последний пример — энтузиаст личных финансов — человек, использующий Beancount для управления домашними финансами и инвестициями с высокой степенью детализации. Этот пользователь относится к своим личным финансам со строгостью бухгалтера и любопытством аналитика данных. В результате получается книга учета Beancount, которая не только отслеживает каждую копейку, но и служит основой для бюджетирования, прогнозирования и аналитических экспериментов.
Организация личной книги учета: Многие люди начинают с одного файла Beancount для всех своих счетов, и этот энтузиаст не исключение. Они ведут одну главную книгу учета (например, main.beancount), которая включает в себя все счета (банковские счета, кредитные карты, кредиты, инвестиционные портфели и т. д.) и транзакции. Со временем они ввели некоторую структуру, разделив разделы — например, у них есть файл для открытия/закрытия счетов и отдельные файлы для годовых транзакций, — которые включены в основной файл. Эта модульная организация упрощает навигацию по годам данных (можно архивировать старые годы в отдельные файлы), оставаясь при этом логически единой книгой учета. Другой личный пользователь на форуме сообщества описал аналогичный макет: основной файл, который включает в себя другие по категориям (например, Income.beancount, Expenses.beancount, Investments.beancount). Наш энтузиаст пока держит все просто: один файл, синхронизированный между устройствами.
Говоря о синхронизации, поскольку это личные финансы, этот пользователь хочет фиксировать транзакции, где бы они ни находились. Они используют мобильное приложение под названием Beancount Mobile, чтобы быстро добавлять записи на ходу (например, регистрировать расходы наличными прямо в магазине). Файл книги учета передается через облачную синхронизац ию (в данном случае Syncthing), так что их телефон, ноутбук и VPS (сервер) имеют последнюю копию. На компьютере они предпочитают использовать Emacs с beancount-mode для удобного редактирования с подсветкой синтаксиса. Эта настройка гарантирует, что независимо от того, находятся ли они за своим столом или в пути, они могут немедленно записывать транзакции и избегать забывания чего-либо. Это отличный пример адаптации технических инструментов для личного удобства — эффективное создание самостоятельно размещенной альтернативы коммерческим приложениям для бюджетирования.
Теги и метаданные для детального отслеживания: Этот пользователь использует теги, чтобы добавить второе измерение к своим данным, помимо плана счетов. Для обычных категорий бюджетирования достаточно счетов (у них есть такие счета, как Expenses:Groceries, Expenses:Rent и т. д.), но для сквозных тем, таких как события или цели, они используют теги. Например, они помечают все транзакции, связанные с их проектом ремонта дома, тегом #HomeReno, будь то покупка пиломатериалов в хозяйственном магазине (расходы) или получение скидки от производителя (доходы). Таким образом, они могут легко создать отчет об общей стоимости проекта, не разделяя эти расходы по разным счетам. Один из пользователей Reddit продемонстрировал этот подход, пометив расходы, такие как #garage-improvement или #lighting-improvement для домашних проектов, что упрощает фильтрацию и суммирование их с помощью запросов Beancount. Наш энтузиаст делает то же самое для отпусков (#ItalyTrip2025), крупных покупок и разовых мероприятий.
Метаданные (пары «ключ-значение» в транзакциях) также используются для некоторых конкретных целей. Например, они добавляют метаданные location: ... к крупным расходам, чтобы отслеживать, где они потратили деньги, или note: ... для дополнительного контекста, помимо получателя и повествования. В нескольких случаях они даже создали пользовательские поля метаданных, чтобы помочь с прогнозированием. Одним из примеров является добавление budget: X и frequency: monthly к определенным повторяющимся расходам — идея, вдохновленная обсуждением в списке рассылки Beancount, где пользователь хранил прогнозы бюджета в метаданных для каждого расхода. Эти поля метаданных не влияют на ядро Beancount, но энтузиаст написал небольшой скрипт Python, который считывает их и сравнивает фактические расходы с прогнозируемым бюджетом. Это альтернатива использованию встроенных бюджетов Fava (описанных ниже), показывающая, как метаданные можно адаптировать к воле пользователя. Как отметил создатель Beancount, метаданные «существуют только для вас [чтобы использовать их в пользовательских скриптах] — Beancount анализирует их, но игнорирует их» сами по себе. Короче говоря, этот пользователь не боится расширять книгу учета дополнительной информацией, чтобы помочь своему личному анализу.
Бюджетирование с помощью Beancount: Одной из основных целей этого пользователя является соблюдение месячного бюджета. Ранее они использовали приложение для бюджетирования (YNAB) и хотели воспроизвести некоторые из его концепций бюджетирования конвертов. Существует несколько способов бюджетирования в Beancount, но проще всего использовать бюджетные директивы Fava. Наш энтузиаст добавляет записи budget в книгу учета следующим образом:
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 USD
Каждая строка устанавливает бюджет для счета (категории) за период. Затем Fava отображает полосы «бюджет против фактического» в веб-интерфейсе, позволяя пользователю видеть, например, что они потратили 480 долларов США на продукты в этом месяце из 500 запланированных, и, возможно, 220 на обеды вне дома (сверх бюджета). Энтузиаст регулярно проверяет отчеты о прибылях и убытках и о расходах Fava, которые показывают как ежемесячные итоги, так и целевые показатели бюджета. Fava удобно объединяет ежедневные/еженедельные бюджеты в соответствующие временные рамки. Используя пользовательский интерфейс Fava для этого, пользователю не нужна отдельная электронная таблица для бюджетирования; все интегрировано. (Они также экспериментировали с более автоматизированной системой «конвертов», перемещая средства на фиктивные счета в начале каждого месяца, как предлагалось на форумах, но сочли пользовательские бюджетные директивы более простыми в обслуживании.)
Для прогнозирования, помимо бюджетов, они следят за предстоящими счетами. Некоторые члены сообщества создали плагины для создания будущих транзакций для подписок или графиков амортизации кредитов, но этот пользователь выбрал более простой подход: они ведут отдельный раздел книги учета с транзакциями, датированными будущим, для известных элементов (например, арендная плата за следующий месяц или предстоящий годовой страховой платеж). Они остаются в книге учета, но не влияют на сегодняшние остатки, и, как только наступает дата и транзакция становится текущей, она служит напоминанием (и они корректируют сумму, если это необходимо, чтобы соответствовать фактической плате). Это немного грубо, но это работает для прогнозирования денежного потока без сложных инструментов.
Отслеживание инвестиций и мультивалютный учет товаров: Как энтузиаст финансов, этот пользователь также использует Beancount для объединения инвестиционных счетов — акций, взаимных фондов и криптовалюты — наряду со счетами наличных денег. У них есть брокерские счета, чьи активы (например, акции AAPL, GOOG и т. д.) записываются в Beancount как товары. Например, покупка 10 акций Apple будет записью, которая кредитует денежные средства брокера и дебетует счет активов с 10 AAPL в качестве суммы товара. Способность Beancount обрабатывать любой товар здесь очень полезна; можно свободно смешивать валюты и акции. «Beancount может отслеживать количество в любой валюте, будь то доллары США или тикер», как отметил один пользователь, что было большим улучшением по сравнению с приложениями для личных финансов, которые часто плохо поддерживают позиции по акциям. Наш энтузиаст использует инструмент bean-price в ночном задании cron для получения последних рыночных цен на все свои ценные бумаги и иностранные валюты. Каждую ночь в 4 часа утра запускается скрипт bean-price, который извлекает цены (с Yahoo Finance или другого источни ка) и добавляет записи о ценах в книгу учета за этот день. Таким образом, в следующий раз, когда они откроют Fava или запустят отчет, они смогут увидеть актуальные значения портфеля и даже результаты инвестиций с течением времени. Вся чистая стоимость, по банковским счетам, пенсионным фондам и криптокошелькам, доступна в одном унифицированном представлении. Это мечта для инвестора, управляемого данными: нет необходимости входить на несколько платформ, чтобы увидеть всю картину. По сути, они построили личную финансовую панель управления на базе Beancount.
Анализ и интеграция: Что действительно отличает этого опытного пользователя личных финансов, так это то, как они анализируют данные после того, как они оказываются в Beancount. Поскольку все транзакции находятся в базе данных SQLite (Beancount может запрашивать данные с помощью своего встроенного языка запросов, который похож на SQL), пользователь может выполнять пользовательский анализ. Они написали скрипты Python, чтобы ответить на такие вопросы, как «Каково 3-месячное скользящее среднее моих расходов на продукты?» или «Как расходы на коммунальные услуги в этом году соотносятся с прошлым годом?» Один скрипт запрашивает книгу учета по определенным тегам и выводит результаты в Pandas dataframe для дальнейшего анализа чисел. Поскольку книга учета является plain text, они также использовали блокноты Jupyter для экспериментов с различными визуализациями (помимо того, что предлагает Fava). Например, они создали пользовательскую гистограмму месячной нормы сбережений, используя Matplotlib, агрегируя данные Beancount в Python. Этот вид специального анализа возможен только потому, что Beancount сохраняет данные доступными и машиночитаемыми. Как выразился один пользователь, извлечение данных тривиально — «У меня есть один скрипт Python, который извлекает данные из Beancount с помощью языка запросов, а затем я использую pandas dataframe для подготовки данных в отчет». У нашего энтузиаста есть репозиторий небольших скриптов, подобных этому, которые они запускают для своего ежегодного финансового обзора.
Конечно, не все требует кодирования — большую часть времени они полагаются на встроенные графики Fava. Fava предоставляет график чистой стоимости, тенденцию доходов против расходов и даже древовидную диаграмму (как показано ранее), которые доступны всего одним щелчком мыши. Пользователь ценит, что вся история их финансов с 2018 года доступна для запросов и аудита. Например, если им интересно, «сколько я потратил на ремонт автомобиля за последние 5 лет», они могут написать быстрый запрос или отфильтровать в Fava, чтобы получить ответ, вместо того чтобы копаться в квитанциях. Это расширение прав и возможностей — это именно то, что привлекло их в Beancount: полное владение данными и безграничная гибкость в анализе. В качестве бонуса plain text книга учета защищена от будущего — ее можно контролировать по версиям, переносить или даже анализировать с помощью других инструментов, если это необходимо. В отличие от приложения с закрытым исходным кодом, нет риска потерять доступ к своей финансовой истории.
Ключевые практики в личной настройке: Использование мобильных и настольных инструментов для удобного ввода данных, использование тегов и пользовательских метаданных для отслеживания жизненных событий и межгрупповых группировок, реализация бюджетов с помощью директив budget Fava для текущих целевых показателей расходов, отслеживание инвестиций и нескольких валют в одной книге учета (с автоматическими обновлениями цен) и выполнение пользовательского анализа путем непосредственного запроса данных книги учета. Этот случай показывает, что при небольшой настройке даже энтузиасты личных финансов могут достичь уровня понимания и контроля, обычно предназначенного для бизнеса, и все это, сохраняя вещи интересными и привлекательными для технически подкованного пользователя.
Заключение
Во всех этих примерах сообщества четкой темой является то, что гибкость Beancount позволяет создать высоко персонализированную систему бухгалтерского учета. Опытные пользователи в сообществе использовали простые текстовые файлы для создания решений, которые по своим возможностям не уступают коммерческому программному обеспечению, но при этом адаптированы к их рабочим процессам. Фрилансеры легко помечают и связывают записи для управления клиентскими проектами и счетами. Владельцы малого бизнеса из