Обсуждение статьи "Создание цифровых фильтров, незапаздывающих по времени"

 

Опубликована статья Создание цифровых фильтров, незапаздывающих по времени:

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

Кластерный фильтр

Кластерный фильтр (англ. cluster — гроздь, сгусток, пучок) - совокупность цифровых фильтров, аппроксимирующих исходную последовательность. Кластерный фильтр не стоит путать с кластерными индикаторами.

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

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

Рисунок 1. Схема простого кластерного фильтра

Рисунок 1. Схема простого кластерного фильтра

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

Автор: Konstantin Gruzdev

 
Спасибо автору за интересную статью.
 

Идея построения незапаздывающего фильтра занимала меня последние пару лет. Я также получал регулярно результаты, казавшиеся лучше других, и даже незапаздывающими. Все они разбивались об анализ ступеньки. Прошу автора реализовать входной модельный сигнал в виде функции Хевисайда: ступеньку, до момента T уровень =0, после единица. И показать линию фильтра на этом. Уверен на 99,99%, что мы увидим кривую, выходящую на уровень 1 в течение некоего интервала времени, то есть запаздывание. Идеальный, истинный, незапаздывающий фильтр должен уметь обрабатывать "ступеньки" так, чтобы выход был равен входу. Если это не так, рассуждения о "незапаздывании" - лукавство. Хотя я поддерживаю автора: создание незапаздывающего неперерисовывающегося фильтра - возможно. 

P.S. Сравнения с другими фильтрами следует привести на "ступеньке", разместив все фильтры на одном графике.  

P.P.S. Если это уже сделано в каком-то видео - прошу извинить, в данный момент (с рабочего компьютера) я не вижу видео (видимо, размещённых на youtube ?)  

 

Тест со ступенькой для моментума с фильтром добавлю.

Какова реакция фильтра на ступеньки в потоке котировок хорошо видно на четвертом  видео.

 
Lizar:

Тест со ступенькой для моментума с фильтром добавлю.

Какова реакция фильтра на ступеньки в потоке котировок хорошо видно на четвертом  видео.

не в потоке котировок. а на чистую ступеньку именно. это совсем разное. допустим, период в некотором эффективном (не буквальном) смысле усреднения - 101 бар, следовательно запаздывание - 50 баров. И на чистой ступеньке я это хорошо увижу. А на котировках, где два горизонтальных участка (0 и 1 условно) вместе взятые всего баров 20, а вокруг - котировки - вот там я ничего такого не увижу. 

Исследования фильтров следует проводить подавая на вход ТОЛЬКО модельные сигналы, и уже после этого, после уяснения природы их, наслаждаться картинками работы на котировках.  

 
MAIS:

не в потоке котировок. а на чистую ступеньку именно. это совсем разное. допустим, период в некотором эффективном (не буквальном) смысле усреднения - 101 бар, следовательно запаздывание - 50 баров. И на чистой ступеньке я это хорошо увижу. А на котировках, где два горизонтальных участка (0 и 1 условно) вместе взятые всего баров 20, а вокруг - котировки - вот там я ничего такого не увижу. 

Исследования фильтров следует проводить подавая на вход ТОЛЬКО модельные сигналы, и уже после этого, после уяснения природы их, наслаждаться картинками работы на котировках.  

Я понял, такой тест добавлю.
 
Lizar:
Я понял, такой тест добавлю.
Спасибо. Я догадываюсь что мы увидим. Возможно Ваш фильтр покажет запаздывание меньше при лучшем сглаживании, чем конкуренты. Но это 100% не будет незапаздывающий неперерисовывающийся фильтр. Следующий вопрос - достаточно ли Ваш фильтр близок к незапаздывающему неперерисовывающемуся, чтобы его использовать в этой роли? Тест имхо тут простой. Если бы фильтр реально не запаздывал и не перерисовывался, то разумно предположить, что оказалась бы прибыльной простая торговая стратегия: покупать, если фильтр выше цены, продавать если наоборот. Будем реализовывать её входами в каждом баре (или если расхождение более некоего порога), и заходить с одинаковым лотом и равными ТП=СЛ. Например ТП=СЛ=50 пипс. речь о том что если заходить случайно, то имеем 50% вероятности словить СЛ, без учета спреда. С учетом спреда - больше. И потому потихоньку сливаемся. Если же фильтр реально незапаздывает, то вероятность словить ТП больше (без учета спреда). Если эффект есть, то проанализировав достаточно длинный кусок котировок мы не сможем его не заметить. Если хотя бы и без учета спреда Вы покажете что вероятность ТП в такой простой стратегии хотя бы 55%, этого довольно, чтобы компенсировать спред, и даже зарабатывать. Если Ваш фильтр реально незапаздывающий, то путем подбора порога разности между фильтром и ценой, при достижении модулем которой порога надо открывать сделку, Вы сможете и со спредом показать вероятность ТП процентов так 70, или 80, или 90+... Если да - Ваш фильтр ПОЧТИ незапаздывающий-неперерисовывающийся, а торговая стратегия - Грааль. Если нет - и вероятность ТП не более таковой для SMA - извиняйте. 
 
