Исторические данные (архив котировок) — это фундамент для любого серьезного анализа рынка, бэктестинга торговых стратегий и создания алгоритмических систем. Для участников рынка Московской биржи (MOEX), торгующих фьючерсными контрактами (фортс), доступ к качественной и глубокой истории цен имеет критическое значение. В этой статье мы подробно разберем, где и как получить архив котировок фьючерсов Мосбиржи, какие существуют форматы данных, нюансы работы с экспирацией контрактов и инструменты для автоматизации загрузки.
Основные источники исторических данных
Существует несколько основных каналов получения архива котировок, различающихся по глубине истории, детализации (таймфреймам), стоимости и удобству доступа.
Официальный сайт Московской биржи (moex.com) и API
Первоисточник данных — сама биржа. MOEX предоставляет доступ к историческим данным через раздел «Биржевая информация» и публичное API.
- Реестр сделок (Order Log / Trade Log): Самый детализированный уровень данных (Level 3). Содержит информацию о каждой сделке и заявке. Доступен в машиночитаемых форматах (CSV, XML, JSON) через API.
- История значений индексов и фиксингов: Архив расчетных цен, фиксингов и значений индексов (IMOEX, RTSI и др.).
- Валютные фиксинги: Исторические курсы валют (USD/RUB, EUR/RUB, CNY/RUB), используемые для расчетов по деривативам.
Особенность: Официальное API отлично подходит для получения актуальных данных и неглубокой истории, но для массовой загрузки многолетних архивов по всем инструментам может требовать значительных временных затрат из-за лимитов запросов.
Finam.ru (Финам) — «Золотой стандарт» для бесплатного скачивания
Согласно общепризнанному мнению трейдеров и разработчиков, архив Финама остается единственным нормальным бесплатным вариантом для получения глубокой истории (10+ лет) в удобном текстовом формате (TXT/CSV).
- Покрытие: Самые ликвидные фьючерсы российского рынка (нефть BR, золото GD, индексные RI/RTS, валютные Si, Eu, безлимитные/вечные фьючерсы).
- Формат: Текстовые файлы (TXT) со стандартной структурой:
<TICKER>,<PER>,<DATE>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>. - Таймфреймы: Тиковые данные, минутки (1, 5, 10, 15, 30 мин), часовики, дневки, недельные и месячные свечи.
- Дополнительно: В разделе экспорта котировок доступны данные не только по фьючерсам, но и по акциям, облигациям, ETF и даже криптовалютам (BTC, ETH, LTC).
Важный нюанс: На часовых и более старших таймфреймах ошибки данных (пропуски, артефакты) минимальны, что делает их идеальными для стратегического бэктестинга.
Investing.com и аналогичные финансовые порталы
Предоставляют визуализацию и скачивание исторических данных по CFD на фьючерсы (например, фьючерс на индекс ММВБ).
- Удобны для быстрого просмотра графиков «здесь и сейчас».
- Позволяют выгружать данные по дням, неделям, месяцам в CSV.
- Минус: Часто используют непрерывные контракты (continuous contracts) без корректной обработки роллов (перехода на новый контракт), что искажает реальную PnL-кривую при тестировании.
Специализированные сервисы и Open Source проекты
- GitHub (например, nerevar/stock_prices): Готовые краулеры и скрипты на Python для автоматической загрузки суточных данных с MOEX API (акции, облигации, валюта, ETF, фьючерсы) и Alpha Vantage (зарубежные рынки).
- Консольные утилиты: Разработчики часто пишут свои загрузчики (даунлоадеры) для получения свечей OHLCV по всем инструментам Мосбиржи с нужными таймфреймами.
- История фандинга (вечные фьючерсы): С недавнего времени доступен экспорт истории ставок фандинга для перпетуальных фьючерсов в формате CSV, что критически важно для расчета доходности от удержания позиций (carry trade).
Специфика фьючерсных данных: Проблема экспирации и «Сшивка» контрактов
В отличие от акций, фьючерсы имеют фиксированную дату экспирации (окончания торгов). Это создает главную сложность при работе с архивом, необходимость построения непрерывного графика (Continuous Contract).
Методы построения непрерывного контракта:
- Back-Adjusted (Обратная корректировка) — Стандарт для бэктестинга: Цены старых контрактов корректируются на величину разрыва (gap) между старым и новым контрактом на момент ролловера. Это сохраняет реальные изменения цены (P&L), но исторические цены могут уходить в отрицательные значения или сильно отличаться от реальных рыночных котировок того времени.
- Forward-Adjusted (Прямая корректировка): Новый контракт приводится к уровню старого. Реальные цены сохраняются только для текущего контракта.
- Concat (Простая склейка): Простое соединение графиков без корректировки. Создает искусственные скачки цены (гапы) в днях ролловера, что делает такой график непригодным для тестирования стратегий на индикаторах (скользящие средние, RSI и т.д.).
- Ratio Adjusted (Пропорциональная корректировка): Используется редко, в основном для товарных фьючерсов с нулевыми или отрицательными ценами.
Рекомендация: Для системной торговли и бэктестинга всегда используйте Back-Adjusted серии. При скачивании данных с Finam или MOEX вы получаете «сырые» данные по отдельным контрактам (например, RIU6, RIZ6). Сшивку необходимо производить самостоятельно программно (Python/Pandas, C#, C++), используя календарь экспираций и правила ролловера (обычно за 3-5 дней до экспирации по объему/открытому интересу).
Форматы данных и структура файлов
Понимание формата критично для парсинга и загрузки в БД (ClickHouse, PostgreSQL, TimescaleDB) или DataFrame (Pandas).
Стандартный формат Finam (TXT/CSV)
Наиболее популярный формат для российских алготрейдеров.
Пример строки: RIU6,MIN,20260711,100000,125450,125500,125400,125480,1523
Расшифровка полей:
- TICKER — тикер контракта (RIU6 — RTS Index, июль 2026).
- PER — таймфрейм (TICK, MIN, MIN5, HOUR, DAY, WEEK, MON).
- DATE — дата в формате YYYYMMDD.
- TIME — время в формате HHMMSS (для дневок обычно 000000 или 184500 — время закрытия сессии).
- OPEN, HIGH, LOW, CLOSE — цены (Open, High, Low, Close). Для фьючерсов Финам часто дает цены в пунктах индекса или в рублях с учетом шага цены.
- VOL — объем в лотах (контрактах).
Формат MOEX API (JSON / CSV)
При запросе к ISS (Information Statistical System) MOEX:
https://iss.moex.com/iss/history/engines/futures/markets/forts/securities/RIU6/candles.json?from=2026-01-01&till=2026-07-11&interval=60 Возвращает структурированный JSON с метаданными (название колонок, типы данных) и массивом данных. Это предпочтительный формат для производственных систем загрузки.
Инструменты для работы с архивом (Стек разработчика)
Python — де-факто стандарт
- moex-python-sdk / moexalgo: Удобные обертки над MOEX ISS API для получения истории свечей, стакана, сделок.
- finam-py / pyfinam: Библиотеки для автоматического скачивания и парсинга архива Финама.
- Pandas / Polars: Для обработки, ресемплинга (перевода минуток в часовики), сшивки контрактов и расчета индикаторов.
- VectorBT / Backtesting.py: Для векторного бэктестинга на подготовленных данных.
Базы данных для хранения
- ClickHouse / QuestDB: Идеальны для хранения тиковых и минутных данных (колонковое хранение, сжатие, быстрые агрегации).
- TimescaleDB (PostgreSQL): Удобен, если нужна реляционная модель и SQL.
- DuckDB / Parquet файлы: Отличный выбор для локального аналитика и ML-исследований без поднятия сервера БД.
Чек-лист: Как правильно подготовить данные для бэктестинга
- Скачайте «сырые» данные по отдельным контрактам (не непрерывный график!) с Finam или через MOEX API. Глубина: минимум 3-5 лет для робастности стратегии.
- Проверьте на пропуски (голо) в торговых сессиях. На Мосбирже есть клиринговые перерывы (14:00-14:05, 18:50-19:05 по МСК) и ночная сессия (для валютных/нефтяных). Данные за эти периоды могут отсутствовать или быть аномальными.
- Очистите артефакты: Нулевые объемы при ненулевом движении цены, выбросы (спайки) на 1-2 тика, дубликаты таймстампов.
- Постройте непрерывный контракт (Back-Adjusted) с ролловером по Open Interest (Открытый интерес) или Объему (переход на новый контракт, когда ликвидность нового превышает старый).
- Добавьте календарь торгов: Учтите нерабочие дни (праздники РФ), сокращенные сессии (предпраздничные дни).
- Рассчитайте реальные торговые издержки: Комиссия брокера + Биржевая комиссия + Проскальзывание (slippage) = f(спред, ликвидность, агрессивность ордера). Без этого бэктест бесполезен.
- Сохраните итоговый датасет в Parquet/Feather/ClickHouse с версионированием (дата генерации, параметры сшивки).
Нюансы по конкретным инструментам Мосбиржи (ФОРТС)
| Группа инструментов | Примеры тикеров | Особенности архива |
|---|---|---|
| Индексные | RI (RTS), MX (IMOEX), SI (S&P 500) | Самые ликвидные. RI имеет дневную и вечернюю сессии. Необходимо учитывать дивидендные корректировки индекса (для MX). |
| Валютные | Si (USD/RUB), Eu (EUR/RUB), Cny (CNY/RUB) | Торгуются почти круглосуточно (с перерывами). Критически важна история фандинга для вечных фьючерсов (если торгуете перпетуалы). |
| Товарные (Нефть/Золото) | BR (Brent), GD (Gold), SL (Silver) | Высокая корреляция с внешними рынками (NYMEX, COMEX). Арбитражные роботы требуют синхронизации таймстампов с UTC. |
| Акционные (Single Stock Futures) | SBRF, GAZP, LKOH, GMKN (с суффиксом месяца) | Низкая ликвидность на дальних контрактах. Обязательна корректировка на дивиденды (фьючерс ценится как Spot ― PV(Dividends)). |
| Вечные фьючерсы (Perpetuals) | BTCUSDT, ETHUSDT (на MOEX Derivatives) | Нет экспирации. Главный параметр — Фандин (Funding Rate). Архив фандинга теперь доступен в CSV для расчета стоимости удержания. |
Работа с архивом котировок фьючерсов Московской биржи — это не просто скачивание файлов, а полноценный инженерный процесс: сбор → очистка → сшивка (ролловер) → валидация → хранение.
Ключевые выводы:
- Для бесплатного глубокого архива (10+ лет) по минуткам/часовикам — Finam.ru остается лучшим выбором.
- Для производственных систем и актуальных данных — MOEX ISS API (JSON/CSV).
- Обязательно используйте Back-Adjusted метод сшивки контрактов по открытому интересу для корректного бэктестинга.
- Не забывайте про историю фандинга для вечных фьючерсов и корректировки на дивиденды для акционных фьючерсов.
- Автоматизируйте пайплайн загрузки на Python (Pandas + ClickHouse/Parquet), чтобы всегда иметь актуальную и чистую базу для исследований.
Качественная историческая база — это 80% успеха в алгоритмической торговле. Инвестируйте время в настройку правильного ETL-процесса один раз, и он будет экономить вам недели работы в будущем.