Как устроена «Судьба рубля»: данные, источники и формулы

Как устроена «Судьба рубля»: данные, источники и формулы

Октябрь 2025. Я сижу над письмом в Мосбиржу — прошу прислать данные, которых нет у них на сайте. Неделей раньше полтора часа выбирал точку склейки двух индексов облигаций. Ещё раньше — пытался понять, почему у Росстата цены на недвижимость скачут на 15% за квартал без видимой причины.

Так выглядела работа над «Судьбой рубля» — приложением, которое ставит рядом 20 активов на фоне российской инфляции за 23 года. Красивый график на выходе, а за ним — цепочка компромиссов. За каждым источником данных своя история: где пришлось склеивать, где договариваться, а где — принять несовершенные данные, потому что лучших не существует.

На Западе есть Portfolio Visualizer, Curvo, testfol.io, Portfolio Charts — все они работают в долларах или евро, без российских активов, без рублёвой инфляции. Ни один из них не поможет россиянину, который хочет сравнить ОФЗ с недвижимостью в Москве или депозиты с золотом. «Судьба рубля» закрывает эту нишу.

В основной статье о калькуляторе я пообещал подробный разбор методологии. Эта статья — выполнение обещания. Каждый источник данных, каждая формула, каждый компромисс — чтобы вы могли решить сами, стоит ли доверять графикам.

7 источников данных

ИсточникЧто берёмАктивыОбновление
Московская биржа (ISS API)Индексы полной доходностиMCFTR, RGBITR, RUCBITR/RUCBTRNSЕжедневно
Alpha Vantage APIAdjusted close (Total Return)IVV, QQQ, IEF/IEIЕженедельно
ЦБ РФ (API + файл XLSX)Курсы валют, учётные цены металлов, ставки по депозитамUSD, EUR, GBP, CNY, золото, серебро, платина, депозитыЕжедневно / ежемесячно
Росстат (через StatBureau.org API)ИПЦ, цены на недвижимостьИнфляция, недвижимость (2003–2024)Ежемесячно
СберИндекс APIЦены сделок с недвижимостьюНедвижимость (с 2024)Ежемесячно
OECD (через DBnomics API)Price-to-Rent ratioАрендная доходностьДанные до Q1 2022
Kaggle / CoinMarketCap / BinanceИсторические котировкиBTC, ETHЕжедневно
Мосбиржа ISS API Alpha Vantage API ЦБ РФ (API + XLSX) Росстат / StatBureau СберИндекс API OECD / DBnomics Binance / Kaggle / CMC Python-скрипты source → processed Нормализация monthly → base 100 Агрегация → aggregated.json «Судьба рубля» BTC MCFTR S&P USD ИПЦ 2003 2013 2025 20 активов · Telegram Mini App Мосбиржа ISS API Alpha Vantage API ЦБ РФ (API + XLSX) Росстат / StatBureau СберИндекс API OECD / DBnomics Binance / Kaggle / CMC Python-скрипты source → processed Нормализация monthly → base 100 Агрегация → aggregated.json «Судьба рубля» BTC MCFTR S&P USD ИПЦ 2003 2013 2025 20 активов · Telegram Mini App
Автообновление каждый понедельник · GitHub Actions

Скрипты обновления запускаются каждый понедельник. Источники публикуют данные с разной частотой — от ежедневной (биржи, валюты) до ежемесячной (недвижимость, депозиты, инфляция). Автообновление — принципиальное требование к архитектуре: приложение без монетизации, а данные, которые нужно обновлять вручную, рано или поздно устаревают.

Валюты и драгоценные металлы — самое простое

Четыре валюты (доллар, евро, фунт, юань) и три металла (золото, серебро, платина) — ежедневные котировки ЦБ РФ. Один API, стабильный формат, данные с 2002 года без разрывов.

Фунт — скорее исторический артефакт: когда-то он был на слуху у российских инвесторов, сейчас это в прошлом. Юань — наоборот: пять лет назад его почти никто не отслеживал, а сегодня это одна из самых обсуждаемых валют.

Металлы — учётные цены ЦБ РФ. Не биржевые спотовые, а те, по которым ЦБ ведёт учёт. Для сравнения динамики на 23-летнем горизонте разница несущественна.

С валютами и металлами всё получилось чисто. Дальше будет сложнее.

Акции — индексы полной доходности

Ключевое слово — «полной доходности». Price return (просто изменение цены) не учитывает дивиденды. А на длинном горизонте дивиденды могут давать половину и больше от общей доходности акций. Для честного сравнения с облигациями, депозитами и недвижимостью нужен total return — рост цены плюс реинвестированные дивиденды. Все крупные бэктестеры работают именно так.

MCFTR — Мосбиржа

Индекс полной доходности Московской биржи, брутто-версия. На Мосбирже есть три варианта:

ТикерТипНалог на дивиденды
MCFTRБрутто (Gross)0%
MCFTRNНетто для нерезидентов15%
MCFTRRНетто для резидентов13%

Я использую MCFTR — без вычета налогов. Почему — объясню в секции «Чего калькулятор не учитывает».

Данные тянутся напрямую с Мосбиржи через ISS API.

S&P 500 и NASDAQ 100 — через ETF

Американские индексы я взял не напрямую, а через ETF: IVV для S&P 500 и QQQ для NASDAQ 100. Оба — в версии adjusted close, которая учитывает дивиденды и сплиты.

Почему ETF, а не чистый индекс? Две причины.

Первая: ETF — это реальный инструмент. Российский инвестор получал экспозицию на S&P 500 именно через фонды, не через покупку всех 500 акций напрямую. IVV и QQQ — как раз те фонды, которые для этого использовались.

Вторая: ETF учитывает расходы фонда. У IVV это 0.03% в год — ничтожно, но реально. Adjusted close ETF — это фактически gross total return минус расходы фонда. Tracking difference IVV к индексу S&P 500 Total Return — всего 0.02–0.03%.

Итого: MCFTR — gross total return с 0% налогом. IVV adjusted close — gross total return минус ~0.03%. Разница пренебрежимо мала, сравнение корректно.

Одно допущение: для российских акций я использую индекс (MCFTR), а не ETF, потому что адекватного российского фонда с длинной историей не нашёл.

Облигации — и одно письмо на Мосбиржу

ОФЗ: RGBITR

Тот самый момент из начала статьи. Октябрь 2025, API Мосбиржи, индекс полной доходности гособлигаций RGBITR — данные только с 2012 года. А мне нужно с 2002-го.

Я написал в Мосбиржу. Объяснил, что строю бесплатное приложение для сравнения активов, и спросил, есть ли архивные данные. Через пару дней получил Excel-файл с полным RGBITR начиная с 2002 года — по электронной почте. Команда Мосбиржи откликалась на мои запросы несколько раз, оперативно и по делу.

Корпоративные облигации: RUCBITR → RUCBTRNS

Здесь пришлось склеивать два индекса.

RUCBITR (2003–2019) — основной индикатор рынка корпоративного долга на Мосбирже. Включает наиболее ликвидные облигации российских компаний с дюрацией от одного года. Состав переменный: бумаги входят и выходят по мере погашения и новых размещений. Индекс совокупного дохода — с учётом купонов.

RUCBTRNS (с 2019) — его преемник. Те же принципы: совокупный доход, дюрация от года. Но с дополнительным фильтром по кредитному качеству — включаются только бумаги с рейтингом от A-(RU) по шкале АКРА или Эксперт РА. Оба индекса — с Мосбиржи.

Точка склейки — начало 2019 года. Механика описана в секции «Как работают расчёты»: старый ряд масштабируется так, чтобы в точке перехода не было скачка.

US Treasuries: IEF → IEI

Американские госбонды — тоже через ETF. Проблема: ни один фонд со средней дюрацией не покрывал весь период с 2002 года. Пришлось склеить два:

  • IEF (iShares 7–10 Year Treasury Bond ETF) — до 2007 года
  • IEI (iShares 3–7 Year Treasury Bond ETF) — с 2007 года

Дюрация российского индекса RGBITR — около 5 лет. IEI (3–7 лет) — ближайший аналог по уровню риска. Длинные бонды (20+ лет) я не брал сознательно: их волатильность уже слишком похожа на акции, и это исказило бы сравнение.

Недвижимость — самый сложный актив

Если с облигациями получилось найти решение за пару писем, то с недвижимостью пришлось принять целую серию компромиссов.

Цены: Росстат → СберИндекс

Росстат (ЕМИСС) — единственный источник, который закрывает весь период с 2002 года. Средняя цена квадратного метра по фактическим сделкам; выборка — от 5% организаций (застройщиков, риелторов) по каждому региону. Квартальная публикация.

Проблемы:

  • Нет hedonic adjustment (коррекции на качество жилья). Если в каком-то квартале продавалось больше дорогих квартир, средняя цена растёт — без реального подорожания
  • Малая выборка (5% организаций) — чувствительна к составу
  • В данных есть необъяснимые скачки от квартала к кварталу. Менялась методология? Состав выборки? Публичной информации нет

СберИндекс — качественнее. Hedonic-подход (коррекция на качество: данные разбиты на 8 сегментов по классу жилья, чтобы изменение микса не влияло на индекс), фактические сделки через ДомКлик, ежемесячная публикация. Сбер — около 56% ипотечного рынка, выборка репрезентативна. Но: только ипотечные сделки (наличные покупки, 20–30% рынка, не попадают), данные лишь с 2015 года.

В итоге: до 30 сентября 2024 года идут данные Росстата, после — СберИндекс. Почему так поздно, если СберИндекс качественнее? Чем дольше ряд из одного источника — тем он консистентнее. Каждая склейка вносит потенциальное искажение. Росстат закрывает 22 года из 23, и переключаемся мы только на самом конце — чтобы дальше данные обновлялись автоматически через API.

Три региона: Москва, Санкт-Петербург, Россия в среднем. Индекс цен — простое среднее первичного и вторичного рынка (без учёта объёма сделок на каждом).

Арендная доходность: OECD → экстраполяция

Сравнивать депозиты с капитализацией и акции с реинвестированными дивидендами — а квартиры при этом показывать только по ценам, без аренды — некорректно. Большая часть дохода от недвижимости — это аренда, а не рост цены: за 23 года квартира в среднем по России без аренды выросла бы в 12.6 раза, а с арендой — в 46.3. Сравнивать квартиру «по ценам» с акциями «с дивидендами» — всё равно что оценивать две яблони, но у одной считать и рост дерева, и урожай, а у второй — только насколько она подросла за год. Поэтому приложение показывает недвижимость с учётом арендной доходности.

Оставался вопрос — как именно её считать. Я рассматривал три варианта. Самый грубый — взять навскидку: аренда = ~4% от стоимости квартиры в год. Просто, но неточно: реальное соотношение цены к аренде плавает. Второй вариант — вычислить среднее соотношение Price-to-Rent за весь период и использовать его как константу. Менее топорно, но всё ещё игнорирует динамику. Третий — брать реальное соотношение Price-to-Rent для каждого периода отдельно.

Мне стало интересно, насколько велики флуктуации этого показателя — стоит ли вообще заморачиваться с временной функцией. Оказалось, что стоит: разброс значительный. Когда цены на жильё росли быстрее аренды (как при льготной ипотеке), доходность падала. Когда аренда догоняла — росла. Фиксированная константа скрыла бы эту динамику. Поэтому я выбрал третий путь: соотношение аренды к стоимости квартиры учитывается в каждый период своё.

Для расчёта я использую соотношение Price-to-Rent от OECD — индекс, показывающий, как соотносятся цены на жильё и месячные арендные ставки (база 2015 = 100). По сути, это «сколько месячных аренд стоит квартира». Обратная величина — доля месячной аренды в цене. Умножаем на 12 — получаем годовую доходность:

# Price-to-Rent → годовая валовая доходность
валовая_доходность = (100 / price_to_rent) × 12

# Чистая доходность: минус 35% на простой, ремонт, комиссии, страховку
чистая_доходность = валовая_доходность × 0.65

Откуда 0.65? Я разложил типичные расходы арендодателя:

Статья расходов% от годовой аренды
Простой (vacancy)8–17%
Капремонт и содержание5–7%
Текущий ремонт5–10%
Комиссия риелтору4–8%
Страхование2–3%
Итого24–45%

Среднее — ~35%. Отсюда множитель 0.65: собственник кладёт себе в карман 65% от валовой аренды. Налоги не вычитаем — для консистентности с другими активами, где налоги тоже не учтены.

Данные OECD доступны с 2003 по Q1 2022. Потом — стоп. 8 марта 2022 года Совет OECD приостановил участие России во всех органах организации. Данные перестали собираться не по техническим причинам, а по политическим.

С Q2 2022 приложение экстраполирует последнее значение Price-to-Rent = 173.64. Это грубое приближение: в 2022–2023 цены росли быстрее аренды (льготная ипотека), а в 2024–2025 аренда стала догонять. Но для сравнения активов между собой — не расчёта доходности конкретной квартиры — достаточно.

Криптовалюты — с какого момента считать?

Bitcoin и Ethereum — два криптоактива в приложении. Главный вопрос был: откуда начинать?

Я выбрал момент, когда монета стала доступна на централизованных биржах и её мог купить обычный человек. Не момент майнинга первого блока, не первую сделку на форуме.

  • Bitcoin: март 2013 (цена ~$40–50)
  • Ethereum: август 2015

Мы не захватываем период, когда биткоин стоил центы. Это осознанный выбор: те цены отражали эксперимент нескольких сотен энтузиастов, а не инвестиционный актив.

Ранние данные: Kaggle (BTC), CoinMarketCap (ETH). Более поздние: Binance API.

Честная оговорка — без неё крипто-графики вводят в заблуждение. Bitcoin с марта 2013-го вырос в несколько тысяч раз. Ethereum с 2015-го — тоже в тысячи. На графике — ракета. Но это survivorship bias, ошибка выжившего.

В апреле 2013 года CoinMarketCap отслеживал всего 7 криптовалют. К концу года — 66. Из тогдашнего топ-10 к 2022 году в первой десятке остались только Bitcoin и Litecoin. 91% криптовалют, существовавших в 2014 году, полностью прекратили торговаться. Больше половины из 20+ миллионов токенов, появившихся к 2025 году, мертвы.

Что это значит для графиков в приложении? Мы показываем два актива, которые выжили и выросли. Но инвестор в 2013 году не знал, какая именно монета станет победителем, — а тысячи альтернатив потеряли 100%. Графики BTC и ETH — это реальная история двух конкретных монет, а не история «крипты вообще».

Бенчмарки: депозиты и инфляция

Депозиты

Средневзвешенная ставка ЦБ РФ по депозитам физлиц сроком до одного года, исключая вклады «до востребования» (накопительные счета не учитываются). Данные — из ежемесячного файла на сайте ЦБ.

Расчёт — ежемесячная капитализация:

месячный_множитель = (1 + годовая_ставка / 100)1/12
текущее_значение = текущее_значение × месячный_множитель

Каждый месяц проценты начисляются и реинвестируются. Модель идеализированная — реальный вкладчик пролонгирует депозит под новую ставку, иногда с задержкой. Но для сравнения с другими активами, где тоже предполагается реинвестирование, это корректный подход.

Инфляция

Индекс потребительских цен (ИПЦ) Росстата. Корзина из ~558 товаров и услуг, ~830 000 ценовых наблюдений по 271 городу. Методология соответствует стандартам МВФ — Россия присоединилась к SDDS в 2005 году.

Данные приложение получает через StatBureau.org API — это агрегатор, который берёт официальные данные Росстата/ЕМИСС и предоставляет их через удобный программный интерфейс.

Критика ИПЦ хорошо известна. По опросам ЦБ (ИнФОМ), в декабре 2024 года 58% населения оценили рост цен как «очень сильный», а воспринимаемая годовая инфляция составила 15.9% при официальных 9.52%. Ромир (панель из 40 000 потребителей, сканирование чеков) с 2020 по 2024 год показал рост цен на продукты в 2.3 раза — против +41% по Росстату за тот же период. Правда, в конце 2024-го Ромир приостановил публикацию своего дефлятора — как раз когда годовой темп приблизился к 20%.

Почему всё равно ИПЦ?

Длинный ряд. Помесячные данные с 1991 года. У Ромира — с ~2019 (и публикация приостановлена). СберИндекс измеряет не цены, а номинальные траты — это не инфляция.

Полнота. 558 категорий: продукты, товары, услуги, ЖКХ, транспорт, образование. Ромир — только FMCG: еда, бытовая химия, средства гигиены. Ни услуг, ни ЖКХ, ни транспорта.

Официальный статус. ЦБ таргетирует ИПЦ, по нему индексируются выплаты и рассчитываются условия ОФЗ-ИН. Нравится нам или нет — это стандарт, и замены ему на горизонте 23 лет нет.

Как работают расчёты

Четыре ключевых формулы.

Нормализация к базе 100

Каждый актив стартует с базового значения 100 на начальную дату. Все последующие значения — процент от стартовой точки:

нормализованное = (текущее / базовое) × 100

Значение 250 = актив вырос в 2.5 раза. Это позволяет сравнивать на одном графике акции за десятки тысяч и курс доллара за 30.

Реальная доходность (формула Фишера)

Сколько покупательной способности осталось после инфляции:

# Нормализуем инфляцию к 1 на дату старта актива
нормализованная_инфляция = инфляция_сейчас / инфляция_на_старте

# Реальная стоимость = номинал / инфляция
реальная_стоимость = номинальная_стоимость / нормализованная_инфляция

В ранней версии приложения использовалась упрощённая формула (номинальная доходность минус инфляция). Она давала погрешность ~0.5 процентных пунктов при высокой инфляции. Сейчас — точная формула Фишера: делим, а не вычитаем.

CAGR — среднегодовая доходность

Какой была бы доходность, если бы актив рос равномерно каждый год?

CAGR = (конечное / начальное)1/годы − 1

Если актив вырос с 100 до 400 за 10 лет — CAGR покажет ~14.9% годовых. Реальный путь мог быть любым: просадка на 40%, потом взлёт, потом боковик. CAGR сжимает всю эту историю в одну цифру — «как если бы росло ровно на X% каждый год». Количество лет считается с делителем 365.25 — с учётом високосных.

Склейка временных рядов

Когда два источника данных нужно состыковать в одной точке:

коэффициент = последнее_старого_ряда / первое_нового_ряда
# Все значения старого ряда умножаются на коэффициент
Сырые данные: скачок на стыке RUCBITR RUCBTRNS 2003 2019 2025
После склейки: непрерывная история корп. облигации 2003 2019 2025
scale_factor = old_last / new_first
Старый ряд масштабируется так, чтобы на стыке не было скачка

После масштабирования ряды продолжаются без скачка. Метод используется для корпоративных облигаций (RUCBITR → RUCBTRNS) и US Treasuries (IEF → IEI). Для недвижимости (Росстат → СберИндекс) масштабирование не применяется — прямая склейка по дате, так как оба источника дают сопоставимые абсолютные цены за м².

Два разных индекса могут оперировать совершенно разными абсолютными числами — и это не проблема. RUCBITR и RUCBTRNS стартовали в разные годы с разных базовых значений. Но приложение показывает не абсолютные значения индексов, а их динамику — на сколько процентов актив вырос или упал. После нормализации к базе 100 абсолютные числа исчезают, остаётся только относительное изменение. Если один индекс вырос на 8% за квартал — эти 8% попадут в график одинаково, будь исходное значение 150 или 15 000.

Идеально — один источник на весь период. Но для 23 лет по российскому рынку такой роскоши часто нет: индексы появлялись, менялись, переименовывались. Склейка с нормализацией — стандартная практика. Portfolio Visualizer использует backfill через прокси-индекс, Curvo переключается с данных индекса на данные ETF после его запуска. Scale factor в приложении рассчитывается динамически, а не вбит руками — при каждом обновлении данных точка перехода пересчитывается заново.

Линейная и логарифмическая шкалы

В приложении доступны обе шкалы — линейная и логарифмическая. Изначально была только линейная, но с добавлением криптовалют стало очевидно, что она не работает для всех активов одновременно. BTC и ETH, выросшие в тысячи раз, при ближайшем конкуренте около 65 — на линейной шкале два криптоактива занимают весь график, а остальные 18 превращаются в прямые линии у нуля. Невозможно различить, кто вырос в 12 раз, а кто в 46.

