January 30

TKSBrokerAPI: обогащаем биржевые данные

Введение

В прошлой статье мы рассмотрели, как автоматизировать простой торговый сценарий на Python с помощью платформы ⚙️ TKSBrokerAPI. Эта платформа упрощает автоматизацию торгов через Tinkoff Invest REST API, беря на себя всю работу с брокерской инфраструктурой. Всё начинается с вашей гениальной торговой идеи и завершается автоматизацией сценария, который TKSBrokerAPI помогает реализовать в коде.

Но как найти ту самую «гениальную идею» для торгового алгоритма? Здесь на помощь снова приходит TKSBrokerAPI. Платформа позволяет получать «сырые» данные по торговым инструментам: акциям, облигациям, фондам, фьючерсам и валютам. Эти данные можно анализировать в любом удобном инструменте, будь то табличный редактор или специализированная аналитическая платформа.

Для работы с данными в TKSBrokerAPI предусмотрены методы, которые позволяют:

  • сохранять данные в популярных форматах: XLSX, CSV (для табличных редакторов), Markdown (для удобства чтения) и Pandas DataFrame (для аналитиков и датасайентистов);
  • обогащать и расширять данные для дальнейшего анализа.

Например, с помощью платформы можно:

Подробнее о возможностях платформы можно узнать в разделе документации «Основные возможности» или в полной API-документации на модуль TKSBrokerAPI.

Таким образом, TKSBrokerAPI — это не только инструмент для автоматизации торгов, но и решение для сбора, первичной обработки и анализа биржевых данных, которое поможет вам принимать более обоснованные инвестиционные решения.

Обогащение данных

Схема обогащения биржевых данных с помощью TKSBrokerAPI

Как данные обогащаются и используются в TKSBrokerAPI:

  1. Запрос данных. Вы запрашиваете нужные данные с сервера брокера через модуль TKSBrokerAPI. Почти все методы модуля возвращают «сырые» данные в виде словаря Python.
  2. Обработка и обогащение. Эти данные проходят обработку: добавляются статистические данные, некоторые параметры, аналитические отчёты и другая полезная информация.
  3. Сохранение данных. После обогащения данные сохраняются в удобном для анализа формате:
    • в виде словаря Python или Pandas DataFrame (для программистов и аналитиков);
    • в форматах XLSX, CSV или Markdown (при работе через консоль и использовании внешних инструментов аналитики).
  4. Анализ данных. Вы загружаете данные в свою аналитическую систему и начинаете исследовать: ищете зависимости, корреляции, проверяете гипотезы и строите прогнозы.
  5. Создание торгового алгоритма. На основе анализа вы формулируете свою «гениальную идею» для торгового алгоритма.
  6. Автоматизация. Реализуете торговый сценарий с помощью платформы TKSBrokerAPI (как было показано в предыдущей статье).
  7. Профит! 😉
Визуализация шагов алгоритма обогащения данных в виде блок-схемы

Как начать работать с платформой TKSBrokerAPI я уже рассказывал в одной из предыдущих статей, поэтому не буду повторяться. Давайте сразу перейдём к практическим примерам получения и обогащения биржевых данных.

Получаем данные по всем инструментам

Пример полученных данных по всем инструментам в формате XLSX
  • Команда: tksbrokerapi -v 10 --list-xlsx

