Где и как получить исторические котировки Московской биржи: источники, форматы и нюансы

Где взять качественные исторические котировки МОЕХ для бэктеста стратегий? Лучшие источники, форматы данных и секреты чистого архива — внутри.

Бесплатная консультация юриста

+7 (800) 301-07-30

Реклама jurik.ru

Исторические котировки — это фундамент для любого серьезного анализа финансовых рынков. Без доступа к качественному архиву невозможно протестировать торговую стратегию (бэктестинг), построить надежную модель риск-менеджмента, провести фундаментальный анализ динамики актива или просто изучить поведение цены в ключевые исторические моменты. В этой статье мы подробно разберем, где и как получить архив котировок Московской биржи (МОЕХ), в каком формате лучше хранить данные и какие нюансы учитывать при работе с ними.

Официальные источники данных Московской биржи

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

Сайт Московской биржи (moex.com) — Раздел «Данные и аналитика»

Это точка входа для большинства пользователей. В разделе «Архив котировок» (или «Исторические данные») доступны данные по всем режимам торгов:

  • Фондовый рынок (акции, DR, ETF, облигации, фонды).
  • Валютный рынок (спот, свопы, фьючерсы на валюту).
  • Производные инструменты (фьючерсы и опционы на индексы, акции, товары, ставки).
  • Рынок стандартизированных сделок (РСС).
  • Рынок репо.

Доступные форматы и интервалы:

  1. Ежедневные сводки (End-of-Day — EOD): Open, High, Low, Close, Volume, Turnover, Open Interest (для фьючерсов). Доступны бесплатно в виде таблиц на сайте или выгрузки CSV/XML/JSON за конкретную дату.
  2. Свечи (OHLC) разных таймфреймов: 1 мин, 5 мин, 10 мин, 15 мин, 30 мин, 1 час, 1 день. Доступны через API (ISS) или в разделе «Архив свечей».
  3. Tick-данные (Level 1 / Level 2): Каждая сделка (Time & Sales) и стакан цен (Order Book). Это «тяжелые» данные, они предоставляются платным подписчикам через специальные шлюзы (ASTS/FAST) или в виде ежедневных дампов в магазине данных.

ISS (Information Statistical Server) — API для разработчиков

ISS MOEX, это основной программный интерфейс для автоматического получения данных. Он возвращает данные в формате JSON, XML или CSV.

Ключевые эндпоинты для архива:

  • /iss/history/engines/{engine}/markets/{market}/boards/{board}/securities/{security}.json — история свечей/сделок по конкретному инструменту.
  • /iss/history/engines/{engine}/markets/{market}/securities.json — история по всем инструментам рынка за дату.
  • /iss/securities/{security}/candles.json — получение свечей за заданный интервал (from/till) и интервал (interval=1, 10, 60, 24, 7…).

Пример запроса свечей за 2023 год для Сбера (SBER) с интервалом 1 день:

https://iss.moex.com/iss/engines/stock/markets/shares/boards/TQBR/securities/SBER/candles;json?from=2023-01-01&till=2023-12-31&interval=24

Ограничения ISS:

  • Лимит запросов (rate limiting) — не более ~50-100 запросов в секунду с одного IP.
  • Максимальный размер ответа — сервер может обрезать выдачу, требуя постраничной навигации (start/cursor).
  • Глубина минутных данных: обычно доступны за последние ~1-2 года (для более глубокой истории нужны платные дампы).

Магазин данных МОЕХ (store.moex.com)

Для профессионалов, которым нужны полные тиковые дампы (Level 2, Order Log) за длительные периоды (10+ лет), существует платный магазин данных.

  • Данные поставляются в бинарном формате FAST/SBE или CSV-дампы суток.
  • Требует заключения договора и оплаты подписки (стоимость зависит от рынка и глубины истории).
  • Идеально для HFT-бэктестинга и научных исследований микроструктуры рынка.

Альтернативные и агрегирующие источники

Работа с «сырым» API биржи требует навыков программирования. Для аналитиков и трейдеров, предпочитающих готовые решения, существуют удобные обертки и платформы.

Python-библиотеки (Экосистема Data Science)

Библиотека Описание Особенности
moexalgo / moexalgo-metrics Популярная асинхронная обертка над ISS. Простой синтаксис, поддержка pandas DataFrame, автоматическая пагинация, получение свечей, стакана, сделок.
apimoex Легковесная синхронная библиотека. Минималистичная, отлично подходит для быстрых скриптов выгрузки EOD данных.
finam-py / pyfinam Обертки для экспорта Finam (см. ниже). Позволяют качать глубокую минутную историю бесплатно через экспорт Финам.
tinkoff-invest-api-python Официальный SDK Т-Банка. Дает доступ к архиву МОЕХ через удобный gRPC/REST API (требует токен брокера).

