feat(tradein/estimator): calibrated 80% prediction interval for expected_sold range (#1966) #2001
No reviewers
Labels
No labels
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
Fable 5 ревью
feedback/max
generative
GG-форсайт
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
вторичка
ИРД
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#2001
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/tradein-calibrated-expected-sold-pi"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Honest uncertainty for the trade-in estimate range (option B from the #1966 accuracy investigation). The old
expected_sold_rangewas the analog asking-IQR × ratio — a ~50% interval mislabeled as the estimate's range, so only 55% of actual sold prices landed inside it. Replaced with a calibrated ~80% prediction interval around the expected-sold point.actual_sold / expected_soldhas p10 = 0.649, p90 = 1.392.expected_sold_price × [0.649, 1.392]→ a genuine 80% PI.estimate_calibrated_pi_enabled(default ON);estimate_pi_low_mult/estimate_pi_high_multare tunable settings.Measured effect (frozen backtest gate, regenerated hermetically)
The point estimate is untouched — this is purely honest uncertainty quantification. The PI is wider (the honest cost of true 80% coverage vs the old mislabeled ~50% band) and asymmetric upward (luxury units sell above asking).
Why this and not point-recalibration
The investigation proved the per-segment point bias (элит −34%, эконом +17%) is unidentifiable from
es(R²=0.16; a globalg(es)recalibration worsens the tails — verified). The neighborhood signals (asking pool, micro-comps, same-address ДКП) all underprice elit because the premium lives in unobserved building quality — and the building-quality columns (house_class) are 0% populated, so a feature fix is gated on an enrichment backfill. The honest near-term move is calibrated uncertainty + (follow-up PR-2) a manual-review flag for high-value/low-confidence estimates.Test plan
tests/test_backtest_regression_gate.pygreen (replay == regenerated baseline)low ≤ point ≤ highinvariant (strengthened, not weakened) — reviewer-verified legitimateFollow-up
Refs #1966