|
Торговля на финансовых рынках практически всегда производится по торговым сигналам, рассчитываемым по одному или нескольким индикаторам. Как для ручной, так и для автоматической торговли важна предварительная фильтрация сигналов с помощью анализа дополнительных данных. В сложных алгоритмах торговые сигналы на момент показа могут быть уже отфильтрованы, в более простых алгоритмах торговые сигналы часто остаются без фильтрации (применение фильтра перекладывается на трейдера).
Практически всегда бывает сложно выбрать качественный принцип фильтрации. Это связано с рядом факторов, основными из которых являются: - значительный объем обрабатываемых данных - неизвестность «оптимального» фильтра - неизвестные параметры выбранного фильтра - изменчивость рынка
Для анализа целесообразно использовать методы математического аппарата. В этой статье я приведу простой пример использования нейронной сети для фильтрации торговых сигналов.
Для наглядности я выбрал простой и неэффективный торговый сигнал – пересечение скользящих средних (Moving Average Crossing) на часовых данных котировок EUR/USD. Быстрая МА строится по 2 периодам, медленная – по 10 периодам; позиция открывается на открытии следующей свечи в направлении пробоя. Примерная картина индикатора приведена на следующем рисунке: Как мы видим, сигналы содержат массу ложных пересечений, это прекрасно видно на исторических данных.
Вы можете выбрать тот способ закрытия, который Вам больше по душе. Для простоты расчетов в данной статье позиции будут закрываться через 10 часов после открытия, без выставления уровней Stop loss и Take profit.
Перед тестированием для упрощения расчетов был сделан ряд допущений, уменьшающих точность (не учитываются величина спреда, свопы, задержка открытия позиции и проскальзывания цены).
На исторических данных с середины сентября 2008 года картина прибыли в координатах «номер позиции – баланс» выглядит следующим образом:
Как видим, принятый порядок действия убыточен. Всего было открыто 635 позиций, из них 49,6% закрылись с прибылью, однако матожидание убыточных позиций существенно больше матожидания прибыльных.
Произведем нейросетевую фильтрацию сигналов по 5 точкам данных. Предположительно, фильтрацию можно произвести по численным данным о расхождении скользящих средних (индикатор MACD). Для каждой открытой на исторических данных позиции был сохранен набор из 5 предшествующих значений MACD, а также признак успешного закрытия (SUCCESS=0 для убыточных позиций, SUCCESS=1 для прибыльных). Для buy-позиций MACD вычислялся как MASLOW - MAFAST, для sell-позиций: MAFAST - MASLOW.
Нейросеть согласно заданию должна по набору из пяти значений MACD (MACD1..MACD5) правильно предсказывать значение SUCCESS. Для реализации этой задачи вполне достаточно однослойной НС следующей структуры:
Нейроны входного и расчетного слоёв соединены «каждый с каждым». Таким образом, НС содержит 16 нейронов и 5+5∙10+1=56 весовых связей. Функция активации нейронов входного слоя – сигмоидальная биполярная (выбор сделан для нормированных в диапазоне [-1; +1] входных данных), функции активации расчетного и выходного слоёв – сигмоидальные однополярные (одномерный выходной вектор нормирован в диапазоне [0; 1]).
Для обучения нейронной сети были сформированы обучающая и тестовая выборки. В обучающую выборку вошли первые 300 сигналов, в тестовую – следующие 335 сигналов. Разбиение на две выборки гарантировало отсутствие подстройки под исторические данных.
Входные данные MACD были предварительно пронормированы для вхождения в диапазон [-1;+1] с равномерностью шкалы в положительной и отрицательной области.
Для обучения в среде Конструктор альфа 7 был выбран метод обратного распространения ошибки с моментным градиентным спуском (Momentum Gradient Descent) по всем весам нейросети. Коэффициенты обучения выбирались алгоритмом адаптивно по результатам фаз обучения. Целевые функции по обучающей и тестовой выборкам (мера качества обучения) представлены на рисунках:
Примечание.Наилучшее качество обучения означает нулевую величину целевой функции
Из графика видно, что вид целевой функции единообразен и состоит из трех этапов - разгона, спада и стабилизации на уровне ~40; это свидетельствует о качестве процесса обучения.
Обратите внимание, что установившаяся величина целевой функции на тестовой выборке на 10-15% больше установившейся величины на обучающей выборке. Нейросеть необходимо переобучать до тех пор, пока величина отличия не будет превышает 20%.
После обучения нейросеть выдает рекомендации фильтрации сигнала в непрерывном диапазоне [0..1]. Для получения четких рекомендаций о фильтрации округлим выходной сигнал нейросети от точки {0,5}.
Проверка работы фильтрующей нейросети показала, что фильтрации подверглись около 60% сигналов. Итоговый график баланса при торговле по указанным выше правилам выглядит следующим образом: Итак, сравните результаты торговли по двум выборкам – обучающей и тестовой:
В завершение статьи скажу, что получившаяся фильтрация непригодна для реальной торговли в силу допущений при расчетах и из-за низкого матожидания одной позиции, которое составляет около 16 пунктов. |