beancount-boilerplate-cn

本项目是为如下人士准备的 (AND)

  • 生活、工作在**
  • 熟练使用 *nix 环境下终端操作
  • 文本记账感兴趣
  • 看过了最基础的 beancount 介绍但是没有看完所有文档(太多了)
  • 想马上试试用 beancount 记账

安装

  1. Python 3.6.5 如果你已经安装了 pyenv-virtualenv, 那需要一个基于 Python 3.6.5 的虚拟环境,否则请自行准备 Python 3.6.5 运行环境:
pyenv virtualenv 3.6.5 beancount-env
  1. 安装依赖的库
pip install -r requirements.txt

这份模板中的假定使用者是这样的:

  • 有如下银行的储蓄卡
    • 招商银行 (工资卡)
    • 招商银行香港分行
  • 有如下银行的全币种信用卡
    • 浦发银行 (日常消费主力卡, 外币交易自动购汇人民币还款)
    • 工商银行 (境外消费为主,外币交易不自动购汇,需要自行购汇还外币)
  • 有如下投资(机)账户
    • 富途证券港美股账户
    • 东方财富证券A股账户
    • 蚂蚁财富(支付宝)基金账户
    • 天天基金账户

如何初始化/已有帐本迁移过来

可见 ledger/init.beancount 文件中初始化的过程

Commodity 命名

每一个投资标的就是一个commodity, 比如现金 CNY, USD, 股票 SPY, AAPL ...

  • 各国外汇按标准名称来:
    • CNY, USD, CNH, ...
  • 美股代号按交易所代码来
    • AAPL, GOOGL
  • 港股代号以 HK_ 开头按 4 位数字命名
    • HK_2800, HK_0700
  • A股(含场内基金)代号以 CN_ 开头按 6 位数字命名
    • CN_000001, CN_510300, ...
  • 场外基金(货币基金除外)以 CN_F 开头按 6 位数字命名
    • CN_F110011
  • 货币基金直接用 CNY 表示,收益需要手工更新(原因是货币基金无净值的概念)。
    • CNY

你可能想批量替换的关键字

  • 帐本名称 YourLedger
  • 所在城市 YourCity
  • 供职单位 YourEmployer
  • XXX
  • TODO

文件布局

  • importers/ : 通过 bean-extract 自动导入帐单所需的自定义脚本
  • raw-data/ : csv 等格式的原始帐单存放目录
  • sources/ : 自定义的股票、基金行情脚本(默认只支持从雅虎财经中获取)
  • ledger/ : 所有的 beancount 文件都在这里面
    • main.beancount : 主入口
    • account.beancount : 所有的账户定义在这里
    • commodity.beancount : 如果你不需要自动获取行情价格,你甚至都不需要这个文件
    • prices.beancount : 这个文件由 bean-price 命令管理,一般不需要手动修改
    • init.beancount : 初始化帐本用
    • salary.beancount : 工资收入
    • invest.beancount : 现金之外的投资(机)相关记录(买卖、申赎)
    • daily/ : 日常流水
      • daily/2019 : 按年分目录
      • daily/2019/2019-07-03-spdbccc.beancount : 主力消费卡记录(自动生成+人工修改)
      • daily/2019/2019-07-03-other.beancount : 非主力下记录
      • daily/2019/2019-07-03-settle.beancount : 定期结算检查点

支出如何分类

  • 参照随手记App的支出分类法, 分为2级, 见 ledger/account.beancount 中账户的定义。

如何处理五险一金

  • 公司缴纳的公积金作为收入计算
  • 公司缴纳的各种险不入帐
  • 个人缴纳的各种税和险作为支出计算
  • 个人缴纳的公积金当作转帐计算
  • 详见 salary.beancount

如何处理股票、基金

  • 因为交易频率不高,因此数据都是手工输入
  • 可参见 invest.beancount 中的定义

如何获取外汇、股票、基金行情

  • ledger/commodity.beancount 中定义了某一个 commodity 从哪里获取行情
  • 自定义行情脚本定义在 sources/ , 目前支持从雪球获取A/港/美股股票行情,从天天基金获取基金行情
  • 货币基金当现金处理

如何获取标的的最新价格

make prices
# 或
./scripts/update-prices.py | sh

这个命令会自动拉取最后一条 price 记录的时间到昨天为止的各个持仓标的的价格。建议隔三差五就跑一次。

如何自动生成帐单

基于2019年5月的帐单(csv格式)生成 beancount 文件

bean-extract importers/spdccc_importer.py raw-data/spdbcc/2019-05-spdbcc.csv > ledger/daily/2019/2019-06-03-spdbcc.beancount

如何加密帐单信息

当前仓库默认没有加密,如果你想加密的话,推荐使用 git-crypt, 它比 git-secret 使用起来更加方便。

如何查看当前和历史持仓

./scripts/generate-portfolio.py -d 2019-12-31  # 查看某一日的持仓
./scripts/generate-portfolio.py  # 查看当前持仓

输出的csv格式持仓可以导入表格软件进一步分析,或者使用 tabview 直接在终端浏览。例子:

