一年前

2023年10月初到德国的时候,虽然金钱上依然是完全仰赖父母,但确实是人生中第一次需要自己直接承担包括房租、水电和饮食在内的所有支出。虽然可以用直接刷父母的信用卡解决,但为了锻炼自己的独立能力,最终选择了一次领到一整年的生活费,并自行规划的方式。通过网络查询,我估算自己在慕尼黑的生活需要1500欧元一月,也就是18000欧元一年,加上每年一次往返中德的机票,总共向上取整为15万元人民币的一年预算。

一年的预算到手,但成功的实施,还仰赖于对自己的开销的监控,于是决定自己开始记账。在了解了多种记账软件之后,通过少数派平台的这篇文章,了解到了MoneyWiz。 因为以前没有正式的记过账,MoneyWiz初见相当复杂。但抱着只从简单功能开始用起的想法,且少数派专栏也提供入门指南的情况下,还是决定一步到位,购买了一年的许可证,开始记账。


image.png 图0. MoneyWiz的主用户界面

在德国的第一个月,一边适应着与国内时而迥异,时而相仿的生活,一边记账。刚来的时候因为对当地的超市商品还不熟悉,很多东西都不知道是什么,而且看什么都很贵。在外就餐能少就少,点完菜了之后端上来之前都不知道会是什么样的。时间很快过去了,一个月后查看MoneyWiz的报告,发现和自己预计的开销几乎一致,挺惊喜的。MoneyWiz为每一笔交易都提供如交易人,备注,标签,分类等多种多样的字段。通过生成种种报表,能让我尝试去理解大概有多少占比的开销分别是花在哪些方面的。反思并调整预算的过程,也让我觉得自己对人生多了一些掌控。当时我写了这篇小红书,分享自己的经历,希望能给新来的同学提供参考。


image.png 图1. MoneyWiz中,一个月里各项开支的占比

这一年记账的过程中,一开始时,每笔交易产生后,我都立即在MoneyWiz的手机APP里记录。因为担心自己不立刻记下来,累计多了,就懒得记了,不利于坚持。后来习惯过后,我常常是每周,有时甚至每两周一次,坐在电脑面前花三十分钟记账。在德国的生活几乎没有现金交易,都是刷卡,手机里银行APP里都有记录,所以也不会漏。当然其实直接翻看银行APP所提供的交易记录和总额,就可以一定程度知道自己的开销了。但根据类别将他们整理到MoneyWiz中,可以通过各种报表直观的看到在一段时间内开支中各项的占比(如图1),又或是一类开销在几个月中趋势的变化(如图2)。


image.png 图2. MoneyWiz中饮食开支在十二个月中的变化,灰色部分为外就餐,黄色为购买食品杂货。

反思,尝试新方式

用MoneyWiz记账一年之后,其实感觉挺好的,功能确实强大。但一年过后,我并没有像想象中那样去熟悉和使用更复杂的功能,而是仍然只使用几个简单的。MoneyWiz是订阅制付费软件,我买了一年马上要到期了。自动同步银行账单、多账户投资跟踪、支出预测之类的高级功能我从来都没有用过。有基本功能,能手动添加交易、分类和生成基本报表,就已经可以满足我了。于是我想现在正好是尝试一下新的记账软件和财务系统的好机会!挑来挑去,我发现了Beancount+Fava的组合,非常有吸引力,Beancount是一个纯文本复式记账的开源库,使用Python语言,在Github上有3.8K⭐️,如今已经迭代到了V3版本,用户反馈普遍良好,且经过多次更新和修复,已经相当稳定。Fava是专为Beancount开发一个Web交互界面,服务器在本机上运行,可以生成漂亮的报表,方便用户检索自己的交易,追踪自己的资产变化。由官方提供的Fava示例展示了非常漂亮的图表,是我喜欢的风格。


image.png 图3. 一个 Fava 用户界面的示例,显示了我本月的开销,颜色表示类别

