复式借贷记账法 Beancount (3) - 房产

10 minute read

房产可能是一个家庭一生中最大额度的经济活动,至于房产到底是资产还是负债的讨论,有很多种看法,就不在这里讨论。 本文介绍在Beancount中如何对房产建模,我是把房产建模成资产了,并且把房子的增值建模成一种未实现的收益(unrealized gain),再加上房贷建模成负债(liabilities),然后利息当做是一种花费(expense).

假设 A君 在2020年1月1日 以 100万的价格购入 位于 123 ABC Street, XYZ City, CA, 12345的豪宅 利率是 3.0%, 首付是20%, 贷款额度是 80万。

我试用了 mortgagecalculator

ItemAmount
Mortgage Amount800,000
Interest Rate3%
Mortgage Period30 years
Total Cost of Mortgage1,478,219.62
Montly Payments4,106.17
Home Insurance1,300 per year (39,000 total)
Property Tax7,500 per year (225,000 total)
Loan Payoff2049 Dec
Total Interest Paid414,219.62

mortgage-detail

开户

首先, 我们将房子当作Asset,既然要把房子放在Asset中,那么需要给一个单位。这里的单位其实数量只有一,不太可能会有多个,而且就算是第n套房,我们也希望记录在一个单独的Asset中,也就是说一个房子对应一个Asset,这个Asset有一个特殊的单位,其数值只可能为1.

2019-12-31 commodity HOUSE.ABC
  name: "123 ABC Street, XYZ City, CA, 12345"

2019-12-31 open Assets:Property:US:CA:123ABC                        HOUSE.ABC
2019-12-31 open Liabilities:Bank:US:SomeBank:Mortgage:Loan          USD

这里第一行,我们定义了一个商品单位代表这个房子 第四行,我们定义了一个Asset账户,这个账户里面存放商品单位为之前定义的房子 第五行,我们定义了一个贷款银行的账户,因为是负债所以是liabilities

购入

有了上面的账户,买房的行为就相当于

borrow money (debt) + spending money (down payment) =  1 house in asset

房产购入最重要的就是参考应该就是 Buyer‘s Settlement Statement 这里可以很清楚的看到钱的流向

2020-01-01 * "Buying the house"
    Assets:Property:US:CA:123ABC                  1 HOUSE.ABC {1,000,000 USD}
    Assets:Bank:US:SomeBankA                      -100,000 USD
    Assets:Bank:US:SomeBankB                      -101,000 USD
    Liabilities:Bank:US:SomeBank:Mortgage:Loan    -800,000.00 USD
    Expenses:Home:Insurance                       1,000 USD
    Expenses:Home:Mortgage:Loan:ClosingCost

一些希望跟踪到的花费,比如 Borrower Credit,Agent Credit,都可以通过单独的 income或者expense在这里体现出来, 比如,我在这里就单独记录的 home insurance的支出。

这里其实还有各种各样的费用,就笼统的归纳到了ClosingCost这么一个Expenses账户

还贷

根据上面的购入记录,我们目前负债80W美金,由于利息的关系,加上美国这边贷款都是等额本息,所以每个月付款 是一部分还利息,一部分还本金,早期的时候,利息占了大多数。

要记录还贷,只需要在你的贷款银行的Statement中去查看即可,只需要知道每个月还的本金是多少,剩下的就是利息了。 利息算做Expense

2020-02-01 * "Mortage payment"
    Assets:Bank:US:SomeBank:Saving:Joint              -3,372.83 USD
    Liabilities:Bank:US:SomeBank:Mortgage:Loan         1,376.26 USD
    Expenses:Home:Mortgage:Loan:Interest

记录房产增值

如果对房产的增值想做记录,有的人的做法是创建一个另外的账户[1],只记录对当前房产的增值的部分。 考虑到房子的价值可能增长,也可以缩水,这个增值可能是负值。 这样的好处是,你的总资产,在汇总的时候会纳入这两个账户,一个是房子交易时候的价值,一个是当前时刻房子的增值,就能时刻体现出房子的实时价格。

