使用 Beancount 管理 ESPP

cyang812 Lv6

在过去的几年时间里,我一直在使用 Beancount 来记账,我之前也有写过一篇博客来介绍 Beancount 的基础用法。今天,打算写一篇稍微进阶的文章,来纪录使用 Beancount 管理 ESPP 的买卖。

ESPP 介绍

ESPP (Epmloyee stock purchase plan) 是指员工在购买本公司的股票时,可以以一定的折扣入手。例如,员工可以用工资的百分之十五参与该计划,以市场价九折的折扣购入公司的股票。但这样的福利也是有一定的条件的。例如,参与计划的金额要低于工资的多少百分比且总金额不能大于多少;购入股票的周期一般为一个季度或者半年;交易的价格如何确定每家公司也不一样,有取交易日的市场价的,也有取计划周期内最小值的。当员工考虑加入该计划时,这些都是很关键的因素,毕竟 ESPP 的交易本质和普通股票的交易类似,也都是存在亏损的可能的。下面是 step by step 的说明。

Beancount demo

    1. 建立商品,定义了一个 MSFT 的计数单元表示股票
      1
      2
      3
      2000-01-01 commodity MSFT
      name: "Common shares of Microsoft."
      quote: USD
    1. 创建账户
1
2
3
4
5
6
2000-01-01 open Assets:Stock:Cash             CNY   ;用于存放购买 ESPP 的现金账户
2000-01-01 open Assets:Stock:ESPP MSFT ;股票账户,单位 MSFT 表示股数
2000-01-01 open Assets:Stock:USD USD ;股票售出账户
2000-01-01 open Assets:Bank:CBC CNY ;股票售出账户

2000-01-01 open Income:PnL:ESPP USD ;ESPP股票收益
    1. 每月定存 ESPP 的资金
      假设每月工资到账 10000 元,其中 9000 元存入银行,1000 元用于购买股票,暂时存放在股票现金账户,此时还没交易
1
2
3
4
2000-01-31 * "工资到账"
Income:Salary -10000.00 CNY
Assets:Stock:Cash 1000.00 CNY
Assets:Bank:CBC 9000.00 CNY
    1. 季度末开始购买股票
      假设每月定存了 1000 元,季度末一共 3000 元,按照 10:1 兑换成 USD 后以 10 USD 每股的价格购入了 30 股。
1
2
3
2000-03-31 * "Q1 购买股票"
Assets:Stock:Cash -3000.00 CNY @@ 300 USD
Assets:Stock:MSFT 30 MSFT { 10 USD }
    1. 卖出股票
      假设以 20 USD 每股的价格出售了 5 股,扣去成本 10 USD 每股,收益为 50 USD。
1
2
3
4
2000-04-01 * "出售股票"
Assets:Stock:MSFT -5 MSFT { 10 USD } @ 20 USD
Assets:Stock:USD 100 USD
Income:PnL:ESPP - 50 USD
    1. 美元转换到账
      100 USD 以 10:1 兑换成 CNY 的表述。
      1
      2
      3
      2000-04-02 * "美元转换"
      Assets:Stock:USD -100 USD @@ 1000 CNY
      Assets:Bank:CBC

其他

{ } 在 beancount 中表示 cost 价格,表示持有价格(held at cose),而 @ 表示 price 单价,@@ 表示总价。但购入股票是,{} 等于 @,cost 等于 price。但随着市场变化,price 有可能会高于 cost,此时售出收益为正;price 也有可能会低于 cost,此时售出收益为负。

在上述的示例中,有货币转换,-3000.00 CNY @@ 300 USD 表示 CNY 到 USD, -100 USD @@ 1000 CNY 表示 USD 到 CNY;也有 cost 的用法,例如 30 MSFT { 10 USD } 表示 30 份以 10 元每份持有的股票,-5 MSFT { 10 USD } @ 20 USD,表示以 20 元每份的价格出售持有成本为 10 元每份的股票。

参考资料

使用 Beancount 记录证券投资
复式借贷记账法 Beancount (5) - ESPP

  • 标题: 使用 Beancount 管理 ESPP
  • 作者: cyang812
  • 创建于 : 2023-06-19 21:30:23
  • 更新于 : 2023-06-19 21:30:23
  • 链接: https://blog.cyang.tech/2023/06/19/使用 Beancount 管理 ESPP/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论
目录
使用 Beancount 管理 ESPP