Я не буду рассказывать Вам теорию фракталов Мандельброта, хотя при обосновании фильтра FRAMA с помощью этой теории все выглядит очень таинственно и экзотично.
Но я считаю, что все объясняется гораздо прозаичнее и не надо городить сложное там, где все достаточно просто.
В фильтре KAMA(адаптивный фильтр Кауфмана) и фильтре FRAMA ( Fractal Adaptive Moving Average By John Ehlers) суть управления коэффициентом ”K” сводится к следующему.
Сначала вспомним, что такое тренд.
В номере «Уолл Стрит Джорнал» от 3 июля 1984 года была опубликована статья под заголовком «Столетие Индекса Чарльза Доу». Через неделю в «Баррон» эта тема была продолжена материалом, озаглавленным: «В течение ста лет Теория Доу верой и правдой служит инвесторам».
Обе статьи вышли в свет, чтобы отметить сотую годовщину со дня первой публикации Чарльзом Доу среднего рыночного курса акций. Это произошло 3 июля 1884 года.
Определение тренда или тенденции , которое дает Доу, выглядит следующим образом:
При восходящем тренде каждый последующий пик и каждый последующий спад выше предыдущего.
При нисходящем тренде каждый последующий пик и спад будет ниже, чем предыдущий.
Такое определение тренда до сих пор является основополагающим и служит отправной точкой в анализе рынков.
Для решения задачи обнаружения тренда, построим следующие графические модели тренда (рис.1) и его отсутствия – боковое движение (рис.2).
Математически такая модель представлена в виде суммы линии p2=A0+B0*t – модель линии тренда и синусоиды p1=A1*sin(2*Pi*t/Ts)– модель волнового движения цены . В МАТЛАБ это можно смоделировать следующим образом:
time=0:1999;
p1=0.25*sin(pi*time/200);
B=0.25;
p2=B*(time/200);
p3=p1+p2;
plot(time,p3,time,p2);
Рис 1. модель трендового движения рынка
Рис 2. модель ”боковое движение” флетового движения (flat-плоский)
Колебания цены относительно средней линии характеризуются максимальным Max и минимальными значениями Мin.
Если бы волновая составляющая отсутствовала, то наличие тренда можно было бы определить по углу наклона лини тренда, т.е. по коэффициенту B0,который определяет скорость нарастания тренда.
Чем больше коэффициент (скорость) отличается от нуля, тем сильнее тренд.
При этом , практическое вычисление данного коэффициента запишется в виде:
B0=(P2-P1)/(T2-T1),
где P1,P2 – значения цены в моменты времени T1,T2 соответственно.
При наличии волновой составляющей , данная формула может быть применена,
но для этого необходимо сначала выделить на графике максимумы двух волн Max1 и Max2 в моменты T1 и T2 и вычислить B0=(Max2-Max1)/(T2-T1). Аналогично можно записать для минимальных значений волн Min1 и Min2.
При этом, моменты времени T1 и T2 связаны с моментом появления экстремумов.
Так как в реальности имеем множество волн, то оценка величины B0 содержит случайную составляющую, поэтому применяется усреднение полученных оценок, т.е. используется сглаживание оценки коэффициента B0 .
Для упрощения процедуры обнаружения тренда предлагается следующий алгоритм.
Выбираем интервал наблюдения Tн.
Делим его на две части Tн1 и Tн2.
Вычисляем параметры: A3=Max-Min – размах цены на интервале Tн
Вычисляем параметры: A1=Max1-Min1 – размах цены на интервале Tн1
Вычисляем параметры: A2=Max2-Min2 – размах цены на интервале Tн1
Вычисляем среднее значение размаха цены A=(A1+A2)/2;
Полученное значение нормируем к A3 и получаем:
Z=A/A3, или Z=(A1+A2)/(2*A3)
Если тренд отсутствует, то согласно модели, получим A1=A2=A3=A и Z=1.
Чем сильнее тренд, тем ближе коэффициент Z приближается к 0.5, при условии, что волны имеют примерно равный размах.
Так для данной модели A1=A2; A3=2*A1, A=1, Z=0.5.
Таким образом, мы получили безразмерную величину Z, которая изменяется от 1 – для флета(боковика), до 0.5 — при линейном тренде.
Величина Z может быть применена как управляющий параметр в AMA.
Для целей применения величины Z как управляющего сигнала индикатора, мы можем смещать, сужать и расширять диапазон изменения Z путем прибавления констант, умножением и делением Z на константы.
В фильтре FRAMA в качестве управляющего коэффициента предлагается использовать так называемую фрактальную размерность:
D=1+(Ln(A1+A2)-Ln(A3))/Ln(2); где Ln(X) – натуральный логарифм X.
Величину D для нашей модели можно вычислить следующим образом:
D=1+Ln(Z).
Немного другая модель расчета коэффициента управления фильтром использована в фильтре Кауфмана.
Но об этом в следующий раз.