Прогнозирование будущих транзакций в Beancount
Beancount может прогнозировать будущие повторяющиеся транзакции с помощью плагина fava.plugins.forecast. Это позволяет визуализировать будущее влияние регулярных доходов и расходов, таких как зарплата, аренда и подписки, на ваши финансовые отчеты.

Шаг 1: Включите плагин прогнозирования
Сначала вам нужно включить плагин, добавив следующую строку в начало вашего ledger-файла Beancount:
plugin "fava.plugins.forecast"
Шаг 2: Создайте прогнозируемую транзакцию
Чтобы спрогнозировать повторяющуюся транзакцию, создайте одну запись транзакции, используя флаг # (вместо * или !) и добавьте специальный тег прогноза в описание.
Основная структура выглядит так:
YYYY-MM-DD # "Описание [ЧАСТОТА УСЛОВИЯ]"
Account:One 100.00 USD
Account:Two -100.00 USD
Плагин прогнозирования будет использовать эту запись в качестве шаблона для генерации будущих транзакций в ваших отчетах.
Понимание синтаксиса прогнозирования
Тег прогноза в описании имеет определенный формат: [ЧАСТОТА УСЛОВИЯ].
Частота
Часть ЧАСТОТА является обязательной и определяет, как часто повторяется транзакция. Она должна быть написана заглавными буквами.
DAILY(Ежедневно)WEEKLY(Еженедельно)MONTHLY(Ежемесячно)QUARTERLY(Ежеквартально)YEARLY(Ежегодно)
Пример: Ежемесячная арендная плата Эта транзакция будет прогнозироваться на 1-е число каждого месяца, начиная с января 2024 года.
2024-01-01 # "Арендная плата [MONTHLY]"
Expenses:Housing:Rent 2500.00 USD
Assets:Checking -2500.00 USD
Условия (Необязательно)
Вы можете добавить необязательные УСЛОВИЯ для управления пр одолжительностью и закономерностью прогноза.
1. Установите дату окончания с помощью UNTIL
Используйте UNTIL YYYY-MM-DD, чтобы остановить прогноз в определенную дату.
-
Пример: Абонемент в спортзал, который заканчивается в этом году.
2024-01-15 # "Абонемент в спортзал [MONTHLY UNTIL 2024-12-31]"
Expenses:Health:Gym 80.00 USD
Assets:Checking -80.00 USD
2. Ограничьте количество повторений с помощью REPEAT
Используйте REPEAT n TIMES, чтобы сгенерировать транзакцию определенное количество раз.
-
Пример: Автокредит с 36 оставшимися платежами.
2024-01-25 # "Платеж по автокредиту [MONTHLY REPEAT 36 TIMES]"
Expenses:Transportation:CarPayment 450.00 USD
Liabilities:Auto-Loan -450.00 USD
3. Создавайте нерегулярные шаблоны с помощью SKIP
Используйте SKIP n TIME/TIMES, чтобы пропустить интервалы. Это полезно для таких вещей, как зарплата раз в две недели.
-
Пример: Зарплата раз в две недели (происходит каждые две недели).
2024-01-05 # "Зарплата раз в две недели [WEEKLY SKIP 1 TIME]"
Assets:Checking 3000.00 USD
Income:Salary -3000.00 USD
Практический пример: Ежемесячный бюджет
Вы можете объединить несколько прогнозов, чтобы спрогнозировать весь свой бюджет, включая различные потоки доходов и расходов.
plugin "fava.plugins.forecast"
; === ДОХОДЫ ===
2024-01-05 # "Зарплата раз в две недели [WEEKLY SKIP 1 TIME]"
Assets:Checking 3000.00 USD
Income:Salary -3000.00 USD
; === РАСХОДЫ ===
2024-01-01 # "Аренда [MONTHLY]"
Expenses:Housing:Rent 2500.00 USD
Assets:Checking -2500.00 USD
2024-01-01 # "Продукты [WEEKLY]"
Expenses:Food:Groceries 150.00 USD
Assets:Checking -150.00 USD
2024-01-15 # "Страхование автомобиля [QUARTERLY REPEAT 4 TIMES]"
Expenses:Insurance:Auto 450.00 USD
Assets:Checking -450.00 USD
После добавления этих записей ваши отчеты, такие как Отчет о прибылях и убытках и график Чистая прибыль, автоматически будут включать прогнозируемые данные, предоставляя вам четкое представление о вашем финансовом будущем.
Поиск и устранение неисправностей и рекомендации
-
Прогнозы не отображаются?
- Убедитесь, что в вашем ledger-файле есть строка
plugin "fava.plugins.forecast". - Используйте флаг
#для транзакции, а не*. - Проверьте наличие опечаток в теге частоты (например,
[MONTHLY], а не[Monthly]или[MONTLY]).
- Убедитесь, что в вашем ledger-файле есть строка
-
Рекомендации
- Будьте описательными: Используйте четкие описания, чтобы знать, для чего предназначен каждый прогноз.
- Регулярно проверяйте: Обновляйте свои прогнозы (например, при повышении зарплаты или изменении арендной платы), чтобы поддерживать их точность.
- Используйте условия окончания: Для транзакций, которые не являются постоянными (например, кредиты или подписки), используйте
UNTILилиREPEAT, чтобы они не прогнозировались бесконечно.