Beancount+Fava组合的优点:

1. 数据安全和可重复利用性

Beancount是纯文本会计软件,数据以纯文本的形式储存在本机的硬盘上,采取人可以直接阅读和理解的语法进行记录,就算有一天软件不再可用,也是一个可以用任何文本编辑器阅读的账本。如果想要切换到其他会计软件,也可以通过自行编写脚本的方式,读取其中数据或转换为其他数据结构。在这一点上,MoneyWiz也不差,能导出数据库和Excel的格式,但纯文本总归是最好的。

2. 开源,支持MoneyWiz的基本功能,且高度可自定义

完全免费,不必支付商业软件通常需要的订阅费,又或是忍受免费软件的广告。基本功能开箱即用。代码透明,且只提供基本框架,Beancount基于使用者的计算机和会计知识高度可自定义。投资账户,追踪股票价格等MoneyWiz拥有的高级功能也可以方便的引入。


image.png 图4. 另一个 Fava 用户界面的示例,显示我不同币种的资产分别在哪些账户中

同时,我能想到的有以下缺点:

1. 没有UI,有一定的上手成本,使用场景受限

没有手机APP,没有一看就懂的用户界面。如交易,开户之类的行为,都需要使用纯文本编辑器自己一行一行编写。只有在电脑上操作才方便,想在手机上随手记恐怕难以坚持。且需要花一点时间学习Beancount的语法,有一定的上手成本。

2. 需要复式记账法的基础知识

只需要一点点,用于理解软件的基本逻辑,网上有大量讲解。主要需要理解净值,资产,花费等五个科目之间的关系,会计恒等式,以及为什么每笔账要影响两个账本。

3. 需要Python库相关基础知识

需要一个可用的Python环境,涉及一些库的安装,不需要真的会写代码。很简单,网络上也有很多教程,然而我记得自己多年前第一次弄这些的时候也费可大劲了。

4. 没有内建的预算系统

可以发挥一点创意自己创造。预算是我一开始以为自己最需要的功能,然后过去一年中,只有刚开始的一两个月,因为不清楚自己的开支是否已经过高,亦或是还有余地,我频繁的检查预算。但很快消费就稳定了,且平常消费已经尽可能省了,除了一个月下两顿馆子外几乎也没有可以省的空间。且后来我在网银APP里创建了单独的账户用于平日消费,我在每个月初转出上个月盈余,且转入下个月预算。这样每个月都以同样的金额开始,只需看看卡里还有多少钱,想想这个月还有多少天,就大概知道状况如何了。外出旅游时也新建一个旅游账户,将预算打入,旅游过程中就很方便检查预算还剩多少。所以我不打算在记账软件里使用预算系统了,我更需要看到我的消费组成和消费趋势。

5. 没有云同步

需要自己使用Dropbox或坚果云一类的同步盘来备份和在不同的电脑间同步。不过都已经只用电脑了,我相信大多数人也只有一台常用的主力机,也不太需要同步。主要还是可以通过网盘备份以保数据安全,避免电脑损坏或丢失时损伤重要数据,和其他重要数据一起备份就好。

6. 无法自动与银行同步

MoneyWiz提供一个非常方便的自动与银行同步账单的功能,支持欧洲,美洲的绝大多数银行(不支持国内的银行)。虽然我还是更青睐手动记账,因为这个环节里我也在思考自己的消费,但如果想偷懒的话,MoneyWiz真的可以很方便。

最后

虽然Beancount+Fava的组合看起来有着更多的缺点,但我本身有一定的编程基础,忠爱纯文本,且追寻开源的理想。我决定进行一次尝试,至少使用一年。且因为折腾Beancount的过程,让我回忆起了几年前玩个人博客的日子,非常怀念。于是决定复活这个域名,重新开始,再给个人博客一次机会。这篇文章便作为我的新博客的首篇,希望能开个好头。