The calculation is easiest done with the programming language Julia and not with Excel or an online calculator. The threshold may be somewhat higher, but Julia has a philosophy that only as much as absolutely necessary needs to be understood. Here it will remain very easy. You do not need any programming knowledge.
Download Julia here and install it.
Start Julia by clicking on the icon on the desktop or in the menu.
Copy the following code and paste it into Julia (REPL) with a right-click. Then press Enter, and the important formulas are stored as functions in the session. The same applies to the calculated values.
Reference Model
For the reference model, the original capitalized earnings method with a complete capital market without taxes is used. It is advisable to read the linked page.
The rent is 12,000 MU, and the costs are 4,000 MU.
The depreciation amounts to 901.63 MU and "normalized" 1,000 MU.
The normalization is not specified in ImmoWertV. It is a mathematical trick to transform the term of 80 years into a perpetual annuity.
rent = 12000
costs = 4000
depreciation = 901.63
years_new = 80
years_half = 40
terminalvalue(val,i,g,r,n) = val*(1-(1+g)^n*(1+i+r)^-n)/(i+r-g)
terminalvalue(val,i,g,r,n::Bool) = val/(i+r-g)
function capitalized_earnings_method(cashflow, interest, growth=0.02, risk=0.0,n=false)
cashflow = copy(cashflow)
@assert length(interest) == length(cashflow)
if length(cashflow) == 1
terminalvalue(cashflow[1], interest[1], growth[1], risk[1], n)
else
discount_factor = cumprod([(1+i)^-1 for i in interest .+ risk])
cashflow[end] = terminalvalue(cashflow[end], interest[end], growth, risk[end], n)
sum(cashflow[begin:end-1].*discount_factor[begin:end-1]) + cashflow[end] * discount_factor[end-1]
end
end
function normalize(cashflow, interest, growth, n)
@assert length(cashflow) == 1
pvfe = capitalized_earnings_method(cashflow,interest,growth,0.0,false)
pvfyears = capitalized_earnings_method(cashflow,interest,growth,0.0,n)
return pvfe/pvfyears * cashflow
end
depreciation_normalized = normalize(901.6283818398063, 0.05, 0.02, years_new)
The land value is 233,333.34 MU
land_value = capitalized_earnings_method(rent - costs - depreciation_normalized, 0.05, 0.02, 0, false)
The value of the building portion is the saved normalized depreciation of the remaining useful life.
In the case of 80 years, it is 30,054.28 MU, and in the case of 40 years, 22,878.58 MU.
building_value_new = capitalized_earnings_method(depreciation_normalized, 0.05, 0.02, 0, years_new)
building_value_half = capitalized_earnings_method(depreciation_normalized, 0.05, 0.02, 0, years_half)
The value of the property is therefore 263,387.61 MU with an 80-year useful life and 256,211.92 MU with a 40-year useful life.
value_new = building_value_new + land_value
value_half = building_value_half + land_value
Comparative Value Method §§ 24-26 ImmoWertV
The comparative value method according to §§ 24-26 ImmoWertV calculates the expected market price of a property based on a univariate (comparative prices) or multivariate estimation (comparative factors) and includes special property-specific adjustments.
The preliminary comparative value according to § 24 Para. 2 ImmoWertV can be calculated on two bases:
- The calculation is based on a sufficient number of comparative prices.
- Alternatively, the calculation is based on a property-specifically adjusted comparative factor and a property-specifically adjusted standard land value.
The first method can be understood as a univariate estimator (statistics), and the latter as a multivariate estimator like a Fixed Effects (FE) estimator. Here, a "univariate" estimator is used. The example remains simple.
The costs per m² are, in the case of new construction, 2,633.88 per m² of living space (!) and in the case of half the useful life, 2,562.12 per m², when the values from the reference model are divided by the m².
comp_factor_new = value_new / 100
comp_factor_half = value_half / 100
If these factors are multiplied again by the corresponding m², we obtain the initial data from the comparative example of 263,387.61 MU and 256,211.92 MU.
comparative_value_market_new = comp_factor_new * 100
comparative_value_market_half = comp_factor_half * 100
In practice, the comparative factors are not derived from the property to be valued but from the average of similar properties and are applied to the property to be valued.
Accordingly, corrections (special property-specific adjustments) must still be made. In our example, however, these amount to 0.
Comparative Value = Market-Adjusted Comparative Value ± Land Adjustment ± Building Adjustment
Since no special adjustments are made, the value of the property is 263,387.61 MU with an 80-year and 256,211.92 MU with a 40-year useful life.
Capitalized Earnings Method §§ 27-34 ImmoWertV
The capitalized earnings method according to §§ 27-34 ImmoWertV calculates the expected market price of a property based on the expected net yield using a capitalization rate called the property interest rate, taking into account the remaining useful life of the property, the land value, and special property-specific adjustments.
Calculation of Capitalized Earnings Value
The following is an example of the general capitalized earnings method according to § 28 ImmoWertV. The variants §§ 29-30 ImmoWertV can be understood as reformulations. (The formulas are defined in § 34 ImmoWertV.)
The preliminary capitalized earnings value of the building structures results from the capitalized net yield (§§ 31-32 ImmoWertV) less the land interest over the remaining useful life and amounts to 30,054.28 MU in the case of new construction and 22,878.58 MU in the case of half the useful life.
The property interest rate is to be determined specifically for the property according to § 33 ImmoWertV and amounts to 0.05 - 0.02 = 0.03 in the example.
Below, the property interest rate is derived again.
prelim_cap_earnings_value_new = capitalized_earnings_method(rent - costs - land_value * (0.05 - 0.02), 0.05, 0.02, 0, years_new)
prelim_cap_earnings_value_half = capitalized_earnings_method(rent - costs - land_value * (0.05 - 0.02), 0.05, 0.02, 0, years_half)
The preliminary capitalized earnings value results from the preliminary capitalized earnings value of the building structures and the land value. According to § 27 Para. 3 ImmoWertV, it corresponds to the market-adjusted capitalized earnings value. This amounts to 263,387.61 MU and 256,211.92 MU.
cap_earnings_value_market_new = prelim_cap_earnings_value_new + land_value
cap_earnings_value_market_half = prelim_cap_earnings_value_half + land_value
This market-adjusted capitalized earnings value is again subject to special property-specific adjustments. Important! If the net yield is already property-specifically adjusted, no "double" correction may be made.
Capitalized Earnings Value = Market-Adjusted Capitalized Earnings Value ± Land Adjustment ± Building Adjustment
Since no special adjustments are made, the value of the property is 263,387.61 MU with an 80-year and 256,211.92 MU with a 40-year useful life.
Calculation of Property Interest Rate
The following is a formula for calculating the property interest rate based on the explanations of the capitalized earnings method. The property interest rates are to be determined according to § 21 Para. 2 ImmoWertV by rearranging the formulas for the capitalized earnings method. § 9 Para. 1 ImmoWertV requires corresponding adjustments.
The formula for determining the property interest rate is:
i = Net Yield / (Purchase Price ± Adjustment) – ((1+i)^n * i)/((1+i)^n -1) * (1+i)^-n * (Purchase Price – Land Value ± Adjustment) / (Purchase Price ± Adjustment)
The determination is iterative. This means that values for i are inserted until i changes as little as possible. The interest rate is 0.03.
Basically, it is a market interest rate with a growth discount.
function property_interest_rate(net_income, price, land_value, n, adjustment, irange=0.0001:0.0001:0.20)
for i in irange
i_new = net_income / (price + adjustment) - ((1 + i)^n * i) / ((1 + i)^n - 1) * (1 + i)^-n *
(price - land_value + adjustment) / (price + adjustment)
isapprox(i_new, i, atol=0.0001) && return round(i_new, digits=4)
end
end
property_interest = property_interest_rate(net_income, value_new, land_value, years_new, 0)
property_interest = property_interest_rate(net_income, value_half, land_value, years_half, 0)
Cost Method §§ 35-39 ImmoWertV
The cost method according to §§ 35-39 ImmoWertV calculates the expected market price of a property based on the normal production costs, taking into account the land value, an age depreciation factor, a regional factor, a cost value factor, and special property-specific adjustments.
The preliminary cost value according to § 35 ImmoWertV consists of three parts:
- the preliminary cost value of the building structures (§ 36 ImmoWertV),
- the preliminary cost value of the external structures and other facilities (§ 37 ImmoWertV), and
- the land value.
The normal production costs were specified above as 1,000 MU. With 142.86 m², this amounts to 142,857.14 MU. The regional factor (§ 36 Para. 1 ImmoWertV) is 1. The age depreciation factor according to § 38 ImmoWertV is 1 or 0.5. The external facilities have a value of 0. All values are multiplied together.
regional_factor = 1
m2 = 100
m2_gross = 142.8657
age_depreciation_factor_new = 1 - (0 / years_new)
age_depreciation_factor_half = 1 - (40 / years_new)
cost_value_building_new = 1000 * m2_gross * age_depreciation_factor_new * regional_factor
cost_value_building_half = 1000 * m2_gross * age_depreciation_factor_half * regional_factor
cost_value_external_new = 0
cost_value_external_half = 0
Together with the land value, this results in a preliminary cost value (of the property) of 376,190.48 MU and 304,761.9 MU.
This preliminary cost value is to be multiplied by a property-specifically adjusted cost value factor (§§ 35 Para. 3, 39 ImmoWertV). Additionally, a market adjustment can be made with surcharges and deductions (§ 35 Para. 3 ImmoWertV). In my opinion, these should take place only after the multiplication.
The determined value is then called the market-adjusted preliminary cost value.
The corresponding cost value factors for our example are calculated by the purchase price without special property-specific adjustments divided by the preliminary cost value.
The cost value factors are 0.7 and 0.84.
cvf_new = value_new / (cost_value_building_new + cost_value_external_new + land_value)
cvf_half = value_half / (cost_value_building_half + cost_value_external_half + land_value)
If the respective cost value factor is multiplied by the preliminary cost value, the value from the reference model results again. In practice, however, the value from the reference model is not taken, but a property-specific average value from the respective real estate market. The determined value is called the market-adjusted preliminary cost value (of the property).
cost_value_preliminary_market_adjusted_new = cvf_new * (cost_value_building_new + cost_value_external_new + land_value)
cost_value_preliminary_market_adjusted_half = cvf_half * (cost_value_building_half + cost_value_external_half + land_value)
Now, a correction to the respective property must be made (§ 35 Para. 4 ImmoWertV). This is done as follows:
Cost Value = Preliminary Market-Adjusted Cost Value ± Land Adjustment ± Building Adjustment
Since no special adjustments are made, the value of the property is 263,387.61 MU with an 80-year and 256,211.92 MU with a 40-year useful life.
Result
Anyone who has correctly followed the calculations will find that the calculated property price should be identical in all three methods. This happens under the assumption that the models were correctly specified. Basically, it is "indifferent" which model is used in calculating the market price according to ImmoWertV. However, calculating multiple values is useful to see whether the appraisal committee has properly adjusted its models.