Как устроена «Судьба рубля»: данные, источники и формулы
Октябрь 2025. Я сижу над письмом в Мосбиржу — прошу прислать данные, которых нет у них на сайте. Неделей раньше полтора часа выбирал точку склейки двух индексов облигаций. Ещё раньше — пытался понять, почему у Росстата цены на недвижимость скачут на 15% за квартал без видимой причины.
Так выглядела работа над «Судьбой рубля» — приложением, которое ставит рядом 20 активов на фоне российской инфляции за 23 года. Красивый график на выходе, а за ним — цепочка компромиссов. За каждым источником данных своя история: где пришлось склеивать, где договариваться, а где — принять несовершенные данные, потому что лучших не существует.
На Западе есть Portfolio Visualizer, Curvo, testfol.io, Portfolio Charts — все они работают в долларах или евро, без российских активов, без рублёвой инфляции. Ни один из них не поможет россиянину, который хочет сравнить ОФЗ с недвижимостью в Москве или депозиты с золотом. «Судьба рубля» закрывает эту нишу.
В основной статье о калькуляторе я пообещал подробный разбор методологии. Эта статья — выполнение обещания. Каждый источник данных, каждая формула, каждый компромисс — чтобы вы могли решить сами, стоит ли доверять графикам.
7 источников данных
| Источник | Что берём | Активы | Обновление |
|---|---|---|---|
| Московская биржа (ISS API) | Индексы полной доходности | MCFTR, RGBITR, RUCBITR/RUCBTRNS | Ежедневно |
| Alpha Vantage API | Adjusted 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 | Ежедневно |
Скрипты обновления запускаются каждый понедельник. Источники публикуют данные с разной частотой — от ежедневной (биржи, валюты) до ежемесячной (недвижимость, депозиты, инфляция). Автообновление — принципиальное требование к архитектуре: приложение без монетизации, а данные, которые нужно обновлять вручную, рано или поздно устаревают.
Валюты и драгоценные металлы — самое простое
Четыре валюты (доллар, евро, фунт, юань) и три металла (золото, серебро, платина) — ежедневные котировки ЦБ РФ. Один 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) и 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.5–2 раза.
- Недвижимость Росстата — без hedonic adjustment, с квартальной частотой и непрозрачными скачками в данных.
- Арендная доходность после Q1 2022 — экстраполяция фиксированного значения P/R. Не отражает реальную динамику аренды и цен за последние четыре года.
- Простое среднее первички и вторички — без учёта объёма сделок на каждом рынке.
- BTC и ETH — survivorship bias. Мы показываем победителей задним числом. Тысячи альтернативных проектов обнулились.
- Модель депозитов идеализирована: ежемесячная капитализация без учёта задержки при пролонгации.
- Нет российского ETF на акции — MCFTR используется как индекс, без комиссий фонда.
- Конвертация в рубли по курсу ЦБ, а не по биржевому. Обычно разница минимальна, но в кризисные дни может расходиться.
- MCFTR — брутто (0% налога на дивиденды). Реальный инвестор-резидент платит 13%. Нетто-индексы (MCFTRR, MCFTRN) начинаются позже и не покрывают весь период.
Это методология «Судьбы рубля». Не идеальная — идеальных данных по российскому рынку за 23 года не бывает. Зато прозрачная: всё открыто — откуда данные, как считаем, где компромиссы.
Если вы нашли ошибку или знаете лучший источник данных — я хочу об этом знать. Пишите в Telegram-канал или в комментарии к этой статье.
→ Открыть калькулятор «Судьба рубля»
Информация в этой статье не является индивидуальной инвестиционной рекомендацией. Прошлые результаты не гарантируют будущую доходность.