I'm putting together a simple discounted cashflow (DCF) model for a theoretical real estate investment. I think the model is correct, but I can't understand some of the results.
The model is simply:
$HousePrice = \sum_{t=1}^{\infty} R \times (1 - T) \times \left(\frac{1+i}{1+\left((1+i)(1+d)-1\right)\times(1-T)}\right)^t$
Here $R$ is the rent after expenses (i.e. property taxes, repairs etc.), $T$ is the marginal tax rate (i.e. 25%), $i$ is the inflation rate (i.e. 2.1%), and $d$ is the real discount rate (i.e. the real return for a similar asset with equal risk). $\left((1+i)(1+d)-1\right)\times(1-T)$ is the post-tax discount rate (i.e. the return on a similar asset of equal risk after tax).
Since this is a geometric series, it converges to:
$HousePrice = \frac{R \times (1 - T)}{1 - \frac{1+i}{1+\left((1+i)(1+d)-1\right)\times(1-T)}} - R \times (1 - T)$
I have $- R \times (1 - T)$ because the model begins at $t=1$ rather than $t = 0$.
I've noticed that:
With no taxes (i.e. $T=0$), inflation does not effect valuations. This makes total sense as inflation effects both the nominal discount rate and rental returns in the same way.
With no inflation (i.e. $i = 0$), taxes do not effect valuations. This also makes sense as taxes must be paid in the same way on rental returns and the discounting asset (i.e. the theoretical asset with similar risk).
But with inflation and taxes in the model, changing either one will impact valuations! This doesn't make much sense to me at all.
Does anyone understand why inflation and taxes would only effect valuations jointly? I can see why mathematically when I solve the model, but I don't have an intuitive reason.
Here's some python code below of the model in case that helps anyone:
#some values for the key variables
rental_price = 100
discount_rate_real = 0.06
marginal_tax_rate = 0.25 #when inflation is > 0, changing this impacts house values!
inflation_rate = 0.02
#post-tax discount rate
discount_rate_nominal = (1 + (((1+discount_rate_real) * (1+inflation_rate)) - 1) * (1-marginal_tax_rate)) - 1
#net rent after tax
net_rent = rental_price * (1-marginal_tax_rate)
#this is the r for the geometric series formula
r = ((1+inflation_rate) / (1 + discount_rate_nominal))
#geometric series formula. the - net_rent is because I want
#cashflows in my model to begin at t = 1 (not t = 0)
house_price = net_rent / (1 - r) - net_rent
#print
print("HOUSE PRICE:", round(house_price))
print("")
print("Net Rent After Tax:", net_rent)
print("1 - r value:", 1 - r)
print("Nominal After Tax Discount Rate", 1+discount_rate_nominal)