Логарифмическая шкала решает эту проблему: на ней одинаковый процентный рост выглядит одинаково независимо от абсолютного уровня. Рост с 1 до 10 и с 100 до 1 000 — одна и та же высота на графике. Именно поэтому логарифмическая шкала выбрана по умолчанию.

Конвертация зарубежных активов

Все зарубежные активы (IVV, QQQ, IEF/IEI, BTC, ETH) пересчитываются в рубли по курсу ЦБ РФ на дату наблюдения. Если курс на точную дату отсутствует — берётся ближайший за последние 15 дней. Окно в 15 дней появилось не сразу — в какой-то момент я заметил подозрительные дыры в данных за начало каждого года. Оказалось, новогодние каникулы: ЦБ не публикует курсы больше недели, и без запаса скрипт не находил котировку и пропускал эти дни.

Чего калькулятор не учитывает (и почему)

  • Налоги: НДФЛ на дивиденды, купоны, курсовую разницу, продажу недвижимости, процентный доход по депозитам
  • Брокерские и биржевые комиссии
  • Стоимость хранения физических металлов
  • Индивидуальные расходы на содержание недвижимости (учтены только средние — через множитель 0.65 в арендной доходности)

Это осознанный выбор, а не упущение. Налоговая ситуация у каждого инвестора своя: тип счёта (обычный, ИИС), резиденция, льготы (ЛДВ, вычеты по ИИС). Моделировать все варианты — невозможно. Не моделировать, но делать вид, что учли — нечестно.

Сравнение «до налогов» ставит все активы в равные условия. Фактическая доходность будет ниже, но соотношения между активами сохранятся.

Все крупные западные бэктестеры — Portfolio Visualizer, Curvo, testfol.io — работают так же: total return без налогов и комиссий.

Известные ограничения

  1. ИПЦ Росстата может не полностью отражать реальную инфляцию. Воспринимаемая инфляция стабильно выше официальной — по опросам, в 1.5–2 раза.
  2. Недвижимость Росстата — без hedonic adjustment, с квартальной частотой и непрозрачными скачками в данных.
  3. Арендная доходность после Q1 2022 — экстраполяция фиксированного значения P/R. Не отражает реальную динамику аренды и цен за последние четыре года.
  4. Простое среднее первички и вторички — без учёта объёма сделок на каждом рынке.
  5. BTC и ETH — survivorship bias. Мы показываем победителей задним числом. Тысячи альтернативных проектов обнулились.
  6. Модель депозитов идеализирована: ежемесячная капитализация без учёта задержки при пролонгации.
  7. Нет российского ETF на акции — MCFTR используется как индекс, без комиссий фонда.
  8. Конвертация в рубли по курсу ЦБ, а не по биржевому. Обычно разница минимальна, но в кризисные дни может расходиться.
  9. MCFTR — брутто (0% налога на дивиденды). Реальный инвестор-резидент платит 13%. Нетто-индексы (MCFTRR, MCFTRN) начинаются позже и не покрывают весь период.

Это методология «Судьбы рубля». Не идеальная — идеальных данных по российскому рынку за 23 года не бывает. Зато прозрачная: всё открыто — откуда данные, как считаем, где компромиссы.

Если вы нашли ошибку или знаете лучший источник данных — я хочу об этом знать. Пишите в Telegram-канал или в комментарии к этой статье.

Открыть калькулятор «Судьба рубля»


Информация в этой статье не является индивидуальной инвестиционной рекомендацией. Прошлые результаты не гарантируют будущую доходность.

Егор Соколов
Егор Соколов

Прошёл путь от долга в 2,5 млн ₽ до накоплений свыше 8 млн за 5 лет. В карьере — от продакт-менеджера до директора в Сбере, дважды запускал собственные компании.

Более 14 лет ведёт учёт личных финансов. Использует YNAB с 2013 года. Создатель калькулятора «Судьба рубля» для анализа инвестиционных стратегий.

Другие статьи