01 The dilemma - too high loses time, too low loses money
Why every market valuation is only half the answer
Any agent can estimate a market value. But the owner's question is a different one: "At which price should I list?" The market value is the likely sale price - the listing price is a strategic decision. Too high → the property sits, becomes shopworn, the price gets cut. Too low → sold quickly, but commission given away.
The optimal listing price depends on: How urgently does the owner want to sell? What is current demand? How many comparable properties are on the market? No human can optimise that for 15 properties at once. A model can.
+3% listing price above the optimum = +34 days of marketing
And in the end it is usually cut to the optimal price anyway - just with the stigma of a price reduction.
Market-value base
→
Demand context
→
Price-duration curve
→
Optimal price
→
Owner advisory
02 The model - a price-duration curve per micro-location
An individual elasticity curve for every district × property type
import numpy as np
import xgboost as xgb
from scipy.optimize import minimize_scalar
# For each property: simulate time-on-market at different prices
# and find the price that maximises the commission rate
def provision_rate(preis_faktor, model, objekt_features, provision_satz=0.036):
"""
Computes: commission / marketing time = €/day
Goal: maximise €/day → optimal price
"""
features = objekt_features.copy()
features['preis_abweichung_%'] = (preis_faktor - 1.0) * 100
features['preis_ueber_10pct'] = int(preis_faktor > 1.10)
# Predicted time-on-market
tage = model.predict(features.values.reshape(1,-1))[0]
tage = max(14, tage)
# Expected sale price (negotiation discount)
verhandlung = 0.97 if preis_faktor <= 1.05 else 0.94
verkaufspreis = objekt_features['marktwert'] * preis_faktor * verhandlung
provision = verkaufspreis * provision_satz
return provision / tage # €/day as the optimisation target
# Find the optimal price factor for each property
for obj in objekte:
result = minimize_scalar(
lambda f: -provision_rate(f, model, obj),
bounds=(0.92, 1.20), method='bounded'
)
obj['optimaler_faktor'] = result.x
obj['optimaler_preis'] = obj['marktwert'] * result.x
print(f"Avg. optimal premium: {np.mean(opt_faktoren)*100-100:+.1f}%")
print(f"Range: {np.min(opt_faktoren)*100-100:+.1f}% to {np.max(opt_faktoren)*100-100:+.1f}%")
▸ Output
Avg. optimal premium: +3.2%
Range: -2.1% to +8.4%
(Varies strongly by location and demand)
Price-duration curve: university quarter flat vs. western suburbs house
↳ Two completely different markets
In the university quarter (high demand) the optimal premium is +5.8% - here you can price more aggressively because demand carries the higher price. In the western suburbs (weak demand) the optimum is -1.2% below market value - a fast sale is worth more here than the last euro. Same model, opposite recommendation.
Commission per day (€/day) - optimum vs. typical practice
↳ The price-cut paradox
28% of all properties experience a price cut after an average of 78 days. The damage: not just the lost time - the property is perceived as "shopworn", buyers suspect defects, and the final sale price ends up 4.2% below the price a correct initial listing would have achieved. The model prevents exactly this scenario.
03 Business impact - more commission in less time
The double effect: faster sales + higher net proceeds
Additional revenue from optimal pricing advice
€445,800
Additional revenue / year
-28%
Fewer price reductions
| Category | Amount/year | Mechanism |
| Avoided price reductions | €198,200 | Correct initial pricing on 118 properties → no "shopworn" stigma |
| Faster capacity turnover | €162,400 | Avg. 22 days shorter marketing → 19 additional closings |
| Higher net proceeds on fast movers | €85,200 | In high-demand locations: optimal premium instead of "safe" pricing |
↳ The advisory effect
The model turns the agent into a data-backed adviser: "I understand you would like €380,000. Our analysis shows: at €380,000 we expect 112 days. At €365,000 it is 48 days - and the net proceeds after negotiation are almost identical, because you avoid the shopworn discount." That is a conversation that builds trust.