最近1年实践了利用Beancount来替代之前的MoneyWiz进行记账和收支分析,就一些经验做相关的分享。
常规的不做赘述了,只记录一些投资和汇率相关的。
换汇相关
主要有两种记录语法,提供汇率和让Beancount计算汇率。
通过”@”符号提供汇率来平衡交易
2024-08-10 * "Transfer to account in Canada" Assets:MyBank:Checking -400.00 USD @ 1.09 CAD Assets:FR:SocGen:Checking 436.01 CAD
|
通过”@@”符号提供总花费,让Beancount自动计算
2024-08-10 * "Transfer to account in Canada" Assets:MyBank:Checking -400.00 USD @@ 436.01 CAD Assets:FR:SocGen:Checking 436.01 CAD
|
投资相关
定义投资标的
2024-08-13 commodity US_BABA name: "阿里巴巴"
|
更新价格
2024-08-14 price US_BABA 100 USD
|
买入某个证券, 理解为由现金转化为了一份证券资产,同时被券商收了一笔手续费。
2024-08-13 * "BABA建仓" "" Assets:US:长桥证券:BABA 23200 US_BABA { 83.340 USD } Expenses:Invest:券商佣金:长桥证券 10.00 USD Assets:US:长桥证券:现金
|
卖出证券资产
单比买入后卖出
2024-08-14 * "BABA清仓" "" Assets:US:长桥证券:BABA -23200 US_BABA { 83.340 USD } @ { 100.00 USD } Expenses:Invest:券商佣金:长桥证券 10.00 USD Assets:US:长桥证券:现金 2319990.00 USD ; 23200*100-10(数量*卖出金额-手续费) Income:US:长桥证券 ; -386512 实际收益,可省略让Beancount自己计算
|
多笔不同价位买入后多次卖出
这里分两种情况
一次清仓卖出
省略资产的购买价格,Beancount会自动计算持仓成本后卖出。
2024-08-14 * "BABA清仓" "" Assets:US:长桥证券:BABA -23200 US_BABA { } @ { 100.00 USD } Expenses:Invest:券商佣金:长桥证券 10.00 USD Assets:US:长桥证券:现金 2319990.00 USD ; 23200*100-10(数量*卖出金额-手续费) Income:US:长桥证券 ; -386512 实际收益,可省略让Beancount自己计算
|
有时候遇到多笔金额一样的买入记录,使用这种方式可能会报错,这时候可以手动指定卖出的成本,参考下面。
减仓部分卖出
需要自己进行分割, 假设之前份3次次购买了BABA
- 84.00USD买了100股
- 82.20USD买了300股
- 88.20USD买了500股
100USD价位一次卖出400股,需要拆分成两笔
- 100卖出84买的100股
- 100卖出82.2买的300股
当然你也可以卖出88.2买的400股,如果你的券商有先进先出或者其他规则,可以灵活调整。
2024-08-14 * "BABA减仓" "" Assets:US:长桥证券:BABA -100 US_BABA { 84.00 USD } @ { 100.00 USD } Assets:US:长桥证券:BABA -300 US_BABA { 82.20 USD } @ { 100.00 USD } Expenses:Invest:券商佣金:长桥证券 10.00 USD Assets:US:长桥证券:现金 39990.00 USD ; Income:US:长桥证券 ; 实际收益,省略让Beancount自己计算
|
Beancount 的 Booking 模式
Beancount模式是严格Booking模式,也就是当交易有不明确的匹配时,会发出错误。
除此之外还有两种模式提供给Beancount让其自行处理。
FIFO 和 LIFO Booking 模式
“FIFO(先进先出)”模式自动选择最早买入的批次,直至达到所要求的减量寸头。
“LIFO(后进先出)”模式则相反,它先选择最晚买入的批次,直至达到所要求的减量寸头。
通过下面的参数可以设置采用的Booking模式
option "booking_method" "FIFO"
|
然后在分批卖出时就不需要分开设置,beancount会自动判断了。
港股通
港股通记录的时候就比较麻烦了,用人民币购买港股资产,最后在券商呈现的是RMB资产。
目前没找到很好的处理方式,我的办法是把他视为HKD资产进行记录的。
用 @@
将人民币转化为等值的港币
港股通买入
2024-12-20 * "阿里巴巴-W建仓" "港股通" Assets:CN:Invest:XX证券:阿里巴巴-W 400 HK_09988 { 80.606 HKD } Assets:CN:Invest:XX证券:现金 -30306.32 CNY @@ 32242.4 HKD Assets:CN:Invest:XX证券:现金 32242.4 HKD ; 汇率转化为港币 Assets:CN:Invest:XX证券:现金 ; 自动计算港币支出,等同于 -32242.4 HKD
|
港股通卖出
2024-12-20 * "阿里巴巴-W建仓" "港股通" Assets:CN:Invest:XX证券:阿里巴巴-W -400 HK_09988 { 80.606 HKD } @ 100.00 HKD Assets:CN:Invest:XX证券:现金 -32242.4 HKD @@ 30306.32 CNY ; 将成本HKD转为人民币 Assets:CN:Invest:XX证券:现金 30306.32 CNY ; 入账一笔人民币 Assets:CN:Invest:XX证券:现金 ; 留白让自动补充收益部分呢 Expenses:Invest:券商佣金 1.00 CNY ; 券商佣金等手续费 Assets:CN:Invest:XX证券:现金 -1.00 CNY ; 券商佣金等手续费 Income:CN:Invest:收益 -xxxx.00 CNY ; 明确你的港股通人民币收益
|
工具和插件