跳到主要内容

在 Beancount 中预测未来交易

Beancount 可以使用 fava.plugins.forecast 插件来预测未来定期交易。这使您可以可视化定期收入和支出(例如工资、租金和订阅)对财务报告的未来影响。

Forecast plugin screenshot

步骤 1:启用 Forecast 插件

首先,您需要通过将以下行添加到 Beancount 账本文件的顶部来启用该插件:

plugin "fava.plugins.forecast"

步骤 2:创建预测交易

要预测定期交易,请使用 # 标志(而不是 *!)创建一个单独的交易条目,并向说明添加一个特殊的 forecast 标签。

基本结构如下所示:

YYYY-MM-DD # "说明 [FREQUENCY CONDITIONS]"
Account:One 100.00 USD
Account:Two -100.00 USD

forecast 插件将使用此条目作为模板,在您的报告中生成未来的交易。

了解 Forecast 语法

说明中的 forecast 标签遵循特定格式:[FREQUENCY CONDITIONS]

频率 (Frequency)

FREQUENCY 部分是强制性的,用于定义交易发生的频率。它必须全部大写。

  • DAILY (每日)
  • WEEKLY (每周)
  • MONTHLY (每月)
  • QUARTERLY (每季度)
  • YEARLY (每年)

示例:每月租金支付 此交易将被预测为从 2024 年 1 月 1 日开始,每月 1 日发生。

2024-01-01 # "租金支付 [MONTHLY]"
Expenses:Housing:Rent 2500.00 USD
Assets:Checking -2500.00 USD

条件 (可选)

您可以添加可选的 CONDITIONS 来控制预测的持续时间和模式。

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

添加这些条目后,您的报告(例如利润表净利润图表)将自动包含预测的数据,从而使您可以清楚地了解自己的财务未来。

故障排除和最佳实践

  • 预测未显示?

    • 确保 plugin "fava.plugins.forecast" 在您的账本文件中。
    • 对交易使用 # 标志,而不是 *
    • 检查频率标签中的拼写错误(例如,[MONTHLY] 而不是 [Monthly][MONTLY])。
  • 最佳实践

    • 描述性强: 使用清晰的说明,以便您知道每个预测的用途。
    • 定期审核: 更新您的预测(例如,工资增加或租金变化),以保持它们的准确性。
    • 使用结束条件: 对于非永久性交易(如贷款或订阅),使用 UNTILREPEAT 来防止它们无限期地预测。
References: