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

Шаг 1: Включение плагина прогнозирования
Сначала вам нужно включить плагин, добавив следующую строку в начало вашего файла реестра Beancount:
plugin "fava.plugins.forecast"Шаг 2: Создание прогнозируемой транзакции
Чтобы спрогнозировать повторяющуюся транзакцию, создайте одну запись транзакции, используя флаг # (вместо * или !) и добавьте специальный тег прогноза в описание.
Базовая структура выглядит так:
ГГГГ-ММ-ДД # "Описание [ЧАСТОТА УСЛОВИЯ]"
Счет:Один 100.00 USD
Счет:Два -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 ГГГГ-ММ-ДД, чтобы остановить прогноз на определенную дату.
-
Пример: Абонемент в спортзал, который заканчивается в этом году.
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После добавления этих записей ваши отчеты, такие как Отчет о прибылях и убытках и диаграмма Чистой прибыли, будут автоматически включать прогнозируемые данные, предоставляя вам четкое представление о вашем финансовом будущем.
Устранение неполадок и лучшие практики
-
Прогнозы не отображаются?
- Убедитесь, что
plugin "fava.plugins.forecast"присутствует в вашем файле реестра. - Используйте флаг
#для транзакции, а не*. - Проверьте опечатки в теге частоты (например,
[MONTHLY], а не[Monthly]или[MONTLY]).
- Убедитесь, что
-
Лучшие практики
- Будьте описательны: Используйте понятные описания, чтобы вы знали, для чего предназначен каждый прогноз.
- Регулярно пересматривайте: Обновляйте свои прогнозы (например, при повышении зарплаты или изменении арендной платы), чтобы они оставались точными.
- Используйте конечные условия: Для транзакций, которые не являются постоянными (например, кредиты или подписки), используйте
UNTILилиREPEAT, чтобы предотвратить их бесконечное прогнозирование.