本项目是为如下人士准备的 (AND)
- 生活、工作在中国
- 熟练使用 *nix 环境下终端操作
- 对文本记账感兴趣
- 看过了最基础的 beancount 介绍但是没有看完所有文档(太多了)
- 想马上试试用 beancount 记账
- Python 3.6.5 如果你已经安装了 pyenv-virtualenv, 那需要一个基于 Python 3.6.5 的虚拟环境,否则请自行准备 Python 3.6.5 运行环境:
pyenv virtualenv 3.6.5 beancount-env
- 安装依赖的库
pip install -r requirements.txt
- 有如下银行的储蓄卡
- 招商银行 (工资卡)
- 招商银行香港分行
- 有如下银行的全币种信用卡
- 浦发银行 (日常消费主力卡, 外币交易自动购汇人民币还款)
- 工商银行 (境外消费为主,外币交易不自动购汇,需要自行购汇还外币)
- 有如下投资(机)账户
- 富途证券港美股账户
- 东方财富证券A股账户
- 蚂蚁财富(支付宝)基金账户
- 天天基金账户
可见 ledger/init.beancount
文件中初始化的过程
每一个投资标的就是一个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 |