Основы трейдинга

Статьи для начинающих

Зачем нужен фильтр Калмана?

Любое измерение обязательно предполагает погрешность. Например, измеряя длину доски с помощью рулетки, можно ошибиться на 1-2 миллиметра, а если речь идёт про температуру воздуха за окном, то любой термометр может искажать реальные значения на 1-2 градуса.

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

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

Основополагающие принципы фильтра Калмана

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

Общая формула, по которой работает фильтр Калмана:

Значение (текущее) = Значение (предыдущее) х Функция состояния системы + Значение управляющего сигнала (текущее) х Функция управляющего сигнала.

Разберём эту формулу максимально подробно.

При поступлении нового сигнала фильтр Калмана не принимает сразу его значение за истину, а сопоставляет с тем результатом, который можно получить по данной формуле.

Левая часть формулы

Что такое предыдущее значение – понятно: это значение, например, прошлого часа или прошлой минуты. А что такое функция состояния системы?

Здесь речь идёт о реальных физических особенностях. Например, если 5 секунд назад скорость автомобиля составляла 150 км/ч, то в данный момент она никак не может быть равной 10 км/ч: ни одна машина не способна так резко затормозить, если только она не врезалась в стену. То же самое с температурой жидкости: если час назад она составляла 90 градусов, сейчас она не способна быть охлаждённой до 20 градусов, если только не использовалась специальная функция заморозки.

Таким образом,фильтр сглаживает те явные случаи, когда датчик показывает значение, явно далёкое от реального.

В остальных же случаях фильтр Калмана учитывает естественную скорость протекания процессов. Например, в случае с охлаждением жидкости может быть известно: без специального подогрева или охлаждения её температура падает в час на 3 градуса. Если датчик показывает снижение на 5 градусов за час, фильтр Калмана выводит среднее арифметическое от значения датчика и среднего значения, в итоге 5 градусов корректируется в 4 градуса. В опыт показывает, что в большинстве случаев реальное значение снижения температуры, если специально провести его контрольным прибором, будет к 4 ближе, нежели к 5. Это означает, что фильтр Калмана реально снижает уровень ошибочности как датчиков, так и всех систем, работающих на значениях, от них получаемых.

Правая часть формулы

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

Здесь фильтр Калмана, по аналогии с левой частью формулы, сравнивает новое и предыдущее значение управляющего сигнала. К примеру, с час назад с пульта поступил сигнал снизить температуру жидкости на 10 градусов, а к настоящему моменту никаких новых команд не было. Это, однако, подразумевает сразу несколько важных нюансов:

• Температура стала снижаться не с первой секунды, как только поступил сигнал: любой системе нужно время на запуск.

• Любое значение управляющего сигнала трансформируется в показания работы конкретных систем не идеально. Проще говоря, команда снизить температуру на 10 градусов может привести к реальному снижению в диапазоне от 9 до 11.

• По окончании выполнения команды система работает какое-то время по инерции, так что реальное снижение температуры окажется больше ожидаемого.

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

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

Вычисление итогового значения

При отсутствии управляющего сигнала фильтр Калмана сравнивает текущее значение с предыдущим и умножает его на коэффициент состояния системы.

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

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

К примеру, после подачи команды снизить температуру на 10 градусов она в реальности изменилась на 11, плюс нужно добавить естественное охлаждение на 3 градуса в час. Итого мы получаем 14, что отличается от значения 10 почти в полтора раза. Естественно, что если датчик подаст значение 9, фильтр Калмана усомнится в этом значении и использует среднее арифметическое между 9 и 14, то есть 12.5. Это в 90% случае будет более близко к реальности, нежели непосредственное значение датчика.

Принцип учёта внешнего шума

Возвращаемся к примеру с уличным термометром. Предположим, в 6 утра температура воздуха была минус 2 градуса, в 8 утра – 0 градусов, в 10 утра – плюс двенадцать градусов. Очевидно, что на термометр попали прямые лучи солнца, и его показания значительно исказились. Причём здесь мы имеем искажение уже не на проценты, а в разы по сравнению с реальным значением.

С подобными внешними шумами приходится сталкиваться в любой сфере, где проводятся измерения, причём какие-то шумы предсказуемы, как солнечные лучи, другие – в значительно меньшей мере, когда, например, перегрев соседнего резервуара по причине неправильно поданного управляющего сигнала повысил температуру жидкости в нескольких соседних. Здесь фильтр Калмана также будет способен предложить свои поправки.

При этом фильтр является «интеллектуальным»: он способен понять, что температура воздуха никак не может повыситься на 10 градусов за час, и в данном случае мы имеем дело с настоящим «шумом», а вот температура жидкости в резервуаре может повыситься в случае аварии, поэтому система подаст тревожный сигнал, что отдельные элементы системы стоит проверить.

Фильтр Калмана в трейдинге

Что касается трейдинга, то здесь крайне важно знать истинное значение цены конкретного актива. Например, нас интересуют акции компании АBC. На одной бирже мы видим, что акции ABC торгуются по 55 долларов, на второй по 53 доллара, на третьей по 56. Получается, что ни одно из этих значений нельзя считать истинным. Фильтр Калмана не только выведет среднее арифметическое, но сравнит значения цены с предыдущими: например, три недели назад акции стоили в среднем 38 долларов, две недели назад – 40, неделю назад – 42. Таким образом (даже без учёта дополнительных факторов), с учётом средней скорость роста на 2$ в неделю, сегодняшнее значение должно быть равным 44$. А использовав среднее арифметическое между 44 и, опять же, средним арифметическим сегодняшних цен на разных биржах, мы получим 49.3$. И это намного более приближено к реальной цене акции, чем те значения, которые мы видим на биржах.

Фильтр Калмана на графике может выглядеть очень просто: как обычная скользящая средняя, которая идёт рядом с графиком цены и как бы корректирует его значения. Тем не менее, это, как мы разобрались, очень мощный и точный инструмент. Расхождения между текущей ценой и показаниями фильтра Калмана могут говорить о том, что цена начнёт двигаться в сторону линии фильтра уже в очень скором времени – и тем быстрее, чем больше разрыв.

26 Ноя 2018
Категории:

Один комментарий на «“Зачем нужен фильтр Калмана?”»

  1. Это очень мощная теория, которую стоит изучить и понять каждому трейдеру, так как за ней кроется очень много секретов, что помогут преуспеть в вашем деле. Есть много литературы на этот счёт. Бесплатной тоже достаточно много, но всё равно, если хотите собирать сливки по настоящему, то тогда нужно покупать книги за деньги или курсы.

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

Для отправки комментария вы должны авторизоваться.

Инвестирование с QuantPro Platform

Оптимальное соотношение между доходностью и риском