跳到主要内容

在 Beancount 中进行预算管理

本指南介绍了如何使用 Beancount 的 custom 指令和 Fava Web 界面设置、管理和可视化每个账户的预算。

1. 如何设置预算

预算通过 Beancount 文件中的 custom "budget" 指令定义。 语法很简单:

YYYY-MM-DD custom "budget" AccountName "interval" Amount CURRENCY
  • AccountName: 您要预算的特定支出或收入账户。
  • interval: 预算周期。 必须是 dailyweeklymonthlyquarterlyyearly 之一。
  • Amount: 该期间的目标金额。

工作原理:

  • 预算指令从其日期开始生效,直到同一帐户的另一个预算指令覆盖它为止。
  • Beancount 和 Fava 将所有预算分解为每日等价值,从而可以计算任何给定日期范围内的总预算金额。

示例:

; 设置每日咖啡预算
2024-01-01 custom "budget" Expenses:Food:Coffee "daily" 5.00 USD

; 设置每月食品杂货预算
2024-01-01 custom "budget" Expenses:Food:Groceries "monthly" 600.00 USD

; 设置年度度假预算
2024-01-01 custom "budget" Expenses:Travel:Vacation "yearly" 3000.00 USD

要调整预算,只需添加一个日期较新的新指令。 例如,要从 3 月份开始增加食品杂货预算:

2024-03-01 custom "budget" Expenses:Food:Groceries    "monthly"  650.00 USD

2. 在 Fava 中可视化预算

Fava 是 Beancount 的 Web 界面,会自动检测并在几个关键报告中显示您的预算,从而可以将您的实际支出与目标进行比较:

  • 利润表: “净利润”和“费用”图表将显示预算值与实际值。
  • 变更(每月): 显示每个月的预算金额。
  • 余额(每月): 显示一段时间内的累计预算金额。

3. 高级预算技术

预算结转 默认的预算系统在每个周期都会重置。 要实现“结转”功能,将未使用的资金结转到下个周期,请使用专用资产帐户来持有预算资金。

  1. 在周期开始时为预算账户提供资金:

    2024-02-01 * "资助每月娱乐预算"
    Assets:Checking -200.00 USD
    Assets:Budget:Entertainment 200.00 USD
  2. 直接从此预算帐户支出:

    2024-02-15 * "电影之夜"
    Expenses:Entertainment:Movies 30.00 USD
    Assets:Budget:Entertainment -30.00 USD

    Assets:Budget:Entertainment 中的剩余余额是您的结转金额。

追踪收入目标 您还可以通过使用预算金额来设置收入账户的目标。 这使 Fava 可以根据您的目标跟踪您的收入。

; 设置每月收入目标
2024-01-01 custom "budget" Income:Salary "monthly" -5000.00 USD
2024-01-01 custom "budget" Income:Freelance "monthly" -1000.00 USD

4. 故障排除

如果您的预算未显示在 Fava 中,请检查以下内容:

  1. 日期格式: 确保日期格式为 YYYY-MM-DD
  2. 账户名称: 指令中的账户名称必须与交易中的账户名称完全匹配。
  3. 间隔拼写: 间隔必须是五个有效选项之一,并且是小写(例如,"monthly")。
  4. 重启 Fava: 如果您最近添加了指令,则可能需要重启 Fava 服务器才能获取更改。