Исторические данные о котировках — это фундамент, на котором строится любая серьезная инвестиционная стратегия. Архив цен на акции (или исторические котировки) представляет собой хронологически упорядоченный набор данных о ценах открытия, закрытия, максимумах, минимумах и объемах торгов за определенные временные интервалы. Без доступа к качественному архиву невозможно провести бэктестинг стратегий, технический анализ или фундаментальную оценку динамики бизнеса.
Что включает в себя архив цен?
Стандартный набор данных (OHLCV) для каждого торгового периода (минута, час, день, неделя, месяц) состоит из пяти ключевых параметров:
- Open (Цена открытия) — цена первой сделки в периоде.
- High (Максимум) — наивысшая цена сделки за период.
- Low (Минимум) — низшая цена сделки за период.
- Close (Цена закрытия), цена последней сделки в периоде (часто используется как базовая для расчетов).
- Volume (Объем) — количество акций, обменянных руками за период.
Кроме базовых OHLCV, профессиональные архивы часто содержат:
- Adjusted Close (Скорректированная цена закрытия), цена с учетом дивидендов и сплитов. Это критически важный показатель для расчета реальной доходности за длительные периоды.
- Dividends (Дивиденды) — даты и суммы выплат.
- Stock Splits (Сплиты/Консолидации) — коэффициенты дробления или объединения акций.
- Turnover (Оборот в деньгах) — объем торгов в денежном выражении.
- Open Interest (Открытый интерес) — для деривативов (фьючерсов/опционов) на акции.
Зачем нужен архив цен? Основные сценарии использования
Бэктестинг торговых стратегий
Проверка гипотез на исторических данных — единственный способ оценить жизнеспособность алгоритма или торговой системы без риска потери реальных денег. Качественный архив позволяет смоделировать проскальзывание, комиссии и влияние спреда.
Технический анализ и построение графиков
Все индикаторы (скользящие средние, RSI, MACD, Боллинджер и др.) рассчитываются исключительно на основе исторических цен. «Сырые» некорректированные данные дадут ложные сигналы на длинных таймфреймах из-за сплитов и дивидендных зазоров.
Фундаментальный анализ и оценка мультипликаторов
Для расчета P/E, P/S, P/B и других мультипликаторов в динамике нужна историческая рыночная капитализация (Цена × Кол-во акций). Архив цен позволяет построить график «Честной стоимости» компании во времени.
Риск-менеджмент и VaR (Value at Risk)
Расчет волатильности, корреляций между активами, просадок (drawdowns) и параметров распределения доходностей требует длинных исторических рядов (желательно 10+ лет).
Налоговый учет и отчетность
Инвесторы часто нуждаются в цене акции на конкретную дату в прошлом (например, дату покупки 5 лет назад) для расчета налоговой базы при продаже или для отчетов перед регулятором.
Критически важные нюансы работы с архивами: «Подводные камни»
Самое главное помнить, что «сырые» цены из архива часто не подходят для расчетов доходности без предварительной обработки. Игнорирование корректировок приводит к систематическим ошибкам.
Проблема сплитов (Stock Splits)
Если компания провела сплит 1:10, цена акции на графике упадет в 10 раз за одну ночь. Без корректировки это выглядит как крах на 90%, хотя стоимость портфеля инвестора не изменилась. Всегда используйте Adjusted Close для расчета доходности.
Проблема дивидендных зазоров (Dividend Gaps)
В дату отсечки (ex-dividend date) цена открытия обычно ниже цены закрытия предыдущего дня на сумму дивиденда (с учетом налога). На «сыром» графике это выглядит как падение. Скорректированные данные «закрывают» этот зазор, добавляя дивиденд к стоимости акции.
Выжившие компании (Survivorship Bias)
Бесплатные архивы часто содержат только те тикеры, которые торгуются прямо сейчас. Банкротные, делистированные или поглощенные компании исключены. Это завышает средние доходности индексов и стратегий. Для серьезных исследований нужны базы с «мертвыми» тикерами (например, Norgate, CRSP, или специализированные датасеты Kaggle).
Таймзоны и торговые сессии
Для американских акций архив обычно в EST/EDT (Нью-Йорк), для российских, в MSK (UTC+3). При объединении данных с разных бирж (например, MOEX и LSE для двойных листингов) необходимо привести время к единому стандарту (UTC).
Источники архивов цен: От бесплатных к профессиональным
Уровень 1: Бесплатные публичные API и сайты (Для обучения и быстрой проверки)
- Yahoo Finance (finance.yahoo.com) — де-факто стандарт для ретейла. Есть удобный CSV-экспорт и неофициальные Python-библиотеки (
yfinance). Минусы: задержки, ошибки в корректировках на старых данных, ограничения по запросам. - Investing.com / TradingView — хорошие графики, но выгрузка массивов данных часто ограничена или платная.
- MOEX ISS (iss.moex.com) — официальный бесплатный источник для российского рынка. Дает максимально точные «сырые» данные по сделкам и стакану. Требует навыков работы с REST API.
- Alpha Vantage, Twelve Data, Finnhub — бесплатные тиеры API (обычно 25-500 запросов в день), подходят для пет-проектов.
Уровень 2: Брокерские терминалы и платформы (Для активной торговли)
- Quik / Transaq / T-Investments API / БКС Express — предоставляют историю по инструментам, доступным у брокера. Качество высокое, но глубина истории и доступность API зависят от конкретного брокера;
- TradingView (Pine Script) — позволяет тестировать стратегии на их серверах с глубокой историей (до 20+ лет на фьючерсах/индексах).
Уровень 3: Профессиональные данные (Для квантов, фондов, серьезного бэктестинга)
- Refinitiv (Eikon) / Bloomberg Terminal, золотой стандарт. Исключительное качество, корректировки, корпоративные действия, данные по делистированным бумагам. Стоимость: $2000–$2500/мес.
- Norgate Data / CSI Data / Pinnacle Data, специализированные провайдеры EOD (End-of-Day) данных для бэктестинга. Учитывают выживших (no survivorship bias). Стоимость: $300–$1000/год.
- Polygon.io / Intrinio / Tiingo — современные API-first провайдеры. Дают тиковые данные (tick data), Level 2 (стакан), фундаменталку. Подходят для HFT и алготрейдинга. Оплата за объем запросов.
Форматы хранения и обработка данных
Получив данные, нужно эффективно их хранить. Выбор формата зависит от объема и задач:
| Формат | Плюсы | Минусы | Для чего лучше |
|---|---|---|---|
| CSV / Excel | Читаемость человеком, открывается везде | Медленный парсинг, большой вес, нет типизации, сложно хранить тиковые данные | Разовый анализ, передача коллегам, небольшие EOD выборки |
| Parquet (Apache Parquet) | Колоночное сжатие, быстрый чтение нужных колонок, поддержка типов, стандарт Big Data | Не читается в Excel напрямую (нужен Python/R) | Стандарт де-факто для Data Science и квантов. Идеален для Pandas/Polars/DuckDB |
| HDF5 / Feather | Очень быстрая запись/чтение, поддержка метаданных | Менее универсален, чем Parquet (Feather), сложнее миграция (HDF5) | Внутренние пайплайны высокой частоты |
| БД: TimescaleDB / ClickHouse / DuckDB | SQL-запросы, компрессия, агрегация на лету, работа с данными > RAM | Требует настройки инфраструктуры | Продакшн-системы, сервисы бэктестинга, мультипользовательский доступ |
Практический пример: Загрузка и корректировка данных на Python
Ниже приведен минимальный рабочий скрипт с использованием библиотеки yfinance (обертка над Yahoo Finance) и pandas. Он демонстрирует загрузку, проверку на сплиты/дивиденды и сохранение в Parquet.
import yfinance as yf
import pandas as pd
tickers = ["SBER.MO", "AAPL"]
data = yf.download(tickers, start="2019-01-01", end="2024-01-01", group_by='ticker', auto_adjust=False, progress=False)
frames = []
for ticker in tickers:
df = data[ticker].copy
df['Ticker'] = ticker
df.reset_index(inplace=True)
frames.append(df)
full_df = pd.concat(frames, ignore_index=True)
print("Пример данных по AAPL (последний сплит 4:1 был в августе 2020):")
print(full_df[full_df['Ticker']=='AAPL'][['Date', 'Close', 'Adj Close', 'Volume']].tail(3))
full_df.to_parquet("stock_archive.parquet", compression="snappy")
print("
Данные сохранены в stock_archive.parquet")
print(f"Размер файла: {round(pd.io.common.file_size('stock_archive.parquet')/1024, 2)} KB")
Чек-лист: Как выбрать источник архива для вашей задачи
- Глубина истории: Нужны ли 20 лет или достаточно 1 года? (Для VaR и стратегий на низких частотах — минимум 10-15 лет, лучше с кризисами 2008, 2020, 2022).
- Тип данных: EOD (End of Day) достаточно для свинг-трейдинга/инвестиций. Для внутридневного (Intraday) нужны 1m/5m/1h бары или тики (Tick Data).
- Корректировки: Дает ли провайдер Adjusted Close и отдельные таблицы дивидендов/сплитов? Если нет — придется корректировать самому (сложно и ошибочно).
- Survivorship Bias: Критично для тестирования на индексах (S&P 500, MOEX Index). Нужен ли доступ к делистированным тикерам?
- Покрытие рынков: Только MOEX? Только US? Крипта? Форекс? Фьючерсы? (Фьючерсы требуют склейки контрактов, отдельная боль).
- API / Формат доставки: REST API, WebSocket, FTP-дампы, S3 бакет? Подходит ли под ваш стек (Python, C++, R, Excel)?
- Бюджет: $0 (Yahoo/MOEX ISS) -> $500/год (Norgate/Tiingo) -> $24k/год (Bloomberg/Refinitiv).
Архив цен на акции, это не просто таблица чисел, а сырье для принятия финансовых решений. Качество этого сырья напрямую определяет качество ваших моделей, бэктестов и, в конечном счете, PnL (прибыли и убытков).
Начинающим достаточно бесплатных источников (Yahoo Finance, MOEX ISS) и формата Parquet для локальной работы. Профессионалам, чьи стратегии чувствительны к качеству данных (кванты, HFT, управление большими активами), неизбежно приходится переходить на платные провайдеры уровня Norgate или Bloomberg, чтобы избежать ошибок выживших, некорректных сплитов и пропусков в данных.
Помните: «Garbage In, Garbage Out» (Мусор на входе — мусор на выходе). Инвестируйте время в проверку и очистку архива до того, как начнете строить на нем стратегии.