"""Forecasting services — детерминированный форсайт-слой Site Finder v2. #951 (Site Finder v2 / «GG-форсайт», EPIC 7 «Чувствительность к ключевой ставке»). Этот пакет — фундамент data-independent логики прогноза: monthly макро-ряды, классификатор режима ставки, лаговые помощники. Всё ДЕТЕРМИНИРОВАННО, БЕЗ LLM. Слои (по PR): • macro_series (#951b) — monthly макро-ряд + классификатор режима ставки (X-ось §9.6). • sales_series (#951c) — monthly ряд продаж по сегменту (Y-ось §9.6). • rate_sensitivity (#951d) — §9.6 чувствительность продаж к key_rate (CORE, ADVISORY). • macro_coefficient (#951e) — §9.5 макро-коэффициент (композитный множитель, ADVISORY). • demand_normalization (#951f) — §9.4 нормализация спроса под смену режима ставки (ADVISORY). • demand_supply_forecast (#952a) — §9.8 центральный движок: спрос (§9.4×§9.5) vs предложение (§9.3) по горизонтам → баланс/индекс дефицита (СБОРКА, ADVISORY). • what_to_build (#981/952-B) — §9.7 ранкер сетки сегментов по deficit_index (прогон #980 per-cell → DESC «что строить»; СБОРКА, ADVISORY). • affordability (#981/952-B) — §7.9 MAI: ДЕГРАДИРОВАННЫЙ прокси платёжной нагрузки (субсид. ставка, дохода нет → low-confidence; СБОРКА, ADVISORY). • scenarios (#984/954-A) — §11 три макро-сценария (conservative/base/ aggressive) прогоном #952 под тремя конвертами ставки (СБОРКА, ADVISORY). • product_scoring (#985/954-B) — §14.2 десять продуктовых скоров ∈ [0,1] (выше= лучше) + взвешенный overall (renorm над доступными) + §16 причина на скор; сводит #950…#984 + live-стек, graceful-None, ADVISORY. • special_indices (#986/954-C) — §25 шесть специальных индексов (Launch Window, Product Void, Cannibalization, Competitor Strength, Artificial Demand, Cost-of- Error); сборка над #980/#981/§9.1/§9.2/§7.9, per-index graceful-None, ADVISORY. Источники данных: • макро — таблица macro_indicator через reader site_finder/macro.py (reuse). • продажи — objective_corpus_room_month / objective_lots (см. sales_series). """ from __future__ import annotations from app.services.forecasting.affordability import ( MortgageAffordabilityIndex, compute_affordability, ) from app.services.forecasting.confidence_engine import ( ConfidenceFactor, ReportConfidenceResult, compute_report_confidence, ) from app.services.forecasting.demand_normalization import ( DemandNormalization, compute_demand_normalization, normalization_factor, ) from app.services.forecasting.demand_supply_forecast import ( DemandSupplyForecast, compute_demand_supply_forecast, hold_last_rate, ) from app.services.forecasting.macro_coefficient import ( MacroCoefficient, assemble_coefficient, compute_macro_coefficient, f_issuance, f_mortgage_rate, f_overdue, f_rate, renormalize_contributions, segment_steepness, ) from app.services.forecasting.macro_series import ( MonthlyMacro, classify_regime, get_monthly_macro, is_confounded_window, macro_at_lag, ) from app.services.forecasting.product_scoring import ( ProductScore, ProductScoreCard, compute_score_card, ) from app.services.forecasting.rate_sensitivity import ( RateSensitivity, best_lag, compute_rate_sensitivity, ols_slope_r2, shrink, ) from app.services.forecasting.report import ( ReportConfidence, ReportExecSummary, ReportFutureMarket, ReportMarketNow, ReportMeta, ReportProductTz, ReportScenarios, ReportScoring, SiteFinderReport, ) from app.services.forecasting.sales_series import ( SalesSeries, SegmentSpec, build_sales_series, fill_month_grid, log_diff, price_bucket_of, room_area_bucket_of, ) from app.services.forecasting.scenarios import ( ScenarioForecast, build_rate_envelopes, compute_scenarios, ) from app.services.forecasting.special_indices import ( SpecialIndex, SpecialIndices, compute_special_indices, ) from app.services.forecasting.what_to_build import ( RankedSegment, WhatToBuildRanking, rank_segments, ) __all__ = [ "ConfidenceFactor", "DemandNormalization", "DemandSupplyForecast", "MacroCoefficient", "MonthlyMacro", "MortgageAffordabilityIndex", "ProductScore", "ProductScoreCard", "RankedSegment", "RateSensitivity", "ReportConfidence", "ReportConfidenceResult", "ReportExecSummary", "ReportFutureMarket", "ReportMarketNow", "ReportMeta", "ReportProductTz", "ReportScenarios", "ReportScoring", "SalesSeries", "ScenarioForecast", "SegmentSpec", "SiteFinderReport", "SpecialIndex", "SpecialIndices", "WhatToBuildRanking", "assemble_coefficient", "best_lag", "build_rate_envelopes", "build_sales_series", "classify_regime", "compute_affordability", "compute_demand_normalization", "compute_demand_supply_forecast", "compute_macro_coefficient", "compute_rate_sensitivity", "compute_report_confidence", "compute_scenarios", "compute_score_card", "compute_special_indices", "f_issuance", "f_mortgage_rate", "f_overdue", "f_rate", "fill_month_grid", "get_monthly_macro", "hold_last_rate", "is_confounded_window", "log_diff", "macro_at_lag", "normalization_factor", "ols_slope_r2", "price_bucket_of", "rank_segments", "renormalize_contributions", "room_area_bucket_of", "segment_steepness", "shrink", ]