"Я круглый год ничего не делаю, чтобы не платить налогов." - Дуглас Адамс

Нейро-фильтрация торговых сигналов PDF Печать E-mail
(2 - оценка)
Автор: Александр Медведев   
06.07.2009 16:21

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

Практически всегда бывает сложно выбрать качественный принцип фильтрации. Это связано с рядом факторов, основными из которых являются:
- значительный объем обрабатываемых данных
- неизвестность «оптимального» фильтра
- неизвестные параметры выбранного фильтра
- изменчивость рынка

Для анализа целесообразно использовать методы математического аппарата. В этой статье я приведу простой пример использования нейронной сети для фильтрации торговых сигналов.

Для наглядности я выбрал простой и неэффективный торговый сигнал – пересечение скользящих средних (Moving Average Crossing) на часовых данных котировок EUR/USD. Быстрая МА строится по 2 периодам, медленная – по 10 периодам; позиция открывается на открытии следующей свечи в направлении пробоя. Примерная картина индикатора приведена на следующем рисунке:

 

Moving Average на EUR/USD

 
Как мы видим, сигналы содержат массу ложных пересечений, это прекрасно видно на исторических данных.

Вы можете выбрать тот способ закрытия, который Вам больше по душе. Для простоты расчетов в данной статье позиции будут закрываться через 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 пунктов.

 

Добавить комментарий

Защитный код
Обновить

Интерактивные сигналы

Сейчас 30.07.2010 15:27 CET
CET - Central European Time

ActiveSwing EUR/USD H1
Нет сигналов
Торговые сигналы

Joomla! is Free Software released under the GNU/GPL License.