Model scenario - fictional brokerage
This module is part of a six-part model calculation about a fictional mid-sized brokerage (32 sales agents, 450 transactions per year). All figures, datasets, model metrics and euro amounts are entirely fictional - they illustrate the methodology and the kind of effect achievable. They are not results of real clients and not a performance promise. What values are achievable on your real data is established only in a pilot project.
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 keep optimising that across the whole portfolio - on average 3 to 4 properties per agent, over 32 agents. A model can.
+3% listing price above the optimum = depending on location +7 to +20 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
12% of all properties experience a price cut (ImmoScout24, 2023) - for our model brokerage with 450 transactions that is 54 price cuts per year. The damage: not just the lost time - the property is perceived as "shopworn", buyers suspect defects, and the final sale price ends up below the price a correct initial listing would have achieved. The model avoids half of these cuts - 27 per year.
03 Business impact - more commission in less time
The double effect: faster sales + higher net proceeds
Additional revenue from optimal pricing advice
€89,200
Additional revenue / year
-50%
Fewer price reductions
| Category | Amount/year | Mechanism |
| Avoided price reductions | €75,600 | 27 avoided reductions at €2,800 each (assumption: price + time costs) |
| Final-price effect | €13,600 | Correctly priced properties sell closer to market value (KSK Köln: 99-100% instead of 97%; premium for the negotiating position: assumption) |
↳ 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 176 days. At €365,000 it is 54 days - and the net proceeds after negotiation are almost identical, because you avoid the shopworn discount." That is a conversation that builds trust.