Разбираю разные подходы к созданию ботов и смотрю на их эффективность
Для ответа на вопрос заработка при помощи торговых ботов, я потратил достаточно большое количество времени на изучение фондового и криптовалютных рынков. Если вкратце - любое свободное время вне своей работы и семьи уходило на торговлю. К сегодняшнему дню у меня открыты и пополнены счета на Тинькофф инвестициях, Interactive Brokers, Binance, Alpaca (здесь только демо счет для нерезидентов США), Okex и форекс клубе, премиум на TradingView. С каждым из них я использовал торговых ботов в меньшей или большей степени, изучал их API, трейдинг в целом и методы алгоритмической торговли.
Чтобы ответить на вопрос эффективности ботов, я потратил много времени на исследования в области нейросетей, алгоритмической торговли, крипто-трейдинга и могу теперь сделать выводы для дальнейших исследований и практического применения.
Дисклеймер: если вы читаете эту статью, я предполагаю, что вы знакомы с рынками акций/криптовалюты и имеете общее представление о том, зачем вам нужен бот, или вы просто интересуетесь их теорией. Эта статья не будет содержать каких-либо частей кода и предназначена исключительно для образовательных целей. Если появится интерес я разберу более подробно варианты реализации.
Торговые боты
Начнем с фактов. Идея торговых роботов не нова, о них много публикаций, они используются финансовыми институтами и банками, но действительно ли они помогают? Существует не мало исследований и размышлений на тему алгоритмической торговли, но все они приходят к размытому выводу.
Чаще всего авторы этих ботов либо трейдеры с какими-то мыслями и размышлениями, либо программисты без опыта торговли. Я постараюсь разобрать эту тему настолько, насколько смогу. Как разработчик и как трейдер. Как человек кто терял на торговле и поднимал большие суммы.
Если вы программист или знакомы с основами написания скриптов, вы сможете написать своего собственного бота за несколько часов. Но будет ли это зарабатывать достаточно денег для вас? Будет ли стабильный заработок? Достигнет ли он когда-нибудь годового дохода в $100,000? В этом посте я отвечу на эти вопросы и дам вам несколько советов, как двигаться дальше.
-
Что такое торговый бот?
Торговый бот — это алгоритм, который трансформирует рыночные условия в решения по сделкам (обычно покупать, продавать или держать). Здесь ничего особенного.
-
Какие типы торговых ботов существуют?
Все типы, которые мог взять любой трейдер, так как бот — это алгоритм, написанный программистами, они могут закладывать в него любую логику.
По типу трейдеров и видам торговли можно выделить следующие варианты:
• Долгосрочные трейдеры (long-time traders) — инвесторы;
• Свинг-трейдеры (swing traders) — те, кто размещает сделки на неделю, месяц или год;
• Дневные трейдеры (day traders) — те, кто размещает небольшое количество сделок в течение дня, не перемещая их в одночасье;
• Скальперы (scalpers) — те, кто выставляет много сделок в день, час или даже минуту.
Все эти типы трейдеров могут быть реализованы в виде бота.
-
Где торговый бот может размещать ордера?
Везде, где вы хотите и можете получить доступ к API брокера или через реверс-инжиниринг (некоторыми брокерами может расцениваться как мошенничество/взлом, поэтому лучше этот момент уточнять в их политике).
Но никто не запрещает смоделировать свои собственные брокерские условия, комиссии, спред, цену, и получать текущие цены на акции или криптовалюту не имея средств непосредственно у брокера. Таким образом возможно тестировать бота не прибегая к реальной торговле, при этом в зависимости от качества реализации симулятора и выбранном типе торговли будет зависеть насколько стратегия подойдет к реальному рынку.
-
Какие есть виды реализаций бота?
Проще говоря, виды алгоритмического трейдинга. Поскольку бот представляет собой законченную программу, реализующую торговое поведение трейдера в автоматическом режиме.
• Нейросеть или искусственный интеллект — могут быть простые боты с одним перцептроном, основанные на нескольких нейронах, сложные сети LSTM или даже анализ новостей на основе эвристики ключевых слов, семантического поиска с NLP.
• Количественная торговля (quantitive trading) — на основе стратегии, объединяющей любые критерии для принятия решения, это может быть сравнение индикаторов, поведение цены, поиск паттернов и т.д.
• Полуавтоматический бот, оповещения (semi-automated, alert bot) — будет использовать некоторые алгоритмы, чтобы подсказывать трейдерам, что делать. К этому типу относятся индикаторы, основанные на какой-либо стратегии.
• Генетические алгоритмы — его можно было бы отнести к части машинного обучения/нейронных сетей, но на самом деле он недостаточно изучен, чтобы определить этот тип алгоритма как подход к машинному обучению. Реализации генетических алгоритмов различаются, исследуются университетами по всему миру и являются частью более широкой темы, выходя за рамки этой публикации.
Итак, я ответил на четыре основных вопроса, которые уже могут раскрыть немного теории перед тем, как начать писать своего бота. Но что дальше? Разобравшись с тем, что такое бот, мы можем подумать об измерении его KPI.
Измерение качества бота
Чтобы измерить качество бота, мы можем использовать технику обратного тестирования (backtesting).
Обратное тестирование - техника, которая предполагает симуляцию торговли используя определенный временной диапазон ранее доступных данных и/или дополнительно симулированных ситуациях (так называемых side-кейсах, в их число входит кризис, резкие обвалы или рост рынка, массовые движения акул и т.д).
Давайте возьмем некоторые эвристики для работы, такие как доступные денежные средства, временной интервал, с которым он работает, диапазоны стоп-лосса и тейк-профита. Мы можем использовать другие эвристики на основе любой торговой стратегии, которую мы хотим использовать (например, боты нейронной сети могут определять свои эвристики на основе рыночных условий, используя те же новости).
Лучший способ определить качество стратегии — написать ее прототип при помощи TradingView. Используя их документацию, вы можете написать легко стратегию на Pine Script (у которого очень простой синтаксис).
Как вы можете видеть на картинке выше, я реализовал простую стратегию, основанную на сделке в рост (long order) после каждой зеленой свечи.
Однако не смотря на показательный рост счета в TradingView, эта стратегия неприменима ни на одной из бирж, так как использует стоп-лосс 0,01% и прибыль 0,5%. На этом проценте можно автоматизировать торговлю и даже выставить стоп-лимитный ордер в его диапазоне, но выжить с комиссиями, которые предлагает брокер, не получится.
Расчеты
Binance предлагает комиссию в размере 0,04% за любую рыночную сделку (make order) на первом VIP уровне.
Таким образом любой стоп-лосс будет выполнен со следующим результатом: 0,01 + 0,04 * 2 = 0,09% убытка для 0,5% прибыли (умножение на 2 т.к. комиссия применяется как для открытия сделки, так и для ее закрытия).
Эта стратегия не выживет с коэффициентом прибыли 1:5, так как у нас всего 2,79% percent profitable (это означает, что только 2% всех размещенных ордеров являются прибыльными, остальные исполняются со стоп-лоссом).
Используя достаточно подробную аналитику взятую из TradingView, мы можем быстрее разрабатывать свои стратегии для ботов, до того как использовать реальный рынок или демо торговлю. Тем более если мы планируем создать серверного бота со сложной структурой и небольшим интерфейсом.
После того, как вы увидите что-то вроде этого:
Если у вас хорошая чистая прибыль в сочетании с percent profitable выше 60 (как минимум), вы можете подумать о внедрении настоящего торгового бота. Значит ли это, что боты эффективны? Можем ли мы сейчас ответить на этот вопрос? Спойлер: да, конечно. Они эффективны. Но давайте подробнее разберем этот вопрос.
Помогают ли торговые боты зарабатывать деньги?
Да конечно. Вот почему многие хедж-фонды, банковские структуры и крупные финансовые компании нанимают специалистов по машинному обучению и алгоритмам. Эти люди несут ответственность за внедрение автоматических торговых ботов для торговли на крупных рынках с большими деньгами.
Так сколько денег они зарабатывают? Можем ли мы посчитать и ответить?
Это зависит от многих факторов. Как минимум от эвристик, которые закладывают программисты. Управление рисками, рыночные условия, доступные денежные средства и т. д.
Можно заметить, что хороший прогноз внутри торгового дня с низкой волатильностью может дать около 0,6-1% движения акций. Если ваш бот не потеряет ни одной сделки в течение торгового месяца, вы будете зарабатывать около 20% каждый месяц, для стратегии «all in» счет в $10,000 заработает $2000.
Мы можем использовать маржинальные счета и использовать кредитное плечо, управлять рисками или использовать пирамидинг, короткий стоп-лосс или длинный тейк-профит или различные типы торговых ботов, все они будут работать по-разному.
Нужно понимать, что плохой алгоритм может уничтожить весь ваш депозит, если будет допущена какая-либо ошибка. Поэтому убедитесь, что вы выполнили все тесты и использовали своего бота для демо торговли, прежде чем начать использовать его с реальными деньгами.
Так может ли он заработать $100,000 за год? Конечно, правильное управление рисками, стратегия и пропорциональная сумма денег могут дать вам такую прибыль.
Сравнение нейронных сетей и количественных алгоритмов
Это важная тема для обсуждения разницы между нейронными сетями и количественным анализом. Что могут алгоритмы машинного обучения или нейронных сетей? Они могут обнаружить закономерности, основанные на исторических данных, лучше, чем люди.
Как они определяют закономерности? Это зависит от типа нейронной сети. Вы можете реализовать широко используемую сеть LSTM или однослойный перцептрон. Для других типов сетей существует много статей и исследований (зачастую магистерские/докторские диссертации на эту тему от иностранных студентов), так что это зависит исключительно от вашего выбора.
Эффективны ли они? Да. Они действительно находят закономерности с помощью правильно написанного алгоритма, используя контролируемое или неконтролируемое обучение. Я реализовал нейронную сеть с помощью C# (основной язык, который я использую в своей работе, поэтому именно его взял) и поместил несколько индикаторов (некоторые из них самописные, остальные это RSI, полосы Боллинджера и Stochastic RSI). Затем я написал алгоритм, который принимает временной диапазон и собирает свечи, после которых происходит бычье или медвежье движение. Второй алгоритм заключался в обучении нейронной сети с использованием свечных индикаторов и выставлении 1 или 0 в качестве выходного нейрона (1 — предсказание покупки, а 0 — удержание).
Дальше я взял сгенерированные веса и написал стратегию с использованием TradingView для визуального представления прогнозов бота. И результаты были лучше, чем я думал сначала.
Таким образом, этот подход имеет место быть, но требует изучения большего количества эвристики, например, где размещать стоп и лимитные заявки, какой риск использовать и т. д. Но это хороший пример использования нейронных сетей на практике, и он работает. Проблема также заключается в ограниченных временных рамках. Сеть, обученная на доковидном времени, вряд ли будет работать во время ковида.
Количественный (quantitive) подход аналогичен нейронным сетям, но вместо того, чтобы использовать машинное обучение для определения закономерностей, программист должен определять их самостоятельно. Это облегчает определение точной стратегии, когда выходить из позиции и как управлять рисками. Более того, при количественном подходе можно сделать не автоматизированного бота, а отличный индикатор с набором сравниваемых условий, и трейдер сам будет принимать решение, исходя из этого анализа и общей ситуации на рынке.
На скриншоте выше моя последняя стратегия, которую в ближайшее время я буду переводить на сервер с подключением интерфейса в телеграм. Это быстро и дешево, а главное эффективно.
Подобных стратегий бесчисленное множество в интернете, всегда старайтесь найти или разработать ту, которая подойдет под ваш стиль торговли.
Возможно вы консервативный инвестор и вам достаточно инвестиционного бота, который время от времени собирает информацию по упавшим компаниям из вашего портфеля и докупает их каждый месяц.
Насколько это стабильно?
Стабильность в наше время становится все более размытым понятием. С точки зрения постоянной прибыли - это зависит от фондовых и рыночных условий, выбранной стратегии и типа алгоритма. Бот может получить 2% прибыли за пару часов, а затем рынок изменит свое направление, и он несколько раз закроет позиции в минус и в результате понесет 3% убытка к концу дня.
Программисты должны заботиться об управлении рисками. Для этого архиважно изучать фундамент торговли. Почитать пару книг, даже "Воспоминания биржевого спекулянта" от Эдвина Лефевра, вполне неплохой выбор для старта.
Например, обычный подход остановки бота, если дневной убыток или прибыль достигли какой-то отметки. Например, 1% убытка за день и 2% прибыли достаточно или это наоборот, необычно, волатильность рынка слишком высока. Как например акции Apple, рост которых за день более 2% обычно редкость.
Рыночные условия меняются из года в год, месяц, день или даже минуту. Фундаментальные новости (недавний обвал российского рынка), паника на рынке (обвал биткоина 2017) или акулы, совершающие крупные покупки или продажи (например, покупка Tesla биткоина и рост выше $60,000). Эти моменты могут сломать множество алгоритмов, включая сложные нейронные сети, если они не реализуют управление рисками и правильную расстановку стоп заявок.
Вывод
Торговые боты — это эффективный способ автоматизации вашей торговли или инвестиций, но это должно быть продумано и хорошо проверено, прежде чем начинать его использование на реальных деньгах. На данный момент я дорабатываю собственного торгового бота для дневной торговли, а также храню бота оповещающего меня о возможностях для покупки/продажи инвестиционных активов на длинной дистанции (1-2 сделки в месяц). Это очень сильно помогает в условиях, когда много основной работы и следить за движениями рынка просто нет времени.
Убедитесь, что вы хорошо осведомлены о технологиях, которые используете для создания алгоритмической торговли. Хочу также предостеречь от покупки готовых ботов, которые предлагают за высокую цену (многие из них работают над моделями всего 1-2 недели, на которые они тестируются).
Позже я напишу несколько публикаций о практическом использовании алгоритмических ботов, о том, как писать правильные стратегии на Pine Script, а также с примерами генетического трейдинга и моих исследований, так что следите за обновлениями! Пожелания о будущих статьях на эту тему, приветствуются
Дополнительные материалы
stannot.es - мой блог о разработке игр, торговых ботов и размышления о будущем;
https://www.ozon.ru/product/vospominaniya-birzhevogo-spekulyanta-138113710/ - Воспоминания биржевого спекулянта | Лефевр Эдвин;
http://dspace.unive.it/bitstream/handle/10579/12450/842777-1212885.pdf?sequence=2 - магистерская работа на тему разработки бота на нейросетях, занятный материал;
https://eprints.soton.ac.uk/397453/1/Final%2520PhD%2520thesis%2520-%2520Ashley%2520Booth.pdf - научная работа на тему машинного обучения в области финансовых рынков.
Комментарии (13)
ksbes
03.03.2022 09:57+2Интересная статья. Всегда был некий интерес к этой теме — хорошо узнать взгляд «изнутри».
Но всё же некие глобальные сомнения меня гложут:Так может ли он заработать $100,000 за год? Конечно, правильное управление рисками, стратегия и пропорциональная сумма денег могут дать вам такую прибыль.
Ну в лотерею тоже можно выиграть — иначе это просто мошенничество. Но этого нельзя делать стабильно. Т.е. при оценке рисков (нормальная)лотерея всегда даст небольшой убыток. Так насколько реально зарабатывать $100,000 в год? С учётом рисков (т.е. каково примерно мат.ожидание дохода?).
Я понимаю, что биржа — игра не с нулевой суммой, но всё же интересно — из чьего кармана эти $100,000 возьмутся?MentalBlood
03.03.2022 10:21+2из чьего кармана эти $100,000 возьмутся?
Из кармана менее успешного бота, полагаю. Впрочем не совсем понятно как распаковать эту успешность чтобы были конкретные характеристики/алгоритм, из которых она бы вытекала. Похоже, система рынка слишком сложная, чтобы можно было давать гарантии хоть какой-то успешности
omxela
03.03.2022 23:19+2из чьего кармана эти $100,000 возьмутся?
Из кармана менее успешного бота, полагаю.
Это так, разумеется. Но вот этот неудачник - он всё время один и тот же, или рано или поздно наступит и ваша очередь? У всех боты, у всех алгоритмы, они совершенствуются, обучаются, подстраиваются и т.п. Нельзя же считать других "глупее" себя. А значит, в среднем на достаточно длинном времени вы уйдёте примерно в ноль. То есть, выходит, тут как при игре в рулетку, скажем, важно вовремя остановиться.
solarplexus
04.03.2022 09:22+1Я встречал такую мысль, что нельзя полагать, что бот будет эффективен всегда. Бота требуется видоизменять, скажем, каждый год.
tmin10
03.03.2022 12:02Всё ещё зависит от вложений, если вложить десять миллионов, то сто тысяч — 1%. Его могут дать низкорисковые активы, такие как облигации относительно стабильно каждый год.
ksbes
03.03.2022 12:08Проще тогда просто положить деньги в банк на депозит — там процент побольше будет. Ну можно ещё «захеджировать» дивидендами с топовых акций и процентами с облигаций.
Речь идёт именно о том, чтобы с биржи иметь больше выгоды.tmin10
03.03.2022 12:10В статье речь идёт о конкретной сумме, а надо вести речь скорее о процентах, которые в идеале должны быть выше роста основных индексов. Но сто тысяч долларов звучит убедительнее, чем 5-10%, конечно.
naneri
03.03.2022 13:00Опять же - 5-10% с маленькой суммы сделать намного легче чем с нескольких миллиардов. При росте капитала количество возможностей для вложения сужается.
stan1901
03.03.2022 13:33+1Помнится, давным-давно просчитывали стратегии для разных роботов. Мы не профессионалы, но и рынок тогда был не такой насыщенный. Выходило, что в среднем робот (если он не скальпер), не зарабатывает почти ничего. А если скальпер, то проигрывает на комиссии или отключается брокером как спамер.
DarkWolf13
В доп материалы стоило бы добавить книги Ротшильда и Баффета, Учебники по мат статистике и фильм "Волк с Уолл стрит".
kasyachitche
Как любопытно, что учебники оказались в одном ряду с развлекательным фильмом.
NikRag
Фильмы иногда в доступной непрофессионалам форме передают дух рассматриваемого явления.