在 Beancount 中建模房地产交易
房地产交易可能构成一个家庭一生中最大的金融活动。本文解释了如何在 Beancount 中建模房地产。我将房地产视为一项资产,房屋的增值视为未实现收益。此外,抵押贷款被建模为负债,利息被视为费用。
假设 A 先生于 2020 年 1 月 1 日购买了一套位于 123 ABC Street, XYZ City, CA, 12345 的豪宅,价格为 100 万。利率为 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 |
创建账户
首先,我们将房屋视为一项资产。由于房屋被列为资产,它需要被赋予一个单位。在这种情况下,单位数量只有一个,不太可能出现多个,即使是第 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 * "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
在这里,我们详细说明了购房交易,其中资金从某些银行流出(用于首付和其他费用),获得贷款(增加负债),并获得一套房屋(增加资产)。
偿还抵押贷款
根据上述购买记录,我们目前欠款 80 万美元。由于利息的存在,并且考虑到美国所有贷款都是本金和利息均等摊销的,因此每月还款额包括一部分利息和一部分本金。在早期阶段,利息占大部分。
要记录贷款还款,您只需查看您的贷款银行对账单。您只需要知道每月偿还了多少本金,其余部分就是利息。利息被计为费用。
2020-02-01 * "Mortgage 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
此分录详细说明了每月抵押贷款还款,该款项从您的联名储蓄账户中扣除。本金的偿还减少了负债,而利息部分则被视为费用。
增值
如果您想记录房产的增值,有些人会创建一个单独的账户,只记录当前房产的增值。考虑到房屋的价值可能会增加或减少,这种增值也可能是负的。这样做的好处是,在您的总资产汇总中,这两个账户都会被包含在内,一个用于记录交易时的房屋价值,另一个用于记录房屋当前的增值,从而反映房屋的实时价格。
我没有采用这种方法,主要原因如下:
- 房屋的当前价值只能是一个估算值,仅供参考,没有实际价值。通常,我只能在 Redfin 或 Zillow 等网站上获得房产估值,我个人认为其参考价值不高。我也没有考虑将这些增值实时纳入总资产。
- 我个人认为,在抵押贷款还清之前,如果房屋的现金流为负,某种程度上,该房产仍然是一项负债。因此,过早地将其纳入资产会给您一种资产丰富和增值的错觉,我个人希望避免这种错觉。
我用来记录房产增值的方法,稍后也将讨论如何建模 RSU。这种方法是使用一个虚拟货币单位。假设您的基础货币是美元,我们可以使用 USD.UNVEST(似乎没有必要为此创建一个新的商品)来表示该资产以特殊货币计算。该资产的增长或减少将不会以美元记录。通过这种方式,我可以实现我的最初目标,即记录房屋的增值,并且这种增值不会包含在最终的资产负债表(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 * "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 年中有 2 年是自住的,因此 50 万的增值无需纳税。我在这里随机计算了一个数字。最终,进入 A 先生账户的资金是 418,343.8 美元,其中 20 万是当时的首付款,大约 10 万是已支付的利息。因此,最终 A 先生的账面利润约为 10 万。值得注意的是,我的计算不尽公平,毕竟 A 先生在这 5 年中节省了租金,而且房屋可能还有其他开销,例如维护、装修等。
为了在资产负债表中反映这一点,您可以添加此定价。
2025-01-01 price HOUSE.ABC 1,300,000 USD