Архив исторических котировок акций: где найти, как работать и какие нюансы учитывать

Где взять надежный архив цен акций? Разбираем сплиты, дивиденды и лучшие источники для бэктеста. Скачай историю и заработай на опыте рынка!

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

+7 (800) 301-07-30

Реклама jurik.ru

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

В этой статье мы подробно разберем, где найти архив цен акций, какие нюансы учитывать при работе с данными (сплиты, дивиденды, корректировки), какие инструменты использовать для загрузки и как правильно интерпретировать полученную информацию.


Зачем нужен архив цен акций? Основные сценарии использования

Понимание цели определяет выбор источника данных и формат их представления. Основные сценарии:

  • Бэктестинг торговых стратегий: Проверка гипотез на исторических данных (Open, High, Low, Close, Volume) для оценки риск/доходности.
  • Технический анализ: Построение графиков, расчет индикаторов (скользящие средние, RSI, MACD), поиск паттернов.
  • Фундаментальный анализ: Расчет мультипликаторов (P/E, P/S, EV/EBITDA) в динамике за 5–10 лет.
  • Налоговый учет и отчетность: Определение цены покупки/продажи для расчета налоговой базы (особенно важно для FIFO/LIFO методов).
  • Корпоративные действия: Анализ реакции рынка на сплиты, консолидации, выплату дивидендов, SPO/IPO.
  • Риск-менеджмент: Расчет исторической волатильности, VaR (Value at Risk), просадок (drawdowns).

Типы данных в архиве: «Сырые» vs «Скорректированные»

Это самый критически важный момент, который часто упускают новички.

Сырые цены (Raw Prices / Unadjusted)

Цены, такие какие они были на момент торговли. На графике они создают «прыжки» (гапы) в дни корпоративных действий.

  • Пример: Акция стоила 1000 руб. Проведен сплит 1:10. На следующий день цена открытия 100 руб. На «сыром» графике видна просадка 90%, которой на самом деле не было.

Скорректированные цены (Adjusted Close / Split & Dividend Adjusted)

Цены, пересчитанные с учетом всех корпоративных действий (сплиты, консолидации, дивидендные выплаты).

  • Принцип: История пересчитывается так, будто инвестор реинвестировал все дивиденды и прошел через все сплиты.
  • Зачем: Позволяет корректно считать доходность за длительный период и строить правильные технические индикаторы.
Важно: Для бэктестинга и расчета доходности всегда используйте скорректированные цены (Adjusted Close). Для симуляции исполнения ордеров (лимитные заявки, стоп-лоссы) в конкретный исторический день — используйте сырые цены (Open, High, Low, Close) того дня.

Основные источники архива цен акций (Россия и Мир)

Официальные сайты бирж (Первичные источники)

Самые надежные, но часто неудобные для массовой загрузки (API часто платные или сложные).

  • Московская Биржа (MOEX / ISS API): Основной источник для российских акций (SBER, GAZP, LKOH и др.). Предоставляет историю за любой период, включая Level 1 и Level 2 данные.
    • Сайт: moex.com (раздел «Данные для торгов» -> «Архив котировок»)
    • API: ISS MOEX (бесплатный, лимиты по запросам).
  • СПБ Биржа: Для акций иностранных эмитентов, торгующихся в режиме доступа неквалифицированных инвесторов.
  • NYSE / NASDAQ / CBOE: Официальные данные по американским акциям. Обычно доступны через платных вендоров (SIP data).

Финансовые терминалы и платформы (Профессиональный уровень)

  • Bloomberg Terminal / Reuters Eikon: Золотой стандарт. Максимальная точность, корректировки, корпоративные действия, альтернативные данные. Стоимость: $20k–$25k в год.
  • Quik / Transaq / SmartCOM: Российские терминалы. Позволяют выгрузить историю в текст/CSV прямо из терминала (меню «Таблица» -> «Экспорт» или через Lua-скрипты в Quik).

Бесплатные и фримиум веб-сервисы (Для ретейла и разработчиков)

Сервис Покрытие API / Экспорт Особенности корректировок
Yahoo Finance (finance.yahoo.com) Мир (US, EU, RU через тикеры типа SBER.ME) Python (yfinance), CSV ручной выгрузки Хорошие Adjusted Close, но иногда ошибки по сплитам на RU рынке
Investing.com Мир CSV выгрузка (требует регистрации), нет публичного API Удобный интерфейс, есть дивиденды и сплиты отдельно
Alpha Vantage Мир (US основной) Бесплатный API (5 req/min, 500/day) Есть endpoint TIME_SERIES_DAILY_ADJUSTED
Twelve Data Мир API (бесплатный тариф 800 req/day) Хорошее покрытие фундаменталки
MOEX ISS (Прямой API) Россия (Полное покрытие) REST API (JSON/CSV), бесплатно Самые точные данные по РФ, нужны навыки парсинга
Finam / TradeLeader (Экспорт) Россия, Фьючерсы, Форекс Выгрузка TXT/CSV через веб-интерфейс Очень популярный формат для Quik/WealthLab, есть минутки
Polygon.io US Stocks, Options, Crypto Платный API (есть бесплатный старт) Институциональное качество, тиковые данные

