家は買ったほうがいいのか、借りたほうがいいのか。どちらが良いのかわからないので、一旦、記事にしてまとめてみました。ローンだったり、支払金額の総額につて触れている記事は、たくさん見かけるのですが、なかなか現在割引価値に直しているものが見当たらなかったので、自分で計算してみました。記事の構成としては、まず、どのように計算するのかという数式を記述してから、R言語によるシミュレーションをしていきたいと思います。
\(R_m\)を月々の支払額とした場合、支払合計額は、月々の支払額\(\times\)何か月住むのか\((M)\)で表されます。
\[R_m \times M\]
割引因子を\(\delta\)とすると、現在価値は以下のように表されます。
\[\sum_{i=1}^{n} {R_m}\times \delta^{n-1} \\ = R_m\frac{1-\delta^n}{1-\delta} \]
住宅を購入する場合、ほとんどの場合が、ローンを組むことになると思います。そこで調べたところ、おおまかにローンの種類は、2種類に分けられるらしいです。そのうちの一つが、元金均等返済というのもので、以下のように表されます。ざっくり説明すると、毎月同じ金額だけ元金の返済をし、残りの元金に対して利払いを行おうというものです。後述する元利均等返済に比べて、初期の支払いが多く、完済が近づくにつれ、月々の支払いが少なくなるという傾向があります。
\[ 月々の返済 \\ = ひと月当たりの住宅価値 + 残りのローンに対する金利支払い\\ =\frac{住宅価格}{ローンを返済する月数} + (住宅価格-月々の返済\times経過月数)\times月々の金利 \]
住宅ローンを\(P_H\)、毎月の利子率を\(r_m\)とした場合、支払合計額は、以下のように表されます。\(n\)という変数に対して、他の変数は定数だと考えられるので、比較的計算は簡単です。
\[ \sum_{i=1}^{n} \left\{ \frac{P_H}{M} + \left(P_H- \frac{P_H}{M} \right) \times r_m \right\} \hspace{1cm} ... (1) \\ = \left\{ \frac{P_H}{M}\times \left(P_H- \frac{P_H}{M} \right) \times r_m \right\} n \]
\((1)\)より、
\[ \sum_{i=1}^{n} \left[ \left\{ \frac{P_H}{M} + \left(P_H- \frac{P_H}{M} \right) \times r_m \right\} \delta^{n-1} \right] \\ = \left\{ \frac{P_H}{M}\times + \left(P_H- \frac{P_H}{M} \right) \times r_m \right\} n \frac{1-\delta^n}{1-\delta} \]
元金均等返済の以外の方法でローンを組むと、元利均等返済というものになるらしいです。ざっくりいうと、元利均等返済は、リボ払いのようなもので、月々の支払いを一定にして、毎月の支払いを少なくする代わりに、元金均等返済よりも多く支払いをするというものになります。計算式はよく理解していないのですが、公式はネットに落ちていたので、それを基に計算していきます。
\[ 毎月返済額 = \frac{借入金額\times月利\times(1+月利)^{返済回数}}{(1+月利)^{返済回数}-1} \]
元利均等返済は、毎月の返済額の計算は面倒ですが、毎月の返済額は一定であるため、現在価値の計算は簡単です。借家する場合とほとんど変わりません。毎月の支払い額を\(P_m\)としたとき、以下のように表されます。
\[\sum_{i=1}^{n} {P_m}\times \delta^{n-1} \\ = P_m\frac{1-\delta^n}{1-\delta} \]
シミュレーションに使った値は以下の通りです。
結果は以下のようになりました。興味がある方は、タブを開いてコードを見てください。
# library -----------------------------------------------------------------
library(tidyverse)
# define ------------------------------------------------------------------
# simulation value
last_month <- 12*40 # living 40 years
t <- c(1:last_month)
annual_d <- 0.05 # discount factor (annual)
monthly_d <- annual_d/12 # discount factor (monthly)
discount <- (1+monthly_d)^(t-1) # discount rate
# rent
rent_p <- 10 # monthly rent price
# house
house_price <- 4000 # the price of house
house_selling <- 2000 # the selling price of house
month_house <- house_price/last_month
interest_rate <- 0.03 # interest rate
month_interest <- interest_rate/12
# data frame ---------------------------------------------------------------
df <- tibble(
t = t,
year = t%/%12 + 1,
rent = rep(rent_p, last_month),
house_1 = month_house + (house_price- t*month_house)*month_interest, # principal equal monthly payment (元金均等返済)
house_2 = (house_price*month_interest*(1+month_interest)^last_month)/((1+month_interest)^last_month-1), # level payment (リボ払い)
rent_ps = rent/discount, # present value for monthly rent payment
house_1_ps = (month_house + (house_price- t*month_house)*month_interest)/discount,
house_2_ps = (house_price*month_interest*(1+month_interest)^last_month)/((1+month_interest)^last_month-1)/discount,
rent_cum = cumsum(rent),
house_1_cum = cumsum(house_1),
house_2_cum = cumsum(house_2)
)
# value -------------------------------------------------------------------
# sum
df_sum <-
df %>%
select(-t, -year, -ends_with("cum")) %>%
apply(2, sum)
# print
# comparison of the cost
cat("\t\t\t\t", "cost", "\t\t", "total", "\nActual Value\n",
"rent:\t\t", df_sum[1],"\t\t", df_sum[1], "\n",
"house1:\t\t", df_sum[2], "\t\t", df_sum[2]-house_selling, "\n",
"house2:\t\t", df_sum[3], "\t", df_sum[3]-house_selling, "\nPresent Value\n",
"rentPV:\t\t", df_sum[4], "\t", df_sum[4], "\n",
"house1 PV:\t", df_sum[5], "\t", df_sum[5]-house_selling/discount[last_month], "\n",
"house2 PV:\t", df_sum[6], "\t", df_sum[6]-house_selling/discount[last_month]
)## cost total
## Actual Value
## rent: 4800 4800
## house1: 6395 4395
## house2: 6873.301 4873.301
## Present Value
## rentPV: 2082.484 2082.484
## house1 PV: 3099.823 2826.893
## house2 PV: 2981.987 2709.057
左のcostが、実際にかかるコスト、右のトータルは、コスト-住宅の売却価格で計算しています。
なかなか興味深い結果となりましたね。リボ払いは、やっぱり論外ですね(笑)現在割引価値で考えると、やはり、借家が圧倒的に安いですね。
以下が、月々の支払いを累積したものになります。
# graph -------------------------------------------------------------------
df_plot <-
df %>%
select(t, year, ends_with("cum")) %>%
pivot_longer(cols = c(-t, -year), names_to = "vars", values_to = "value")
g1 <-
df_plot %>%
ggplot(aes(t, value, color = vars)) +
geom_point(alpha = .25) +
scale_x_continuous("Month") +
scale_y_continuous("0,000 Yen", labels = scales::comma) +
expand_limits(x = c(0, last_month), y = c(0, max(df))) +
theme_minimal()
library(plotly)
ggplotly(g1)月々の支払いの変化は以下のようになります。
g2 <-
df %>%
select(t, rent, house_1, house_2) %>%
pivot_longer(cols = c(-t), names_to = "vars", values_to = "value") %>%
ggplot(aes(t, value, color = vars)) +
geom_point(alpha = .25) +
scale_x_continuous("Month") +
scale_y_continuous("0,000 Yen", labels = scales::comma) +
theme_minimal()
ggplotly(g2)基本的な数列と現在割引価値を使うだけで、意外に面白いシミュレーションが作れました。やはり、時代は、借家なのかもしれません。ただ、前提条件である値を変えるだけで、結果が大きく変わってしまうので、簡単に借家がいいのだとは言い切れません。また、今回のシミュレーションでは、マンションなどを購入する際の共営費等などを考慮していません。その為、現実の分析とは大きく異なるかもしれません。結局のところ、借家かマイホームかという質問は、状況次第としか言えないのかもしれませんね。次回は、Shinyを使って、このシミュレーションを簡単なWebappにするのも面白そうですね。最後まで読んでいただきありがとうございます。