Datenqualitätsbewertung der Investitionsanalyse¶
Status: verbindlich
Spezifikationsversion: 1.1.0
Modellbezug: 0.6.2
Methodenversion: analysis-dq-0.2.0
Stand: 2026-07-05
1. Zweck¶
Die Datenqualitätsbewertung beantwortet:
Wie vollständig, nachvollziehbar und belastbar sind die Eingaben,
auf denen die konkrete Investitionsanalyse beruht?
Sie verändert keine Finanzformel. Sie wirkt auf Rating, Warnungen, Confidence, Ranking und offene Prüfungen.
2. Getrennte Qualitätsbegriffe¶
ListingDataQualityAssessment
Qualität externer Angebots- und Importdaten
RentEstimateConfidence
Belastbarkeit einer Mietschätzung
AnalysisDataQualityAssessment
Qualität des tatsächlich berechneten PropertyInput
Nur AnalysisDataQualityAssessment steuert Investment Rating und Scenario Ratings.
3. Struktur¶
data_quality_score_total
required_fields_score
location_match_score
rent_estimate_score
cost_data_score
condition_score
financing_data_score
status
warnings
method_version
Alle Scores liegen zwischen 0 und 100.
4. Gewichtung und Rundung¶
required_fields_score: 30 %
location_match_score: 10 %
rent_estimate_score: 20 %
cost_data_score: 15 %
condition_score: 10 %
financing_data_score: 15 %
data_quality_score_total
= round(
required_fields_score × 0.30
+ location_match_score × 0.10
+ rent_estimate_score × 0.20
+ cost_data_score × 0.15
+ condition_score × 0.10
+ financing_data_score × 0.15
)
Jeder Komponentenscore wird vor der Gesamtgewichtung auf eine ganze Zahl zwischen 0 und 100 gerundet.
5. Status¶
good: score >= 75
borderline: 50 <= score < 75
insufficient: score < 50 oder Score fehlt
Bei insufficient gilt:
Investment Rating = UNRATED
Scenario Ratings = UNRATED
6. Required Fields¶
Bewertete Felder:
purchase_price
living_area_sqm
monthly_cold_rent
closing_costs_pct
requested_equity_contribution
interest_initial_pct
amortization_initial_pct
term_years
Gültigkeit:
purchase_price > 0
living_area_sqm > 0
monthly_cold_rent > 0
closing_costs_pct ist Zahl >= 0
requested_equity_contribution ist Zahl >= 0
interest_initial_pct ist Zahl >= 0
amortization_initial_pct ist Zahl >= 0
term_years ist positive ganze Zahl
required_fields_score
= round(Anzahl gültiger Felder / 8 × 100)
Fehlende oder ungültige Felder erzeugen REQUIRED_FIELD_MISSING.
7. Location Match¶
Stadt + Stadtteil: 100
Stadt + Postleitzahl: 90
nur Stadt: 75
nur unstrukturierte Lageangabe: 55
keine Lageangabe: 25
Die Lagebewertung misst Datenauflösung, nicht Standortqualität.
8. Rent Estimate¶
Voraussetzung ist eine positive monthly_cold_rent.
keine positive Miete: 0
RentEstimate, confidence_level high: 100
RentEstimate, confidence_level medium: 85
RentEstimate, confidence_level low: 65
RentEstimate, confidence_level insufficient: 55
RentEstimate ohne auswertbare Confidence: 55
manuell eingegebene Nettokaltmiete: 85
imported oder scraped ohne RentEstimate: 85
estimated ohne RentEstimate: 65
derived ohne RentEstimate: 70
default ohne RentEstimate: 45
missing oder unbekannt: 0
8.1 Numerische Confidence¶
confidence ist eine Zahl zwischen 0 und 1. Die kanonische Ableitung lautet:
confidence >= 0.85 -> high
confidence >= 0.70 und < 0.85 -> medium
confidence >= 0.50 und < 0.70 -> low
confidence < 0.50 -> insufficient
Auswertungsreihenfolge:
1. gültiges confidence_level
2. numerische confidence gemäß obiger Tabelle
3. keine auswertbare Confidence
confidence_level und numerische confidence werden beide gespeichert. Die Ableitung trägt eine eigene confidence_method_version, aktuell:
rent-confidence-0.1.0
Die DQ-Methode 0.2.0 verwendet diese numerische Ableitung ausdrücklich; sie ist keine bloße Legacy-Heuristik.
9. Herkunftsscore für Kosten und Finanzierung¶
manual: 100
imported oder scraped: 90
derived: 75
object_type_adjusted: 75
scenario: 75
estimated: 70
default: 60
missing oder unbekannt: 0
Für Finanzierungsdefaults gilt abweichend:
default: 65
10. Cost Data¶
Bewertete Felder:
closing_costs_pct
initial_renovation_costs
non_recoverable_operating_costs_pa
reserve_contribution_pa
recurring_capex_method
Das aktive CAPEX-Wertfeld wird durch Schema- und Semantikvalidierung geprüft, aber in Methodenversion 0.2.0 nicht als eigenes sechstes Scorefeld gewichtet.
cost_data_score
= round(Mittelwert der fünf Herkunftsscores)
Ein fehlender Feldwert erhält 0. Ein Score unter 75 erzeugt COST_DATA_PARTLY_DEFAULTED.
11. Condition¶
Zustand und Baujahr vorhanden: 100
Zustand vorhanden: 80
nur Baujahr vorhanden: 60
beides unbekannt: 40
condition_class = unknown gilt als nicht vorhanden.
12. Financing Data¶
Bewertete Felder:
requested_equity_contribution
interest_initial_pct
amortization_initial_pct
interest_reset_year
interest_reset_pct
financing_data_score
= round(Mittelwert der fünf Herkunftsscores)
Ein fehlender oder nicht numerischer Feldwert erhält 0. Ein Score unter 75 erzeugt FINANCING_DATA_PARTLY_DEFAULTED.
13. Warnungsvertrag¶
code
severity
message
affected_fields
Zulässige Severity:
info
warning
critical
Verbindliche Codes:
REQUIRED_FIELD_MISSING
LOCATION_MISSING
LOCATION_ONLY_CITY_LEVEL
LOCATION_UNSTRUCTURED
RENT_MISSING
LOW_CONFIDENCE_RENT_ESTIMATE
RENT_ESTIMATE_CONFIDENCE_MISSING
RENT_SOURCE_WEAK
COST_DATA_PARTLY_DEFAULTED
CONDITION_UNKNOWN
CONDITION_AND_YEAR_MISSING
FINANCING_DATA_PARTLY_DEFAULTED
Legacy-Severity high und medium dürfen gelesen, aber nicht neu geschrieben werden.
14. Speicherung¶
PropertyInput.meta.data_quality_assessment
AnalysisResult.data_quality_assessment
PropertyRecord.data_quality_assessment
Kompatibilitätswerte:
PropertyInput.meta.data_quality_score
ScenarioInput.data_quality_score
KPIResult.data_quality_score
Diese Werte müssen data_quality_score_total entsprechen.
15. Versionierung¶
Jedes Assessment speichert:
method_version = analysis-dq-0.2.0
Änderungen an Komponenten, Gewichtung, Bewertungstabellen, Rundung, Confidence-Mapping oder Schwellen erfordern eine neue Methodenversion. Alte PropertyRecords werden nicht still neu bewertet.
16. Grenzen¶
Die Bewertung beweist nicht:
Richtigkeit externer Angaben
rechtliche Zulässigkeit
technischen Gebäudezustand
Verkehrswert
Finanzierungszusage
17. Tests¶
vollständiger Quick Mode erzeugt einen reproduzierbaren Score
Komponentenscores entsprechen den Tabellen
Gesamtscore entspricht Gewichtung und Rundungsregel
fehlende Pflichtfelder reduzieren required_fields_score
fehlende Lage erzeugt keinen Score 100
confidence_level hat Vorrang
numerische confidence wird deterministisch kategorisiert
Defaults reduzieren Kosten- und Finanzierungsscore
Score unter 50 führt zu UNRATED für Investment und Cases
Methodenversion wird in AnalysisResult und PropertyRecord gespeichert