Фильтр CUSUM: выборка финансовых событий
Как симметричный CUSUM-фильтр выбирает события по логарифмической доходности, как избежать заглядывания вперёд и чем фильтр отличается от теста стабильности регрессии.
В этом руководствеФильтр накапливает движение, а не отдельные колебания
Краткое резюме
Фильтр CUSUM отмечает момент, когда накопленная логарифмическая доходность достаточно сместилась вверх или вниз. Он выбирает время наблюдения, а не создаёт событие на каждом временном баре. Триггер не предсказывает следующее направление цены, не присваивает исход и не гарантирует стационарность, ликвидность или прибыльность.
Фильтр накапливает движение, а не отдельные колебания
Для положительной цены закрытия Pₜ рассчитайте логарифмическую доходность rₜ = ln(Pₜ/Pₜ₋₁). Верхний сумматор накапливает положительную часть пути, нижний — отрицательную:
S⁺ₜ = max(0, S⁺ₜ₋₁ + rₜ)
S⁻ₜ = min(0, S⁻ₜ₋₁ + rₜ)
При симметричном пороге h > 0 событие срабатывает, если S⁺ₜ > h или S⁻ₜ < −h. Здесь используется строгое превышение. После триггера сбрасывается только сумматор, пересёкший порог. Каждая рекурсия обнуляет неподходящий знак, поэтому небольшое движение в обратную сторону не вычитает весь пройденный экстремум.
Фильтр не прогнозирует цену: он только суммирует наблюдавшиеся изменения до момента t. В описаниях метода встречается условие «достичь или превысить», а реализация может проверять строгое превышение. При точном равенстве h событие отмечается по-разному. Могут также различаться момент записи отметки и порядок обновления или сброса сумматора. Зафиксируйте эти конвенции до создания выборки.
Порог измеряется в единицах логарифмической доходности
h задан в единицах логарифмической доходности, а не в процентах цены напрямую. Значение 0,005 близко к изменению цены на 0,5% только при небольших движениях; точное процентное изменение равно exp(0,005) − 1. В главе 2 книги Advances in Financial Machine Learning и документации mlfinpy по фильтрации CUSUM описан как способ выбирать события по накопленному изменению. Реализация mlfinpy показывает конкретные программные правила. Историю накопительного последовательного контроля представляет работа Пейджа Continuous Inspection Schemes.
Условный пример показывает срабатывание в обе стороны
Рассмотрим закрытия 100,00 → 100,20 → 100,40 → 100,60 → 100,40 → 100,20 → 100,00 при h = 0,005. Рост от 100,00 до 100,60 даёт ln(100,60/100,00) = 0,005982, или около 0,598%. Верхний сумматор впервые превышает порог на закрытии 100,60.
После сброса верхней ветви последующее падение накапливается в нижней: ln(100,00/100,60) = −0,005982. Нижний сумматор пересекает −h на закрытии 100,00. Значения вымышлены и служат только для пояснения; это не рыночные данные, котировки или цены исполнения.
Порог влияет на плотность наблюдений
Низкий h даёт больше отметок, в том числе из-за шума, спреда и кратких колебаний. Высокий h уменьшает частоту, но может задержать обнаружение нового режима. Постоянный порог легко объяснить, однако его смысл меняется вместе с волатильностью. Адаптивная граница, например hₜ = kσₜ, должна использовать оценку σₜ только из сведений, доступных к моменту t. Укажите окно, период обновления, задержку и обработку пропусков. Оценка на всей выборке заглядывает в будущее.
Сравнивайте значения параметров на хронологически отложенных периодах. Оценивайте частоту событий, задержку обнаружения и устойчивость к небольшим изменениям h, а не только доходность. Если вы перебрали варианты и выбрали лучший по результату теста, этот тест уже участвовал в настройке и больше не является независимой оценкой.
Событийное время отличается от временных баров
Временная выборка создаёт наблюдения через равные интервалы. CUSUM отмечает моменты нерегулярно: в спокойные периоды реже, при быстрых изменениях чаще. Это меняет состав данных — активные отрезки получают больше событий, а интервалы между ними неодинаковы.
Сохраняйте исходные временные отметки и длительность между событиями. Не трактуйте соседние отметки как одинаково разнесённые во времени. Анализ доходности, зависимости и риска должен учитывать подходящую временную шкалу; иначе активные часы могут получить чрезмерный вес.
Триггер начинает наблюдение, но не задаёт исход
CUSUM отвечает на вопрос «когда начать наблюдение?», а не «куда пойдёт цена?». Он не создаёт целевую переменную y. Отдельная процедура может построить признаки на момент триггера, а затем оценить последующий путь. Например, метод трёх барьеров определяет исход по верхней и нижней границам и максимальному сроку наблюдения.
Не смешивайте фильтр с регрессионным CUSUM-тестом. Эконометрический тест накапливает рекурсивные остатки и проверяет стабильность коэффициентов относительно статистических границ. Его входные данные и цель отличаются; см. CUSUM-тест стабильности регрессии.
Само событие не доказывает стационарность, ликвидность или возможность получить прибыль. Причиной могут быть новость, расширение спреда, ошибка котировки или смена режима. Проверяйте качество данных независимо от факта срабатывания.
Логарифмическое изменение требует положительных цен
ln(Pₜ/Pₜ₋₁) определён только для положительных цен. Для инструмента, который может иметь нулевую или отрицательную цену, выберите подходящее преобразование и объясните его. Механический сдвиг ряда на константу изменит доходности и точки триггера.
Проверьте корпоративные действия, валюту котировки, пропуски, синхронизацию и склейку фьючерсных контрактов. Искусственный разрыв между контрактами может вызвать событие без сопоставимого движения торгуемого инструмента.
Время обнаружения не является временем исполнения
Сигнал по дневному закрытию доступен после формирования цены закрытия. Если исполнение по ней не гарантировано, не считайте эту цену доступным входом. Опишите исполнение после закрытия или на следующей котировке и учитывайте задержку, спред, комиссию, проскальзывание, финансирование и рыночное воздействие.
Низкий порог может создавать события быстрее, чем стратегия способна на них реагировать; высокая частота не равна полезности. Проверяйте модели по времени и учитывайте перекрывающиеся будущие интервалы целевой разметки. Обнаружение события, построение метки и моделирование сделки — отдельные шаги.
Зафиксируйте правила для воспроизводимости
Запишите источник цены, частоту, формулу доходности, значение h, правило сравнения, порядок обновления и сброса, ветвь, которая сбрасывается, и обработку пропусков. Для динамического порога сохраняйте оценку волатильности, доступную на тот момент. Храните время каждой отметки и версию настроек, чтобы объяснить срабатывания и отделить свойства выборки от выводов модели.
Частые вопросы
Q1Событие CUSUM означает, что нужно покупать или продавать?
Нет. Оно указывает только на то, что накопленное изменение пересекло порог. Фильтр не задаёт позицию и не предсказывает направление.
Q2Чем фильтр отличается от CUSUM-теста регрессии?
Фильтр суммирует логарифмические доходности для выбора времени наблюдения. Регрессионный тест суммирует рекурсивные остатки, чтобы проверить стабильность коэффициентов. Это разные задачи.
Q3Можно ли использовать логарифмический CUSUM при отрицательной цене?
Нет. Для ln(Pₜ/Pₜ₋₁) обе цены должны быть положительными. Для нулевых или отрицательных цен выберите и обоснуйте альтернативное преобразование.
Источники и дополнительное чтение
Сообщить о проблеме
Мы подготовим письмо со ссылкой на эту статью. Mark получит сообщение только после отправки
Быстрая проверка
Прочитали руководство? Проверьте себя в 3 вопросах
Вопрос 01
При каком условии фильтр срабатывает согласно этой статье?
Выберите ответ, чтобы увидеть объяснение
Словарь опционов
The current IV's position between a lookback-period low and high; one outlier can distort it, so it should not be read as a standalone signal.
Читать подробное руководствоIV percentileThe percentage of observations in a lookback window below the current IV; the result depends on the data series, window, and treatment of missing or extreme values.
Читать подробное руководствоVIXA constant 30-day expected-volatility measure for the S&P 500 calculated from a strip of SPX option prices; it is not the IV of an individual stock or contract.
Читать подробное руководство