feat(financial/dcf): dormant separate-index inflation capability (default OFF) #1906
No reviewers
Labels
No labels
admin
analytics
auth
automation
bug
business
chore
ci
compliance
data
data-moat
docs
duplicate
dx
enhancement
Fable 5 ревью
feedback/max
generative
GG-форсайт
needs-discussion
needs-human
observability
pause-bots
performance
priority/p0
priority/p1
priority/p2
priority/p3
scope/backend
scope/db
scope/devops
scope/frontend
scope/qa
scrapers
security
site-finder
stage/1
stage/2
status/blocked
status/done
status/needs-analysis
status/needs-fix
status/qa
status/ready
status/review
status/wip
tech-debt
tradein
ux
week ревью 1
wontfix
вторичка
ИРД
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference: lekss361/gendesign#1906
Loading…
Add table
Reference in a new issue
No description provided.
Delete branch "feat/dcf-inflation-indices"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Закрывает последний пункт остатка #1881 — раздельные инфляция-индексы СМР/цены — безопасным способом.
Контекст и риск
Excel-эталон применяет раздельную инфляцию к СМР-затратам и цене продажи по горизонту. Scoping показал: это ломает инвариант
Σ cashflow == net_profit(номинальный DCF vs today-money БДР) и материально меняет headline NPV для всех проектов — поэтому реализовано как дремлющая capability, выключенная по умолчанию.Что
_build_monthly_cashflowполучилsmr_inflation_annual=0.0/sale_inflation_annual=0.0: помесячно-компаундная эскалация СМР-затрат (ПИР + СМР-бандл) и выручки. Земля НЕ эскалируется (t0-лумп). Маркетинг/НДС/налог прорейтятся на эскалированную выручку (тотал сохранён, только перераспределён по времени)._SMR_INFLATION_ANNUAL = _SALE_INFLATION_ANNUAL = 0.0→compute_financialпередаёт 0.0 → capability ВЫКЛ.Zero-diff гарантия (deep-review verified)
При дефолте
(1+0)**t == 1.0→ cashflow байт-в-байт идентичен прежнему → инвариантΣ cashflow == net_profitи все 57 прежних тестов проходят без изменений. Deep-review независимо проверил IEEE-754 идентичность + proration-denominator guard (denominator = rawrevenueпри выкл). Blast radius при дефолте: ноль.Включение — отдельная калибровка
Enable требует: (а) калиброванных индексов (ориентиры Rosstat ~7-8% СМР / ~6% цена) и (б) решения переосмыслить headline-инвариант (номинальный DCF vs real БДР). Задокументировано в docstring. Плумбинг готов, протестирован, выключен.
Тесты
+10 (zero-diff байт-в-байт, компаундинг-фактор, NPV монотонно убывает по СМР-инфляции, земля не эскалируется, номинальная Σ расходится с net_profit при вкл). 67 passed, mypy strict clean, ruff clean. Без schema/API/codegen (capability внутренняя). Deep-review ✅.
Refs #1881