最近1年实践了利用Beancount来替代之前的MoneyWiz进行记账和收支分析,就一些经验做相关的分享。
常规的不做赘述了,只记录一些投资和汇率相关的。
换汇相关
主要有两种记录语法,提供汇率和让Beancount计算汇率。
通过”@”符号提供汇率来平衡交易
|
通过”@@”符号提供总花费,让Beancount自动计算
|
投资相关
定义投资标的
|
更新价格
|
买入某个证券, 理解为由现金转化为了一份证券资产,同时被券商收了一笔手续费。
|
卖出证券资产
单比买入后卖出
|
多笔不同价位买入后多次卖出
这里分两种情况
一次清仓卖出
省略资产的购买价格,Beancount会自动计算持仓成本后卖出。
|
有时候遇到多笔金额一样的买入记录,使用这种方式可能会报错,这时候可以手动指定卖出的成本,参考下面。
减仓部分卖出
需要自己进行分割, 假设之前份3次次购买了BABA
- 84.00USD买了100股
- 82.20USD买了300股
- 88.20USD买了500股
100USD价位一次卖出400股,需要拆分成两笔
- 100卖出84买的100股
- 100卖出82.2买的300股
当然你也可以卖出88.2买的400股,如果你的券商有先进先出或者其他规则,可以灵活调整。
|
Beancount 的 Booking 模式
Beancount模式是严格Booking模式,也就是当交易有不明确的匹配时,会发出错误。
除此之外还有两种模式提供给Beancount让其自行处理。
FIFO 和 LIFO Booking 模式
“FIFO(先进先出)”模式自动选择最早买入的批次,直至达到所要求的减量寸头。
“LIFO(后进先出)”模式则相反,它先选择最晚买入的批次,直至达到所要求的减量寸头。
通过下面的参数可以设置采用的Booking模式
|
然后在分批卖出时就不需要分开设置,beancount会自动判断了。
港股通
港股通记录的时候就比较麻烦了,用人民币购买港股资产,最后在券商呈现的是RMB资产。
目前没找到很好的处理方式,我的办法是把他视为HKD资产进行记录的。
|
用 @@
将人民币转化为等值的港币
工具和插件
根据账单生成复式记账语言的代码:deb-sigdouble-entry-generator
一个比较全面的启动项目:mckelvinbeancount-boilerplate-cn
其中包含了投资净值的自动化更新,作为启动项目非常合适,我本人也是在该项目上改造的。
自动开启account,减少了手动open的操作。
plugin "beancount.plugins.auto_accounts"
Fava Dashboards dashboards Custom Dashboards for Beancount in Fava
dashboards 中默认的桑吉图无法正确绘制亏损,我基于此进行了优化,可供参考:
https://gist.github.com/Leon2xiaowu/2c05e77ce66f1c7e9a77c5f87c92f2fafava-portfolio-returns 可视化投资组合收益