Экспорт данных из терминалов брокеров (QUIK, Transaq, Т-Банк, БКС, Финам)

Большинство российских брокеров предоставляют терминалы с функцией «Экспорт истории» в текстовые форматы (CSV, TXT, PRN).

  • Финам (Finam.ru): Один из самых щедрых бесплатных источников минутной истории (до 2000-х годов для ликвидных бумаг). Доступен через веб-интерфейс «Экспорт данных» или API.
  • Т-Банк (T-Invest): Качественные свечи через API (бесплатно для клиентов), глубина истории по минутам, несколько лет.
  • QUIK / Transaq: Позволяют выгрузить историю прямо из терминала в файл. Удобно для разовых выгрузок больших массивов.

Аналитические платформы и терминалы

  • TradingView: Имеет встроенные данные МОЕХ (задержка 15 мин или реал-тайм по подписке), удобен для визуального анализа, но не для массовой выгрузки.
  • Investing.com / Rusprofile / Smart-lab: Удобные веб-таблицы с EOD котировками, дивидендами, сплитами.
  • Bloomberg / Refinitiv (LSEG) / Cbonds: Профессиональные терминалы с максимально чистыми, скорректированными данными (корпоративные действия учтены), но очень дорогие.

Критически важные нюансы работы с архивом МОЕХ

Самое главное помнить, что «сырые» котировки с биржи или брокера часто требуют предобработки перед использованием в моделях. Игнорирование этих факторов приводит к ложным сигналам в бэктестах.

Корпоративные действия (Сплиты, консолидации, дивиденды)

График цены «рвется» на момент выплаты дивиденда или сплита.

  • Price Chart (Ценовой график): Показывает реальную цену сделки. На дивидендном зазоре (ex-date) цена падает на величину дивиденда (примерно). На сплите — меняется в пропорции сплита.
  • Adjusted Chart (Скорректированный график / Total Return): История пересчитывается так, будто инвестор реинвестировал дивиденды и не заметил сплит. Это единственно верный способ тестировать стратегии на длинных горизонтах.

Решение: Используйте данные, скорректированные на сплиты (split-adjusted) и дивиденды (dividend-adjusted). В API МОЕХ (ISS) есть параметры для получения коэффициентов корректировки (securities/{secid}/correction), либо используйте готовые скорректированные ряды от брокеров (Т-Банк, Финам) или платных провайдеров.

Смена тикеров и режимов торгов

  • Инструменты могут менять код (тикер) при переходе на новый режим торгов (например, с основного на «вечерний» или «ночной»), при реорганизации эмитента.
  • Фьючерсы имеют конечный срок жизни. Непрерывный фьючерс (Continuous Future) нужно строить самостоятельно, «сшивая» контракты (методы: Back-Adjusted, Ratio-Adjusted, Panorama).

Режимы торгов и ликвидность

У одной акции может быть несколько досок (boards):

  • TQBR — Основная торговая сессия (10:00–18:40/19:00 МСК), максимальная ликвидность.
  • TQTF / TQIF — Вечерняя/Ночная сессия (до 23:50 МСК), спреды шире, объемы ниже.
  • TQCB, Режим «Ценная бумага на блоке» (блокировки).

Совет: Для бэктестинга дневных стратегий используйте только TQBR (или основной режим для данного инструмента). Смешивание котировок с ночной сессии в дневные свечи даст ложные High/Low.

Таймзоны и «Свечи»

  • Время в ISS API — UTC (или MSK без перехода на летнее/зимнее время, так как в РФ сейчас постоянное зимнее время UTC+3).
  • Свечи в ISS формируются по времени торговой системы. 1-минутная свеча 10:00:00 содержит сделки с 10:00:00.000 по 10:00:59.999.
  • Проверяйте соответствие времени открытия/закрытия свечи вашему брокеру/терминалу (некоторые брокеры сдвигают таймстемпы).

Выжившие данные (Survivorship Bias)

Если вы тестируете стратегию на «текущем списке акций МОЕХ» за 10 лет назад, вы исключаете банкротные компании (например, «Банк Открытие», «РусАгро» старый, «Мечел» старый тикер и т.д.). Это завышает доходность стратегии.

Решение: Используйте базы данных с «мертвыми» тикерами (Delisted securities). В ISS можно получить список инструментов с флагом is_traded=0 или использовать архивы списков инструментов за прошлые даты.

Практические примеры получения данных (Python)

Пример 1: Быстрая выгрузка дневных свечей через apimoex в Pandas

import apimoex
import pandas as pd
import requests

with requests.Session as session:
 # Получаем историю по Сбербанку (SBER) на доске TQBR за 2023 год
 data = apimoex.get_market_candles(
 session, 
 security='SBER', 
 start='2023-01-01', 
 end='2023-12-31', 
 interval='24', # 24 = 1 день
 engine='stock', 
 market='shares', 
 board='TQBR'
 )

df = pd.DataFrame(data)
df['begin'] = pd.to_datetime(df['begin'])
df.set_index('begin', inplace=True)
print(df.head)
print(f"Кол-во строк: {len(df)}")

Пример 2: Получение минутных свечей за глубокую историю через moexalgo (асинхронно)

import asyncio
from moexalgo import Market, Ticker

async def get_minute_data:
 market = Market("stock") # Фондовый рынок
 ticker = Ticker("SBER", market=market)
  # Получаем минутки за январь 2024
 # moexalgo сам обработает пагинацию
 candles = await ticker.candles(
 period="1m", 
 start="2024-01-01", 
 end="2024-01-31",
 board="TQBR"
 )
 
 df = candles.to_pandas
 print(df.tail)
 return df

asyncio.run(get_minute_data)

Хранение и структура данных (Best Practices)

Когда объем данных превышает оперативную память (например, тиковые данные по всем фьючерсам за 5 лет > 1 ТБ), CSV-файлы и Pandas становятся неэффективны.

Рекомендуемые форматы и БД:

  1. Parquet (Apache Parquet): Колончатый формат, сжатие (Snappy/Zstd), поддержка предикатного чтения (читаем только нужные колонки/даты). Стандарт де-факто для Data Science. Библиотеки: pandas.to_parquet, pyarrow, fastparquet.
  2. ClickHouse / TimescaleDB / QuestDB: Колончащие СУБД для временных рядов. Позволяют делать агрегации (OHLCV ресэмплинг) на стороне БД за миллисекунды.
  3. Arctic (Man AHL) / MarketStore: Специализированные хранилища для финансовых данных (версионирование, тикеры, категории).

Пример схемы таблицы (Parquet / ClickHouse):

  • ts (DateTime64, UTC) — время открытия свечи / время сделки.
  • symbol (LowCardinality String) — тикер (SBER, SiM4, RTSM4).
  • board (LowCardinality String) — режим торгов (TQBR, RFUD, FUT).
  • open, high, low, close (Float64 / Decimal(18, 8)), цены.
  • volume (UInt64), объем в лотах / штуках / контрактах.
  • value (Float64) — оборот в деньгах (для акций/облигаций).
  • oi (UInt64) — открытый интерес (только для фьючерсов/опционов).

Юридические аспекты и лицензирование

  • Персональное некоммерческое использование: Данные с публичного сайта moex.com и ISS API обычно разрешены для личного анализа и обучения (проверяйте актуальную «Политику использования информации» на сайте МОЕХ).
  • Коммерческое использование / Перераспространение: Требует заключения лицензионного соглашения с МОЕХ и оплаты абонентской платы. Это касается отображения котировок в приложениях для клиентов, продажи ботов, управления чужими деньгами на основе этих данных.
  • Данные брокеров: Условия использования API Т-Банка, Финама и др. регулируются их публичными офертой/договором. Обычно разрешается для личной торговли через их брокерский счет;

Чек-лист: Как выбрать источник для вашей задачи

Задача Рекомендуемый источник Формат / Инструмент
Бэктест дневной стратегии на 10 лет (акции) Финам (Экспорт) / ISS API (EOD) / Т-Банк API CSV / Parquet (Adjusted Close обязателен!)
Бэктест внутридневной стратегии (минутки/секунды) на 1-3 года ISS API (свечи) / Т-Банк API / moexalgo Parquet / ClickHouse
HFT / Микроструктура / Order Book Reconstruction Магазин данных МОЕХ (Order Log / Level 2) Бинарный FAST/SBE -> Parquet / ClickHouse
Визуальный анализ, ручная проверка уровней TradingView / Quik / Сайт МОЕХ (график) GUI
Построение непрерывных фьючерсов ISS API (список контрактов + история по каждому) + своя логика склейки Python (pandas/polars)

Работа с архивом котировок Московской биржи, это баланс между удобством получения (API, готовые выгрузки), качеством данных (корректировки, режимы торгов, выжившие тикеры) и инфраструктурой хранения (Parquet, БД временных рядов).

Для начала пути достаточно использовать бесплатный ISS API через библиотеку moexalgo или apimoex и сохранять данные в Parquet. По мере роста требований (глубина истории, тиковые данные, скорость доступа) переходите на платные дампы МОЕХ и специализированные БД вроде ClickHouse. Помните: качество бэктеста определяется не столько стратегией, сколько чистотой и корректностью входных данных.