Crypto

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 转账

...