惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

酷 壳 – CoolShell
酷 壳 – CoolShell
H
Hacker News: Front Page
P
Palo Alto Networks Blog
T
ThreatConnect
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
T
True Tiger Recordings
P
Privacy & Cybersecurity Law Blog
B
Blog
IT之家
IT之家
Last Week in AI
Last Week in AI
F
Full Disclosure
Hacker News: Ask HN
Hacker News: Ask HN
C
Comments on: Blog
Microsoft Azure Blog
Microsoft Azure Blog
C
Cybersecurity and Infrastructure Security Agency CISA
Microsoft Security Blog
Microsoft Security Blog
博客园 - 【当耐特】
N
News and Events Feed by Topic
NISL@THU
NISL@THU
腾讯CDC
雷峰网
雷峰网
Security Latest
Security Latest
李成银的技术随笔
M
Microsoft Research Blog - Microsoft Research
L
LangChain Blog
L
Lohrmann on Cybersecurity
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
Check Point Blog
Y
Y Combinator Blog
Recent Announcements
Recent Announcements
博客园 - Franky
N
News | PayPal Newsroom
V
V2EX
A
About on SuperTechFans
The Register - Security
The Register - Security
月光博客
月光博客
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Google Online Security Blog
Google Online Security Blog
MyScale Blog
MyScale Blog
Cisco Talos Blog
Cisco Talos Blog
Vercel News
Vercel News
WordPress大学
WordPress大学
C
Cyber Attacks, Cyber Crime and Cyber Security
The Hacker News
The Hacker News
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
爱范儿
爱范儿
A
Arctic Wolf
L
LINUX DO - 最新话题
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

GeekPlux

一代人的博客,一代人的青春注脚 那些年我打过的日结工 来美国的两年后 2023 一蓑烟雨 在美国拥有一辆 Tesla 的成本 我的 Workspaces 十年进化史 How to Sync Logseq Plugins, Themes and Settings Across Multiple Devices Setting Up Umami as Your Google Analytics Alternative: A Step-by-Step Guide 迁移豆瓣读书记录到 goodreads Enhance Your Internet Privacy in 2023 Refactor your blog comments system with Webmention.io 来美国之后,如何快速安顿下来 Three Levels of Information Perception 疫情三年 与人聊天的美好 我获取信息的方法 2022 版 我是如何学会编程的 Legacy code best practice: how to take over an existing project smoothly 2020 恍如隔世 接外包的一些坑和小技巧 论交友 往返香港隔离指南 即将失明,还能继续做程序员吗 小谈我对新技术的态度 How to use tailwindcss with AMP in a Next.js project 远程工作如何提高效率 我为什么从阿里巴巴离职 2019 柳暗花明 YouTube 观看历史数据分析 投资被动型指数基金正在造成下一次金融泡沫? 三种主流的网赚套利,躺着赚钱? 色盲的世界 我是如何管理 21 张信用卡的 薅羊毛的最大意义:保持对规则的敏感度 来香港的两个月 数据可视化技术实现的关键点 不需要扫描仪,数字化归档自己的文件 如何找到时薪 80 美元的远程工作(二) 如何找到时薪 80 美元的远程工作(一) 如何打造真正的简历 浅思图数据可视化 舍本逐末的学习方式 给想转行作程序员的人泼一盆冷水 算法优化人生之 —— 调度算法 杭州最适合闲来溜达的几条路线 2018 平淡无奇 突闻金庸先生逝世有感 十年博客折腾历史 数据可视化之 Sankey 桑基图的实现 研究生生涯总结 如何在不规则多边形内均匀撒点的算法 Web 前端中的增强现实(AR)开发技术 参加 Google Summer of Code 的体验 netjsongraph.js – Google Summer of Code (GSoC) 2017 summary 如何在 GitHub 上获得数百 stars Markvis - 在 markdown 中生成可视化图表 D3 force layout and WebGL integration 文本数据可视化(下)——一图胜千言 文本数据可视化(上)——从 Wordle 谈起 我获取信息的渠道 数据可视化基础——视觉编码 数据可视化基础——数据模型 数据可视化基础——可视化流程 为什么要用 Emacs Vega-Lite: A Grammar of Interactive Graphics 如何搭建一个私人网盘 如何阅读一篇学术论文 超过十个人的微信群根本没有价值 毕业后的两年 建立索引式的学习方法 为什么我喜欢写代码 写文章的小技巧 为什么文章写得好的人都很厉害 人总要有点盲目的自信 如何管理好自己的密码 Backbone View 之间通信的三种方式 Vim - 适合自己的,才是最好的 轻松玩转 Ukulele 告别社交网络有多难 双拼学习记 CoffeeScript 编码风格指南(译) CoffeeScript 笔记 CSS 最核心的几个概念 响应式设计简易指南(译) 初识 TDD Collapsing margins——合并的外边距 菜鸟级 Mac 配置(二) 菜鸟级 Mac 配置(一) CSS 编写原则 Goodbye,我的大学 如何新建一个 Cocos2d-x 项目 Windows8.1 下 Cocos2d-x 环境搭建 Android 开发如何入门 如何绑定独立域名 写博客就用 FarBox 尝试改变微信公众账号消息的推送方式 情似流水 操作系统总结——存储器管理 操作系统总结——处理机管理 操作系统总结——引论
复式记账、财报、量化与图论
GeekPlux · 2020-01-16 · via GeekPlux