一级类别 二级类别 标的 代号 持仓量 市场价格 报价日期 市场价值 货币 人民币价值 占比
现金 本币 人民币 CNY 59287.860 1.0000 59288 CNY 59287.86 11.21%
现金 外汇 美元 USD 19460.700 1.0000 19461 USD 135671.47 25.66%
现金 外汇 港元 HKD 134112.000 1.0000 134112 HKD 120190.88 22.73%
现金 外汇 离岸人民币 CNH 1000.000 1.0000 1000 CNH 999.20 0.19%
债权 债券基金 华泰柏瑞丰盛纯债债券A CN_F000187 6000.000 1.2452 2020-01-03 7471 CNY 7471.20 1.41%
债权 可转换债券 光电转债 CN_128047 100.000 129.0270 2019-10-15 12903 CNY 12902.70 2.44%
股权 指数基金 SPDR S&P 500 ETF SPY 15.000 322.4100 2020-01-03 4836 USD 33715.52 6.38%
股权 指数基金 华泰沪深300ETF CN_510300 100.000 4.1390 2020-01-03 414 CNY 413.90 0.08%
股权 偏股混合基金 易方达中小盘混合 CN_F110011 10000.000 4.8767 2020-01-03 48767 CNY 48767.00 9.22%
股权 A股 平安银行 CN_000001 100.000 17.1800 2020-01-03 1718 CNY 1718.00 0.32%
股权 港股 腾讯控股 HK_0700 50.000 383.0000 2020-01-03 19150 HKD 17162.19 3.25%
股权 港股 盈富基金 HK_2800 100.000 28.6500 2020-01-03 2865 HKD 2567.61 0.49%
股权 美股 Apple Inc. AAPL 10.000 297.4300 2020-01-03 2974 USD 20735.52 3.92%
另类 加密货币 USDT USDT 776.340 1.0000 776 USDT 5395.56 1.02%
另类 加密货币 比特币 BTC 1.175 7347.3105 2020-01-03 8630 USD 60163.07 11.38%
另类 加密货币 以太坊 ETH 1.000 223.8500 2019-07-16 224 USDT 1555.76 0.29%

如何查看投资净值

./scripts/generate-networth-report.py  # 查看年初至今的净值
./scripts/generate-networth-report.py -s 2019-12-01  # 查看某一日至今的净值

输出的csv格式持仓可以导入表格软件进一步分析,或者使用 tabview 直接在终端浏览。例子:

日期 净资产 可投资金额 非投资收入 非投资支出 投资盈亏 投资盈亏% 累计净值
2019-12-01 558683.01 530720.21 0.00 0.00 n/a n/a 1.0000
2019-12-02 555816.02 527853.22 0.00 0.00 -2866.99 -0.5402% 0.9946
2019-12-03 555928.07 527965.27 0.00 0.00 112.06 0.0212% 0.9948
2019-12-04 555602.69 527639.89 0.00 0.00 -325.39 -0.0616% 0.9942
2019-12-05 557048.62 529085.82 0.00 0.00 1445.93 0.2740% 0.9969
2019-12-06 558680.80 530718.00 0.00 0.00 1632.19 0.3085% 1.0000
2019-12-07 558680.80 530718.00 0.00 0.00 0.00 0.0000% 1.0000
2019-12-08 558680.80 530718.00 0.00 0.00 0.00 0.0000% 1.0000
2019-12-09 557364.53 529401.73 0.00 0.00 -1316.28 -0.2480% 0.9975
2019-12-10 556739.43 528776.63 0.00 0.00 -625.09 -0.1181% 0.9963
2019-12-11 556968.64 529005.84 0.00 0.00 229.20 0.0433% 0.9968
2019-12-12 557763.23 529800.43 0.00 0.00 794.59 0.1502% 0.9983
2019-12-13 556530.85 528568.05 0.00 0.00 -1232.38 -0.2326% 0.9959
2019-12-14 556530.85 528568.05 0.00 0.00 0.00 0.0000% 0.9959
2019-12-15 556530.85 528568.05 0.00 0.00 0.00 0.0000% 0.9959
2019-12-16 556086.12 528123.32 0.00 0.00 -444.73 -0.0841% 0.9951
2019-12-17 554781.51 526818.71 0.00 0.00 -1304.61 -0.2470% 0.9926
2019-12-18 559370.10 531407.30 0.00 0.00 4588.59 0.8710% 1.0013
2019-12-19 559178.38 531215.58 0.00 0.00 -191.72 -0.0361% 1.0009
2019-12-20 559220.18 531257.38 0.00 0.00 41.80 0.0079% 1.0010
2019-12-21 559220.18 531257.38 0.00 0.00 0.00 0.0000% 1.0010
2019-12-22 559220.18 531257.38 0.00 0.00 0.00 0.0000% 1.0010
2019-12-23 560793.60 532830.80 0.00 0.00 1573.41 0.2962% 1.0040
2019-12-24 560475.70 532512.90 0.00 0.00 -317.90 -0.0597% 1.0034
2019-12-25 559819.02 531856.22 0.00 0.00 -656.68 -0.1233% 1.0021
2019-12-26 560728.48 532765.68 0.00 0.00 909.46 0.1710% 1.0039
2019-12-27 560766.65 532803.85 0.00 0.00 38.17 0.0072% 1.0039
2019-12-28 560766.65 532803.85 0.00 0.00 0.00 0.0000% 1.0039
2019-12-29 560766.65 532803.85 0.00 0.00 0.00 0.0000% 1.0039
2019-12-30 560927.13 532964.33 0.00 0.00 160.49 0.0301% 1.0042
2019-12-31 559138.53 531175.73 0.00 0.00 -1788.60 -0.3356% 1.0009
2020-01-01 559138.53 531175.73 0.00 0.00 0.00 0.0000% 1.0009
2020-01-02 558641.52 530678.72 0.00 0.00 -497.01 -0.0936% 0.9999
2020-01-03 560789.32 532826.52 0.00 0.00 2147.79 0.4047% 1.0040
2020-01-04 560789.32 532826.52 0.00 0.00 0.00 0.0000% 1.0040