V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
Geeker
V2EX  ›  分享创造

复式记账、财报、量化与图论

  •  3
     
  •   Geeker ·
    geekplux · 2020-01-19 11:59:20 +08:00 · 5374 次点击
    这是一个创建于 1772 天前的主题,其中的信息可能已经有所发展或是发生改变。

    分享自己对记账对一些理解

    原文地址https://geekplux.com/2020/01/16/accounting-earnings-report-graph-theory


    不会记账何以变富。

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

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

    复式记账

    先简单说说我的记账史:我大三开始记账,一开始用一款叫 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 记账,让我变身小会计,让我能理解公司的财报,让我对很多事情有了量化的思维。量化自己的好处就是能随时把数据拿来做个像模像样的分析,同时也能把自己当作一家公司来运营,这点我在我的文章里都提到过很多次了。

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

    24 条回复    2020-03-07 10:05:06 +08:00
    AlwaysBee
        1
    AlwaysBee  
       2020-01-19 12:23:50 +08:00
    http://freelancer-x.com/82/
    http://freelancer-x.com/126/

    之前也写了两篇关于 beancount 的介绍,但后面可能工作还是太忙了(嗯,借口),只坚持了一个月,就停止了记账 😂
    sunziren
        2
    sunziren  
       2020-01-19 12:28:39 +08:00
    标题看成了 报复式记账
    oidsix
        3
    oidsix  
       2020-01-19 15:33:34 +08:00
    有启发,感谢楼主,只是现在和家属共同记账,有合适的复式记账 APP 么?
    OATAO
        4
    OATAO  
       2020-01-19 15:46:24 +08:00 via iPhone
    没有 iOS 版?我现在用 money pro
    rabbirbot00
        5
    rabbirbot00  
       2020-01-19 16:17:41 +08:00
    用详细的数据进行分析意味着要在记账上花费大量时间,真的很难坚持下来吧....
    icylogic
        6
    icylogic  
       2020-01-19 20:22:48 +08:00
    @rabbirbot00 他们玩 beancount 的其实没几个“坚持”记账的,都是从各种信用卡账单,微信支付宝之类的定时导入、去重 ……

    https://github.com/zsxsoft/my-beancount-scripts

    用那些手机 app 一笔一笔记账的才是比较麻烦……
    SimonOne
        7
    SimonOne  
       2020-01-19 22:02:37 +08:00
    刚刚卸载 beancount,太难了,加上基金什么的,像搞清楚怎么记真的太痛苦了。
    rabbirbot00
        8
    rabbirbot00  
       2020-01-19 22:56:35 +08:00
    @icylogic 但是像支付宝和微信这样的导出,不就和量化冲突了,只能看到付了多少钱,大量的小笔交易....大笔的交易还行
    Geeker
        9
    Geeker  
    OP
       2020-01-19 23:02:37 +08:00
    @rabbirbot00 不冲突,Expense 也是一个账户,如果是转账类的,parse 一下或手动改改
    ra1983
        10
    ra1983  
       2020-01-20 01:11:00 +08:00 via Android
    把可乐喝掉是不是还要可乐-1,体重+5,心情+5
    否则年终盘点,没办法解释为啥可乐的库存不见了啊
    visonme
        11
    visonme  
       2020-01-20 01:15:50 +08:00
    复式记账不就是财务软件的日记账方式吗 ?
    visonme
        12
    visonme  
       2020-01-20 01:16:23 +08:00
    讲究 Debits 跟 Credits 的平衡
    JRay
        13
    JRay  
       2020-01-20 09:39:50 +08:00
    涨姿势了
    ckizey
        14
    ckizey  
       2020-01-20 11:28:19 +08:00 via iPhone
    顺势推广一番🤗
    ![记账 Plus]( http://jihu.static-src.net/promotion/jihu-1.jpeg "记账 Plus")
    Geeker
        15
    Geeker  
    OP
       2020-01-20 17:10:11 +08:00
    @ra1983 哈哈,可乐不见其实最后会算到银行卡里钱少了 5 块(我每天都可乐-1 心情+10 钱 -5
    ZSeptember
        16
    ZSeptember  
       2020-01-21 11:53:06 +08:00
    有些意思。
    现在是在消费发生的时候记账,投资的时候也会记本金,这样子会导致流水膨胀,不知道有没有什么更好的办法。
    ccsulzf0627
        17
    ccsulzf0627  
       2020-01-21 17:00:42 +08:00
    如果你坚持不下去,所有的都是扯淡,并且不喜欢把这种隐私数据放到别人那里,所以自己写了一个 [狗头]
    Geeker
        18
    Geeker  
    OP
       2020-01-22 00:31:44 +08:00
    @ccsulzf0627 ?,就是因为纯文本所以不需要放在别人那里啊
    huruka
        19
    huruka  
       2020-02-25 00:50:34 +08:00 via Android
    有趣😀我好奇的是楼主加 TG 群了嘛
    Geeker
        20
    Geeker  
    OP
       2020-02-25 09:45:22 +08:00
    @huruka 加了的
    uestcfei
        21
    uestcfei  
       2020-03-03 21:03:05 +08:00
    @Geeker 我家的猫咪跟你的猫咪长得一模一样。。
    uestcfei
        22
    uestcfei  
       2020-03-03 21:03:45 +08:00
    学习到了,把记账转换成图的这个思路,感觉很好。
    Geeker
        23
    Geeker  
    OP
       2020-03-04 12:21:24 +08:00
    @uestcfei 狮子猫吗,有缘
    uestcfei
        24
    uestcfei  
       2020-03-07 10:05:06 +08:00
    @Geeker 是的,这个样子:![miao.jpg]( https://s2.ax1x.com/2020/03/07/3OfZ0e.jpg)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5427 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 05:47 · PVG 13:47 · LAX 21:47 · JFK 00:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.