Алгоритмический трейдинг — Урок 1. Анализ временных рядов

Это первая статья из серии, темой которой является обучения написания алгоритм торговли используя TheOcean API. Как упоминалось ранее, алгоритмы улучшают вашу скорость торговли, точность и дисциплину. Кроме того, вы можете протестировать свои стратегии, чтобы увидеть, какой тип производительности вы можете получить в реальной торговой среде. Алгоритмы различаются по своей сложности — а также по результатам-простые стратегии, такие как средняя скользящая, могут приносить стабильную прибыль, когда они адаптированы соответствующим образом, в то время как продвинутые алгоритмы машинного обучения могут терять деньги, если Вы не учитываете торговые затраты надлежащим образом. Этот курс попытается дать вам набор инструментов и некоторую практику в создании собственной алгоритмической торговой стратегии.

Простая стратегия Momentum

Для начала нам надо привести последовательность действий для любого алгоритма, работающим с любом финансовым инструментом (в нашем случае - активе):

  • Сигнал для входа: Что должно произойти, чтобы я зашел на рынок?
  • Временная шкала: На какой временной шкале я измеряю свои сигналы?
  • Количество: На сколько большую часть активов я закупаю?
  • Сигнал для выхода: Что должно произойти, чтобы я вышел с рынка?
  • Контрольный показатель оценки: Как, и против чего я измеряю производительность?

Все эти компоненты должны быть хорошо продуманы и хорошо написаны, чтобы код работал правильно и его производительность изменялась без проблем, а также просто настроить параметры для оптимизации этой производительности. И поскольку решения принимаются машинами, а не людьми, мы можем создать более сложные критерии входа и выхода, чем любой человек мог бы рассчитать на лету.

Давайте возьмем базовую стратегию на основе длинного импульса с использованием скользящих средних (basic long momentum based strategy using moving averages). Математически модель показана ниже, где - количество периодов:

[Прим. И]: Если вы в гробу видали эти базовые стратегии, то неплохо описано тут

Математическое ожидание и дисперсия изменяются в данной модели следующим образом:

Для данного примера, предположим, что все , в качестве интервала выборки выберем временной промежуток в 1 день, значением которого будет цена токена ZRX. Начнем мы с построения обычной скользящей средней (Moving Average), период задержки которой будет равняться. Итак, мы вычисляем по цене закрытия (Close) периода и заносим это в соответствующую колонку.

Наш сигнал на вход будет заключаться в покупке одной единицы, когда цена закрытия выше MA(5), так как это сигнализирует о наличии положительного восходящего импульса в цене.

Нашим сигналом к выходу будет продажа одной единицы, когда цена упадет ниже MA(5) в любой данный будущий день.

  • На 1-й день мы видим, что закрытие = 0.925 > MA(5) = 0.915, поэтому алгоритм говорит нам войти в позицию, купив одну единицу на 0.925.
  • На 2-й день цена открытия и закрытия по-прежнему больше цены MA(5), поэтому мы продолжаем удерживать позицию.
  • На 5-й день мы видим, что закрытие = 1.000 < MA(5) = 1.109, поэтому продаем одну единицу.

Нашим оценочным критерием будет прибыль, которая является положительной $1.000 - $0.925 = $0.075 для этой сделки. Эта рекурсивная модель длинного импульса может быть продолжена по мере продвижения дней.

Стратегии, основанные на импульсе (momentum), основаны на убеждении, что цена еще будет продолжать расти, и когда она будет выше ожидаемого среднего, это и будет указывает на сильные настроения в сторону повышения.

Убытки возникнут, если произойдет внезапное падение ниже первоначальной цены покупки. Эта модель, хотя и простая, может быть использована в качестве торговой стратегии, если правильно параметризована (то есть мы оцениваем смещение, используя прошлые данные) и протестирована. В любом заданном наборе данных создание столбца скользящей средней довольно просто, и тогда значения MA(q) можно сравнить с исходными ценами, чтобы определить, когда занять позиции. Его можно сделать более сложным, например, регулируя периоды запаздывания, короткие продажи, если тренд противоположного направления, позволяя несколько позиций, изменяя размер, и тестирование модели на другой частоте. Также важно учитывать комиссии и транзакционные издержки при оценке окончательной проверки PnL (тестирования на основе имеющихся данных Profit'n'Loss) — многие теоретически хорошие стратегии устаревают, когда применяются в реальном мире по этой причине.

Если вам нужен пример математически строгой обработки стратегий импульса на валютном рынке (фиат), проверьте "Импульс тренда и торговые стратегии пересмотренные снова на валютном рынке" (например, вот).

Авторегрессионная модель (Autoregressive models)

Еще одной популярной платформой для торговли единичными волатильными активами является авторегрессионная модель. В этой модели мы предполагаем, что сегодняшняя цена является некоторой линейной функцией предыдущих цен. Математически модель AR(q) показана ниже, где q - количество временных периодов:

Для модели AR(1), математическое ожидание и дисперсия заключается в следующем:

