Analytics: mortgage-rate sensitivity — 'что будет, если ставка вырастет на 1pp?' #20

Closed
opened 2026-04-30 19:48:35 +00:00 by lekss361 · 2 comments
lekss361 commented 2026-04-30 19:48:35 +00:00 (Migrated from github.com)

Идея

В cbr_mortgage_series загружены ИЖК-ставки по 36+ месяцам. У domrf_kn_sale_graph есть velocity по тем же месяцам. Можно посчитать корреляцию ставки и темпа продаж per-region, чтобы давать застройщикам прогноз: «если ЦБ поднимет на 1pp — продажи упадут на N%».

Что сделать

Backend:

  • app/services/analytics/mortgage_sensitivity.py — функция mortgage_velocity_sensitivity(db, region_code, lookback_months=24) возвращает:
    • elasticity_per_pp_change — float, "сколько % падения velocity при +1pp ставки"
    • r2 — качество регрессии
    • n — сколько (month, ставка, средняя velocity региона) точек
    • sample_history — массив [{month, rate_pct, region_velocity_pm}, ...] для графика
    • confidence — 'high'/'medium'/'low' по R²
  • GET /api/v1/analytics/mortgage-sensitivity?region_code=66 — JSON

Frontend:

  • На /analytics — новый KPI блок «Чувствительность к ставке ЦБ»
    • Большая цифра: «при +1pp → -X% продаж»
    • Двухосный график: ставка (правая ось) vs средний темп региона (левая)
    • Tooltip с R² и confidence

Бизнес-применение:

  • Стресс-тест: «если ставка скакнёт до 25%, что произойдёт с нашими продажами»
  • Поддержка решений по subsidy-программам (когда застройщик субсидирует ставку)

Acceptance

  • Для региона 66 возвращается elasticity_per_pp_change ≈ -3..-5% (исторически известное значение)
  • R² ≥ 0.3
  • График корректно отображает обе серии за 24 мес

Effort

~1.5 дня (backend regression + UI graph).

## Идея В `cbr_mortgage_series` загружены ИЖК-ставки по 36+ месяцам. У `domrf_kn_sale_graph` есть velocity по тем же месяцам. Можно посчитать корреляцию ставки и темпа продаж per-region, чтобы давать застройщикам прогноз: «если ЦБ поднимет на 1pp — продажи упадут на N%». ## Что сделать **Backend:** - `app/services/analytics/mortgage_sensitivity.py` — функция `mortgage_velocity_sensitivity(db, region_code, lookback_months=24)` возвращает: - elasticity_per_pp_change — float, "сколько % падения velocity при +1pp ставки" - r2 — качество регрессии - n — сколько (month, ставка, средняя velocity региона) точек - sample_history — массив `[{month, rate_pct, region_velocity_pm}, ...]` для графика - confidence — 'high'/'medium'/'low' по R² - `GET /api/v1/analytics/mortgage-sensitivity?region_code=66` — JSON **Frontend:** - На `/analytics` — новый KPI блок «Чувствительность к ставке ЦБ» - Большая цифра: «при +1pp → -X% продаж» - Двухосный график: ставка (правая ось) vs средний темп региона (левая) - Tooltip с R² и confidence **Бизнес-применение:** - Стресс-тест: «если ставка скакнёт до 25%, что произойдёт с нашими продажами» - Поддержка решений по subsidy-программам (когда застройщик субсидирует ставку) ## Acceptance - [ ] Для региона 66 возвращается elasticity_per_pp_change ≈ -3..-5% (исторически известное значение) - [ ] R² ≥ 0.3 - [ ] График корректно отображает обе серии за 24 мес ## Effort ~1.5 дня (backend regression + UI graph).
Owner

Status update — НЕ реализовано. app/services/analytics/mortgage_sensitivity.py не создан. Endpoint /api/v1/analytics/mortgage-sensitivity отсутствует. KPI блок «Чувствительность к ставке ЦБ» на /analytics не добавлен.

cbr_mortgage_series + domrf_kn_sale_graph данные есть — foundation готов. Issue остаётся в backlog priority/normal. ~1.5 дня effort.

Status update — НЕ реализовано. `app/services/analytics/mortgage_sensitivity.py` не создан. Endpoint `/api/v1/analytics/mortgage-sensitivity` отсутствует. KPI блок «Чувствительность к ставке ЦБ» на `/analytics` не добавлен. `cbr_mortgage_series` + `domrf_kn_sale_graph` данные есть — foundation готов. Issue остаётся в backlog priority/normal. ~1.5 дня effort.
Collaborator

Ground-truth 2026-06-13. DRIFT: rate_sensitivity.py (§9.6, #951) — OLS Δln(units)~Δkey_rate, лаги, shrinkage, x_pct=% на +1пп — реализовано и wired в §22 forecast report (GET /{cad}/forecast). macro_indicator 2428 строк. Advisory-статус (до бэктеста), но функция есть.

**Ground-truth 2026-06-13.** DRIFT: rate_sensitivity.py (§9.6, #951) — OLS Δln(units)~Δkey_rate, лаги, shrinkage, x_pct=% на +1пп — реализовано и wired в §22 forecast report (GET /{cad}/forecast). macro_indicator 2428 строк. Advisory-статус (до бэктеста), но функция есть.
Sign in to join this conversation.
No milestone
No project
No assignees
3 participants
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#20
No description provided.