Библейское повествование гласит о том, что с грехопадением человек оказался обречён на тяжёлый труд в поте лица. Всяк впредь должен трудиться и возделывать хлеб с момента изгнания из Рая. Со временем однако технологический прогресс упростил человечеству жизнь, позволив переложить основную массу физического труда на машину. Но возможно ли переложить также труд интеллектуальный на машину? Возможно ли, к примеру, заставить машину анализировать и торговать вместо себя? Оказалось, что зная определённые математические законы и обладая должными навыками инженерии и программирования, возможно и это. Вы могли бы подумать, что речь в цикле статей про алгоритмический трейдинг пойдёт про искусственный интеллект, однако это было бы слишком громко сказано: скорее мы будем компьютеризировать обыденные действия идеального и очень успешного трейдера. И лишь в самом конце цикла мы будем изучать применение искусственного интеллекта в прогнозировании. Но начать цикл статей по этой теме потребуется с самых основ…
КВАНТИТАТИВНЫЙ ТРЕЙДИНГ, СТАТИСТИЧЕСКИЙ АРБИТРАЖ И МАТОЖИДАНИЕ. БАЗОВЫЕ ПОНЯТИЯ.
Не важно, торгуете вы криптовалютой, акциями или на форексе — вы наверняка слышали такие выражения как “в стакане робот гоняет объёмы”, “робот торгует сам с собой”, “работает бот маркетмейкера”. Но о каком роботе или боте идёт речь? Давайте разбираться.
Понятие торгового робота неразрывно связано с идеей квантитативного трейдинга, который также известен как алгоритмический трейдинг (алготрейдинг) или процесс статистического арбитража. Понятие “квантитативности” подразумевает возможность численного измерения чего-либо. Таким образом, квантитативный трейдинг — это “численно измеряемый” трейдинг. Когда мы говорим о “численно измеряемом” трейдинге, мы имеем в виду, потенциальное автоматизированное применение конкретной торговой системы (стратегии) с определённым набором измеряемых характеристик, которые можно описать с помощью математических формул и статистических выкладок.
На примере азартных игр вам наверняка известно, что любую из них можно описать с использованием таких характеристик как математическое ожидание, медиана или мода. Математическое ожидание — это среднее вероятное значение набора случайных величин или, выражаясь иначе, математическое ожидание — это сумма вашего выигрыша или проигрыша в азартной игре на долгой дистанции (бесконечное количество раундов) при неизменной ставке. Так, к примеру, математическое ожидание в стандартной европейской рулетке (36 чисел + зеро) составляет около -2.8%, то есть в идеальной ситуации вы будете в среднем терять 2,8% своего капитала в час при должном управлении рисками и идеальным распределением ставок по игровому полю. И с этим вы уже ничего не поделаете.
Рассмотрим теперь в качестве примера иную игру — блэкджек. Здесь математическое ожидание будет сильно варьироваться в зависимости от правил, по которым играют в конкретном казино, от -0.7% до -4.8% (худший вариант возможен в том случае, когда все карты из отбоя возвращаются в игру сразу по окончанию раунда). Однако здесь у игрока появляются возможности повернуть математическое ожидание в свою сторону с помощью математических уловок. В математическом смысле трейдинг напоминает игру в блэкджек — априори у заведения есть преимущество и матожидание отрицательное, особенно если вы жадничаете, импульсивны в принятии своих решений, часто заключаете сделки и стремитесь максимизировать прибыль с помощью кредитного плеча. Однако статистическое преимущество можно обратить в свою сторону с помощью математических приёмов!
Квантитативный трейдинг или статистический арбитраж — это действенный способ развернуть в свою сторону математическое ожидание на длинной дистанции даже при использовании кредитного плеча с помощью ликвидации человеческого фактора в трейдинге, путём создания создания торгового робота, то есть автоматизированной системы принятия торговых решений. Его называют “арбитражем” в связи с тем, что автоматизированная торговая система уравновешивает колебания депозита и выводит его в плюс, используя математические концепции и статистическое преимущество, которые находятся в основе многочисленных эффективных индикаторов технического анализа.
АЛГОРИТМ ДЛЯ АЛГОТРЕЙДЕРА: С ЧЕГО НАЧАТЬ?
Итак, мы разобрались с тем, что такое квантитативный (алгоритмический) трейдинг, но как начать заниматься этим? Для того, чтобы стать экспертом в статистическом арбитраже, вам понадобится следовать алгоритму:
- Определить диапазон стратегий, который подходит под ваши нужды и возможности.
Об этом мы поговорим чуть ниже в этой статье. Всегда помните, что предварительная подготовка крайне важна!
- Провести первичный анализ и отсеять наиболее проблемные стратегии (выявить потенциально эффективные).
Этот этап необходим для того, чтобы не выполнять лишние действия в следующем пункте и не тратить лишнее время на бэктестинг стратегий, которые заведомо являются провальными.
- Провести бэктестинг выбранного торгового алгоритма.
Бэктестинг — это процесс тестирования работы вашей торговой стратегии на массиве исторических данных с помощью приёмов из программирования. На практике бэктестинг некоторых стратегий можно провести даже в Excel, но обычно вам потребуются более сложные инструменты и определённая усидчивость. Главное — не бойтесь! Это не так тяжело, как может показаться на первый взгляд. Однако важно учесть, что бэктестинг — возможно наиболее важный пункт всего алгоритма, так как нужно учесть множество нюансов, чтобы результат теста на исторических данных совпал затем с практическим результатом применения робота. В подавляющем большинстве случаев начинающие алготрейдеры проваливают этот этап, получая на выходе торгового бота с низкой эффективностью или очень долгими просадками, что является катастрофой, на чём и завершают свою карьеру в этой сфере.
- Выстроить систему управления деньгами и рисками.
Про систему управления деньгами и рисками сказано многое в профессиональной литературе, однако в данном случае вам придётся применить немного математику для того, чтобы указать боту, в каких пропорциях он может задействовать ваш депозит на конкретные сделки.
- Выбрать брокера или криптобиржу.
Здесь всё достаточно просто: вам нужно выбрать контору, чьи условия будут наиболее оптимальными для применения вашей торговой стратегии на практике (ищем варианты минимизации комиссий).
- Создать программную имплементацию торгового алгоритма на определённом языке программирования, подстроить её под API конкретного брокера/криптобиржи, выбранного в пункте 5.
Если перевести этот пункт на русский язык: собственно говоря, вам нужен рабочий исполняемый код, который непосредственно будет задействован в процессе трейдинга. Опять же звучит сложно, но справиться с этим будет возможно без привлечения особых профессиональных знаний, достаточно будет ознакомиться с парой руководств. И помните, в идеале язык программирования должен быть такой же, как и тот, что использовался для бэктестинга алгоритма (пункт 3), дабы гарантировать, что исполняемый код будет идеально совпадать с тестируемым.
- Выбрать bulletproof железо, закупить источник бесперебойного питания.
Вам нужен надёжный компьютер и бесперебойное питание. Если расширить мысль, то станет ясно, что этот пункт подразумевает либо аренду мощностей на удалённом виртуальном сервере (VDS), либо покупку для установки непосредственно у себя дома ПК, небольшого сервера или даже одноплатного компьютера вроде RaspberryPi, OrangePi или Arduino. Алгоритмы бывают разными, соответственно мощности могут понадобиться также разные. Для работы одних алгоритмов вам понадобится достаточно мощный сервер, другие могут отлично работать на небольшом одноплатном компьютере, здесь всё индивидуально. На всякий случай вам также будет необходимо купить блок бесперебойного питания, чтобы компьютер и, что немало важно, маршрутизатор (роутер) не выключились в случае отключения электроэнергии у вас дома.
- Запустить работу торгового алгоритма и более никогда не выключать компьютер, наслаждаться прибылью и иногда выводить деньги с брокерского счёта так, будто это ваш банкомат!
ШАГ ПЕРВЫЙ. ОПРЕДЕЛЯЕМ ДИАПАЗОН СТРАТЕГИЙ.
Для того, чтобы понять, какая стратегия алготрейдинга вам подходит, нужно ответить на ряд основных вопросов, а затем уже перейти к следующему этапу.
- “Какова моя цель?”.
Вопрос на первый взгляд примитивный, однако он является одним из ключевых для всех дальнейших действий. На этом этапе вы должны определить, желаете ли вы получать небольшой ежемесячный доход в условные +3…5% к капиталу через торговлю высоколиквидными акциями первого эшелона MOEX или топ 10 криптовалют в мировом рейтинге по капитализации, желаете ли получать хорошую доходность около 20-25% по итогу года или ваша цель “рубить иксы” на фьючерсах ежемесячно, имея доходность в +100…400% каждые несколько недель. Основная загвоздка здесь будет заключаться в степени риска и потенциальной глубине просадки. Дело в том, что робот не сумеет никогда выдавать вам исключительно плюсовую доходность: порой он будет уводить ваш депозит в минус, некоторые фьючерсные стратегии могут подразумевать просадку на 50% и даже на 70% в моменте прежде чем появится положительная доходность! Как правило тут есть прямая зависимость: чем больше вы будете жадничать, тем более короткосрочными и глубокими могут быть просадки. Если же вы выбираете устойчивую доходность по итогу года, то готовьтесь к тому, что вы действительно гарантированно получите 20-25% к декабрю, но может случиться так, что вы будете смотреть на просадку около -10% в течение полугода. Готовы ли вы довериться математике, статистике и законам вселенной? Или психологически вы такое не выдержите? Ответьте для себя на эти вопросы.
- “Сколько времени я могу тратить на подготовку? Сколько времени я готов тратить на обслуживание системы?”.
Торговый бот может работать по-разному. Он может быть полностью автоматическим и неспешно заключать сделки раз в несколько дней или даже недель тогда, когда по мнению алгоритма появилась удачная точка входа в сделку. Также он может быть полуавтоматическим, предоставляя трейдеру возможность принятия решения в ситуации, когда алгоритм нашёл потенциальную точку входа. Алгоритм может быть настроен и на торговлю внутри дня, но такая система потребует огромной предварительной работы и максимальной автоматизации, ведь количество сделок в таком случае может достигать сотен или даже тысяч в секунду! Возможно также вам понадобится нанимать сторонних специалистов для автоматизации системы.
- “Готов ли я изучать программирование? А если готов, то как долго?”.
Отчасти этот вопрос пересекается с предыдущим пунктом. Программа, которая заключает сделки без спешки и удерживает позицию днями, неделями или даже месяцами, может быть спокойно реализована на весьма громоздком и медленном Python, изучить который на должном уровне у вас займёт две недели, в то же время программы для дейтрейдинга потребуют от вас знакомства со значительно более сложными языками вроде C, C# или C++.
- “Какой у меня капитал?”.
Ваш капитал оказывает серьёзное влияние на стратегию, в первую очередь это касается конечно же тех, кто будут создавать бота для торговли на фондовой бирже, а не для торговли криптовалютой. Нужно понимать, что вам придётся соотносить свой капитал и систему риск-менеджмента с диапазоном торгуемых активов. Так, к примеру, одна акция ПАО “Газпром Газораспределение Ростов-на-Дону” на момент написания этой статьи стоит 43900 руб., ПАО “Полюс” — 12367.5 руб., есть акции, чья цена не столь большая, но продаются они исключительно крупными лотами, что приводит к сравнительно большой цене закупки одного пакета ценных бумаг, это касается большинства энергокомпаний с листингом на MOEX и некоторых других (ПАО “Томская распределительная компания”, ПАО “Ашинский металлургический завод” и т.п.). Каким должен быть ваш капитал, если на одну позицию вы будете отводить только 2% от депозита?… В этом же пункте стоит отметить, что наличие большого капитала позволит вам приобрести статус квалифицированного инвестора, расширив диапазон доступных для трейдинга активов, а также позволит вам получить статус КПУР (клиент с повышенным инвестиционным риском), что позволит вам кратно увеличить кредитное плечо и таким образом потенциально максимизирует вашу прибыль.
Продолжение следует…
На плюсах или на шарпе можно выстроить реально быстрый алго. Я это гарантирую
про Rust я напишу тогда вместе с релизом моей библиотеки