跳转到主要内容

在 Beancount 中建模房地产交易

发布日期 最后更新 阅读需 2 分钟Mike ThriftMike Thrift
在 Beancount 中建模房地产交易

房地产交易可能是家庭一生中最大的一项财务活动。本文解释了如何在 Beancount 中建模房地产。我将房地产视为一项资产,并将房屋的增值视为未实现收益。此外,抵押贷款被建模为负债,利息则被视为一项费用。

假设 A 先生于 2020 年 1 月 1 日以 100 万的价格购买了位于加利福尼亚州 XYZ 市 ABC 街 123 号(邮编 12345)的一处豪华住宅。利率为 3.0%,首付为 20%,贷款金额为 80 万。

项目金额
抵押贷款金额800,000
利率3%
抵押贷款期限30 年
抵押贷款总成本1,478,219.62
每月还款额4,106.17
房屋保险每年 1,300(总计 39,000)
房产税每年 7,500(总计 225,000)
贷款还清时间2049 年 12 月
支付总利息414,219.62

抵押贷款明细截图

创建账户

首先,我们将房屋视为一项资产。由于房屋被列为资产,它需要被赋予一个单位。在这种情况下,单位数量仅为 1,不太可能有多个。即使这是第 n 套房子,我们也会希望将其记录在一个单独的资产中。也就是说,一套房子对应一个资产,这个资产有一个特殊的单位,其价值只可能为 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

在这里的第一行,我们定义了一个代表该房屋的商品单位。在第四行,我们定义了一个资产账户,该账户持有之前定义为房屋的商品单位。在第五行,我们为贷款银行定义了一个账户。由于这是负债,它属于负债类别。

购买

通过上述账户设置,购房行为等同于

借钱(债务) + 花钱(首付) = 获得 1 套房屋资产

购买房产时最重要的参考文件可能是买方结算单,它清晰地列出了资金的流向。

2020-01-01 * "购买房屋"
    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

这里,我们详细记录了购买房屋的交易,资金从一些银行流出(用于首付和其他费用),获得了一笔贷款(增加了负债),并获得了一套房屋(增加了资产)。

偿还抵押贷款

根据上述购买记录,我们目前欠款 80 万美元。由于利息的存在,并考虑到美国的贷款都是等额本息还款,每月的还款额包含一部分利息和一部分本金。在初期,利息占大部分。

要记录贷款还款,只需查看贷款银行的账单。你只需要知道每月偿还了多少本金,其余的就是利息。利息计入费用。

2020-02-01 * "抵押贷款还款"
    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. 房屋当前价值只能是一个估计值,仅供参考,没有实际价值。通常,我只能从 Redfin 或 Zillow 等网站获得房产的评估,我个人认为其参考价值不高。我也并未考虑将这些增值实时计入总资产。
  2. 我个人认为,在抵押贷款还清之前,如果房屋的现金流为负,那么该房产在一定程度上仍然是一项负债。因此,过早地将其计入资产会让你产生资产丰富和增值的错觉,我个人希望避免这种错觉。

我用来记录房产增值的方法,也将在后面讨论如何建模 RSU 时提到。这种方法是使用一个虚拟货币单位。假设你的基础货币是 USD,我们可以使用 USD.UNVEST(似乎无需为此创建新的商品)来表明该资产是以一种特殊货币计算的。该资产的增减不会被记录为 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 的商品页面上,你可以追踪房屋参考价格的趋势。但在资产负债表页面上,房屋的价格仍然是交易时的价格。也就是说,你的总资产仍然是当时的首付资金,加上你持续偿还的本金。这笔资产的最终变动只应发生在你购房时。

房产价格图表截图

出售

由于尚未有房产被出售,且中间的各种杂费尚不清楚,这是一个假设情景。

假设在 2025 年 1 月 1 日,房产已增值至 1,400,000 美元,一些参考数据如下:

项目金额
贷款余额709,656.20
中介费(6%)72,000
其他交割费用10,000

A 先生决定出售该房产,房屋最终售价为 1,300,000 美元。

2025-01-01 * "出售房屋"
    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 年中有 2 年是自住,因此 500,000 的增值无需交税。我在这里随意计算了一个数字。最终,进入 A 先生账户的资金为 418,343.8 美元,其中 200,000 是当时的首付,已支付了大约 100,000 的利息。所以,最终 A 先生的账面利润约为 100,000。值得注意的是,我的计算并不公平,毕竟 A 先生这 5 年省下了房租,而房屋可能还有其他开支,比如维护、装修等等。

为了在资产负债表中反映这一点,你可以添加这个定价。

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

自己试试看

探索一个包含抵押贷款追踪、折旧和房产出售交易的实时房地产示例账本:

分享这篇文章