Привет! Я построил простую экономико‑математическую модель жилищного бюджета домохозяйства, подставил в неё актуальные данные по Санкт‑Петербургу на 2026 год и прогнал несколько сценариев. Код выложил на GitHub, а здесь — результаты, графики и все входные данные, чтобы можно было воспроизвести.
GitHub: https://github.com/CheesePunk/Housing-Budget-Model
Входные данные (Санкт‑Петербург, 2026)
|
Параметр |
Значение |
Источник / обоснование |
|---|---|---|
|
Площадь |
24 м² |
базовая студия |
|
Цена м² (вторичка) |
≈ 180 000 ₽ |
ориентир по рынку СПб, 2026 |
|
Первоначальный взнос |
20% |
стандарт банков |
|
Ставка ипотеки |
18.7% годовых |
средневзвешенная рыночная на середину октября 2026 |
|
Срок |
20 лет |
база |
|
Доход |
128 000 ₽/мес |
средняя зарплата в СПб, июль 2026 |
|
Содержание (ЖКХ + ремонт + страхование) |
9 000 ₽/мес |
оценка для студии |
|
Порог θ |
0.45 |
доля платежей в доходе |
|
Аренда |
900 ₽/м²/мес |
ориентир для студии в СПб |
|
Инфляция аренды |
6% годовых |
исторический тренд |
|
Доходность инвестиций |
14% годовых |
депозит / фонд денежного рынка |
Что сразу бросается в глаза: ставка 18.7% — это не «стресс‑тест», это реальность 2026 года. Средняя зарплата 128 тыс. ₽ — тоже реальность. Вопрос в том, выдерживает ли бюджет такое сочетание.
На момент прочтения статьи данные могут оказаться неактуальны, но это не делает модель и саму программу нерабочей, в ваших нуждах вы можете использовать свои данные
Базовый расчёт
-
Цена студии: 24 × 180 000 = 4 320 000 ₽
-
Взнос 20%: 864 000 ₽
-
Кредит: 3 456 000 ₽
-
Аннуитет при 18.7% на 20 лет: ≈ 54 800 ₽/мес
-
Содержание: 9 000 ₽/мес
-
Итого платёж: ≈ 63 800 ₽/мес
Доля в доходе:
Порог θ = 0.45 пробит. Даже при средней петербургской зарплате ипотека на студию 24 м² по рыночной ставке формально неустойчива: платежи занимают почти половину дохода.
(M+R)/Y видно, что кривая почти сразу уходит выше порога θ = 0.45 — бюджет формально неустойчив.Что показывает Монте‑Карло (300 траекторий)
Я прогнал модель со случайным доходом (волатильность 5% в месяц) и случайной ценой м². Вот что получилось:
|
Метрика |
Среднее |
p10 (пессимист) |
p90 (оптимист) |
|---|---|---|---|
|
Доля месяцев с (M+R)/Y > θ |
≈ 0.62 |
≈ 0.40 |
≈ 0.82 |
|
Доля месяцев с дефицитом дохода |
≈ 0.12 |
≈ 0.04 |
≈ 0.22 |
|
Итоговый капитал, тыс. ₽ |
≈ 3 200 |
≈ 2 100 |
≈ 4 500 |
Расшифровка: в среднем 62% месяцев бюджет выходит за порог устойчивости. В 10% траекторий это происходит в 82% месяцев — то есть человек почти постоянно живёт на грани. Дефицит дохода (когда зарплаты не хватает на платёж + минимум на жизнь) возникает в среднем 12% месяцев, а в плохих сценариях — 22%.
Это не риск, это системная характеристика текущей конъюнктуры.
Покупка vs аренда (на тех же шоках)
Аренда студии 24 м² по 900 ₽/м² = 21 600 ₽/мес. Покупка стоит 63 800 ₽/мес. Разница — 42 200 ₽/мес в пользу аренды. Эти деньги арендатор инвестирует.
|
Метрика |
Покупка |
Аренда |
|---|---|---|
|
Среднее итоговое благосостояние, тыс. ₽ |
≈ 3 200 |
≈ 2 800 |
|
Средняя полезность |
≈ 11 500 |
≈ 13 200 |
|
Среднее потребление, ₽/мес |
≈ 64 200 |
≈ 106 400 |
|
Доля траекторий |
Значение |
|---|---|
|
Покупка богаче аренды |
≈ 0.58 |
|
Покупка полезнее аренды |
≈ 0.21 |
Вывод: покупка всё ещё чуть чаще выигрывает по деньгам (58% против 42%) — за счёт роста цены м² и амортизации долга инфляцией. Но по полезности аренда выигрывает с разгромным счётом: 79% траекторий в пользу аренды. Потребление арендатора в среднем на 42 тыс. ₽/мес выше — это разница между «жить нормально» и «жить от зарплаты до зарплаты».
Точка безубыточности
При текущих параметрах:
|
Метрика |
Значение |
|---|---|
|
|
≈ 9.8% годовых |
|
|
≈ −2% годовых |
Чтобы арендатор догнал покупателя по деньгам к концу срока, ему нужна доходность инвестиций ≈ 9.8%. Если у тебя есть доступ к депозиту или фонду денежного рынка под 14% (а в 2026 такие ставки реальны), аренда выгоднее по деньгам. По полезности порог отрицательный — арендатору не нужно ничего инвестировать, чтобы жить лучше; он выигрывает просто за счёт свободного кэша.
Чувствительность к ставке
Вот как меняется картина при снижении ставки (при тех же ценах и доходе):
|
Ставка |
Аннуитет, ₽/мес |
(M+R)/Y |
Статус |
|---|---|---|---|
|
18.7% (сейчас) |
≈ 54 800 |
0.498 |
прорыв |
|
16% |
≈ 48 500 |
0.449 |
на грани |
|
14% |
≈ 42 800 |
0.404 |
устойчиво |
|
12% |
≈ 37 600 |
0.364 |
устойчиво |
Чтобы ипотека на студию в СПб стала формально устойчивой при доходе 128 тыс. ₽, ставка должна опуститься ниже ~16%. Пока рынок даёт 18.7% — бюджет на грани или за гранью.
Что это значит на практике
-
Средняя зарплата не спасает. Даже при 128 тыс. ₽/мес студия 24 м² по рыночной ипотеке 2026 года забирает ~50% дохода. Это выше комфортного порога.
-
Резерв обязателен. 12% месяцев с дефицитом дохода — это не «чёрный лебедь», это регулярное событие. Без подушки в 6+ месяцев расходов бюджет реально ломается.
-
Аренда + инвестиции — рациональная стратегия при текущих ставках. Если есть возможность вкладывать разницу под ~14% (а такие инструменты есть), аренда выигрывает и по деньгам, и по качеству жизни.
-
Покупка имеет смысл при трёх условиях: ставка ниже ~16%, доход выше ~140 тыс. ₽, или готовность жить с долей платежей 50%+ ради владения.
Кратко о том как работает код
Под капотом — один файл на Python. Логика такая:
-
Задаются параметры — площадь, цена м², ставка, доход, аренда и так далее. Все они вынесены в dataclass‑параметры (
HousingParams,AgentParams,RentParams), поэтому менять их можно либо флагами командной строки, либо прямо в коде. -
Строится базовая траектория покупки: считается аннуитет, месяц за месяцем уменьшается долг, растёт собственный капитал, пополняется резерв на содержание. На каждом шаге проверяются два условия устойчивости — доля платежей в доходе не выше θ и резерв не ниже φ месяцев расходов.
-
Доход и цена м² моделируются как случайные процессы: доход — AR(1) с шоком, цена — инфляция или геометрическое броуновское движение. Поэтому один прогон — это одна «случайная вселенная», а Монте‑Карло — это N таких вселенных.
-
Сравнение с арендой идёт на тех же шоках: арендатор платит аренду, а разницу между аннуитетом и арендой инвестирует. В конце сравниваются итоговое благосостояние и полезность.
-
Точка безубыточности ищется бисекцией: подбирается такая доходность инвестиций, при которой среднее благосостояние арендатора равно среднему благосостоянию покупателя.
-
Результаты сохраняются в папку
output/: PNG‑графики, CSV‑таблицы и NPZ с сырыми массивами. Всё воспроизводимо: при одном и том же--seedи одинаковых параметрах числа совпадут.
Кратко как пользоваться
Установка:
pip install numpy pandas matplotlib scipy
Запуск с параметрами (те самые, что в таблице входных данных):
python housing_budget_model.py --mode all --out output
--area 24 --price-m2 180000 --down-payment 0.20
--rate 0.187 --years 20 --income 128000
--maintenance 9000 --theta 0.45 --rent-m2 900
--rent-inflation 0.06 --investment-rate 0.14
--n-paths 500 --seed 2026
(здесь пришлось пожертвовать удобством копирования кода в угоду красоте, в статье на GitHub копировать код удобней)
Полный список флаги, все их можно изменить под свои нужды, кратко по ним:
|
Флаг |
Что означает |
Пример |
|---|---|---|
|
|
площадь квартиры, м² |
|
|
|
цена квадратного метра, ₽ |
|
|
|
доля первоначального взноса (0…1) |
|
|
|
годовая ставка ипотеки (0…1) |
|
|
|
срок ипотеки, лет |
|
|
|
доход, ₽/мес |
|
|
|
расходы на содержание, ₽/мес |
|
|
|
порог доли платежей в доходе (0…1) |
|
|
|
аренда, ₽/м²/мес |
|
|
|
годовой рост аренды (0…1) |
|
|
|
годовая доходность инвестиций (0…1) |
|
|
|
как меняется цена м²: |
|
|
|
сколько траекторий Монте‑Карло |
|
|
|
зерно случайности (для воспроизводимости) |
|
|
|
папка для результатов |
|
В конечном итоге вы получите папку output, в которой будут:
|
Файл |
Что это |
|---|---|
|
|
график базового сценария |
|
|
гистограммы Монте‑Карло |
|
|
сырые массивы Монте‑Карло |
|
|
сравнение покупки и аренды |
|
|
сырые массивы сравнения |
|
|
точка безубыточности |
|
|
тепловая карта по ставке и цене |
|
|
таблица тепловой карты |
|
|
срез по ставке аренды |
|
|
таблица среза |
|
|
сводка ключевых метрик |
Ссылки
-
GitHub:
https://github.com/CheesePunk/Housing-Budget-Model
Спасибо, что дочитали. Это моя первая статья — буду рад конструктивной критике, особенно по модели и по данным. Стоит понимать, что это лишь упрощённая модель, но провести расчёты с вашими данными она может, на GitHub лежит полная статья со всеми формулами и более подробным объяснением программного кода, так же там вы найдёте полную инструкцию по эксплуатации программы. Надеюсь, статья была вам интересна, спасибо за внимание!
Автор: chees_punk
