Skip to main content

Tinvest Robot Perevalov

Version Downloads

Tinvest Robot Perevalov - это Python Библиотека, реализующая функциональность торгового робота на основе Tinkoff Invest API для Python с торговой стратегией, основанной на анализе тональности новостей.

Описание торговой стратегии

Торговая стратегия основана на анализе тональности новостей. При получении новой новости производится анализ её тональности, в результате которого получаем один из трёх классов: positive, negative, или neutral. После чего, проверяется наличие упоминания той или иной компании в заголовке новости. Если компания упомянута, то в случае новости с классом positive посылается сигнал на покупку акций в заданном количестве. Если новость с классом negative, то посылается сигнал на продажу акций в заданном количестве.

Ниже на рисунке представлена концептуальная схема стратегии на определённом примере.

Схема стратегии

Как видно, ключевым звеном является модуль анализа тональности, в качестве которого используется предобученная нейронная языковая модель (neural language model).

Тестирование торговой стратегии (Backtesting)

Тестирование стратегии проводилось на наборе данных новостей "Historical financial news archive", который содержит в себе новостные данные по 800 компаниям из США за 12 лет (2008-2020).

В ходе тестирования был выбран диапазон с 2012 по 2020 годы включительно по 100 наиболее упоминаемым компаниям из набора данных. Поскольку некоторые компании оказались недоступны через сервис Тинькофф Инвестиции, в итоге в процедуру тестирования было включено 90 компаний.

В рамках наблюдаемого года (например 2013) бралось соответствующее подмножество новостей упорядоченных по дате по возрастанию. После чего по каждой из компаний проверялось упоминание в той или иной новости и далее использовался алгоритм стратегии описанной выше со следующими условиями:

  • Комиссия за операции не учитывалась;
  • Покупка в шорт (в минус) недоступна;
  • Покупка и продажа производится по одному лоту за раз;
  • Финансовый результат считался по определённой бумаге за конкретный год;
  • Данные по цене (свечи) брались из API Тинькофф Инвестиции;
  • Если на конец года на балансе имелось ненулевой число акций, то финальный баланс на год рассчитывался по цене закрытия бумаг в последний торговый день года.

Ниже представленые некоторые графики по результатам тестирования.

Доход по годам

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

Доход по тикерам

На графике не уместились все тикеры, однако в топ-3 самых доходных компаний входят: TSLA (64.72%), NFLX (28.62%), AAPL (18.68%) в среднем за год. Также, очевидно, что большинство бумаг оказались с положительной доходностью.

Тестирование можно воспроизвести с помощью данного ноутбука скачав перед этим датасет. Экспериментальные данные тестирования доступны тут.

Как запустить решение (How to run)

Для запуска решения необходимо установить Docker и Docker Compose на вашей машине. После чего, необходимо перейти в директорию examples и запустить там следующие команды:

docker-compose build
docker-compose up

После чего, запустится 3 контейнера:

  • fetch -- контейнер для получения новостей из интернета (запускается сразу или через интервал, указанный в примере);
  • trade -- контейнер для совершения торговых операций, мониторит полученные новости через определённый интервал, указанный тут.
  • sqlite-web -- позволяет следить за полученными новостями и исполненными операциями в базе данных через веб-интерфейс (по умолчанию порт 8080).

Внимание, перед тем как запускать решение, необходимо создать .env файл с вашими конфигурационными параметрами. Пример конфигурационного файла:

TINVEST_ACCOUNT_ID=200000000
TINVEST_DB_NAME=../data/tinvest-perevalov.sqlite
SENTIMENT_MODEL=cardiffnlp/twitter-roberta-base-sentiment
TINVEST_TOKEN=t.YoUr.tInVeSt.token
IS_SANDBOX=True
TINVEST_TICKERS=CSCO,AAPL

Описание параметров:

  • TINVEST_ACCOUNT_ID: Идентификатор счета в тинькофф инвестициях (или в песочнице)
  • TINVEST_DB_NAME: Имя базы данных где будуn храниться новости и данные об операциях (если меняете относительный путь, то необходимо изменить volume в docker-compose.yml)
  • SENTIMENT_MODEL: Имя модели для обработки новостей (в данный момент поддерживается только эта модель)
  • TINVEST_TOKEN: Токен для доступа к тинькофф инвестициям
  • IS_SANDBOX: Признак того, работаем ли мы в песочнице
  • TINVEST_TICKERS: Список тикеров для торговли через запятую

Ограничения и планы на будущее

Основными ограничениями решения можно считать:

  • Торговля только на СПб Бирже (из-за использования англоязычной модели анализа новостей);
  • Торговля по одному лоту на бумагу;
  • Стратегия "захардкожена" внутри библиотеки.

Однако, в будущем планируются следующие улучшения:

  • Поддержка нескольких бирж для торговли;
  • Поддержка нескольких моделей анализа новостей;
  • Кастомизация стратегии;
  • Коннекторы для использования разных БД.

Metadata

Release files for tinvest-robot-perevalov 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for tinvest-robot-perevalov 0.1.3
File Size Uploaded
tinvest-robot-perevalov-0.1.3.tar.gz 14.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for tinvest-robot-perevalov 0.1.3
File Interpreter ABI Platform
tinvest_robot_perevalov-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 25.8 kB

Release files / tinvest-robot-perevalov-0.1.3.tar.gz

Download URL tinvest-robot-perevalov-0.1.3.tar.gz
Size 14.1 kB
Tags Source
SHA-256 checksum
How to use checksums
4104c9d01a8c4c18bdcc754e06bcbd6644c2c82f865e32551c6e119f0f9fe28f
BLAKE2b-256 checksum
How to use checksums
1c77473d73c59a0a7a87245da25c9b41c2a3c20fb28b65235d872294e6e74665
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.8.10

Release files / tinvest_robot_perevalov-0.1.3-py3-none-any.whl

Download URL tinvest_robot_perevalov-0.1.3-py3-none-any.whl
Size 11.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
6480a159076dda868130597ca8ae410b219e9d71dda39c3abd0cd33325195caf
BLAKE2b-256 checksum
How to use checksums
67d7144ac50d4a3d56bfdc1f72e077ebfa3dd350f28f47ab1886f0b51bde2bf9
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/4.0.0 CPython/3.8.10

Release history Release notifications | RSS feed

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page