iqoption

Построение торговой системы: статистические методы

Видимые фильтры

 

Огромное количество торговых систем основаны на индикаторах и именно поэтому возникает вопрос – а что эти индикаторы выражают? Верный ответ – в большинстве случаев ничего особого они не выражают. Индикаторы представляют собой лишь специализированные фильтры. Некоторые индикаторы, такие как индекс торгового канала (CCI), индекс относительной силы (RSI) и стохастик,  в основном, представляют собой фильтры высоких частот первого порядка, которые преобразуют ценовые колебания и представляют их в виде осцилляторов.  Другие индикаторы, такие как скользящая средняя – это преимущественно сглаживающие фильтры, которые служат для  устранения рыночного шума. Существуют и комбинации двух упомянутых типов фильтров. Перед тем как начать использовать индикаторы как фильтры в своей торговле любой здравомыслящий человек задастся вопросом - обладают ли данные, полученные с помощью различного рода индикаторов, прогнозной силой применительно к будущим ценам.

 

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

 

Третий вид торговых систем предпринимает попытки предсказать направление движения будущих цен при помощи корреляций с другими опережающими индикаторами. К примеру, каждый трейдер слышал о том, что объем влияет на цену. Безусловно, любому виду корреляции не было цены, если бы он давал стабильный положительный результат на протяжении длительного периода времени.

 

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

 

Инструменты прогнозирования цен

 

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

 

Так как для работы необходимы фактические данными, нужно перенести точку отсчета на 10 дней назад в качестве момента совершения события. В EasyLanguage (программе для создания и тестирования торговых систем) переменные заключаются для справки в код. К примеру, Close – Close[9] означает рост цены за последние 10 дней в отношении к цене закрытия.

 

Тестовый код начинается с события, которое произошло 10 дневных свечей назад. Этот обычный тест, а в качестве события может выступать все, что поддается описанию при помощи компьютерного кода. Пересечение двух  скользящих средних представляет собой  всего лишь один пример. Представив,  что событие произошло, вычисляется процентное увеличение или уменьшение цен на протяжении следующих 10 баров, завершаясь на текущей цене закрытия. Эта процентная цена, соотнесенная с ценой закрытия 10 баров назад, назначается переменной  FuturePrice. Переменная FuturePrice ограничивается значениями -10% и +10%. После установки границ, FuturePrice перемасштабируется, имея возможность принимать значения от 0 до 100, так, чтобы FuturePrice принимая соответствующее значение могла содержаться в одной из ста ячеек. План состоит в том, чтобы накопить определенное количество вхождений FuturePrice в каждую из ячеек на всем периоде последовательности ценовых данных. Для того, чтобы обеспечить статистически  репрезентативный объем выборки, используется информацию за последние 10 лет. По результатам обработки данных, количество случаев в ячейках создает функцию распределения вероятности для цен на 10 баров вперед с момента начала события.

 

Также проводится измерение средней процентовки будущей цены путем измерения "центра тяжести" (CG) функции распределения вероятности. Если бы кривая функции распределения вероятности была вырезана из куска бумаги, то CG был бы местом вдоль горизонтальной оси, где кривая находилась бы в равновесии. Общая процедура функции в координатах X и Y заключается в суммировании произведений XY, а также суммировании значений Y.  Соотношение этих сумм и дает CG. Поскольку ось х центрирована на 50, 50 убирается, чтобы построение кривой CG создает ощущение нулевой точки прибыли. Кривая CG строится под барчартом по мере того, как встречаются успешные события.

 

 

Пример тестирования события на прогнозируемость

 

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

 

 

Тестирование проходило с использованием данных по фьючерсному контракту на S&P на временном промежутке в 10 лет. Тестируемая торговая система использовала в роли индикатора стохастик длиной в 10 баров. Было обнаружено, что к окончанию 10 летнего периода CG приближалась к значению 1.09%. После того как получено среднее значение прибыли  за 10 лет нужно рассмотреть распределение вероятностей прогнозируемых цен за тот же период.

 

Функция распределения вероятностей

 

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

 

Образец торговой системы

 

 

Во время оптимизации торговой системы на временном периоде в 10 лет по фьючерсным контрактам на S&P оказывается, что оптимальной длинной стохастика является 8, а не 10, а пороговое значение для наступления события 0.3 дает лучший итоговый результат, чем 0.2. Оптимальной длинной временного периода для прогнозирования цены оказался интервал в не в 10, а в 14 баров. Убыточные сделки в прогнозном тесте торговой системы были ограничены уровнем 3.8%.

 

Рост капитала за тестируемые 10 лет стохастической системы торговой системы

 

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

 

Тестирование - ключ к построению прибыльной торговой системы

 

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

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