我经常能在 V2EX 上看到咨询日常记账软件或者推广资产管理软件的帖子, 但是在我看来通过常见的记账软件手工记账的方式, 对日常心智负担比较大, 一方面是容易漏记, 另一方面是无法同时实现对资产的管理.
我在年前开始有记账的想法, 先后用过诸多国产的记账软件, 以及 GnuCash, Beancount, 最后我遇到了我现在在用的 hledger, 已经记录了半年了, 平均一个月有 300+的交易记录:
Transactions span : 2020-11-30 to 2021-08-01 (244 days) Last transaction : 2021-07-31 (0 days ago) Transactions : 1353 (5.5 per day) Transactions last 30 days: 332 (11.1 per day) Transactions last 7 days : 84 (12.0 per day) Payees/descriptions : 452 Accounts : 92 (depth 5) Commodities : 2 (CNY, USD) Market prices : 2 (USD)
我的使用体验是这样的:
目前我写的账单导入配置支持零钱通, 余额宝, 招商银行(信用卡 /储蓄卡), 广发银行信用卡, 光大银行信用卡, 民生银行信用卡. 新配置写起来也很容易.
我的整个端到端流程为: 访问银行网站下载账单 - 通过脚本导入 hledger -上传到 GitHub - 通过 GitHub Actions 生成 SQLite 文件 - 传到我 VM 里的 Superset 上进行分析.
整个流程全部为开源软件, 并且除了 hledger 以外都可以替换, 比如 SQLite 换成 MySQL 备份, 或者 Superset 换 QuickBI 等.
感觉目前 V2EX 甚至整个简中互联网上这块的内容还是相对较少, 所以发个贴问问要是感兴趣的人多可以做一个系列的教程放在 zhzy0077/hledger-accounting 里.
![]() | 1 mitong3269 2021-07-31 17:42:49 +08:00 via iPhone 感兴趣 |
![]() | 2 howencilx 2021-07-31 19:38:18 +08:00 感兴趣,能导入各类账单确实很好,期待 |
3 Rendex 2021-07-31 20:21:08 +08:00 感兴趣 |
![]() | 4 peacelove 2021-07-31 20:28:47 +08:00 via iPhone ![]() ?这一到三楼是水军么? |
![]() | 5 IgniteWhite 2021-07-31 20:30:09 +08:00 via iPhone 感兴趣 如果能把这个流程和 Org-mode 结合会不会更强大 |
![]() | 7 yunyuyuan 2021-07-31 21:11:59 +08:00 我一直用一个本子,正面写日记,反面记账。因为怕自己不会写字了 |
![]() | 8 woctordho 2021-07-31 21:16:02 +08:00 via Android 感兴趣 |
9 callmemax 2021-07-31 21:26:56 +08:00 很实用的工具,star 了 |
10 zhzy0077 OP @mitong3269 @howencilx @Rendex @IgniteWhite @woctordho @callmemax 在正文提到的 repo 里写了个姑且算是教程, 有空可以看下, 哪里写的不好请提 issue |
![]() | 11 luchong 2021-07-31 23:14:25 +08:00 我也有这方面的需求,起初我是想通过爬虫爬取各平台的数据来实现,但现在这些银行,金融平台做的安全系数都很高,爬虫不好搞,即使实现了,给其他人使用,也是存在安全隐患的。后来又想通过下载账单 excel 进行解析实现,但需要人工去下载这些 excel 也是麻烦,然后想使用微软的 PAD 去自动化处理,像支付宝,浦发银行这样的大概可以实现,但像微信这种只能在手机下载的就不好搞了,头疼极了,现在部分记账软件都是通过截取账单图片进行 OCR 识别,始终不满足需求,我想要真正解放双手,真正实现自动化,每天晚上或者每周自动处理更新 |
12 zhzy0077 OP @luchong 爬银行我是从来没想过, 感觉甚至有违法的风险, 现在我是手动下载账单 csv, 剩下的都是自动化了. |
![]() | 13 IgniteWhite 2021-07-31 23:24:25 +08:00 via iPhone |
14 zhzy0077 OP @IgniteWhite GnuCash 也 有类似的, 但全都是国外的银行, 国外甚至有一些标准的交易数据协议. 但是对于国内的用户而言其实价值不大 |
![]() | 15 IgniteWhite 2021-08-01 00:23:28 +08:00 @zhzy0077 原来如此,学习了 |
![]() | 16 zyxyz123 2021-08-01 01:50:32 +08:00 分类是怎么解决的 靠各个平台自己分析的类别么 |
17 AX5N 2021-08-01 02:08:28 +08:00 ![]() 其实还是只有爬虫才是真解决方案,只是没办法分发,如果银行以及支付平台愿意开放 api 就好了。 |
![]() | 18 huangmingyou 2021-08-01 15:36:01 +08:00 beancount 坚持了半年,但是每天有基金定投,然后每天基金有盈亏。每周做一次平衡。实在太繁琐,然后放弃。 |
19 zhzy0077 OP @zyxyz123 看这个文件 https://github.com/zhzy0077/hledger-accounting/blob/main/rules/payee.rules 绝大多数是正则匹配分类的 |
![]() | 20 woctordho 2021-08-01 17:27:01 +08:00 感谢楼主,大想看更多也可以去这个网站 https://plaintextaccounting.org/ |
![]() | 21 ryh 2021-08-01 18:56:17 +08:00 @AX5N 国内银行只能对他们呵呵了,就 app 的 Face ID 登录都要用第三方服务商的,真的是 low 到爆,他们的开发能力真的有限 |
![]() | 22 SimonOne 2021-08-02 10:40:02 +08:00 ![]() @huangmingyou #18 基金记份额,不要记钱,写个脚本每天自动获取每份的 price 。 |
23 zhzy0077 OP @SimonOne 我之前也这么做 后来发现不好算盈利 因为买入卖出的份额是一样多的 最后还要在卖的时候去找买入价 做减法 我现在就只记买了多少钱 在卖光之后多的都是收益 |
25 zhzy0077 OP @SimonOne 这个确实也是我一直没搞懂的一个点 顺便请教下 我在基金净值为 100 的时候买进 1 份: 银行卡 -100 基金 +1 份 @ 100 在 120 的时候卖出这一份: 银行卡 +120 基金 -1 份 @ 120 理财收益 -20 这个不是不平了吗 |
26 BlackCat02 2021-08-02 19:58:13 +08:00 我自己用记账软件最大的痛点是: 1. 识别重复记账:我的微信和支付宝都绑定常用的招行信用卡,日常消费从微信端,支付宝端(余额宝,花呗,信用卡),直接信用卡消费三种方式都有,在微信和支付宝支付时,如果走的是信用卡,那么该条消费记录会在支付宝和银行卡账单里出现两次。目前自动导入的账单应用,都没法轻易把这两条记录合并成一条。 2. 分期账单 |
27 zhzy0077 OP @BlackCat02 重复账单我体验下来做的最好的是 GnuCash 会根据金额日期备注算一个相似度 然后提醒重复记录。 但是在我的实践里其实这个比较少见,因为导入账单应该是从事实上付款的账户里进行,在你这个场景下应该是:零钱通,余额宝,花呗,信用卡。而不是微信或者支付宝的交易记录。 2 分期其实是个 应付账款 的交易,按照复式记账的逻辑来看其实没有和别的交易不同的地方。 |
28 BlackCat02 2021-08-02 20:30:16 +08:00 @zhzy0077 我再尝试一下哈哈 |
29 BlackCat02 2021-08-02 20:31:39 +08:00 @zhzy0077 之前不知道余额宝,花呗的账单还可以分别导出的 |
![]() | 30 ghostsf 2021-08-03 10:00:15 +08:00 从银行网站下载账单这一步能自动化吗 |
![]() | 31 Spoter 2021-08-03 10:03:24 +08:00 记账,我的感受是控制末端不如控制终端,所有的消费、支出都走某张卡是最方便的了。 比如我现在所有的消费都是走招商银行,它的记账功能也还行,能用 |
![]() | 32 shyrock 2021-08-03 10:57:09 +08:00 @IgniteWhite #13 看到这里赶紧下载了一个,但是发现要连接银行接口需要先订阅,尼玛我都不知道我用的国内银行能不能连接,订阅个蛋啊。 |
33 AccK8623 2021-08-03 19:28:11 +08:00 via Android |
![]() | 35 daliu 2022-04-06 15:13:04 +08:00 把基金的价格做为单独的货币.基金里面只保留份数. 更新基金价格就行了 |
36 zhzy0077 OP @daliu 感谢 这里其实我感觉是 hledger 支持的不好 因为买 1 份 10 块钱, 卖一份 20 块, 如果是基金价格变化的话就没法算理财收益了 |
![]() | 37 daliu 2022-04-06 21:07:22 +08:00 @zhzy0077 #36 beancount 是有一个获取历史价格的方法.或者自己写个脚本把每天的价格扒下来.这样就能算出收益率了. |
![]() | 39 daliu 2022-04-08 13:03:06 +08:00 @zhzy0077 #38 我现在用 beancount.看了下转 hledger 好像还行. 但是对多文件的支持好像不太行.想按月来分隔文件.官方文档说有两个特性会失败.这块多文件好像是比 beancount 差点.但是 emacs 的支持要相对好些. |
40 zhzy0077 OP @daliu 不知道指的是哪两个特性 我现在是按年分的 然后比如 2022.journal 开头就是 include 2021.journal 用起来没遇到什么问题 |
![]() | 41 SaltyMouse 2022-04-18 14:52:31 +08:00 感兴趣,自己摸索下,出了教程麻烦踢踢 |