Индикатор ATR (Average True Range) показывает среднюю величину изменения цены внутри дня за указанный период. Отлично подходит для выбора уровней стопов. Также индикатор показывает рост волатильности в активе, когда сохраняет высокие значения.
Работаем на Quantopian (см. сюда), код пишем на Python. Проверяем стратегии:
ATR (Average True Range) широко известен среди трейдеров, использующих технический анализ. Индикатор рассчитывается на заданный период и использует значения максимума цены, минимума цены и цены закрытия. Является прекрасным фильтром для отбора акций для внутридневной торговли. Подходит для определения уровня установки стоп-приказа, обычно это 1-3 ATR от цены входа.
По ATR можно определить рост волатильности (изменчивости) цены, что в свою очередь указывает на волнения на рынке. Высокая волатильность является индикатором роста цен на опционы.
Стандартный период ATR: 14
ATR — это средний диапазон изменения цены учитывающий максимум и минимум. Основываясь на этом, предположим, что при резком изменении цены более 1х ATR, мы получаем сигнал об импульсе на рынке в определенном направлении. Импульс возможен, когда рынок что-то узнал и начинает двигаться в направлении своих ожиданий. Если цена изменилась вверх — время покупать, если вниз — закрывать позицию.
При высокой волатильности сигналов будет меньше, так как цене надо преодолеть очень большое расстояние. Это нам на руку.
Если после открытия позиции цена начнет снижаться маленькими свечками (такое бывает после гапов) — это для нас большая проблема, мы терпим убытки и не получаем сигнал на выход. Это против нас.
При росте волатильности мы можем не получить сигнал на закрытие, так как цена может снижаться меньшими свечами, чем текущий ATR. Это против нас.
Условия тестирования:
Библиотека TA-Lib на индикаторе ATR снова проявила свои проблемы и мы получаем разные сигналы при обработке разных периодов. Постоянство появилось после увеличения анализируемого периода выше 100 дней. Ниже графики с пометками о величине истории. Размах отклонений впечатляет, не так ли?
30 днейВ этом тесте проверим, как индикатор работает сам по себе, без настройки и подкрутки. Посмотрим, как на него влияет время начала торговли: на открытии рынка или спустя 1 час. ATR считаем за последние 14 дней, помним, что величина истории для анализа должна быть более 100 дней.
Открытие рынкаНа графиках видно, что стратегия сама по себе работает очень прилично — 141% доходности против -11% просадки на SPY. Результаты восхитительны. Проверять сигналы надо через 1 час после открытия, иначе волатильность первого часа сведет на нет все старания. На рынке мы находимся всего 50% времени. Результаты внизу статьи. Дополнительно в результатах добавлены показатели тестов DIA и IWM.
Код доступен на Quantrum.me.
В этот раз будем фильтровать открытие позиций по положению цены над 200-дневной скользящей средней (SMA200). В техническом анализе принято так, что если цена над SMA200 — это бычий тренд, под ней — медвежий. Теперь мы будем открывать позиции только во время бычьего тренда.
SPYПо результатам видно, что мы потеряли часть хороших движений во время разворотов рынке, а в итоге еще и получили увеличение просадки.
Код доступен на Quantrum.me.
Проверка торговли в двух направлениях оставляет двоякие чувства. Хорошо отработаны резкие падения, но вот с закрытием позиций беда. Позиции передерживаются. И доходность потеряли, и просадки безумно выросли.
Код доступен на Quantrum.me.
Я решил заменить стоп-приказы на сигнал увеличения ATR относительно значения на момент открытия позиции. Например, мы открываем позицию с ATR=$1, а закроем при ATR=$2. Почему? Потому что сигнал на закрытие при резком падении цены хорош, только вот незадача, если ATR вырастет до того как цена сделает резкое движение (широкий диапазон хода цены между максимумом и минимумом, при закрытии рядом с открытием), то мы так и останемся в позиции. Теперь сам рост волатильности для нас будет являться сигналом на выход.
SPYРезультаты оказались удивительными. SPY не показал изменений, предположу, по причине меньшей волатильности. А вот более изменчивый IWM показал улучшение доходности в 2,5 раза и незначительное снижение просадки.
Фильтровать по объему оказалось не так-то просто. Ведь сегодняшний объем мы еще не знаем, на текущий момент объема еще не достаточно, а вот вчерашний, с высокой вероятностью, будет не таким большим, как сегодня.
Попытка фильтровать по вчерашнему объему, чтобы он был выше среднего за последние 50 дней, привели к незначительным улучшениям/ухудшениям. По этой причине было решено фильтровать по росту объема, а именно вчерашний объем должен быть больше, чем в предыдущий день.
SPY
Итоговые результаты не впечатляют. Удалось отфильтровать просадку IWM и получить 9 прибыльных сделок из 11, что тоже результат.
Алгоритм имеет право на существование, но его необходимо дорабатывать. Например, открывать позиции на следующий день после сигнала, если объем в день сигнала был больше среднего в 2 раза.
Код доступен на Quantrum.me.
Стратегия | Время торгов | Кол-во сделок | PnL дни | PnL сделки | Доходность | Просадка |
---|---|---|---|---|---|---|
Купи-Держи | Open | 53/0 | - | 100% | 160.1% | -54.9% |
Как есть: SPY | Open+1 | 35/35 | 24% | 71.4% | 141% | -10.7% |
Как есть: DIA | Open+1 | 45/45 | 23% | 66.7% | 99.8% | -18.8% |
Как есть: IWM | Open+1 | 27/27 | 17% | 70.3% | 84% | -54.7% |
SMA200: SPY | Open+1 | 32/32 | 24% | 71.9% | 73% | -12.9% |
SMA200: IWM | Open+1 | 25/25 | 19% | 72% | 102.4% | -14.1% |
Обе стороны: SPY | Open+1 | 35/35 | 2% | 48.6% | 72.8% | -42.9% |
Стоп-лосс: SPY | Open+1 | 35/35 | 24% | 71.4% | 141% | -10.7% |
Стоп-лосс: IWM | Open+1 | 35/35 | 19% | 71.4% | 190% | -34.3% |
Объем: SPY | Open+1 | 25/25 | 22% | 64% | 65.8% | -12.6% |
Объем: IWM | Open+1 | 11/11 | 25% | 81.8% | 90.8% | -14.1% |
Индикатор ATR на удивление дает очень хорошие результаты и позволяет своевременно открывать прибыльные позиции. Отлично показал себя в голом виде на SPY и при фильтрации относительно SMA200 и объема на IWM. Более 70% прибыльных сделок — это отличный результат.
Улучшать алгоритм можно в нескольких направлениях: объем и смещение дня реакции на сигнал, сокращение дней удержания позиции и т.п.
Возможно, в будущем я вернусь к этому алгоритму. А на следующей неделе, по просьбе из комментария, я рассмотрю скрипт для поиска пар для парного трейдинга на американском рынке.
Напишите в комментариях, как еще можно улучшить алгоритм с ATR. Что необходимо учесть? Или предложите, какие стратегии стоит рассмотреть в будущем.
--
Александр Румянцев aka «iamraa»
Автор Quantrum.me
PS поддержите человека лайками и комментами за проделанную работу, что вы как не родные
45 сделок за 13 лет???
=D Можно в КВН смело с таким номером...
Александр Румянцев, мне код не интересен:) подход с маленьким количеством сделок — он неправильный. На 50 сделок я могу на спае нарисовать 90% win rate, только вот от жизни это далеко будет.