Ключ --list-xlsx (или -x) используется для сохранения сырых данных по всем доступным для текущего пользователя инструментам в формате XLSX. Этот формат универсален и пригоден для дальнейшего изучения датасайентистами или биржевыми аналитиками. Частично данные берутся из локального кеша `dump.json, затем они обогащаются, трансформируются в XLSX-формат и сохраняются в файл dump.xlsx.

Получаем обогащённые данные по облигациям

Пример обогащения данных по облигациям — рассчитаны некоторые значения и добавлены новые столбцы, которых ранее в биржевых данных не было
  • Команда: tksbrokerapi -v 10 --bonds-xlsx [список облигаций]

Ключ --bonds-xlsx (или -b) используется для получения всех доступных пользователю облигаций. Либо можно перечислить список FIGI или тикеров только интересующих облигаций. Затем полученные данные обогащаются и преобразуются в Pandas DataFrame с дополнительной информацией: текущие цены облигации, календарь платежей, рассчитанные купонные и текущие доходности (зависящие от цены) и некоторые другие статистические параметры.

Затем эти данные экспортируются в XLSX-файл, пригодный для дальнейшего анализа датасайентистами или биржевыми аналитиками (по умолчанию: ext-bonds.xlsx). Что означают заголовки в обогащённом XLSX-файле или в Pandas DataFrame можно узнать в документации (раздел «Получить обогащённые данные по облигациям»).

Если с сервера брокера запрашивается слишком много или все облигации, то ожидание может быть достаточно длительным, что связано с ограничениями брокера. В среднем удаётся обогатить новыми данными ~90–120 облигаций в минуту, в зависимости от пользовательских лимитов ограничения скорости.

Строим календарь выплат по облигациям

Пример календаря выплат по облигациям в XLSX-формате
Пример календаря выплат по облигациям в HTML-формате (дополнительно указан ключ --html)
  • Команда: tksbrokerapi -v 10 --calendar [список облигаций]

Ключ --calendar (или -c) используется для построения календаря платежей по облигациям в виде таблицы. Строится общий календарь для перечисленных в списке тикеров или FIGI облигаций, либо для всех доступных пользователю облигаций сразу, если список не задан. Если календарь строится более чем для одной облигации, то платежи за один и тот же месяц группируются.

Затем календарь экспортируется в XLSX-файл для дальнейшего анализа датасайентистами или биржевыми аналитиками (по умолчанию: calendar.xlsx). Заголовки календаря приводятся в человеко-читаемый формат. Что они означают, можно узнать из документации (раздел «Построить календарь выплат по облигациям»).

Получаем историю цен инструмента

Примеры интерактивного и статического графика цен, построенные с помощью модуля PriceGenerator в TKSBrokerAPI
  • Команда: tksbrokerapi -v 10 --ticker [тикер] --history 2022-10-15 2022-10-17 --interval hour --output hour.csv --render-chart interact

В TKSBrokerAPI можно работать с историческими данными в формате OHLCV-свечей, а также строить интерактивные или статические графики. Для получения данных используются ключи --ticker или --figi для указания инструмента, --interval для задания интервала свечи. Данные можно загрузить с сервера брокера (ключ --history) или из локального CSV-файла (ключ --load-history).

История скачивается между двумя датами в формате YYYY-MM-DD и сохраняется в CSV или возвращается как Pandas DataFrame. Сервер брокера по умолчанию использует время в формате ISO UTC. Поддерживается докачка исторических данных.

Для визуализации цен на графиках используется ключ --render-chart совместно с ключами --history или --load-history. Графики создаются с помощью платформы PriceGenerator и по умолчанию сохраняются в файл index.html. На графиках отображаются базовые статистические значения и индикаторы, что помогает поверхностно оценить поведение цены в заданном диапазоне.

  • Пример CSV-файла с историческими данными (порядок заголовков: Date, Time, Open, High, Low, Close, Volume): ./docs/media/GAZP_hour.csv.

Таким образом, TKSBrokerAPI предоставляет удобные инструменты для анализа исторических данных и их визуализации, что упрощает и ускоряет исследование рыночной динамики.

Вопрос о том, какие методы и инструменты лучше использовать для аналитических исследований и технического анализа, выходит за рамки этой статьи. Однако, независимо от вашего выбора, платформа TKSBrokerAPI поможет как с получением «сырых» данных, так и с автоматизацией вашей торговой стратегии.

Платформа TKSBrokerAPI. Наш девиз: Технологии · Знания · Наука (Technologies · Knowledge · Science)

На этом всё, а если у вас появились вопросы по работе платформы TKSBrokerAPI, то вы можете задать их на GitHub в разделе 👉 Issues 👈 (также подписывайтесь на блог разработчиков: t.me/TKSBrokerAPI).

Успехов вам в автоматизации биржевой торговли! И профита! 🚀 😉✌️

⚙ Ссылка на проект: github.com/Tim55667757/TKSBrokerAPI
🎁 Поддержать проект: yoomoney.ru/to/410015019068268