test(tradein/backtest): эталон гейта после снятия квартала соседа
All checks were successful
CI Trade-In / changes (pull_request) Successful in 13s
CI / changes (pull_request) Successful in 13s
CI Trade-In / browser-tests (pull_request) Has been skipped
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 4m6s

Гейт `test_backtest_regression_gate` реплеит замороженную фикстуру (277 сделок)
прямо через `_price_from_inputs` с `target_house_cadnum=None`, минуя
`estimate_quality`. То есть на фикстуре меряется ровно снятие поправки по кварталу
СОСЕДА (координатный резолв в реплей не попадает — его делает вызывающий код).

Затронуто 30 сделок из 277 (10.8% — сходится с прод-оценкой поверхности ~10%);
множитель цены стало/было: min 0.704, медиана 1.019, max 1.661 (17 вверх / 13 вниз).

Сдвиг метрик (эталон → стало):
  expected_sold.overall.mape_pct   13.18 → 12.63  (−0.55)
  calibration.low.mape_pct          13.2 → 12.67  (−0.53)
  студии mape                      19.38 → 16.96  (−2.42)
  3к mape                           9.34 →  7.79  (−1.55)
  2к mape                          18.26 → 17.39  (−0.87)
  комфорт mape                     11.80 → 10.14  (−1.66)
  бизнес mape                      14.65 → 13.65  (−1.00)
УХУДШИЛОСЬ:
  эконом mape                      13.71 → 14.20  (+0.49), bias 2.54 → 3.33
  4+ mape                          16.30 → 16.38  (+0.08), bias 3.34 → −1.32
  хвосты: студии p75 34.32 → 38.82, бизнес p25 −22.93 → −27.15

Покрытие (82.09/82.16), sharpness (0.743), n по всем бакетам и headline не менялись.
Атрибуция: на origin/main регенерация тем же путём даёт эталон байт-в-байт,
расхождение появляется ровно от правки резолва квартала.
This commit is contained in:
bot-backend 2026-08-12 20:35:52 +05:00
parent 2bf9e76a10
commit 86cb294949

View file

@ -8,7 +8,7 @@
}, },
"low": { "low": {
"coverage_pct": 82.09, "coverage_pct": 82.09,
"mape_pct": 13.2, "mape_pct": 12.67,
"n": 276, "n": 276,
"n_covered": 220 "n_covered": 220
}, },
@ -26,22 +26,22 @@
], ],
"expected_sold": { "expected_sold": {
"overall": { "overall": {
"mape_pct": 13.18, "mape_pct": 12.63,
"median_bias_pct": -3.71, "median_bias_pct": -3.74,
"n": 269, "n": 269,
"n_no_analogs": 0, "n_no_analogs": 0,
"p25_pct": -16.11, "p25_pct": -15.17,
"p75_pct": 8.92 "p75_pct": 8.67
}, },
"per_rooms": { "per_rooms": {
"0": { "0": {
"label": "студия", "label": "студия",
"mape_pct": 19.38, "mape_pct": 16.96,
"median_bias_pct": 18.1, "median_bias_pct": 16.96,
"n": 35, "n": 35,
"n_no_analogs": 0, "n_no_analogs": 0,
"p25_pct": 1.5, "p25_pct": 1.5,
"p75_pct": 34.32 "p75_pct": 38.82
}, },
"1": { "1": {
"label": "1к", "label": "1к",
@ -50,50 +50,50 @@
"n": 93, "n": 93,
"n_no_analogs": 0, "n_no_analogs": 0,
"p25_pct": -14.43, "p25_pct": -14.43,
"p75_pct": 6.98 "p75_pct": 8.15
}, },
"2": { "2": {
"label": "2к", "label": "2к",
"mape_pct": 18.26, "mape_pct": 17.39,
"median_bias_pct": -12.2, "median_bias_pct": -11.71,
"n": 74, "n": 74,
"n_no_analogs": 0, "n_no_analogs": 0,
"p25_pct": -24.35, "p25_pct": -23.07,
"p75_pct": -0.36 "p75_pct": -0.36
}, },
"3": { "3": {
"label": "3к", "label": "3к",
"mape_pct": 9.34, "mape_pct": 7.79,
"median_bias_pct": -3.08, "median_bias_pct": -4.05,
"n": 43, "n": 43,
"n_no_analogs": 0, "n_no_analogs": 0,
"p25_pct": -10.26, "p25_pct": -10.26,
"p75_pct": 4.68 "p75_pct": 3.82
}, },
"4": { "4": {
"label": "4+", "label": "4+",
"mape_pct": 16.3, "mape_pct": 16.38,
"median_bias_pct": 3.34, "median_bias_pct": -1.32,
"n": 24, "n": 24,
"n_no_analogs": 0, "n_no_analogs": 0,
"p25_pct": -14.91, "p25_pct": -14.91,
"p75_pct": 15.11 "p75_pct": 15.41
} }
}, },
"per_segment": { "per_segment": {
"бизнес": { "бизнес": {
"mape_pct": 14.65, "mape_pct": 13.65,
"median_bias_pct": -10.54, "median_bias_pct": -10.54,
"n": 46, "n": 46,
"p25_pct": -22.93, "p25_pct": -27.15,
"p75_pct": -1.31 "p75_pct": -1.31
}, },
"комфорт": { "комфорт": {
"mape_pct": 11.8, "mape_pct": 10.14,
"median_bias_pct": -4.61, "median_bias_pct": -5.01,
"n": 101, "n": 101,
"p25_pct": -17.07, "p25_pct": -15.49,
"p75_pct": 6.04 "p75_pct": 4.37
}, },
"премиум": { "премиум": {
"mape_pct": 68.92, "mape_pct": 68.92,
@ -103,11 +103,11 @@
"p75_pct": -68.92 "p75_pct": -68.92
}, },
"эконом": { "эконом": {
"mape_pct": 13.71, "mape_pct": 14.2,
"median_bias_pct": 2.54, "median_bias_pct": 3.33,
"n": 115, "n": 115,
"p25_pct": -9.8, "p25_pct": -8.69,
"p75_pct": 25.5 "p75_pct": 27.3
}, },
"элит": { "элит": {
"mape_pct": 33.2, "mape_pct": 33.2,