在 Beancount 中进行预算管理
本指南介绍了如何使用 Beancount 的 custom 指令和 Fava Web 界面设置、管理和可视化每个账户的预算。
1. 如何设置预算
预算通过 Beancount 文件中的 custom "budget" 指令定义。 语法很简单:
YYYY-MM-DD custom "budget" AccountName "interval" Amount CURRENCY
AccountName: 您要预算的特定支出或收入账户。interval: 预算周期。 必须是daily、weekly、monthly、quarterly或yearly之一。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. 高级预算技术
预算结转 默认的预算系统在每个周期都会重置。 要实现“结转”功能,将未使用的资金结转到下个周期,请使用专用资产帐户来持有预算资金。
-
在周期开始时为预算账户提供资金:
2024-02-01 * "资助每月娱乐预算"
Assets:Checking -200.00 USD
Assets:Budget:Entertainment 200.00 USD -
直接从此预算帐户支出:
2024-02-15 * "电影之夜"
Expenses:Entertainment:Movies 30.00 USD
Assets:Budget:Entertainment -30.00 USDAssets: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 中,请检查以下内容:
- 日期格式: 确保日期格式为
YYYY-MM-DD。 - 账户名称: 指令中的账户名称必须与交易中的账户名称完全匹配。
- 间隔拼写: 间隔必须是五个有效选项之一,并且是小写(例如,
"monthly")。 - 重启 Fava: 如果您最近添加了指令,则可能需要重启 Fava 服务器才能获取更改。