fix(tradein/estimator): СберИндекс только вторичка + confidence dispersion-ceiling (R2 H1+H2) #2493

Merged
bot-backend merged 1 commit from fix/tradein-estimator-sber-confidence into main 2026-07-12 19:06:44 +00:00
Collaborator

R2 HIGH #1 + #2 (estimator, деньги + честность)

H1 — СберИндекс time-adjust брал ПЕРВИЧНЫЙ рынок для вторичных сделок (каждая оценка)
SBER_COEFF_DASHBOARDS предпочитал residential_real_estate_prices, а для обл.66 это 100% «Первичный рынок» (новостройки) → коррекция направленно противоположна вторичке (первичка Jan→May +0.89% vs вторичка −0.39%). Fix: preference → (real_estate_deals, dinamika-tsen-obyavlenii) (обе вторичка) + segment-guard в SQL (segment ILIKE '%вторичн%') как defense-in-depth. Live-verified: остаются только Вторичный-серии (113 + 53), первичка исключена.

H2 — confidence="medium" без потолка разброса (честность)
Ветка «≥4 адреса» не имела IQR-гейта → пул с ±45% разбросом + «расширили радиус из-за нехватки данных» уходил как «medium» вопреки собственному объяснению. Fix: medium требует IQR/median < 0.35; + force-low при fallback-расширении с разбросом > 0.30.

Regression-гейт

Перегенерён baseline (dedup OFF — как в гейте; документированная CLI-команда устарела с #2173, использовал точный путь гейта). Δ: ровно 1 из 277 фикстур-кейсов medium→low (высокодисперсный, справедливо) — calibration.medium.n 2→1 (mape 14.64→6.99 — ненадёжный кейс ушёл), low.coverage 81.82→81.88. Минимальна, обоснована. 127 тестов зелёные, гейт байт-зелёный к новому baseline.

Не в этом PR

Stale-СберИндекс (72д) — в коде НЕ трогаю: time-adjust валидно ре-базит Jan→May, сброс потерял бы валидную коррекцию. Реальный gap операционный (sber pull не гонялся с 19.06) → scheduler/ops.

## R2 HIGH #1 + #2 (estimator, деньги + честность) **H1 — СберИндекс time-adjust брал ПЕРВИЧНЫЙ рынок для вторичных сделок** *(каждая оценка)* `SBER_COEFF_DASHBOARDS` предпочитал `residential_real_estate_prices`, а для обл.66 это **100% «Первичный рынок»** (новостройки) → коррекция направленно противоположна вторичке (первичка Jan→May **+0.89%** vs вторичка **−0.39%**). Fix: preference → `(real_estate_deals, dinamika-tsen-obyavlenii)` (обе вторичка) + **segment-guard в SQL** (`segment ILIKE '%вторичн%'`) как defense-in-depth. Live-verified: остаются только Вторичный-серии (113 + 53), первичка исключена. **H2 — `confidence="medium"` без потолка разброса** *(честность)* Ветка «≥4 адреса» не имела IQR-гейта → пул с ±45% разбросом + «расширили радиус из-за нехватки данных» уходил как **«medium»** вопреки собственному объяснению. Fix: medium требует `IQR/median < 0.35`; + **force-low** при fallback-расширении с разбросом > 0.30. ## Regression-гейт Перегенерён baseline (dedup OFF — как в гейте; документированная CLI-команда устарела с #2173, использовал точный путь гейта). Δ: **ровно 1 из 277 фикстур-кейсов medium→low** (высокодисперсный, справедливо) — `calibration.medium.n 2→1` (mape 14.64→6.99 — ненадёжный кейс ушёл), `low.coverage 81.82→81.88`. Минимальна, обоснована. **127 тестов зелёные**, гейт байт-зелёный к новому baseline. ## Не в этом PR Stale-СберИндекс (72д) — в коде НЕ трогаю: time-adjust валидно ре-базит Jan→May, сброс потерял бы валидную коррекцию. Реальный gap операционный (sber pull не гонялся с 19.06) → scheduler/ops.
bot-backend added 1 commit 2026-07-12 19:04:32 +00:00
fix(tradein/estimator): СберИндекс — только вторичка + confidence dispersion-ceiling (R2 H1+H2)
All checks were successful
CI / changes (pull_request) Successful in 13s
CI Trade-In / changes (pull_request) Successful in 13s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 1m4s
c1a01fdbf9
H1 (деньги, каждая оценка): time-adjust ДКП-коридора брал СберИндекс `residential_real_estate_prices`,
а для обл.66 это 100% «Первичный рынок» (новостройки) → коррекция направленно противоположна
вторичке (первичка Jan→May +0.89% vs вторичка −0.39%). Fix: SBER_COEFF_DASHBOARDS →
(real_estate_deals, dinamika-tsen-obyavlenii) — обе вторичка; + segment-guard в SQL
(`segment ILIKE '%вторичн%'`) как defense-in-depth. Live-verified: остаются только Вторичный-серии.

H2 (честность): `_compute_confidence` ветка «≥4 адреса» не имела потолка разброса → пул с ±45%
IQR + «расширили радиус из-за нехватки данных» уходил как «medium» вопреки объяснению. Fix:
medium требует IQR/median < 0.35; + force-low при fallback-расширении с разбросом > 0.30.

Regression-гейт: перегенерён baseline (dedup OFF, как в гейте) — ровно 1 из 277 фикстур-кейсов
medium→low (высокодисперсный, справедливо): calibration.medium.n 2→1 (mape 14.64→6.99 —
ненадёжный ушёл), low.coverage 81.82→81.88. Δ минимальна и обоснована. 127 тестов зелёные.

Stale-СберИндекс (72д) — НЕ трогаю в коде: time-adjust валидно ре-базит Jan→May; сброс потерял
бы валидную коррекцию. Реальный gap операционный (pull не гонялся с 19.06) — в scheduler/ops.
bot-backend merged commit 0f4ed2f6e9 into main 2026-07-12 19:06:44 +00:00
bot-backend deleted branch fix/tradein-estimator-sber-confidence 2026-07-12 19:06:44 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: lekss361/gendesign#2493
No description provided.