不会记账何以变富。

如果你去搜索“为什么记账”,大概会有无数条理由。大多数会提到:记录自己的开支、寻找可削减的开支等。但我认为记账的功效不止于此,它其实是量化自己的一步,也是自身财务管理的一步。如果你想要投资炒股,那记账更是你理解公司财报的重要一步。

如果说金融业的本质是合理资源配置(通俗来说就是“让钱去该去的地方”)的话,那记账就是自己财富资源配置的基础。

复式记账

先简单说说我的记账史:我大三开始记账,一开始用一款叫 Toshl 的 APP,多端同步、界面大方(现在这家公司仍活的挺好,登录上还能看到我几年前的账单)。当时它没有自动同步功能,我靠纯手动记账坚持了大概一年半。直到我的信用卡多起来,可以自动同步信用卡账单的网易有钱进入我的视线,我在安全和便捷的博弈中倾向了便捷。靠网易有钱一直坚持记账了两年多。这期间不仅记余额、日常花销,还包括基金、股票的仓位等,让我对资产负债表慢慢有了概念。

Beancount

到后来我遇到 Beancount,发现这才是适合我这种强迫症的终极大杀器。同时我也接触到了复式记账这种更科学的记账方式,对资产=负债+权益也有了充分的理解。

珠玉在前,关于什么是 beancount、什么是资产、为什么用 beancount 记账、为什么要采用复式记账等等,都在 Beancount複式記賬Beancount —— 命令行复式簿记等文章中有详细介绍,我这里简单概括一下:

复式记账就是保证每笔账都要有至少两个(复数个)账户,且这些账户的和为零的记账方式。

简单举个例子:我们去便利店买了一瓶可乐,那么如果按普通的记账方式,账单上的记录为:

2020-01-01,买可乐,银行卡余额    -5 

而复式记账为:

2020-01-01,银行卡余额    -5 元
            花销:饮料     +5 元

而同样的一笔交易,对于便利店来说是:

2020-01-01, 货物:可乐        -1 瓶
            公司账户余额      +5 元

可以看到,复式记账必须是多个“账户”,因为要保证加起来为 0。“花销”是可以作为一个账户的,这样你只要看这个账户就知道你总共花了多少钱。货物也可以是一个账户,因为货物是有价值的。

另一个层面,可以发现记账不仅可以记钱,还可以记任何你想记录的“货币”,比如例子中的可乐、会员卡积分、股票等等,实现量化一切。

优越性

下图是用 fava 生成的网页,美观大方。

复式记账最大的好处在于能保证账目的一致性和完整性,这样让你对自己的资产情况一目了然。再加上 beancount 是基于纯文本记账(纯文本自由且强大),所以能实现更复杂的功能。比如可以用 beancount 记录自己资产的拆借、折旧:

  • 拆借:这在我们日常生活中特别常见,朋友垫付、买房贷款、拼团购物、信用卡消费,这都算拆借(同理,公司和公司之间、公司和银行之间等也都有拆借的行为)。
  • 折旧:就是你买入一个东西之后它随时间不停贬值的过程。比如买入一台电脑或手机,二手再卖出就不可能再按原价卖出了,而且转手价钱的高低取决于你使用了多久。所有我们需要针对自己会贬值的资产定期折旧(同理,公司购入 100 台电脑或椅子作为资产,这些资产也需要定期折旧)。

上面举的这两种,具体例子可以到我前面提到的文章中找。总之它们都会涉及到多个账户多条账目,用普通的记账方式,很容易就搞不清楚钱到底花在哪,而用 beancount 复式记账可以清晰掌握,并生成损益表和资产负债表。

除此之外还有很多强大的功能,大家可以自行探索。

账单与财报

我们通常说一家公司的财报,其实主要说它的两个表:损益表资产负债表。当你记账久了就发现,公司的这两个表,和我们个人的没什么两样

上文中我提到的拆借折旧这两个就是很典型的例子,我们自身也有,只是我们很少像公司一样严格的记账。如果你有经营一家公司,你会很好的理解这一点,而如果你是一个只有工资一项收入的工具人,那你得稍微转换一下思路:

  • 损益表体现我们能挣多少钱。把我们付出的时间、体力、脑力算作成本,把工资算作收益,很容易得出相对时间内我们自身的毛利率是多少、经营成本是多少……想赚更多钱就要提升利率(工作效率、工作含金量),降低成本(自动化部分工作)。
  • 资产负债表体现我们有多少钱。应收账款、存货、固定资产、无形资产;应付账款、流动负债、长期负债等等,你仔细想想,这些是不是都可以在我们身上找到一一对应呢?

