В последнее время я много думал о свечных паттернах (candlestick patterns), но мне надоело пытаться генерировать идеи, и вместо этого я решил добывать их из данных. Должен признаться, что от такого упрощенного подхода многого я не ожидал, поэтому был приятно удивлен, увидев хороший результат. К сожалению, я не смог обнаружить никакие шортовые наборы. Из-за общего смещения вверх фондовых рынков трудно найти паттерны, которые работают с отрицательными изменениями.
Идея состоит в том, чтобы вытащить из прошлых данных трехдневные паттерны, похожие на текущий, а затем использовать эту информацию для принятия торговых решений. Для начала необходимо определиться с некоторыми параметрами:
— Размер окна прошлых данных. Я использую расширяющееся окно, которое начинается за 2000 дней.
— Как только мы найдем аналогичные паттерны, как мы будем выбирать, какие из них использовать?
— Как мы будем измерять сходство между паттернами?
Чтобы полностью описать трехдневный свечной паттерн, нам необходимо 11 чисел. Процентное изменение от закрытия к закрытию с первого на второй день и со второго на третий день, а также цена при открытии, максимум и минимум по отношению к закрытию за каждый день.
Для измерения степени сходства между любыми двумя 3-дневными паттернами, я попытался найти сумму абсолютной разности и сумму квадратичной разности между этими 11 числами. Результаты были примерно одинаковыми. Было бы интересно попробовать оптимизировать индивидуальный вес для каждого числа, поскольку я считаю, что некоторые из них более важны, чем другие.
Последний шаг заключается в выборе числа ближайших паттернов, которые мы нашли, и в простом усреднении их доходности следующего дня, чтобы прийти к ожидаемой доходности.
Ожидаемая доходность по сравнению с реализованной доходностью для SPY, 50 ближайших паттернов по абсолютной разности. Цифры над барами указывают на количество паттернов в каждом сегменте.
Как определить какие паттерны являются «достаточно близкими», чтобы их можно было использовать? Если выберем их слишком мало, то выборка будет слишком маленькой. Выберем слишком много и рискуем использовать ненужные данные. Это число, которое необходимо оптимизировать.
Гистограмма оценки ожидаемой доходности для выборок разных размеров
При сопоставлении результатов мы сталкиваемся еще с одной проблемой: чем меньше выборка, тем больше будет разброс оценки ожидаемой доходности, что означает проведение большего количества сделок при определенном минимальном ограничении для входа. Я решил выбрать другой лимит для входа в сделку, при котором все размеры выборки будут генерировать одинаковое число дней на рынке (300 в данном случае). Вот результаты форвардного тестирования:
Компромисс между размером выборки и релевантностью ясен, и «золотая середина» находится, по-видимому, где-то в диапазоне 50-150, как для подхода с абсолютной разностью, так и с квадратичной разностью. В зависимости от того, какую выборку вы хотите получить, можно уменьшить ограничение и заключать больше сделок для более низкой ожидаемой доходности.
По-моему, 30 базисных пунктов – разумная область, к которой можно стремиться.
Хорошее небольшое дополнение – использовать IBS, отфильтровывая любые сделки с IBS > 50%. Используя квадратичную разность, я выбираю 50 ближайших паттернов. Когда их средняя доходность следующего дня выше 0,2%, беру позицию лонг. Результаты отличные, как и ожидалось:
Фильтр IBS удаляет около 40% дней, когда система в рынке, но сохраняет почти такой же совокупный среднегодовой темп роста, а также уменьшает максимальную просадку более, чем вдвое.
Давайте взглянем на некоторые реальные паттерны. При использовании квадратичной разности, 50-ти ближайших паттернов и ограничения 0,2%, последняя успешная сделка была 26 февраля 2013 года. Ожидаемая доходность в этот день была 0,307 %. Вот так выглядели эти три дня, а также 5 ближайших исторических паттернов:
Как можно увидеть ниже, визуально кажется, что даже 50-й ближайший паттерн достаточно похож. Видимо, «основная идея» паттерна там еще сохраняется:
Статистические данные разных ETF, основанных на фондовых индексах, при использовании квадратичной разности, 50-ти ближайших паттернов, ограничения ожидаемой доходности 0,2% и фильтра IBS <0,5.
Ограничение 0,2% кажется слишком низким для некоторых из них, потому что заключается слишком много сделок. Возможно, хорошей идеей будет использовать свое ограничение для каждого конкретного инструмента.
Также очевидным путем решения этой проблемы является создание версий с 2-мя, 4-мя, 5-ю и т.д. днями, возможно, с оптимизированным взвешиванием по периоду времени и некоторым фильтрованием выбросов, и объединить их в хорошую маленький набор, чтобы получать из него прогнозы. Реализация остается за читателями.
Источник: Mining for Three Day Candlestick Patterns
Комментарии:
Pavel Sergeyev: Система не зарабатывала с 2002 по 2007. Не думаю что кто-то стал бы ждать так долго.
Artyom: По поводу 2002-2007 видно, что система зарабатывает на участке с высокой волайтильностью, т.е. на падении и консолидации. Было бы интересно посмотреть на результат торговли отдельно на разных типах рынков. Волайтильность например оценивать как несмещенную оценку дисперсии через EWMA и квадраты ретурнов, пороги режимов — через квантили ( низкая волайтильность — значение ниже квантиля 50%, высокая — все что выше.)
Vitas: одну ключевую фишку автор так и не прочухал. это хорошо 😉