Как программно загрузить архив (Python примеры)

Для серьезного анализа ручная выгрузка CSV не подходит. Стандарт де-факто — Python.

Библиотека yfinance (Самый простой старт)

import yfinance as yf
import pandas as pd

ticker = "SBER.ME"
start_date = "2020-01-01"
end_date = "2024-01-01"

df = yf.download(ticker, start=start_date, end=end_date, progress=False, auto_adjust=True)

print(df;head)

df.to_csv(f"{ticker}_history.csv")

Прямой запрос к MOEX ISS API (Максимальная точность для РФ)

import requests
import pandas as pd
from datetime import datetime

def get_moex_history(ticker, start_date, end_date):
 # Пример: https://iss.moex.com/iss/history/engines/stock/markets/shares/securities/SBER.json?from=2023-01-01&till=2023-12-31
 url = f"https://iss.moex.com/iss/history/engines/stock/markets/shares/securities/{ticker}.json"

 params = {
 'from': start_date,
 'till': end_date,
 'start': 0, # Пагинация
 'limit': 100 # Лимит на страницу (макс 100 для history)
 }
 
 all_data = []
 columns = None
 
 while True:
 response = requests.get(url, params=params)
 data = response.json
 
 if columns is None:
 columns = data['history']['columns']
 
 batch = data['history']['data']
 if not batch:
 break
  all_data.extend(batch)
 params['start'] += len(batch)
 
 df = pd.DataFrame(all_data, columns=columns)
 # Важные колонки: TRADEDATE, OPEN, HIGH, LOW, CLOSE, VOLUME, VALUE, LEGALCLOSEPRICE (Цена закрытия для расчетов)
 df['TRADEDATE'] = pd.to_datetime(df['TRADEDATE'])
 df.set_index('TRADEDATE', inplace=True)
 return df

df_sber = get_moex_history("SBER", "2023-01-01", "2023-12-31")
print(df_sber[['OPEN', 'HIGH', 'LOW', 'CLOSE', 'VOLUME']].head)

Библиотека moexalgo (Удобная обертка над MOEX API)

# pip install moexalgo
from moexalgo import Ticker

sber = Ticker("SBER")

candles = sber.candles(start="2023-01-01", end="2023-12-31", period='1d')
print(candles.head)

Нюансы работы с российским рынком (MOEX)

  1. Режимы торгов (BoardID): У одной акции может быть несколько режимов (TQBR, основной фондовый, TQTF — фонды, TQCB — облигации). Для акций почти всегда нужен TQBR (или SMAL для малых компаний). При парсинге ISS API фильтруйте по BOARDID='TQBR'.
  2. Тикеры vs SECID: В MOEX тикер (SBER) и SECID часто совпадают, но не всегда. Лучше использовать SECID.
  3. Дивидендные зазоры (Dividend Gaps): На российском рынке дивидендные выплаты часто большие (5-15% от цены). График «сырых» цен после выплаты дивиденда падает. Adjusted Close в Yahoo Finance для российских тикеров (.ME) иногда считает некорректно из-за специфики реестра (даты отсечки). Проверяйте вручную по данным MOEX (поле LEGALCLOSEPRICE или расчет через корректировочные коэффициенты).
  4. Сплиты и консолидации: Происходят редко (Сбербанк, Полюс, Яндекс). MOEX ISS выдает таблицу securities с полем LOTSIZE и историей изменений номинала.
  5. Иностранные акции на СПБ Бирже: Тикеры часто имеют суффиксы (например, AAPL_RU, TSLA_RU). Ликвидность и спреды отличаются от US-рынка. Архив лучше брать с сайта СПБ Биржи или через брокерский терминал.

Форматы хранения данных

После загрузки данные нужно сохранить эффективно.

  • CSV / Parquet: Стандарт для Data Science. Parquet (колончатый формат) сжимает данные в 5-10 раз лучше CSV и читается в Pandas мгновенно (df.to_parquet / pd.read_parquet).
  • HDF5: Хорош для иерархических данных, но устаревает.
  • Базы данных (TimescaleDB, InfluxDB, ClickHouse, PostgreSQL): Необходимы, если вы храните тиковые данные или историю по 1000+ тикерам и делаете сложные запросы (например, «дай мне все акции, где объем вырос в 3 раза за последний час»).
  • DuckDB: Отличный встраиваемый OLAP-движок для аналитики прямо над Parquet-файлами без поднятия сервера БД.