我并没有采用这样一种方法,主要是如下考虑

  1. 房子当前的价值,只能是估值,用来做参考,没有实用价值。通常我只能去Redfin或者Zillow去得到这些网站上对房产的估值,个人觉得参考价值不高。也没有考虑想把这些增值实时的纳入到总资产。
  2. 个人觉得在没还清贷款之前,如果房子上的现金流为负值的话,某种程度上讲,房产还是负债,所以将其过早的纳入资产会给你一种资产充实而且有增值的假象,我个人是想避免这种假象的。

我记录房产增值的是方法[2],这个方法在稍后将如何对RSU建模也会讲到。 这里的方法就是使用一个虚拟的货币单位,假如你的本币是USD,那么我们就可以用一个USD.UNVEST (这里好像不用为这个新建Commondity) 表示这个资产是用一种特殊的货币计算的,这种资产的增长或者缩减都不会记入到USD。这样就可以达到我的最初目的,即记录了房子的增值,这个增值也不会计入到最终的资产负债表格 (Balance Sheet).

2020-01-01 price HOUSE.ABC                          1,000,000 USD
2025-01-01 price HOUSE.ABC                          1,400,000 USD.UNVEST

只需要将你的房产对USD.UNVEST定期做一个定价就可以了。

这样在Fava的Commondity页面,你可以跟踪房子参考价格的走势,而在Balance Sheet页面,房子的价格还是房子交易时候的。也就是说你的总资产里还是你当时的首付钱,加上你不停还掉的本金。这个资产的最终的改变,应该只会发生在你买房的时候。

fave-property-price

我记录房产的方式是出于自己的偏好,如果你有更好的方法,请在twitter上和我交流!

出售

因为还没有出售过房产, 不清楚中间的各项杂费,所以这里是一个假设的场景,

假设,在 2025年1月1日,房产增值到 $1,400,000, 一些参考数据如下

ItemAmount
Balance709,656.20
Agent fee (6%)72,000
Other Closing Fee10,000

A君决定出售房产, 最终房子出售价格为 $1,300,000

2025-01-01 * "Selling the house"
    Assets:Property:US:CA:123ABC                  -1 HOUSE.ABC {1,300,000 USD}
    Liabilities:Bank:US:SomeBank:Mortgage:Loan    709,656.20 USD
    Expenses:Home:Agent:Fee                       72,000 USD
    Expenses:Home:ClosingCost                     10,000 USD
    Expenses:Home:Tax                             90,000 USD
    Assets:Bank:US:SomeBankA

这里假设5年内有两年自住,所以增值50万不需要缴税, 我这里随便乱算了一个数字 最终进入A君账户的钱是 $418,343.8, 其中有20万是当时的首付,还支付了 大概10万的利息,所以最终A君在这个上面账面收益是10万左右。 需要注意的是,我这个计算并不公平,毕竟A君这5年节省了租房支出, 然后在房屋上可能还有一些别的支出,比如维护,装修等等。

为了让资产负债表也体现这个,可以加入这个定价即可。

2025-01-01 price HOUSE.ABC                          1,300,000 USD

Reference

  1. https://groups.google.com/forum/#!topic/beancount/Z_wXwbhRhGw
  2. https://beancount.github.io/docs/stock_vesting_in_beancount.html
  3. https://www.mortgagecalculator.org/

系列介绍

准备用一个系列的文章来介绍这个工具和一些技巧。 这些技巧有一些是我从已有的模版中找出来,也有一些是在Google Group里看到大家的推荐,自己又尝试出来的方法。

  1. 先导
  2. 基础知识
  3. 环境设置
  4. 如何对房产建模
  5. 如何对RSU建模
  6. 如何对ESPP建模
  7. 自动化导入
  8. 安全

wechat-qrcode