背景
2023 年记录过一篇有关记账的文章,[[学习使用-beancount-记账]],当时系统的学习了 Beancount 的使用方法,了解了复式记账法的概念,坚持了三个月,最后放弃。现在想想,放弃的主要原因有三个
- 消费的录入比较繁琐,尤其是手机端的录入。电脑上录入虽然有快捷键,但还是要手动录入。而且 Beancount 的生态插件太少,如果要做个性的定制,需要投入较大的二次开发成本。
- 过于追求完美,对消费的细节录入占用了较多的精力,比如便利店买瓶可乐,门口买个煎饼果子,基本每笔消费都录入了。
- 数据报表都在 Web 端,实际查看和应用的次数并不多。相比之前使用 notion 记账,收益并不明显,投入成本却显著增加很多。
总之,2023 年 12 月放弃了 Beancount 记账。但使用 Beancount 过程中,学习到了复式记账,增加了对记账这个事情的理解。 这次尝试以 Notion 为中心,搭建一套完善的个人财务系统 Personal Finance System(简称 PFS) 。
PFS 是什么?
我们尝试给 PFS 下个定义,解决 PFS 是什么的问题。PFS 以 Envelope Budget Methodology 为基准,以 Zero-Sum Budgeting 为原则,解决个人的财务管理的完整方案。 我们希望这套系统可以解决两个问题,探索一个方向。具体来讲就是
- 解决当前记账不完整,支出不可控的问题
- 解决当前财务规划不清晰,缺乏财务目标和危机预案的问题
- 探索家庭资产配置和家庭理财方向
其实,无论使用什么记账工具,采用何种理念,需要解决的就是这几个基本的问题。
- 支出管理:在收入相对单一的情况下,支出管理是管控家庭财务总量最好的方案。
- 资金记录:如实记录每一笔资金的流动,包括收入、支出和转账等记录。如实的记录资金的流动,是记账和财务管理的基本要求,是我们进行财务分析的前提。
- 投资管控:不乱投资,看到别人赚钱,控制住自己也能发财的奢望。
- 账号管理:谁还没有八九十几张卡,怎么管理这些账户,包括资金,账单等。
- 未来资金规划:上有老,下有小,未来花钱的地方数都数不完,没有合理的资金规划,财务危机近在眼前啊。
- 财务分析:有数据,有记录,简单的财务分析能力要有吧。时间维度,类目维度,预算维度等等。
家庭记账相关方的分析
这里以一个典型的六口之家为例,分析家庭财务记账过程中,涉及的相关方,不仅仅是人,任何和家庭财务相关的主体,都是我们分析的对象,比如房子,车子。房子每个月需要还房贷,需要我们支出现金;车子每年需要买保险,做保养等,也是对现金的消耗。
Object 是行为的主体, Related Subject 是行为关联的对象,分析 Object 对 Money 的影响,增加还是减少,建立资金为中心的 workflow
- Money In 是潜在的 Income
- Money Out 是潜在的 Expense
- Object 是 Account Type
如果把家庭的财产比作一个池子,其中的现金比作池子中的水,有些主体是向池子中注水,有些主体是向外放水。 通过上面的表格,可以看出,我们日常活动中,大部分行为都是放水的,可以稳定增加池子中水的只有工资收入。Money out 的方向比较多,也是我们要做支出管理的类目。
PFSv0.1 概览图
根据上面的分析,我们大致整理出 PFSv0.1 版本的主要功能和具体模块。
- Account:账户
- Income:收入
- Expense:支持
- Budget:预算
- Database:数据库中心,系统中所有的数据库会收敛在这里
- Template:模版
- Workflow:根据使用习惯和资金流向,建立自动化的操作流程
- QuickAction:快捷功能
- Navigation:全局导航
- Pages: 系统内页,归档
- Dashboard:Home 页,聚焦当月的财务情况
其中,Account,Income,Expense,Budget,和 Database 是系统的核心模块。其他几个模块是根据 Notion 的特殊,做的自动化功能,或者是提效的快捷功能。
Account 管理
家里甭管有多少钱,这些钱都在一个具体的账户上,可能是银行卡,可能是支付宝,或者是虚拟币等。 每一个账号,都是单独可以操作的资金的主体。账号需要详细的记录资金的流动,无论是在系统内流动,还是系统外流动。
- 入金:可以往里面转钱
- 出金:可以往外转钱
- 有数值:有记录资金数额
系统内流动:账号之间的资金流转,A 账号 → B 账号 系统外流动:外部资金 → A 账号。系统可以为外部资金建立一个虚拟账号,这样资金记录的数据结构就一致了。
账户举例
账户 | 类型 | 标签 |
---|---|---|
招行储蓄卡 | 储蓄卡 | 工资卡 |
招行信用卡 | 信用卡 | 日常消费 |
支付宝 | 电子钱包 | 日常消费 |
长桥证券 | 投资 | 股票,基金 |
期权 | 投资 | 可回购 |
人情账 | 现金 | 已经借出的现金; |
中国银行 | 储蓄卡 | 储蓄账户 |
负债账户 | 房贷 | 长期支出,体现本金和利息 |
账户里还有几个比较特殊的,下面我们逐一分析下这几个特殊的账号怎么处理
- 房贷
- 社交账户
- 投资账户
- 虚拟电子账户
房贷
家庭有房贷时,每个月需要向银行归还本金和利息。如果最近不准备卖房,对房子的估值也不会太关注,在这种情况下,房子对家庭来说,就是一个负债,每个月会稳定的消耗家庭的现金流。比如每个月从 A 账户转入到房贷账户,银行再把钱划走,这样这比钱就从我们系统内流转到系统外。怎么标记银行的这个扣钱记录呢。参考复式记账法,我们给这个房贷建立一个虚拟账户,这样我们就可以把这个记录变成我们系统内的一个记录。
社交账户
人在江湖,总少不了吃吃喝喝。有时候,从朋友那里借了一笔钱,用了十年半载,然后再还回去。有时候,发小结婚,随礼小几万,将来能不能还不打紧。 这里涉及到几个问题。首先是外部的收款人,借款人不唯一,不确定,如果每个人都建立一个账户,会把系统复杂化。其次,有的资金往来需要归还,有的则不需要归还。 这个情况下,我们建立一个社交账户,记录借出的钱,以及从别人那里借入的钱。当我们从朋友那里借钱时,这里的余额为负,其他的银行卡账户收到一笔入账。当我们借给朋友钱时,这里的余额为正,银行卡记录一笔支出。
投资账户
俗话说,人无股不富,这年头,谁还没一点股票啊。投资账户,记录在投资市场的资金,重点是初期投入的本金。投资类型包括股票、基金、期权等。不包括定期存款和长期储蓄。 投资账户的价值波动,不反应在我们的记账系统中。比如我买的股票,上涨了 15 个点,但我没有卖出,还是账面的波动,这个对家庭的现金流是没有太大影响的。如果我在上涨 20 个点时卖出,把股票变成了可以流动的资金,那投资账户的金额会增加。如果股票亏了 30 个点,但我一直不割肉,这时投资账户的资金还是股票没下跌时的金额,不会变化。
之所以这样处理投资账户,是为了简化我们系统中投资及资产部分的管理,我们的PFSv01.版本重点是支出和预算管理,而投资中资产价值波动,投资策略等,我们都会简化为一个数字。
支付宝
支付宝和微信支付,是一个支付平台,本身也有信用卡和储蓄卡的功能。这个看个人习惯,如果开通了花呗,就相当是在使用信用卡。如果只是使用余额宝和现金,相当于是一个普通的储蓄卡。我们在系统中会创建一个支付宝的虚拟账号,这样支付宝上的钱,也在我们这个系统的管控之中。
以 Account 为中心的财务系统,可以很方便的分析现金流,资产总量等。系统中的资金流动,都是和账号相关的。
- 账号资金的增加:收入
- 账号资金的减少:消费
- 账号间资金的转移:转账
以此延伸出我们重要的三张数据表
- Income
- Expense
- Transfer
下面是 Account 数据表的属性和不同维度的视图
Income
在 家庭记账相关方分析时, 我们就可以看到,家庭收入来源比较单一,其实没有太多开源手段和方法,搞不好,还会把主要收入来源给干废了。投资可能产生收益,也可能产生亏损。 如果投资的收益落袋为安,在当月进入收入表;如果只是账面金额,保持不动,待在投资账号中。
收入的来源,大概分为以下几类
- 工资
- bonus
- side project
- 其他 收入有税前和税后,这里按照税后收入来计算。五险一金不在收入表格中,单独有一张 other 信息,调整税前、税后的差异。
- 公积金
- 社保
- 医保
- 失业金
- 生育金
- 补充公积金
- 个税
我们能够支配的,是税后的现金部分,其他的即使可以冲抵部分债务(比如公积金),会在支出表中动态调整金额。这样做是为了简化我们的表结构和表之间的关系。
收入数据表在 PFS 中非常重要,它是预算管理锚点。预算管理原则之一,就是给每一块钱都要找到它的归宿。所以这张表,也会关联到我们的预算表。
收入分配时,有个多对多的关系,一笔收入,可以分配给多个预算项;每个预算项,可能来源于多个收入记录。Notion Database 原本不支持多对多的关系,为了解决这个问题,我们创建一个分配记录表中转,解决多对多的问题。
收入数据表的属性和几个常规视图如下
Expense
记账的最核心部分,记录和管理支出明细,如果发生了一笔支出,有哪些关联方呢?
- 账户:资金加减
- 资金:金额发生变动
- 预算:消耗预算
- 支出:支出本身的信息
- 时间、金额、分类(标签)、账号
下面是一个简要的支持记录表
账号 | 金额 | 时间 | 分类 | 标签 | 信封 | Monthly | Yearly |
---|---|---|---|---|---|---|---|
招行信用卡 | 500 | 2024/10/1 | Food&Drink | Coffee | 日常消费 | 10 月 | 2024 年 |
民生信用卡 | 800 | 2024/10/3 | Shopping | 山姆 | 日常消费 | 10 月 | 2024 年 |
招行信用卡 | 100 | 2024/11/6 | Bill | 电费 | 日常消费 | 11 月 | 2024 年 |
招行储蓄卡 | 800 | 2024/3/1 | 保险 | 保险 | 保险 | 3 月 | 2024 年 |
为了方便对支出管理,我们会对每一笔支出,添加 类目和标签,同时关联预算和账户
Category
类目相对固定,不要轻易改变;每一笔交易,属于唯一的类目,符合 MCME 法则
- 日常消费
- 保险
- 房贷
- 养娃
- 教育
- 旅游
- 社交
- 其他
Tags
分散的,灵活的,可以膨胀的,可以是 Category 的子类目
Tags | Category |
---|---|
衣食住行 | 日常消费 |
每月生活费 | 日常消费 |
购物,线下购物,线上购物 | 日常消费 |
红包 | 社交 |
电话费 | 日常消费 |
韩国之旅 | 旅游 |
加油 | 日常消费 |
停车费 | 日常消费 |
电脑 | 教育 |
手机 | 日常消费 |
iPad | 日常消费 |
配件 | 日常消费 |
… | … |
每月可以根据支出记录,自动建立各个维度的简单视图,比如
通过不同维度的数据,可以很清晰的看到,我们的 money,通过哪个账户,花费在哪个主体,哪个类别上。
Budgets
预算是 PFS 设计之初就确定的核心功能之一,一个记账系统,如果没有预算相关的功能,也是完备的,只需要关注收入和支出即可。那预算在个人财务系统中存在的主要意义是什么呢?预算可以帮我们预测支出和收入,规划未来的资金,管控财务风险。比如,我想为 10 年后的小朋友预存一笔资金,这个钱怎么来,怎么存进去,通过预算管理,我们清晰的实现这个目标。
PFSv0.1 版本中,我们会简化预算管理的功能,主要将预算分类为月度预算和年度预算两类
月度预算
每月会生成一条预算记录,当月的该类目下的支出会关联到这条预算中,包括
- 日常生活:包括
- 个人生活费
- 家庭公共生活费
- 其他公共支出
年度预算
每年只有一条记录,包括
- 教育
- 保险
- 娱乐
- 社交
- 长期储蓄
- 投资
- 房贷
- 养娃
预算数据库表会与我们的账户表,支出表以及分配表关联。我们的预算表,大概会是这个样子
12条月度日常支出记录;9 条年度预算记录。同时每条记录会有类别,标签,我们也可以根据这些字段建立一些视图。
有了预算规划,我们就可以根据收入情况,大致预测未来的现金流
Transfer
transfer 表的存在,主要记录 PFS 系统内资金的流动,典型的例子包括信用卡还款,还房贷,自己名下的各个账号之间转账。 PFS 和外部系统的资金记录,通过 Income 表 和 Expense 表记录。
我现在使用下来,需要使用 transfer 表的主要有以下几个场景
- 信用卡还款
- 还房贷
- 预约转账
Database
Database 是 Notion 中一个单独的 page,集中管理我们系统中的几个表,这里我们会锁定几个表的字段,外部展示的时候是只读的,不允许修改字段的类型,新增字段等。几个关键的数据表都已经介绍过,这里截图展示一下这一个页面的目录。
User Case
我今天发工资了,PFS 中会有什么变化?
发工资,是有一笔收入进入 PFS 系统中,涉及到三张表
- Income 表,新增一条收入记录
- Account 表,新增收入记录时,自动关联到收入增加的账户
- Allocation 表,新增的收入,分配到不同的预算中,具体分配到哪些预算,各分配多少,在这张表中记录。这个表是可选的。
我用 30 快钱买了一杯星巴克,使用的微信零钱支付,PFS 有哪些变化?
这是一个消费行为,会在 PFS 中新增一条支出记录,设计 Expense,Budget,Account 三张表
- expense 中新增一条记录,记录这个消费行为,包括金额,类目,标签等。同时关联预算,和账户两张表。
- budget 表会被动增加一笔支出,消耗预算金额,关联支出明细。
- account 表中的 微信虚拟账户 被动增加一笔支出,关联支出明细。
月底了,要还房贷了?
我的还房贷用的储蓄卡不是我日常使用的主卡,通常我会在预约指定日期执行一笔转账,然后到期后还房贷专用的储蓄卡用来扣款。这里涉及到多个账户,两种类型的资金流动
- Transfer 记录:账户 A-> 账户 B 新增一条 Transfer 记录,记录转出账户和转入账户
- Expense 记录:银行扣款时,账户 B 新增一条支出记录,记录账户 B 的支出情况。
想要买个 168 平米的小房子,借了朋友 88 万,PFS 有哪些变化?
借朋友 88 万,这个钱将来要还的,还要给一笔利息。涉及到 外借虚拟账户,还款时需要新增一笔利息支出,这个是在外借金额之外的费用。
- Transfer 中新增一条记录,转出账户是 外借虚拟账户, 转入账户是自己的收款账户。这时外借账户的金额会变为负 88 万
- 收款账户中新增一笔转入,会增加 88 万 金额。
- 还款时,新增一笔 Transfer 记录,转出账户为自己的收款账户,转入账户为 外借虚拟账户。完成这条记录后,外借虚拟账户的金额为 零
- 新增的利息,在 Expense 中新增一条记录,金额为利息。我们把这笔借款产生的利息当作支出费用。这样既可以保证我们的虚拟账户转出金额和转入金额相等,又能够保证我们系统整体的金额可以兑平。
最近行情不错,投资 5万买大 A 怎么样?
这是一笔投资行为,不涉及投资的盈亏评估,涉及两个账户,投资账户和储蓄卡账户。
- Transfer 中增加一条记录,转出账户为储蓄卡,转入账户为投资虚拟账户
这里只是将钱从储蓄卡账户,转移到投资账户中,不涉及到止盈或者割肉操作,就没有收入或者支出行为。
川建国上台,买了川币,翻了 20 倍止盈,PFS 有哪些变化?
止盈的前提是,之前有投资行为的发生,这里涉及两个账户,投资账户和储蓄账户。
- 投资虚拟账户新增一条收入记录,若投入本金 100,现在 2000,新增收入记录 1900
- 如果要将止盈的金额转出到其他账户,再新增一条 transfer 记录,转出账户为 投资账户,转入账户为收款账户
几十张卡,怎么看我现在手里一共有多少可用的钱啊?
我们想看手里有多少可用的钱,一般是指现金流,或者短期调整后可以变成现金的东西。比如 活期存款,余额宝,基金,短期存款等。不包括 房子,车子,股权,期权等。除非万不得以,我们一般不会想着卖房子,卖车子。
大部分情况,现金都趴在几个账户上,想要看现金流,我们分析手中的账户就可以了。 这里有个关键问题,怎么处理房子的负债呢?几百万的房子,每个月还有好几万的月供呢?要不要考虑房子的市场估值和负债呢?
这里我们使用的折中的办法,评估现金流时有三种方案。
- 家庭整体资产负债情况,包括房子未偿还的贷款,房子的市场估值,手中可用的现金以及其他可以折算成现金的资产,主要是股票、期权等
- 家庭简要资产负债评估,不包括房子市场估值,包括未偿还的贷款,不包括长期的期权,股票等投资。这个是谨慎评估,可以衡量不改变资产结构情况下的抗风险能力。
- 当前可用现金评估,不考虑房子负债和市场估值,只看我现在手里有多少可用现金。这个是几个储蓄账户的可用余额累加,再减去信用卡和当期房贷之后的数字。
2049 年来了,PFS 要更新哪些东西?
新的一年来了,我们需要对2048 年的数据做归档整理,对新的一年 2049 年,建立独立的视图,主要涉及 Income, Budget,Expense三张表。
- Income :2049 年收入预测,区分稳定收入和波动收入,波动收入区分极大值、极小值和中位数
- Budget:根据收入预测,参考中位数,创建 2049 年的年度预算记录和月度预算记录。通常会有 18 条,12 条月度预算,6 条年度预算。
- 2048 年数据简要分析:分析 2048 年支出表,预算表,关注支出大类和方向,预算表关注超支的类目和账户。
- Expense:归档 2048 年支出明细,新建 2049 年支出视图
FAQ
有这么多的记账软件,为什么还要自己设计一个?
借用 《漂白》中的一句话,“干中学嘛”。 深入理解一个事情,最简单的就是亲自实现它, Learning By Doing。当我们明白了一个事情的 What 和 How,能够从零开始交付一个可以使用的产品,再结合 AI 的辅助与加持,那未来迎接我们的,就是星辰大海。
PFS 还会进化吗?未来会是什么样子?
PFS 当前是 v0.2 版本,未来会持续进化。2025 年预计会有v0.3 和 v0.4两个版本的迭代。简化的方向使提升系统的自动化能力,降低使用成本。
v0.3 DDL 2025/07
- 完善 Template 和 QuickAction 能力
- 增加基础的财务分析能力
v0.4 DDL 2025/12
- 提高记录便捷性,提供 AI 语音记账,语义化记账能力
- 提供 openApi 版本,链接三方智能体和 Agent,打造个性化的财务助理。
PFS 模板可以共享吗?
当前没有可以共享的模版,因为数据表中有较多的个人数据。如果需要 Notion 模版,可以留言或者私信,留下你的邮箱,等我整理好以后会发送共享连接给你。
参考资料
PFS 设计之初,参考了 Actual 中预算管理的思想,信封预算法。使用了三个月后,PFS 简化了预算功能,砍掉了信封数据表,但仍然感谢 Actual 这个软件。如果你正在寻找一款支出预算管理的个人记账软件,推荐你尝试一下 Actual
关注公众号 技术后花园 获取更多信息