The present value equation we base the model around is referred to in the post:
To estimate the model at our monthly frequency, we first plug in observed values of each of the terms in the equation.
House price information is from the ONS website for both the national and regional series. We have re-indexed the series to make them comparable.
Rents information is taken from the ONS website in index form for the national and regional series (there are various series that we need to splice together and interpolate for some of the regions). To line up rental and price indices we use information from LSL Property Services on rental yields to pin down a fixed point where we have an estimate of rental yields. The resulting effective rental yield time series is moderately sensitive to which fixed point we choose in some regions but the qualitative results are unchanged.
National rental expectations are estimated by taking information from the RICS Residential Market Survey and combining it with historical rent outturns. There is less information available for individual regions so we take the next year’s rental inflation as the same as realised rental inflation over the past year. For both the national and regional series we assume rental inflation converges back to the long-term average over the next two years. None of these assumptions make much difference because the discount rates are much more volatile than rents. Assuming growth in rental prices is constant does little to change the overall message coming out of the model.
Interest rates are taken as monthly-average yields from the Bank of England website.
Consumer Price Inflation is taken from the ONS website.
To make the equation hold as an equality, there is a residual term. Because in reality the appropriate discount rate is not the same as the risk-free rate, we solve the above model computationally to find the residual term that you must add to the risk-free rate at each point of the yield curve (that is, ). This is the main contribution to the difference between the Actual and Modelled lines in the first house price chart. In other contexts, this residual has been interpreted as a “risk premium”, but since there are many other factors our model doesn’t capture, we don’t place any structural interpretation on it. When we fit our model, we make the assumption that this additional term is constant over the sample period, such that the gap between actual and fitted prices averages zero. This is one reason why we are cautious about interpreting the model’s estimate in levels in any given period as a “fundamental” valuation.
Implementing the model
To decompose the DDM-fitted house price we look at the relative contribution of changes in rental growth expectations, risk-free rates and rental prices, while keeping all other factors fixed (including the residual). We then further mechanically decompose rental prices into real rents and consumer price inflation by using the CPI series. Summing these partial adjustments doesn’t exactly equal the fitted value because the equation is non-linear. We portion these discrepancies out across the various categories to make the graphs more intuitive. Since we have monthly data, and thus the increment of time is relatively small between periods, these discrepancies are very small in magnitude.
As discussed in the post, we discount future rents by the appropriate yield out to 20 years. After that we assume there is a constant interest rate equal to the sample average of the 20-year rate in the main analysis. That means we only look at the contribution of interest rates to modelled prices over the first 20 years of the cash flows. For the first chart of house prices the gold line shows what would happen if we assumed the yield curve was flat after 20 years and we discounted all future cash flows. For the decompositions, the exact value of the constant rate is actually irrelevant because it washes out when we take monthly changes.
Forming Regional Blocks
We combine the regions into four blocks based on geography and similarity of results, by averaging the models prediction (and the contribution of each variable) across all the regions in a given block.