beancount 加密货币记账实践
beancount 记录数字货币有很大的优势,天然支持多币种,且有完善的投资记账支持(cost/price/lots)。然而 beancount 设计之初没有考虑到加密货币,因此某些场景极不方便。下面列举常见的加密货币场景以及我使用 beancount 记账的实践,可能谈不上最佳,读者若有好的记账办法也不吝赐教。
稳定币 #
将 USDT 设置为本币,其他所有稳定币都当作以 USDT 计价的货币。在稳定币之间的兑换可以这样记录(其实就是当作价格为1.00 USDT的加密货币),因为价格差导致的损失/收益统一记录在 Expenses 账户中。
2025-01-01 * "" ""
Assets:Crypto:CEX:Binance:USDT -1000.00 USDT
Expenses:Crypto:Spot:USDC
Assets:Crypto:CEX:Binance:USDC 999.99 USDC {1.00 USDT}
转账 #
精确但繁琐 #
最精确的是写清楚每一笔 lots 的成本,但是比较繁琐(可以借助脚本来自动填充)。
2025-01-01 * "" ""
Assets:Crypto:CEX:Binance:USDC -999.99 USDC {1.00 USDT}
Expenses:Crypto:Transfer
Assets:Crypto:Wallet:XXXX:USDC 999.99 UDSC {1.00 USDT}
洗成本 #
每次转账当成一次卖出,优点是简单,账户中不会出发繁多的不同 cost 的 lots,缺点是会使未实现收益转变为实现收益,同时成本发生变化。
2025-01-01 * "" ""
Assets:Crypto:CEX:Binance:USDC -999.99 USDC {} @ 1.00 USDT
Expenses:Crypto:Transfer
Assets:Crypto:Wallet:XXXX:USDC 999.99 UDSC {1.00 USDT}
新建无成本的虚拟资产 #
这个是我早期的做法,方便,但是无法追踪投资收益变化,且会增加记账复杂度,这里介绍但不推荐了。例如对于 BTC 转账,如果只是短期行为,可以记录为 BTC_PH 转账
...