Создание Простой Автоматизированной Стратегии

Создание Простой Автоматизированной Стратегии

Я занимаюсь алгоритмической торговлей уже около 6 месяцев, следуя двум отдельным подходам – один из них-стратегии bruteforcing, которые работают достаточно хорошо, но требуют много ресурсов ( $ ), серверов, электричества и так далее. Тем не менее, это дало мне несколько действительно аккуратных, торгуемых стратегий. Другой подход заключается в разработке стратегий вручную, что очень весело и привлекает мою творческую сторону. Сегодня я просто быстро хочу показать вам одну из самых простых стратегий, которые я когда-либо создавал (2 строки кода). Это предвзятая стратегия, применяемая к фьючерсному контракту E-Mini S&P500, торгуемому на CME, на дневных графиках, и имеет (без применения каких-либо размеров позиций и компаундирования) примерно такую же производительность, как если бы вы просто покупали и удерживали S & P в течение последних 20 лет, но без массовых просадок, которые произошли, например, в 2008 году.

Как же тогда будет выглядеть предвзятая стратегия? Ну, мы торгуем только долго. Сначала я хотел посмотреть, какова будет производительность, если мы будем покупать всякий раз, когда дневной бар закрывается выше Боллингербэнда (длина 20, StdDev 2), и менять нашу позицию всякий раз, когда дневной бар закрывается ниже Боллингербэнда (длина 20, StdDev -2). Представление выглядело так…

 

Если Close > BollingerBand(Close, 20, 2), То Покупайте Следующий Бар На Рынке;
Если Close < BollingerBand(Close, 20, -2), То SellShort Следующий Бар На Рынке;

Ну, ничего особенного, как и следовало ожидать. Мне нравится начинать с простых идей, а затем брать их оттуда. Обычно я разрабатываю и уточняю стратегию на небольшом фрагменте данных, и когда она работает на этом фрагменте, я переадресовываю ее на все данные, которые я должен эмулировать в реальном времени. Однако с предвзятыми стратегиями все по – другому-поскольку мы пытаемся использовать определенную характеристику рынка, нам нужно уже в процессе развития увидеть, существует ли эта характеристика и насколько она стабильна. Например, долгосрочная стратегия на ES, протестированная в 2008 году, либо даст нам 0 сделок из-за фильтров, либо будет иметь ужасную производительность.

Хотя это может быть верно и для разработки других типов стратегий, и мы могли бы, из-за невезения, развиваться именно на тех 1-2-летних данных, где наша идея не работает, это риск, который мы должны быть готовы принять, и хороший компромисс, чтобы избежать опасностей подгонки кривой, чрезмерной оптимизации и немедленной смерти стратегии во время живой торговли. Как правило, чем выше таймфрейм, тем больше данных вы хотите использовать как для разработки, так и для тестирования, а также для получения хорошего размера выборки.

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

 

Конечно, похоже на то. Он покупает, когда цена закрывается выше BB, и разворачивается, когда она закрывается ниже BB. Интересно, что эта стратегия принесла много денег в течение 2008 года и краха 2000 года, но вернула все это в течение других лет. Итак, поскольку американские фондовые индексы всегда должны расти в долгосрочной перспективе (иначе капитализм обанкротится, и тогда нам больше не придется беспокоиться о торговле), давайте представим нашу предвзятость.

Мы идем долго, когда цена закрывается выше BB, и выходим из сделки, когда она закрывается обратно внутри BB – это должно позволить нам захватить большие восходящие движения, в то время как мы терпеливо ждем медвежьих рынков. Вот такое представление.

 

Если Close > BollingerBand(Close, 20, 2), То Покупайте Следующий Бар На Рынке;
Если Close < BollingerBand(Close, 20, 2), То Продайте Следующий Бар На Рынке;

По-прежнему не о чем бредить, но, по крайней мере, сейчас мы находимся в позитиве и получили хороший пробег в конце во время выборов Трампа. Тем не менее, похоже, что S&P500 устойчиво растет, но не делает огромных волатильных движений, по крайней мере, не вверх, поэтому наша стратегия прорыва не имеет большого смысла. Что может быть более разумным для инструмента, который поднимается медленно, но неуклонно волнами? Я уверен, что вы правильно угадали, входя на откатах и выходя, когда тренд становится чрезмерно растянутым!

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

 

Если Close < BollingerBand(Close, 20, -2), То Покупайте Следующий Бар На Рынке;
Если Close > BollingerBand(Close, 20, 2), То Продайте Следующий Бар На Рынке;

Мы уже зарабатываем гораздо больше денег, и прямо сейчас мы находимся на смешной 20-торговой победной серии, которая продолжается с 2009 года. Однако аварии 2008 и 2000 годов действительно убили нашу производительность. Посмотреть на это.

 

Поскольку мы торгуем только длинной стратегией, есть простое решение отфильтровать медвежьи рынки. Мы торгуем только тогда, когда цена находится в долгосрочном восходящем тренде. На сцену выходит наш любимый индикатор-скользящая средняя. Для начала мы возьмем 200-дневную простую скользящую среднюю. Ну вот и все.

 

Если Close < BollingerBand(Close, 20, -2) И Close > Average(Close, 200), То Покупайте Следующий Бар На Рынке;
Если Close > BollingerBand(Close, 20, 2), То Продайте Следующий Бар На Рынке;

