Финансовый Telegram-бот за 30 минут с Market Data API
Обычно в статьях про финтех пишут о том, как работают биржи, которые обрабатывают огромные объемы данных на огромных скоростях, о том, как гениальные трейдеры и кванты используют отточенные алгоритмы, чтобы зарабатывать (или терять, бывает всякое) миллиарды долларов, или о работе блокчейна, обеспеченной сложными математическими выкладками. Все это создает впечатление, будто уровень входа в финтех-разработку запредельно высок. И отчасти оно правдиво — требования к разработчикам высоконагруженных финансовых приложений строги и специфичны.
Но все начинали с малого, и мы считаем, что любой заинтересованный человек способен создать приложение в финансовой сфере. Попробуем разработать собственное небольшое приложение, которое станет полезным для пользователей уже через полчаса.
Из обзоров современных технологий взаимодействия с пользователями видно, как быстро набирают популярность всевозможные боты и помощники, понимающие запросы на естественном языке. Поддержим этот тренд и создадим простого Telegram-бота, который сможет что-то рассказать пользователю о рынке по запросу.
Доступ к данным
Начнем с простой ситуации: приложение будет использовать текущие и исторические данные о торгах, а не отправлять на биржу собственные заявки. Эти данные (т. н. market data, или биржевую информацию) можно получать у ряда компаний за относительно небольшую плату или вообще бесплатно. С отправкой заявок все заметно сложнее (как минимум — дороже), и мы рассмотрим этот процесс подробнее в следующих статьях.
Какие существуют технологии для получения биржевых данных? Список их не слишком велик: это FIX-протокол (реализации могут немного различаться от поставщика к поставщику), FAST, ITCH и несколько вариантов бинарных и HTTP API (к примеру, CQG, EXANTE или MOEX). Впрочем, универсализация здесь не так принципиальна: набор предоставляемых данных может сильно различаться, и в любом случае при интеграции придется разобраться с особенностями конкретного поставщика.
Мы будем использовать недавно появившийся EXANTE Market Data API: начать разработку с ним можно просто и быстро, регистрация в системе не требует дополнительных подтверждений, а доступ к данным бесплатен. Пока API работает в режиме Tech Preview, но доступ открыт для всех желающих.
Функциональность
Определив спектр возможностей, нужно решить, что именно будет делать наш чат-бот. Существует масса вариантов: от отображения курсов валют до аналитики торговых стратегий по запросу на конкретный биржевой инструмент. Пока что не станем углубляться в детали финансовых алгоритмов и попробуем сделать что-то полезное, но при этом достаточно простое.
Один из самых понятных финансовых инструментов — это акции компаний, торгующиеся на фондовых биржах. С ними и будем работать, выбрав для простоты фондовый рынок США, т. к. по нему легче всего получить фундаментальные данные, и торги там наиболее активны.
Что интересует начинающего инвестора? Конечно же, выбор портфеля акций, вложив средства в которые, он сможет получить прибыль. Существует много способов выбирать акции: можно читать обзоры, можно ориентироваться на портфели лучших инвесторов, вроде Уоррена Баффетта или Билла Экмана, а можно пользоваться аналитическими методами. Один из общепринятых и самых распространенных методов — это оценка компании по метрике P/E (коэффициент цена/прибыль). P/E рассчитывается как отношение нынешней цены акции компании к показателю Earning Per Share (EPS, прибыль на акцию).
Таким образом, наш чат-бот будет помогать инвестору решить, включать ли акции определенной компании фондового рынка США в свой портфель, исходя из текущей оценки коэффициента цена/прибыль. Высокий P/E относительно других компаний этой отрасли покажет, что у акций есть потенциал роста. Низкий же, напротив, даст понять, что в будущем компания может столкнуться с проблемами.
Архитектура
Итак, в качестве основного источника биржевой информации выберем EXANTE Market Data API (MD API). Для получения фундаментальной информации — информации об общем состоянии финансов компании — будем использовать открытый источник данных datatables.org, с которым можно работать через YQL (Yahoo! Query Language).
Для реализации самого бота возьмем Python 3, а чтобы запустить его максимально быстро, применим фреймворк, поддерживающий все необходимые методы Telegram: python-telegram-bot.
Для работы с Telegram будем использовать поллинг новых сообщений с сервера, т. к. в прототипе мы не рассчитываем на большой объем трафика.
Заранее подумаем о том, чтобы приложение могло работать не только с одним клиентом. Для этого будем обрабатывать запросы в отдельных потоках. Для синхронизации и запуска потоков используем встроенные возможности фреймворка python-telegram-bot и примитивы синхронизации, доступные в Python.
Все выбранные внешние сервисы доступны по HTTP, так что для работы с ними будем использовать известный модуль Requests.
Наверняка многие инвесторы будут интересоваться одними и теми же акциями, которые на слуху, так что добавим слой кэширования, чтобы эффективнее использовать ресурсы.
MD API требует авторизации запросов с помощью JSON Web Token, для генерации токенов возьмем библиотеку PyJWT.
Подключение к API
Для начала работы с MD API нужно зарегистрироваться на сайте EXANTE для разработчиков.
После регистрации на портале становится доступным дэшборд с данными для доступа и управлением приложениями. Создадим там приложение для нашего бота:
Самого бота заведем так, как описано в документации к Telegram, через переписку с роботом BotFather:
Реализация
Начнем с того, что научим бота обрабатывать полученные запросы. Из каждого сообщения будем пытаться выделить тикеры акций и выдавать по ним информацию, чтобы диалог мог выглядеть так:
— Привет, робот, сегодня в новостях слышал об AAPL, кажется, это какая-то фруктовая компания, думаю вложить туда деньги, что скажешь?
— Акции AAPL (Apple Inc, биржа NASDAQ) имеют текущую оценку P/E 14, цена акции $117,06
— Спасибо, а что насчет NVDA и GOOG?
— NVDA (Nvidia Corp., NASDAQ): P/E 69, цена $105.7
GOOG (Alphabet Inc., NASDAQ): P/E 29, цена $796.42
Инициализируем бота и создаем обработчики сообщений:
Сейчас наш бот уже умеет выделять тикеры акций, но ничего больше с ними сделать не может.
Напишем интерфейс для работы с Market Data API и генерации токенов. Используем документацию и руководство по авторизации.
Добавим отдельный поток, который будет периодически запрашивать объемные данные по акциям:
Метод работы с API для получения списка акций США может выглядеть так:
После запуска этого потока и обращения к нему из обработчика сообщения, бот сможет вывести больше полезных данных (P/E здесь пока еще заглушка):
Добавим запрос Earning Per Share, для этого сделаем небольшую обертку над YQL с кэшированием (в скором будущем мы сможем заменить этот вызов на аналогичный из MD API), которая запросит значение «EarningsShare» для выбранной акции.
Теперь мы можем вывести полученный показатель EPS:
Осталось последнее: получить текущую цену акции. Для большей производительности нам следовало бы подписаться на поток обновлений с ценами, но для прототипа можно выбрать более простой способ: запрашивать последнюю дневную «свечу» — так называют элемент графика цен, популярного среди трейдеров.
Пример свечного графика соотношения индекса DJI и цены на золото по годам
«Свеча» строится для определенного периода (например, дня или часа) и на одном рисунке объединяет четыре цифры: цену на начало периода, максимальную и минимальную цену за период и цену на момент окончания периода. Сокращение OHLC, обозначающее такую свечу, как раз и расшифровывается как Open-High-Low-Close. Цена Close самой последней свечи будет соответствовать текущей цене акции.
Метод получения последней свечи может выглядеть так:
Собрав вместе все вызовы, мы получим такой код обработки одного тикера:
И теперь наш бот стал действительно полезен! Он может рассказать о текущем положении дел на рынке акций и даже кое-что посоветовать:
Развитие проекта
Дальнейшее развитие возможно по многим направлениям. К примеру, можно воспользоваться потоком данных о нынешней цене акции из MD API ( /md/1.0/feed ) и не запрашивать цену каждый раз из «свечек», а просто брать ее из внутреннего кэша, куда та будет попадать при обновлении потока.
Можно добавить боту мониторинг и аналитику (например через botan.io), а также развернуть его на каком-нибудь облачном хостинге, вроде Heroku или Google App Engine.
Бота можно сделать более «живым», добавив больше вариантов ответов, а также научить его отображать графики изменения цен, чтобы дать инвестору еще больше информации для анализа. Можно добавить любые другие метрики для оценки акций, сохранять портфель в данных робота, чтобы держать инвестора в курсе всех изменений, и расширить функциональность — например, на российский рынок акций.
Заключение
Подключив EXANTE Market Data API и воспользовавшись открытой фундаментальной информацией, за короткий срок мы разработали функционального робота, который поможет пользователю быстро оценить ситуацию на рынке. В процессе работы мы узнали о некоторых способах оценки акций на рынке и о терминологии, используемой в биржевой торговле.
Кроме того, мы рассмотрели возможности развития, и даже у такого небольшого робота их немало. Есть еще много способов применения market data — и много пользователей, которые заинтересуются вашими финансовыми приложениями.
В феврале EXANTE проведет хакатон, посвященный работе с рыночными данными с помощью EXANTE Market Data API. Авторы лучших чат-ботов и приложений получат призы, и сейчас как раз есть время подготовиться 🙂 Подробнее о мероприятии напишем чуть позже.
Как телеграм-боты помогают инвестору. Обзор полезных и бесплатных ботов
Как-то незаметно Телеграм стал одним из основных источников информации для инвесторов, по крайней мере на пространстве СНГ.
Но не одними телеграм-каналами силен этот мессенджер. Одной из ключевой фишек Телеграма всегда были боты, коих существует великое множество. Но что странно, для инвесторов мне удалось найти буквально несколько полезных. Буду рад, если в комментариях вы укажите ссылки на боты, которыми пользуетесь сами.
Ниже мой топ бесплатных и полезных телеграм-ботов.
Для любителей дивидендов
Я сам обожаю дивидендную стратегию инвестирования. Один из моих портфелей полностью ориентирован на получение и реинвестирование дивидендов. Для отслеживания дивидендных историй очень удобен бот https://t.me/DividendsBroBot. У бота множество настроек, что позволяет максимально гибко его настроить. Удобная фишка – уведомление о дивидендных отсечках в текущем месяце. Бот поддерживает работу как с иностранными акциями, так и с российскими эмитентами. В общем must have штука!
Для тех, кто хочет быстро узнать прогнозы аналитиков
Когда в голове есть несколько идей, а денег на покупку не так много, то полезно посмотреть прогнозы аналитиков и на их основе прийти к окончательному решению. Как говорится одна голова хорошо, а 30 лучше:)
Для быстрого получения информации по прогнозам аналитиков я использую бота https://t.me/MyWallStreetBot. Для работы бота используются сайты nasdaq.com, marketbeat.com, tipranks.com. Вводим нужный тикер и получаем прогноз цены и рекомендации покупать, продавать или держать. Например, для Microsoft:
Минус в том, что бот ориентирован только на иностранный акции. Впрочем, лично для меня это не минус, в российские я все равно не инвестирую 🙂
Для любителей подсмотреть за Кэтрин Вуд
Следующий бот предназначен для получения оперативной информации о том, что покупают и продают фонды Ark Invest. Бот доступен по ссылке https://t.me/ARKlyBot. Данные по всем сделкам фонда есть на их сайте и не являются какой-то закрытой информацией. Просто через бот удается получить информацию быстрее и в удобном виде.
Вот, например, отчет из бота за пятницу 9 сентября:
Из него хорошо видно какие акции покупались, а какие продавались фондами Ark Invest.
Для удобного ведение портфеля
Еще один крутой бесплатный бот это https://t.me/PocketStockBot. В этом боте вы можете вести учет купленных акций. Тут есть удобный журнал, хранящий все сделки. Режим показа всего портфеля с динамикой его изменений. Есть возможность быстро узнать котировку акции в рублях и долларах.
Для меня минус в том, что бот работает с привязкой к Мосбирже, а значит все расчеты делает в рублях. Но для многих, думаю, это не проблема.
Еще больше полезных материалов об инвестировании вы найдете в моем Телеграм-канале «Инвестиции Шаг За Шагом».
Инвестиции в крипту. Отзывы о боте BitBay Trade @ForexTradeIn_bot в Телеграм
Схем мошенничества в направлении криптовалют ничуть не меньше, чем в ставках на спорт. Причем способы развода практически ничем не отличаются (раскрутки, инсайды, липовые площадки и т.д.). Сегодня команда ЗБС Рейтинг проверила бота Телеграм BitBay Trade @ForexTradeIn_bot и сделала заключение, что вывести деньги с сервиса просто невозможно. В отзывах обманутые люди утверждают, что сначала просят доп. платежи, а потом просто перестают отвечать на сообщения.
Обратите внимание, что прикрываются названием более или менее известной биржи криптовалют. Подобная схема распространена, совсем недавно мы делали похожий обзор, вот ссылка.
Контакты сообщества:
- бот BitBay Trade в телеграмме: @ForexTradeIn_bot
Сведения о проекте Telegram BitBay Trade @ForexTradeIn_bot
После запуска бота становится доступным весь функционал. Пользователям рассказывают, что работают от биржи, и предлагают инвестировать в различные криптовалютные активы, вот список:
- Биткоин, Ефириум, Трон и Ктум;
- Лайткоин, Райпл, Карнадо и Солана;
- Терра, Додж, Полка Дот и Авалнче.
В разделе пополнение на счет можно внести денежные средства, а затем выбрать криптовалюту и купить по выгодному курсу.
Как вообще люди находят этого BOT?
В бота BitBay Trade новые подписчики приходят не по рекламе. В различных чатах и каналах Telegram ходят активисты по личкам и предлагают гарантированный заработок. Кто-то ведется, кто-то нет, но на данный момент ежедневно об этом боте пользователи ищут информацию через поисковик, а значит, схема развода работает. Кстати, самый популярный вопрос: «Как вывести деньги с бота БитБэй Трейд?».
Бот Telegram BitBay Trade: статистика и отзывы клиентов
Если попробовать купить крипту через бота, то станет все понятно, ценники представлены нереальные и не соответствуют действительности. По поводу статистики выплат, то какие-либо отчеты вообще отсутствуют, как и отзывы довольных инвесторов. Объективную оценку на проект можно найти на независимых сайтах. На всех сервисах BOT БитБэй @ForexTradeIn_bot называют мошенническим и СКАМОМ, в отзывах утверждают, что деньги вывести невозможно, как заработанные, так и свои, которые были вложенные.