Четыре года назад я написал систему поиска поиска недооцененных американских акций, используя данные Яху Финанс, ведь на американском рынке торгуется больше 10 тысяч бумаг, из которых около 4 тысяч бумаг имеют рекомендации аналитиков о прогнозируемой цене. Это большие цифры, с которыми сложно работать. Но что по России?
Я вялотекуще пытался найти систему которая бы также отдавала рекомендации аналитиков по российским компаниям, пока недавно не нашёл такой API. Вот например какие рекомендации для оператора аренды электросамокатов WUSH:
{ "targets": [ { "uid": "b993e814-9986-4434-ae88-b086066714a0", "ticker": "WUSH", "company": "SberCIB Investment Research", "recommendation": "RECOMMENDATION_HOLD", "recommendationDate": "2024-10-02T00:00:00Z", "currency": "rub", "currentPrice": { "units": "192", "nano": 0 }, "targetPrice": { "units": "250", "nano": 0 }, "priceChange": { "u <a name="cut"></a> nits": "58", "nano": 0 }, "priceChangeRel": { "units": "30", "nano": 210000000 }, "showName": "Whoosh" }, { "uid": "b993e814-9986-4434-ae88-b086066714a0", "ticker": "WUSH", "company": "Финам", "recommendation": "RECOMMENDATION_HOLD", "recommendationDate": "2024-09-26T00:00:00Z", "currency": "rub", "currentPrice": { "units": "192", "nano": 0 }, "targetPrice": { "units": "250", "nano": 0 }, "priceChange": { "units": "58", "nano": 0 }, "priceChangeRel": { "units": "30", "nano": 210000000 }, "showName": "Whoosh" }, { "uid": "b993e814-9986-4434-ae88-b086066714a0", "ticker": "WUSH", "company": "Газпромбанк", "recommendation": "RECOMMENDATION_HOLD", "recommendationDate": "2024-09-24T00:00:00Z", "currency": "rub", "currentPrice": { "units": "192", "nano": 0 }, "targetPrice": { "units": "355", "nano": 0 }, "priceChange": { "units": "163", "nano": 0 }, "priceChangeRel": { "units": "84", "nano": 900000000 }, "showName": "Whoosh" } ], "consensus": { "uid": "b993e814-9986-4434-ae88-b086066714a0", "ticker": "WUSH", "recommendation": "RECOMMENDATION_HOLD", "currency": "rub", "currentPrice": { "units": "192", "nano": 0 }, "consensus": { "units": "285", "nano": 0 }, "minTarget": { "units": "250", "nano": 0 }, "maxTarget": { "units": "355", "nano": 0 }, "priceChange": { "units": "93", "nano": 0 }, "priceChangeRel": { "units": "48", "nano": 440000000 } } }
Правда есть один нюанс в количестве. На московской бирже представлено 170 бумаг, из которых имеют рекомендации всего 89 акций.
Гораздо меньшее количество бумаг, зато API выдаёт конкретные имена компаний, которые давали рекомендации, а также дату дачи прогноза и прогнозную цену. Теоретически можно составлять списки самых точных аналитиков, через какое-то время собирая цены и сопоставляя их с прогнозными.
Но мне было больше интересно составить сводную таблицу по всем доступным 89 акциям.
Я написал свой код на Node.js и обращался к T‑Bank Invest API для получения данных. Вот его функциональность:
secrets
), утилиты ведения журнала (logService
) и клиент Tinkoff (tinkoffClient
), что облегчает взаимодействие с API Tinkoff Invest.API_TOKEN
из файла конфигурации используется для аутентификации запросов API.getStockData
запрашивает у InstrumentsService Tinkoff список доступных акций. Она фильтрует эти данные, чтобы отобрать акции, котирующиеся на бирже MOEX (REAL_EXCHANGE_MOEX
).figi
, ticker
, uid
и logoName
, извлекаются для дальнейшей обработки.getForecastsForStocks
проходит по отфильтрованному списку акций и извлекает прогнозы аналитиков с помощью конечной точки InstrumentsService/GetForecastBy
.generateHTMLTable
создает HTML-файл для визуального отображения данных в таблице.Подводя итог, можно сказать, что этот скрипт представляет собой инструмент аналитики, который извлекает актуальные данные по акциям из API Т-Банк — Т‑Инвестиции, обрабатывает рекомендации аналитиков и формирует понятный, наглядный отчет для принятия решений.
С логом работы можно познакомиться на GitHub. Готовую таблицу можно скачать с него же.
Скрипт позволяет находить компании у которых есть рекомендации аналитиков. Однако эта выборка не является индивидуальной инвестиционной рекомендацией и может не соответствовать вашим инвестиционным целям. Это связано с тем, что скрипт — всего лишь инструмент, а решение о покупке конкретных бумаг принимает уже сам человек после изучения эмитента.
Проект полностью представлен на Гитхабе: https://github.com/empenoso/SilverFir-TradingBot.
Новые модули будут загружаться по мере написания и тестирования.
Автор:Михаил Шардин
14 октября 2024 г.