房地产交易可能是家庭一生中最大的一项财务活动。本文解释了如何在 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此条目详细记录了每月的抵押贷款还款,该笔款项从你们的联名储蓄账户中扣除。本金的偿还减少了负债,而利息部分则作为费用处理。
房产增值
如果你想记录房产的增值,有些人会创建一个单独的账户,仅记录当前房产的增值。考虑到房屋价值可能上涨或下跌,这个增值可能是负数。这样做的好处是,在你总资产的汇总中,这两个账户都会被包括在内,一个是交易时房屋的价值,另一个是房屋当前的增值,从而反映房屋的实时价格。
我并未采用这种方法,主要原因如下:
- 房屋当前价值只能是一个估计值,仅供参考,没有实际价值。通常,我只能从 Redfin 或 Zillow 等网站获得房产的评估,我个人认为其参考价值不高。我也并未考虑将这些增值实时计入总资产。
- 我个人认为,在抵押贷款还清之前,如果房屋的现金流为负,那么该房产在一定程度上仍然是一项负债。因此,过早地将其计入资产会让你产生资产丰富和增值的错觉,我个人希望避免这种错觉。
我用来记录房产增值的方法,也将在后面讨论如何建模 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自己试试看
探索一个包含抵押贷款追踪、折旧和房产出售交易的实时房地产示例账本: