Mietanalyse und RentEstimate¶
Status: verbindlich
Spezifikationsversion: 1.1.0
Modellbezug: 0.6.2
RentEstimate-Schema: 0.1.0
Stand: 2026-07-05
1. Zweck¶
Die Mietanalyse erzeugt einen nachvollziehbaren Vorschlag für die monatliche Nettokaltmiete. Sie ist ein Enrichment-Baustein für Einzel- und Batch-Analyse, keine eigene Investmentberechnung und keine rechtliche Feststellung zulässiger Miete.
2. Quellenarten¶
official_rent_reference
market_rent_dataset
wg_estimate
Offizielle Referenz, Angebotsmarktmiete, Bestandsmiete und WG-Schätzung werden nicht unkommentiert vermischt.
3. Datenfluss¶
Objektgrunddaten
-> RentReferenceLookup
-> RentEstimate
-> bewusste Übernahme oder transparenter Enrichment-Schritt
-> PropertyInput.rental.monthly_cold_rent
-> Single-Property-Engine
Nur published RentReferenceDatasets innerhalb ihres Scope dürfen automatisch verwendet werden.
4. Gemeinsamer RentEstimate-Vertrag¶
Pflichtfelder für alle Schätztypen:
rent_estimate_id
created_at
estimate_type
source_type
lookup_method
matched_location_level
cold_rent_per_sqm
monthly_cold_rent
confidence
confidence_level
confidence_method_version
required_fields_missing
warnings
Optionale oder quellabhängige Felder:
rent_reference_dataset_id
rent_reference_dataset_version
rent_reference_dataset_scope_id
matched_group_fields
p25_eur_per_sqm
median_eur_per_sqm
p75_eur_per_sqm
sample_size
data_from
data_until
fallback_reason
estimate_type beschreibt die fachliche Art der Schätzung:
official_rent_reference
market_rent_estimate
wg_estimate
source_type beschreibt die verwendete Quellenfamilie:
official_rent_reference
market_rent_dataset
wg_estimate
estimate_type = market_rent_estimate verwendet daher regelmäßig source_type = market_rent_dataset. Beide Felder sind bewusst nicht identisch.
5. Konditionale Pflichtfelder¶
5.1 market_rent_estimate¶
Zusätzlich Pflicht:
rent_reference_dataset_id
rent_reference_dataset_version
rent_reference_dataset_scope_id
matched_group_fields
p25_eur_per_sqm
median_eur_per_sqm
p75_eur_per_sqm
sample_size
5.2 official_rent_reference¶
Dataset- und Perzentilfelder sind nur Pflicht, wenn die offizielle Referenz tatsächlich als versioniertes Dataset mit statistischen Gruppen geführt wird. Eine direkte offizielle Einzelreferenz darf ohne P25, Median, P75 und Samplegröße gespeichert werden.
5.3 wg_estimate¶
Dataset- und Perzentilfelder sind nur Pflicht, wenn die WG-Schätzung auf einem entsprechenden versionierten Dataset basiert. Methodik und Annahmen müssen über lookup_method, Quelle, Confidence und Warnungen nachvollziehbar bleiben.
6. Confidence¶
confidence:
Zahl zwischen 0 und 1
confidence_level:
high
medium
low
insufficient
Aktuelle numerische Ableitung:
>= 0.85 -> high
>= 0.70 -> medium
>= 0.50 -> low
< 0.50 -> insufficient
Die Ableitung wird gespeichert als:
confidence_method_version = rent-confidence-0.1.0
Ein vorhandenes gültiges confidence_level hat bei der DQ-Auswertung Vorrang. Confidence berücksichtigt mindestens:
Dataset-Status
Stichprobengröße
Datenqualität
Match-Tiefe
Datenalter
Quellenqualität
Fallbacks
Ausschlussanteil
7. Kanonische Dataset-Namen¶
Verbindlich:
rent_reference_dataset_id
rent_reference_dataset_version
rent_reference_dataset_scope_id
Nur als Legacy-Lesealiase zulässig:
source_dataset_id
source_dataset_version
8. RentEstimateReference im PropertyInput¶
Die Referenz speichert mindestens:
rent_estimate_id
estimate_type
source_type
matched_location_level
matched_group_fields
confidence
confidence_level
confidence_method_version
warnings
Bei market_rent_estimate zusätzlich:
rent_reference_dataset_id
rent_reference_dataset_version
rent_reference_dataset_scope_id
p25_eur_per_sqm
median_eur_per_sqm
p75_eur_per_sqm
sample_size
data_from
data_until
fallback_reason
Damit bleiben Datenqualität, Reporting und Reproduzierbarkeit ohne erneuten Lookup möglich.
9. Segmentregeln¶
Ein automatischer Wohnungsmiet-Match trennt mindestens:
rent_type = cold
market_type
unit_scope
furnished
property_type
Nicht vermischen:
asking_rent und existing_rent
official_reference und Marktbeobachtung
apartment und room
commercial_unit und Wohnen
furnished und unfurnished
10. Aktuell unterstützte Matching-Hierarchie¶
Stadt + Stadtteil + Objekttyp + Zustand
Stadt + Stadtteil + Objekttyp
Stadt + Objekttyp
kein belastbarer Match
Die Segmentregeln bleiben auf jeder Fallback-Ebene erhalten.
Noch nicht Teil des aktuellen Vertrags:
Flächenklasse
Baujahresklasse
Postleitzahl als eigenständige Match-Ebene
11. Mietniveaus¶
P25 = konservative Mietschätzung
Median = Base-Mietschätzung
P75 = optimistische Mietschätzung
monthly_cold_rent
= selected_cold_rent_per_sqm × living_area_sqm
P25 und P75 werden nicht automatisch als Stress und Best verwendet.
12. Übernahme in PropertyInput¶
Der tatsächlich verwendete Mietwert speichert:
value
unit
origin
source
confidence
scenario_policy
value_status
rent_basis
rent_estimate_reference optional
rent_basis:
current_contract_rent
market_rent_estimate
target_rent
manual_assumption
Ein manueller Override erhält origin = manual. Ein ausdrücklich finaler Override erhält zusätzlich value_status = final und scenario_policy = fixed.
13. Warnungen¶
RENT_REFERENCE_NOT_FOUND
DATASET_NOT_PUBLISHED
DATASET_ARCHIVED
LOCATION_ONLY_CITY_LEVEL
DISTRICT_FALLBACK_USED
CONDITION_FALLBACK_USED
LOW_SAMPLE_SIZE
LOW_CONFIDENCE_RENT_ESTIMATE
MARKET_TYPE_MISMATCH
UNIT_SCOPE_MISMATCH
FURNISHING_MISMATCH
MANUAL_REVIEW_REQUIRED
14. Einzelanalyse¶
Objektdaten erfassen
published Dataset innerhalb seines Scope matchen
P25, Median und P75 anzeigen
Wert bewusst übernehmen
Herkunft, rent_basis, Szenario-Policy und Dataset-Metadaten speichern
15. Batch¶
NormalizedListing
-> RentReferenceLookup
-> RentEstimate
-> PropertyInput
Ein fehlgeschlagener Lookup beendet nicht den gesamten Batch. Der Datensatz bleibt mit Warnung und gegebenenfalls missing weiterverarbeitbar.
16. Beziehung zu Meine Objekte¶
Ein PropertyRecord speichert den tatsächlich verwendeten Mietwert und die RentEstimateReference. Ein gespeicherter Schätzwert wird nicht automatisch zu einer Mietbeobachtung.
17. Legacy¶
match_level -> matched_location_level
source_dataset_id -> rent_reference_dataset_id
source_dataset_version -> rent_reference_dataset_version
Neue Datensätze schreiben ausschließlich kanonische Namen.
18. Tests¶
draft und archived werden nicht automatisch verwendet
published wird nur innerhalb seines Scope angeboten
Marktart, Einheit und Möblierung bleiben getrennt
aktuelle Matching-Hierarchie wird eingehalten
P25, Median und P75 bleiben nachvollziehbar
market_rent_estimate verwendet source_type market_rent_dataset
market_rent_estimate speichert Dataset-ID, Version und Scope
confidence und confidence_level bleiben getrennt
numerische Confidence wird deterministisch kategorisiert
confidence_method_version wird gespeichert
manueller Override ist sichtbar
rent_basis bestimmt die Standard-Szenario-Policy
Legacy-Namen werden nur gelesen