Проверка качества данных (Data Quality Checklist)

Перед запуском бэктеста или отчетом обязательно прогоните чек-лист:

  • [ ] Пропуски (NaN): Есть ли пропуски в торговые дни? (Праздники, технические сбои). Заполнять ли их (forward fill) или оставлять?
  • [ ] Аномалии цены: Есть ли свечи с High < Low или Close > High? (Ошибки источника).
  • [ ] Объем (Volume): Нулевой объем в торговый день? (Приостановка торгов).
  • [ ] Корректировки: Совпадает ли Adjusted Close с ручным расчетом по дивидендам/сплитам?
  • [ ] Выжившие (Survivorship Bias): Включены ли в архив дефолтнувшие/делистингнувшиеся компании? (Критично для тестирования стратегий «покупай и держи» или скрининга). Большинство бесплатных API (Yahoo, Alpha Vantage) выдают только текущие тикеры.
  • [ ] Таймзона: Все таймстемпы в UTC или в локальном времени биржи (MSK для MOEX)? Смещение на 3-6 часов ломает интрадей-стратегии.

Продвинутые темы

Тиковые данные (Tick Data) и Order Book (Level 2/3)

Дневные свечи (OHLCV) скрывают внутридневную динамику. Для HFT, скальпинга и точного моделирования проскальзывания (slippage) нужны:

  • Tick-by-tick: Каждая сделка (цена, объем, время, флаг агрессора).
  • Order Book Snapshots / Incremental: Глубина рынка (Bid/Ask уровни).

Где взять: MOEX (платный продукт «Архив рыночных данных»), Finam (исторические тики за деньги), Polygon.io (US), Databento, Tardis.dev (крипта/фьючерсы). Объемы: терабайты. Требуют ClickHouse / Parquet на S3.

Корректировка на инфляцию / Риск-фри ставку

Для сравнения доходности 2000 года и 2024 года номинальные цены бесполезны. Нужно переводить в реальные цены (дефлятор ВВП или ИПЦ) или в единицы «риск-фри актива» (ОФЗ/US Treasuries).

Тотальный возврат (Total Return Index)

Строится на основе Adjusted Close. Показывает стоимость портфеля из 1 акции с реинвестированием всех дивидендов. Формула:
$$ TRI_t = TRI_{t-1} imes rac{AdjClose_t}{AdjClose_{t-1}} $$
Это единственно правильный бенчмарк для сравнения с индексами (IMOEX, S&P 500 TR).


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

Внимание: Данные бирж — интеллектуальная собственность.

  • Личное некоммерческое использование: Обычно разрешено бесплатно (Yahoo, MOEX ISS, Investing.com).
  • Коммерческое использование (продажа сигналов, управление деньгами, SaaS): Требует покупки лицензии у биржи (MOEX, NYSE, NASDAQ) или у вендора (Refinitiv, Bloomberg, BCS Express API).
  • Перераспространение: Нельзя выкладывать скачанные базы в открытый доступ (GitHub, Telegram-каналы) без разрешения правообладателя.

Резюме: Пошаговый план для начинающего аналитика

  1. Определите цель: Бэктест на дневках? Интрадей? Фундаментальный скрининг?
  2. Выберите источник:
    • Россия, дневки, бесплатно -> MOEX ISS API (через moexalgo/yfinance).
    • США, дневки, бесплатно -> Yahoo Finance (yfinance).
    • Профессионально/Коммерчески -> Bloomberg / Polygon;io / MOEX Platform.
  3. Настройте загрузку: Скачайте Adjusted Close для доходности + Raw OHLCV для симуляции исполнения.
  4. Сохраните в Parquet: Структура папок: /data/daily/RU/SBER.parquet.
  5. Прогоните QA: Проверьте на пропуски, сплиты, дивиденды, выживаемость тикеров.
  6. Документируйте: Заведите data_dictionary.md: источник, таймзона, метод корректировки, дата обновления.

Работа с архивом цен акций — это не просто скачивание CSV-файла. Это инженерный процесс сбора, очистки, корректировки и хранения данных. Качество ваших инвестиционных решений линейно зависит от качества входных данных («Garbage In, Garbage Out»).

Начните с бесплатных надежных источников (MOEX ISS для России, Yahoo Finance для США) и библиотек Python (moexalgo, yfinance), строго разделяйте «сырые» и «скорректированные» цены, храните данные в Parquet и всегда проверяйте корректность корпоративных действий. Это сэкономит вам месяцы отладки стратегий в будущем.


Статья подготовлена в ознакомительных целях. Не является индивидуальной инвестиционной рекомендацией. Данные о котировках задержаны или носят справочный характер. Перед принятием решений сверяйтесь с официальными источниками вашего брокера и биржи.