Новости от Finware Technologies LTD. Продолжаем публикацию статей известного на Западе
технического аналитика Джона
Эйлерса. Сегодня статья о прогнозировании.
Обращаем
внимание на то, что раньше этот материал нигде не публиковался на
русском языке и дается нами эксклюзивно для подписчиков нашей
рассылки.
С уважением, Цыплаков Дмитрий, Finware
Technologies LTD, fax +1 (847) 5895240 info@finware.ru
Фильтр линейного прогнозированияАвтор: Джон Эйлерс
ВВЕДЕНИЕ
Разве не славно было бы купить сегодня завтрашнюю газету и
прочитать в ней о ценах - прежде, чем они появятся в реальности?
Конечно, это невозможно; но, пожалуй, использование мощи вашего
компьютера для предсказания уровней этих самых цен может оказаться
не намного хуже завтрашней газеты. В данной статье мы подробно
покажем вам, как строить такие прогнозы. Прогнозирующий фильтр,
который мы используем, взят из подхода, описанного Ллойдом Дж.
Гриффитсом ( Lloyd J. Griffiths, "Rapid Measurement of Digital
Instantaneous Frequency", IEEE Transactions on Acoustics, Speech and
Signal Processing, Vol ASSP-23, No. 2, April 1975, pp207-222.).
Гриффитс использует простой алгоритм градиента временной области для
непрерывной коррекции коэффициентов фильтра линейного
прогнозирования. Далее он выполняет оценку спектральной плотности
сигнала примерно так же, как это делается для MESA, но это
выходит за рамки данной статьи.
Мы описываем фильтр
линейного прогнозирования и даем код на EasyLanguage для
использования его в качестве предсказателя цен. Одно из ограничений
фильтра заключается в том, что амплитуда сигнала ограничивается .1.
Это ограничение означает, что фильтр лучше предсказывает на
осцилляторах типа Stochastic и RSI, амплитуды которых
уже естественным образом ограничены. Как оказывается, наложение
ограничения на прирост цены создает такое отставание прогноза, что
получающиеся сигналы могут использоваться как противотрендовые.
ФИЛЬТР ЛИНЕЙНОГО ПРОГНОЗИРОВАНИЯ
Принципиальная форма фильтра линейного прогнозирования длины
"L" показана на Рисунке 1. Входящий сигнал x[n] применяется к
сдвиговому регистру. Каждый шаг сдвигового регистра задерживается на
один стандартный период, обозначенный как z-1. Результат
каждого задержанного шага умножается на уникальный коэффициент
прироста и складывается, позволяя получить оценочное значение x[n],
называемое xBar[L]. Затем оценочная величина xBar[L]
вычитается из реального входящего сигнала x[n], давая
остаточный член [n]. Алгоритм минимизирует остаточный член,
рекурсивно корректируя каждое значение прироста путем использования
остаточного члена и множителя сходимости. Получение алгоритма
минимальной среднеквадратичной ошибки (Least Mean Squares,
LMS) для определения значений прироста представляет для
большинства трейдеров небольшой интерес. Те читатели, которые
проявляют к этому интерес, могут обратиться непосредственно к работе
Гриффитса.
Рисунок 1. Принципиальная форма фильтра линейного
прогнозирования (адрес рисунка: http://www.finware.ru/images/lms_1.jpg
(~25Kb)
Множитель сходимости называется
u (мю). Он представляется уравнением
u =
a / (L*Power[0])
Если Power (сила) в волновой
форме равняется единице, множитель сходимости становится просто
u = a / L
Сходимость алгоритма
гарантирована, когда 0 < a < 2. Я нахожу, что
оптимальное значение равно a = 0,25, но диапазон выбора
весьма широк.
Сила в волновой форме пропорциональна своей
средней амплитуде в квадрате. Поскольку самое простое представление
множителя сходимости получается, когда сила равна единице, это
позволяет предложить использование осцилляторов типа стохастика или
RSI, так как шкала их амплитуды уже ограничена единицей (и
умножается на 100 для выражения в процентах).
Эти
осцилляторы нетрудно настроить так, чтобы они колебались вокруг
своих центральных уровней в рамках максимального отклонения до
экстремумов +1 и -1. На Рисунке 2 представлены 10-барный медленный
стохастик для 24-барных теоретических синусоидальных данных (зеленая
линия), 2-барный прогноз для стохастика (красная линия) и 5-барный
прогноз (желтая линия).
Прогноз в этом теоретическом примере
почти идеален.
Сигнал покупать возникает, когда линия
2-дневного прогноза уходит выше стохастика, а сигнал продавать -
когда линия 2-дневного прогноза опускается ниже стохастика.
Рисунок 2. Двух- и пятибарный прогнозы для
24-барного циклического медленного стохастика (адрес рисунка: http://www.finware.ru/images/lms_2.jpg
(~83Kb)
Теоретические синусоидальные ценовые
данные колеблются на плюс/минус 5 от среднего значения 40. Для того,
чтобы использовать эту форму волны в алгоритме Гриффитса, множитель
сходимости нужно нормализовать к силе волны. Оказывается, что
нормализатор колеблется в течение периода цикла таким способом, что
вводит задержку в прогноз.
На Рисунке 3 показаны фильтр
Кальмана с нулевой задержкой (зеленая линия), а также его 2-барный
(красная линия) и 5-барный прогнозы (желтая линия). При сравнении
этих прогнозов с прогнозами стохастика на Рисунке 2 становится
очевидной задержка, вводимая нормализатором силы. Далее, прогноз
обладает фактором инерции. Это означает, что, как только цена
начинает двигаться в одном направлении, прогноз строится на том, что
направление это продолжится. Это очевидно по разнице между 2-барным
и 5-барным прогнозами.
Любопытным свойством этого индикатора
является то, что отставание прогноза позволяет ему взаимодействовать
с линией фильтра Кальмана с нулевой задержкой, 1 давая торговый
сигнал противотрендового типа. А именно, сигнал покупки возникает
тогда, когда скользящая средняя с нулевым отставанием уходит выше
2-дневного прогноза скользящей средней, а сигнал продажи - когда
скользящая средняя с нулевым отставанием уходит ниже 2-дневного
прогноза.
Рисунок 3. Двух- и пятибарный прогнозы для Фильтра
Кальмана с нулевой задержкой (адрес
рисунка: http://www.finware.ru/images/lms_3.jpg
(~101Kb)
Код EasyLanguage для расчета
и построения предсказателя LMS дается во Врезке 1. Этот же
код используется для построения предсказания осциллятора и цены -
путем использования желательного расчета в качестве Value1 и
выведения нежелательного выражения в комментарий.
ВРЕЗКА 1.
Код EasyLanguage для построения предсказателя LMS
{*****************************************************************************************
LMS Predictor John Ehlers MESA Software adapted from
Lloyd J. Griffiths, "Rapid Measurement of Digital Instantaneous
Frequency", IEEE Transaction ASSP-23, pp207-222, April 1975
******************************************************************************************}
Inputs: Price((H+L)/2), Length(10);
Vars:
SigPower(0), Mu(0), XBar(0), count(0), count1(0);
Arrays: G[30](0), SigPredict[30](0);
{Для
использования в качестве противотрендового индикатора Value1 =
.25*(Price + .5*(Price - Price[4])) + .75*Value1[1]; }
{Для использования в качестве индикатора режима цикла}
Value1 = .2*(2*(SlowK(Length) / 100 - .5)) + .8*Value1[1];
{Расчет средней силы для нормализации} SigPower = 0;
For count = 0 to Length - 1 begin SigPower = SigPower +
Value1[count]*Value1[count]; end; SigPower =SigPower /
Length;
{ Множитель сходимости } if SigPower > 0 then
Mu = .25 / (SigPower*Length);
If CurrentBar > Length then
begin XBar = 0; {Расчет оценочного сигнала} For count =
1 to Length begin XBar = XBar + Value1[count]*G[count]; end;
{Расчет коэффициентов прироста} For count = 1 to Length
begin G[count] = G[count] + Mu*(Value1 - XBar)*Value1[count];
end; {Расчет формы волны сигнала прогноза} For count = 0
to Length begin SigPredict[count] = Value1[Length - count];
end; {Продление сигнала прогноза в будущее} For count =
Length + 1 to Length + 5 begin SigPredict[count] = 0; For
count1 = 1 to Length begin SigPredict[count] = SigPredict[count]
+ SigPredict[count - count1]*G[count1]; end; end; Value2
= SigPredict[Length + 2]; Value3 = SigPredict[Length + 5];
Plot1(Value1, "SlowK"); Plot2(Value2, "2Bar");
Plot3(Value3, "5Bar");
end;
******************************** КОНЕЦ ВРЕЗКИ
********************************************
ПРАКТИЧЕСКИЙ
ПРИМЕР
Теперь, когда мы видели, как может быть создан
прогноз для теоретической волны, и каково влияние нормализации силы,
мы можем применить Предсказателя LMS к реальным ценовым
волнам, чтобы оценить его полноценность как технического индикатора.
Рисунок 4 показывает как прогнозы медленного стохастика (нижняя
половина графика, под ценовыми барами), так и прогнозы фильтра
Кальмана с нулевой задержкой, наложенные на ценовые бары. Для
ясности показаны только двухбарные прогнозы. Даже самое
поверхностное изучение показывает, что оба индикатора дают огромную
выгоду. Стохастик дает истинный прогноз, в то время как скользящая
средняя с нулевым отставанием позволяет получать прогноз, пригодный
для использования в качестве краткосрочного противотрендового
индикатора.
Рисунок 4. Прогнозы LMS для медленного стохастика и
фильтра Кальмана с нулевой задержкой (адрес рисунка: http://www.finware.ru/images/lms_4.jpg
(~72Kb)
Начнем со стохастика и его прогноза.
Первый сигнал покупки происходит вблизи первого октября, и хорошая
длинная позиция держится до третьей недели октября. На четвертой
неделе октября, после небольшой тряски, появляется ясный короткий
сигнал, затем вблизи первого ноября снова открывается длинная
позиция. В течение ноября чередуются несколько переменчивых
сигналов, пока на его четвертой неделе не появляется хороший длинный
сигнал. Необычно хорошие сигналы, как длинные, так и короткие,
даются в течение декабря и января. Сигналы снова становятся
беспорядочными во время циклических колебаний стохастика в последнюю
неделю января и первую половину февраля. Единственный очень плохой
сигнал для длинного входа происходит на третьей неделе февраля,
после чего снижение рынка продолжается.
Похожие, хотя и
иные, сигналы даются прогнозированием скользящей средней с нулевой
задержкой при использовании пересечения линий как сигналов
противотренда. В левой части графика за первым хорошим длинным
сигналом следует неправильный короткий сигнал во второй неделе
октября. Длинные сигналы в первый и последний дни ноября оказываются
хорошими. Далее каждый сигнал на остальной части графика дает
прибыльные результаты (в зависимости от исполнения во время тех
случаев, когда циклические колебания были невелики по амплитуде).
Эти примеры демонстрируют, что предсказатель LMS
может быть ценным в техническом анализе.
ВЫВОДЫ
Мы описали прогнозирующий фильтр минимальной
среднеквадратичной ошибки (Least Mean Squares Predictive
Filter) и дали код EasyLanguage для построения прогнозов
как на осцилляторе, так и на фильтре Кальмана с нулевой задержкой.
Выгоды от этого прогнозирования как инструмента технического анализа
были описаны как на примере теоретической волны, так и на примере
фактических данных. Наряду с чтением завтрашних газет, предсказание
будущего поведения с помощью современных методов анализа сигналов
является, вероятно, наилучшим способом заглянуть в будущее.
Джон Эйлерс является
президентом MESA Software и часто пишет для журнала Stocks &
Commodities. Он стал первым, кто открыл техническим трейдерам метод
Максимальной Энтропии для Спектрального Анализа. Он также первым
ввел преобразование Гилберта, применив его в числе уникальных
индикаторов.
| |