本指南将介绍如何使用 Beancount 的 custom 指令和 Fava 网页界面 来设置、管理和可视化按账户的预算。
如何设置预算
预算通过在 Beancount 文件中使用 custom "budget" 指令来定义。语法如下:
YYYY-MM-DD custom "budget" 账户名称 "间隔" 金额 货币账户名称:要为其设置预算的特定支出或收入账户。间隔:预算周期。必须为daily(每日)、weekly(每周)、monthly(每月)、quarterly(每季度)或yearly(每年)之一。金额:该周期内的目标金额。
工作原理:
示例:
; 设置咖啡的每日预算
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要调整预算,只需添加一条日期更晚的新指令。例如,从三月份开始增加食品杂货预算:
2024-03-01 custom "budget" Expenses:Food:Groceries "monthly" 650.00 USD在 Fava 中可视化预算
Fava 是 Beancount 的网页界面,它会自动检测并在多个关键报告中显示你的预算,让你能够将实际支出与目标进行比较:
- 损益表:净利润和支出图表将显示预算值与实际值。
- 变动(月度):显示每个月的预算金额。
- 余额(月度):显示随时间累积的预算金额。
高级预算技巧
预算结转
默认的预算系统在每个周期结束后重置。要实施资金未使用部分可结转的 "rollover" 机制,请使用一个专门的资产账户来持有预算资金。
-
在周期开始时向预算账户注资:
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故障排除
如果你的预算未在 Fava 中显示,请检查以下项目:
- 日期格式:确保日期采用
YYYY-MM-DD格式。 - 账户名称:指令中的账户名称必须与交易中的账户名称完全一致。
- 间隔拼写:间隔必须是五个有效选项之一,且为小写字母(例如
"monthly")。 - 重启 Fava:如果你最近添加了指令,可能需要重启 Fava 服务器才能加载更改。
