fix(site-finder): volume-weighted median_price_m2 (#1511) + consistent-period MTS (#1512) #1690

Merged
lekss361 merged 1 commit from fix/match-economics-1511-1512 into main 2026-06-17 18:05:15 +00:00
Owner

#1511 — median_price_m2 не взвешен по объёму

06_match_economics.py: prices[len//2] — равный вес каждой строке corpus×month (студия = 3-к). → взвешенная медиана по sold_volume_m2 (накопление весов до 50-го перцентиля, fallback вес=1.0 при отсутствии объёма).

#1512 — months_to_sellout смешивал периоды

ROW_NUMBER брал последний месяц каждого корпуса в окне → сток из разных периодов в числителе при sold-volume за все 3 мес. → сток пиннится к единому latest_month для всех корпусов; числитель/знаменатель MTS период-консистентны.

Verify

ruff clean (+10 pre-existing нарушений почищены), py_compile ok. Standalone SQLite-скрипт — pytest-сьюта нет.

Closes #1511
Closes #1512

## #1511 — median_price_m2 не взвешен по объёму `06_match_economics.py`: `prices[len//2]` — равный вес каждой строке corpus×month (студия = 3-к). → взвешенная медиана по `sold_volume_m2` (накопление весов до 50-го перцентиля, fallback вес=1.0 при отсутствии объёма). ## #1512 — months_to_sellout смешивал периоды ROW_NUMBER брал последний месяц каждого корпуса в окне → сток из разных периодов в числителе при sold-volume за все 3 мес. → сток пиннится к единому `latest_month` для всех корпусов; числитель/знаменатель MTS период-консистентны. ## Verify `ruff` clean (+10 pre-existing нарушений почищены), `py_compile` ok. Standalone SQLite-скрипт — pytest-сьюта нет. Closes #1511 Closes #1512
lekss361 added 1 commit 2026-06-17 17:56:30 +00:00
fix(site-finder): volume-weighted median_price_m2 (#1511) + consistent-period months_to_sellout (#1512)
All checks were successful
CI / changes (push) Successful in 7s
CI / changes (pull_request) Successful in 7s
CI / backend-tests (push) Has been skipped
CI / frontend-tests (push) Has been skipped
CI / openapi-codegen-check (push) 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
6d550e00b2
#1511: replace equal-weight per-row median with volume-weighted median
(sorted by price, cumulative sold_volume_m2 weight, stop at 50th percentile).
Each corpus×month row now counts proportionally to its deal volume instead of
contributing equal weight regardless of how many flats were sold.

#1512: pin latest_stock to the single most-recent month in the window (last3[0])
instead of per-corpus ROW_NUMBER latest. Stale stock from inactive corpuses no
longer inflates the MTS numerator; stock and sold_volume_m2 denominator now
refer to the same consistent period.

Also clean pre-existing ruff E401/E701/E702/E722 violations (no logic change).
lekss361 merged commit 40c58c15b1 into main 2026-06-17 18:05:15 +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#1690
No description provided.