Product
Introducing License Enforcement in Socket
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
tinvest-robot-perevalov
Advanced tools
A package that implements a news sentiment based strategy for trading using Tiknoff Invest API
Tinvest Robot Perevalov - это Python Библиотека, реализующая функциональность торгового робота на основе Tinkoff Invest API для Python с торговой стратегией, основанной на анализе тональности новостей.
Торговая стратегия основана на анализе тональности новостей. При получении новой новости производится анализ её тональности, в результате которого получаем один из трёх классов: positive
, negative
, или neutral
.
После чего, проверяется наличие упоминания той или иной компании в заголовке новости.
Если компания упомянута, то в случае новости с классом positive
посылается сигнал на покупку акций в заданном количестве.
Если новость с классом negative
, то посылается сигнал на продажу акций в заданном количестве.
Ниже на рисунке представлена концептуальная схема стратегии на определённом примере.
Как видно, ключевым звеном является модуль анализа тональности, в качестве которого используется предобученная нейронная языковая модель (neural language model).
Тестирование стратегии проводилось на наборе данных новостей "Historical financial news archive", который содержит в себе новостные данные по 800 компаниям из США за 12 лет (2008-2020).
В ходе тестирования был выбран диапазон с 2012 по 2020 годы включительно по 100 наиболее упоминаемым компаниям из набора данных. Поскольку некоторые компании оказались недоступны через сервис Тинькофф Инвестиции, в итоге в процедуру тестирования было включено 90 компаний.
В рамках наблюдаемого года (например 2013) бралось соответствующее подмножество новостей упорядоченных по дате по возрастанию. После чего по каждой из компаний проверялось упоминание в той или иной новости и далее использовался алгоритм стратегии описанной выше со следующими условиями:
Ниже представленые некоторые графики по результатам тестирования.
На графике мы видим, что доходность была положительной почти на всех годах, за исключением 2018. Также, очевидно что доходность не зависит от количества операций по бумагам (это было так же подтверждено анализом коррелляции).
На графике не уместились все тикеры, однако в топ-3 самых доходных компаний входят: TSLA (64.72%), NFLX (28.62%), AAPL (18.68%) в среднем за год. Также, очевидно, что большинство бумаг оказались с положительной доходностью.
Тестирование можно воспроизвести с помощью данного ноутбука скачав перед этим датасет. Экспериментальные данные тестирования доступны тут.
Для запуска решения необходимо установить 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
: Список тикеров для торговли через запятуюОсновными ограничениями решения можно считать:
Однако, в будущем планируются следующие улучшения:
FAQs
A package that implements a news sentiment based strategy for trading using Tiknoff Invest API
We found that tinvest-robot-perevalov demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Ensure open-source compliance with Socket’s License Enforcement Beta. Set up your License Policy and secure your software!
Product
We're launching a new set of license analysis and compliance features for analyzing, managing, and complying with licenses across a range of supported languages and ecosystems.
Product
We're excited to introduce Socket Optimize, a powerful CLI command to secure open source dependencies with tested, optimized package overrides.