What we do
Asuntokaupat.io is a price-transparency tool for Helsinki residential property. For every flat that comes onto the market, we publish a predicted fair price and show you how that prediction was built — feature by feature, comparable by comparable.
If a flat is listed 17% under our prediction, we'll tell you. We also measure our own predictions against realised sales every week and publish the error distribution, so you can judge how much weight any individual prediction deserves.
How predictions work
For every listing we publish a predicted fair price. The model is a gradient-boosted regressor (XGBoost) trained on a rolling 365-day window of Helsinki listings — typically around 23,000 rows after we drop bulk-merge days from the training set. The 24 input features are:
- Size: floor area, room count
- Location: postcode, postcode median €/m² (computed out-of-fold to avoid leakage)
- Building age: year built
- Floor: apartment floor, total floors in building
- Condition: Finnish text labels (hyvä, tyydyttävä, huono…) parsed from the listing, plus a "condition known" indicator
- Pipe renovation: classified into done / planned / inspection / none / unknown, with year and confidence level (90% accuracy on a Finnish-pattern test set)
- Land ownership: own plot vs. leased (worth roughly 2–7% in price)
- Fees: monthly maintenance and capital fees, debt share where reported
- Amenities: elevator, sauna, balcony
- Marketplace flags: source, listing-status indicators
The training set uses a temporal split — older months train, newer months validate, the most recent test — so the held-out evaluation reflects the model's behaviour on unseen future listings rather than a random shuffle of the same period.
How accurate it is
Two numbers matter, measured against two different things:
- On the held-out test set (the most recent slice of asking prices the model never saw during training): MAE €40k, MAPE 12.0%, R² 0.92.
- On realised Helsinki sales (matches between our predictions and the actual closing prices, weighted to the wider Helsinki market): MAPE 17.3%, R² 0.91. 46% of sales close within ±10% of the model's prediction; 70% close within ±20%.
The realised-sales number is the one to anchor on if you're trying to gauge whether a specific prediction is "right." It includes the gap between asking price and final sale price (negotiation), plus the lag between when we score a listing and when it closes — neither of which the test set captures. We re-run this measurement weekly.
Accuracy varies by postcode and price band. Predictions are tightest in central south Helsinki (00100–00250, MAPE around 6–10%); they fan out for cheap stock (under €150k), peripheral postcodes, and very-high-value units.
The model retrains when the validator detects accuracy drift — typically every one to three months. Each candidate has to pass a seven-criterion promotion test (R², MAE, MAPE, train/test gap, leakage indicators) before going live, and the previous version is kept as an instant-rollback target.
What predictions aren't
Use the prediction the way you'd use a second opinion: as a sanity check on the asking price, a frame for negotiating, and a way to spot listings that are genuinely off-market value. Then go visit, talk to the building manager, and read the disclosure documents (yhtiöjärjestys, isännöitsijäntodistus, kuntotutkimukset).
Some specific things to watch for:
- Cheap stock (under €150k) is the hardest segment for the model — expect wider error there.
- Brand-new buildings and very recent gut-renovations sit outside the training distribution; the model will still produce a number but with less support.
- Pre-emption (lunastuspykälä) and HITAS regulation are flagged when present, but we don't model how much they cost a buyer.