更严谨的记账可以帮你理解公司财务报表,帮助你在股票投资中避险;而对公司财报更深的理解,也能帮助你优化自身的资产结构,开源节流。两者相得益彰,这是我自己深有体会的。

当理解的很深的时候,甚至可以跳脱出财务的范畴,比如做技术也经常说技术债,其实就是把“技术“当成一家”公司“,你每行代码可以理解成给这家公司盖楼,数据可以算这家公司的无形资产。你写的不好的代码,相当于给”这栋楼“注入不良资产,产生的畸形数据之后还得清理,算是产生了”流动负债“……长期不维护的代码,也会”折旧“……以上。

量化一切

通过上文的赘述,是不是你已经有点眉目了,发现不管主体是公司还是个人,不管记录的东西是金钱还是其它,都可以量化。

之前在和一个朋友讨论记账时,他说:”我花 10 分钟去记账,它带给我的收益我不知道有多少,唯一增加的就是账本厚度了“,我突然想到,如果时间算作一个账户,那么他这句话可以记作:

2020-01-01   时间           -10 分钟
             账本厚度        +5  行

时间就是金钱,这句话不是空谈,我们所做的每一件事,其中都包含时间成本。进而再想,发现不止是时间可以量化,而是任何事物都可以。比如

2020-01-01  去跑步运动   时间         -40 分钟
                       体力值       +10
2020-01-02  学习编程     时间         -60 分钟
                       体力值        -10
                       编程技术      +30
2020-01-10  上班        时间         -60 分钟
                       银行卡余额     100 
                       收入          -100 
                       编程技术       +5

从这个账单中,可以看出,跑步能让你体力充沛,更好地学习。同时工作一小时对编程技术的提升远没有自己单独坐下来用心去学的多。另外为什么时间和收入都是负数呢,你可以这么理解,你的时间本来是无限的(不确定你能活到几百岁),你从中拿走了几十分钟用来做事。收入同理,你可以理解成你的钱本来是无限的(不确定你能成为亿万还是兆万富翁),你从中拿走了 100 元放入了银行。多挣钱你就可以理解成从自己无限的可能中尽可能地多拿钱出来到银行里,因为只有拿出来才能花……

总之,什么都是可以量化的,只要你设定一个价格。比如刚才例子中的 40 分钟跑步 = 体力值+10,这些怎么定义都取决于你。如果你看过《奇特的一生》就发现作者就是近乎苛刻地将自己一生的时间都做了量化。当然我不是建议你去这么做,也不是说完全量化会有多么好,只是说明有这种可能,让你更好的理解“万物皆有价”,让你更好的理解你的一切。

记账与图论

复式记账保证了每一条账目,都会有至少两个账户和至少一条交易。而图这种数据结构是点和边的集合。如果我们把账户当作节点,把交易当作边,即:

账户 = 节点,交易 = 边

就很容易构成了一个图。

图论是研究事物之间关系的科学,万物之间都是有千丝万缕联系的,任何有联系(联接)的东西都可以抽象成图这种数据结构。抽象成图之后,更好做分析,比如分析哪个节点影响力最大,哪条路径最为关键,预测哪个方向会出现更多节点等等(对网络科学感兴趣的,可以看网络科学宗师巴拉巴西写的 《链接》)。

我是在读了Accounting for Computer Scientists这篇文章之后大彻大悟的。这篇文章算是写给程序员的记账指南,一路从单笔记账写到财报。

上图通过把账单抽象成图之后,很明显可以看到自己钱的流向:合伙人给公司账户 5000$,其中 500 用来买公司需要的家具,5块还了信用卡,由于买食物刷了 13 块,所有还欠信用卡 8 块。但最最神奇的是,不管你切断其中的哪条边,总能保证两个子图加起来的总和为 0,不信你可以试一试,这就是复式记账的威力。

而通过给节点上色,则很容易分辨出资产(绿色)、损益(蓝色)、启动资金(粉红)。具体的接下来再怎么分析,可以看我刚才提到的文章。

总之将账单抽象成图,是一个我以前没有想到过的思路,兴许将来的某一天我可以将自己的账单用Force-directed graph 画出来玩玩。说不定能看出“哪笔支出是造成我现在没钱的原因”,“哪些债务影响了我在某类别上的支出”,或者直接预测出未来我将会在哪方面花更多的钱,防微杜渐。

记账,尤其是用 beancount 记账,让我变身小会计,让我能理解公司的财报,让我对很多事情有了量化的思维。量化自己的好处就是能随时把数据拿来做个像模像样的分析,同时也能把自己当作一家公司来运营,这点我在我的文章里都提到过很多次了。

兴许在将来的哪一天,我可以对着自己的账单发现某些可优化的点,实现财务自由呢。玩笑话说归说,但把计算机思维运用到生活中我已经在无形中尝试过很多了,还真有用。