Этот самый простой случай — модель AR(1), которая предполагает, что существует линейная связь между будущей ценой, основанной на цене всего за один период времени до ;текущего. Эта модель предполагает, что нет никакого внешнего смещения и что предыдущая цена оказывает значительное влияние на текущую цену, с поправкой на термин ошибки белого шума (eo). Используя математическое ожидание для этой модели, мы снова сможем использовать аналогичную структуру для создания стратегии, основанной на импульсе. Для этого примера мы создадим стратегию с двукратным импульсом, где мы будем занимать длинную позицию, если цена больше, чем ожидание, и идти коротко, если цена ниже, чем ожидание. После того, как позиция была принята, мы выйдем из позиции, когда цена пересекает ожидаемую цену. Логическое обоснование этого типа алгоритма заключается в том, что цена будет либо продолжать расти, пока она выше ожиданий, либо продолжать падать, если она ниже ожиданий. Эта стратегия может попытаться захватить оба направления движения цены и ограничить риск позиций ожиданием при условии, что нет каких-либо крупных скачков цены. Еще раз, мы могли бы изменить периоды задержки и изменить коэффициенты, чтобы найти, какой уровень значимости мы пытаемся достичь. Большинство языков кодирования имеют множество доступных пакетов авторегрессии, чтобы помочь в поиске коэффициентов.

Обратите внимание, что эти обе модели (и все остальные тоже) включают термин "ошибка" или "белый шум". Ни одна модель никогда не имеет идеальной подгонки, поэтому всегда есть остаток между предсказанием и наблюдаемым значением. Для простоты будем считать, что термин гомоскедастичных ошибок, означает, что математическое ожидание ошибки является независимым и ноль за весь набор данных. Это предположение позволяет нам сосредоточиться только на коэффициентах модели, поскольку предполагается, что остатки усредняются до нуля. Более сложные модели могут предполагать гетероскедастичность — ожидание изменений ошибок во времени, что требует дополнительного моделирования (Гетероскедастичность в Регрессионном анализе).

Было бы также полезно рассмотреть пример моделей , применяемых на валютных рынках, включая диагностические тесты и введение дополнительных переменных (прогнозирование реального валютного курса — анализ временных рядов).

Кроме того, скользящее среднее и авторегрессионные модели могут быть объединены в так называемые модели ARMA, где вы включаете как лаги прошлых значений (часть AR), так и средневзвешенное значение прошлых ошибок (часть MA). Вы можете прочитать один пример приложения к Bitcoin'у (со смешанными результатами) при торговле Bitcoin'и и прогнозировании временных рядов в Интернете.

Тестирование работы на основе исторических данных (Backtesting)

Поиск и настройка успешных торговых стратегий, как и любой проект в области науки о данных, опирается на одно: сами данные. И данные хорошего качества должны быть очищены, организованы и готовы к использованию, когда это необходимо. Поскольку The Ocean X еще не запущен, у нас нет криптографической ценовой истории для Вас (мы покажем вам, как производить call, хранить и запрашивать ее, когда она доступна). Но есть и другие общедоступные источники криптографических данных, которые вы можете использовать, а также библиотеки, которые вы можете использовать для создания и управления базами данных. Некоторые ресурсы для вас, чтобы начать играть с:

  • CoinMarketCap и OnChainFx предоставляют вам ежедневную информацию о ценах
  • Сайты на подобие Quandl и Kaggle имеют огромное количество данные и не только по криптовалюте
  • SQL это стандартный язык запросов в базу данных это полезно во многих торговых задачах. Для примера того, как вы можете построить в контексте криптовалюты, попробуйте Silota

Наиболее успешные кванты (финансовые аналитики) тратят некоторое время на написание своей стратегии, но подавляющее большинство работ — это сбор данных и тестирование параметров своей стратегии на основе исторических данных. Небольшие корректировки, которые вы делаете, могут иметь негабаритные воздействия, поэтому так важно иметь надежный процесс тестирования и методологию (избегайте переобучения!). Кроме того, исторические показатели могут не указывать на будущие результаты, поэтому важно иметь базу данных, которая может обновлять и, возможно, корректировать параметры в режиме реального времени в зависимости от точной стратегии. Мы постараемся осветить некоторые из этих моментов в ближайшие недели

Задание №1

Напомним, что наша цель состоит в том, чтобы заставить вас задуматься о возможностях, которые алгоритмы могут открыть для вас в вашей крипто — торговле, и убедиться, что у вас есть лучший, самый простой обмен для использования вашим алгоритмом. Все зависит только от вас, реализуйте, тестируйте и выполняйте и помните, мы здесь, чтобы помочь вам насколько это возможно.

Ресурсы, с которых вы должны начать работу с TheOcean API:

Некоторые библиотеки, которые могут пригодиться:

И, наконец, без лишних слов, наша первая задача:

- Задание №1: Напишите новые MA, AR, и/или ARMA стратегия используя TheOcean технологии/API инструменты

- Бонус: Возможно тестирование на истории по общедоступным данным


Содержание

  1. Введение в Алгоритмический трейдинг — План обучения
  2. Алгоритмический трейдинг — Урок 1. Анализ временных рядов
  3. Алгоритмический трейдинг — Урок 2. Данные, Разработка стратегий и возвращение к среднему
  4. Алгоритмический трейдинг — Урок 3. Введение в арбитражные стратегии

Заодно можно подписаться на Twitter автора перевода. Источник статьи.