УУП-де-ду! Смешной винрейт, но не так уж много сделок. 2008 год просто исчез из отчета об исполнении бюджета, ноль сделок. 2001 и 2002 годы дали нам небольшие потери, управляемые.

 

Неплохо. Производительность приемлемая, нам не нужно беспокоиться о комиссиях, так как мы не торгуем много, а средняя торговая прибыль довольно высока ($2400), как и следует ожидать на дневных графиках, однако мы торгуем только 2-5 раз в год. В портфеле многих стратегий это вполне приемлемо. Если это ваша единственная стратегия, Что ж...получайте удовольствие от ожидания. Поэтому я попытался перейти на более низкие таймфреймы, например, 4-часовой, 2-часовой, 1-часовой и т. д., используя Daily в качестве вторичного таймфрейма (торгуйте только тогда, когда дневная SMA200 ниже цены), но все, что он сделал, это увеличил наше количество сделок, одновременно снизив нашу чистую прибыль и нашу среднюю прибыль на сделку. Пока это не стоит того, но можно было бы продолжить и объединить с другими идеями.

Теперь я чувствовал, что мы можем сделать больше с нашими тейк-профитами, что я хотел захватить больше трендов, когда они действительно происходят, поэтому я немного поэкспериментировал с выходами после (x) баров. В принципе, я сделал 200 бэктестов с теми же параметрами, за исключением выхода через 1 бар, 2 бара, 3 бара и так далее. Кстати, это также отличный способ проверить качество сигналов входа – просто посмотреть, куда идет цена: 1 бар, 2 бара, 3 бара и т. д. после вашего вступления. Как вы можете видеть на графике ниже, наш сигнал всегда прибылен, независимо от того, выходим ли мы после 1 или 200 баров. Это обнадеживает и довольно необычно.

 

Входные:
Панели выхода(0);

Если Close < BollingerBand(Close, 20, -2) И Close > Average(Close, 200), То Покупайте Следующий Бар На Рынке;
Если BarsSincEentry = ExitBars, То Продайте Следующий Бар На Рынке;

Я не слишком доволен вариантами визуализации TradeStation, другие платформы делают вещи лучше в этом отделе, но ну и ладно. Мы работаем с тем, что имеем. Здесь интересны две вещи: лучшая прибыль происходит около 150 дней удержания, что коррелирует с нашей предыдущей стратегией выхода на другом конце BB (среднее время удержания 147 дней), но результаты кажутся выбросами (в идеале мы хотим иметь горы с плоскими вершинами на этом графике, чтобы обеспечить стабильность наших параметров, которая только кажется около 20-30 дней в нижней части графика).

Углубляясь в детали отчета об эффективности, я не вижу преимущества этого метода, но он добавляет один оптимизируемый параметр к нашей стратегии. Конечно, мы могли бы выбрать выход из всех наших сделок через 30 дней – это резко сократило бы наше среднее время удержания и дало бы нам еще несколько сделок в год, но это также снизило бы нашу общую производительность, не уменьшая просадок. Я буду придерживаться выхода BB. Видите ли, даже в царстве абсолютных чисел все еще есть место и потребность в осмотрительности и личных предпочтениях.

До сих пор мы ничего не оптимизировали. В качестве фильтра мы добавили Боллингербэнд со стандартными настройками и скользящей средней в 200 периодов. Я не хочу оптимизировать скользящую среднюю, и если бы я это сделал, то делал бы это только шагами 50 (50, 100, 150, 200, 250, 300). Опыт подсказывает мне, что оно того не стоит. Что меня больше интересует, так это длина Боллингербэнда и единицы стандартного отклонения. Оптимизация этих параметров (шаги 5 для длины BB и шаги 0,5 для StdDev) приводит к тому, что длина BB сокращается до 10, а StdDev остается на уровне 2.

С этими настройками мы выжимаем из рынка еще 20 000 долларов и получаем еще более плавную кривую эквити. На это я не скажу "нет".


При максимальной просадке 10% и доходности 120% (без применения размера позиции) это довольно хорошая производительность. Buy & Hold дал бы нам 134% за тот же период, однако без усугубления и с ужасными просадками 2008 и 2001/2002 годов. Теперь вам, конечно, придется добавить защитный стоп, чтобы не разориться, когда рынок полностью скиснет. Кроме того, эта стратегия торгует только 2-5 раз в год. Хотя я могу жить с этим, поскольку есть только один оптимизированный параметр, конечно, эта стратегия не сделает нас богатыми и нуждается в большом капитале только с одним контрактом в игре, чтобы торговать. Вам понадобится диверсифицированный портфель из 20+ стратегий, подобных этой, Чтобы получить значимую прибыль, не сходя с ума от риска.

Теперь вы можете сделать пошаговый анализ этой стратегии, если хотите, или даже кластерный анализ, а что нет, но в данном случае это просто не нужно. Он работает так, как есть, и будет продолжать работать, пока капитализм не станет Ка-бламмо.

Или иногда, чтобы быть просто очень, очень прямолинейным. Длинные стратегии только на фондовых индексах, хорошее место для начала. Или, может быть, попробовать яблочный запас? Если вы можете разработать методы, чтобы узнать 1. что заставляет рынки тикать (тренд, средняя реверсия?) и 2. насколько эффективны ваши записи, а затем иметь надлежащие методы тестирования надежности и организованный процесс на месте, чтобы оставаться творческим и продуктивным, хорошо..скажем так, это может быть очень полезно.