MAIS:
Спасибо. Я догадываюсь что мы увидим. Возможно Ваш фильтр покажет запаздывание меньше при лучшем сглаживании, чем конкуренты. Но это 100% не будет незапаздывающий неперерисовывающийся фильтр...

Давайте дождемся публикации индикатора GMomentum_test, чтобы делать выводы не на догадках. Его должны были опубликовать вместе с выходом статьи, но видать не успели подготовить. Теперь его, похоже, опубликуют в понедельник.

Что касается тестов вообще, то тесты для линейных фильтров не подходят для кластерных. Точнее,  их можно делать, но они не показательны, т.к. кластерные фильтры нелинейны.  Примером этому может служить ситуация с единичным импульсом из статьи. Скорее всего, тест с единичной ступенчатой функцией получится не менее эффектным. Но это будет, также как и с единичным импульсом, просто забавным частным случаем сглаживания. Не более. 

Технические индикаторы как цифровые фильтры
Технические индикаторы как цифровые фильтры
  • 2013.10.07
  • Timur Gatin
  • www.mql5.com
В данной статье технические индикаторы рассматриваются как цифровые фильтры. Объясняется принцип работы и основные характеристики цифровых фильтров. Рассматриваются практические способы получения ядра фильтра в терминале MetaTrader 5 и интеграция с готовым анализатором спектра, предложенным в статье "Строим анализатор спектра". В качестве примеров приведены импульсные и спектральные характеристики типичных цифровых фильтров.
 
Lizar:

Давайте дождемся публикации индикатора GMomentum_test, чтобы делать выводы не на догадках. Его должны были опубликовать вместе с выходом статьи, но видать не успели подготовить. Теперь его, похоже, опубликуют в понедельник.

Что касается тестов вообще, то тесты для линейных фильтров не подходят для кластерных. Точнее,  их можно делать, но они не показательны, т.к. кластерные фильтры нелинейны.  Примером этому может служить ситуация с единичным импульсом из статьи. Скорее всего, тест с единичной ступенчатой функцией получится не менее эффектным. Но это будет, также как и с единичным импульсом, просто забавным частным случаем сглаживания. Не более. 

Речь не о тесте фильтра. Ясно, что незапаздывающий неперерисовывающийся фильтр, буде и существует - нелинеен. Речь о тестировании трговой системы в предложенной мной геометрии, a priori прибыльной для НАСТЯЩЕГО незапаздывающего неперерисовывающегося фильтра, и ВОЗМОЖНО прибыльной и для некоторого приближения к оному идеальному фильтру. Тест со ступенькой не частный случай, а демонстратор внутренних, врождённых качеств фильтра, каковые будут всегда на любых данных, просто на ступеньке их видно. 
 
MAIS:

Вот, что получилось:

 

Серая пунктирная линия - Heaviside, голубая толстая - моментум, красная - моментум с включенным фильтром  

 
Lizar:

Вот, что получилось:

 

Серая пунктирная линия - Heaviside, голубая толстая - моментум, красная - моментум с включенным фильтром  

Серая пунктирная не Хевисайд. Ступенька должна быть вертикальной. Если дело в том что дискретизация такая по абциссе, и рисуется линией, жаль. ненаглядно. И я имел в виду увидеть при бОльших значениях сглаживания. Чтобы запаздывание было больше показанных 3 баров. А вообще если запаздывание мало, то я обычно практикую повтор этого сколько надо раз: применяю фильтр к результату фильтрации, через тысячу повторений всё видно, становится ясно какая доля бара запаздывания содержится в алгоритме при видимом крохотном сглаживании. 
Причина обращения: