Содержание статьи
- Доказательства и область применения
- Иллюстрация
- Процесс
- Аппроксимирующая линия описывает наблюдаемый диапазон.
- Стройте модель только по данным до свечи обнаружения
- Возвращение внутри канала может быть успешным или неудачным.
- Фиксированные коэффициенты не делают центр неподвижным
- Диагностика остатков не подтверждает прибыльность
- Объём фильтрует события, не переписывая канал
- Хронологические тесты и полезные контрольные группы
- Частые ошибки
- Практический список проверки
- Частые вопросы
- Источники исследования
Доказательства и область применения
Fidelity объясняет регрессионный индикатор, statsmodels и NIST — построение модели и диагностику. Ни один из источников не подтверждает прибыльность предложенной стратегии входа после возврата цены в канал.
Практическая последовательность действий
- Оцените модель по прошлым даннымИспользуйте OLS логарифма цены со свободным членом, исключая свечу обнаружения.
- Проверьте контекстПримените заданные требования к наклону и остаткам.
- Зафиксируйте модель при отклоненииХраните неизменяемые коэффициенты и начало координат.
- Дождитесь возврата в каналТребуйте закрытия внутри полосы, но ниже центральной цели.
- Оцените рискПроверьте стопы, выходы по времени и затраты на данных вне разработки.
Аппроксимирующая линия описывает наблюдаемый диапазон.
Fidelity определяет Linear Regression Indicator через конечную точку линии, рассчитанной за N периодов [1]. Здесь описательная идея дополнена полосами на основе остатков. При наклонной центральной линии большое отклонение вниз не означает фундаментальной дешевизны или скорого роста.
Разделите два вопроса: насколько хорошо прямая линия объясняет прошлый период и предсказывает ли сегодняшнее отклонение последующую доходность. R² отвечает на первый вопрос. Устойчивое снижение может иметь высокие значения R², в то время как покупка ниже линии, соответствующей модели, неоднократно приводит к убыткам.
Канал можно использовать для возврата к среднему или продолжения тренда, но это разные конкурирующие гипотезы. Базовая версия ниже ждёт выхода цены вниз и возврата внутрь фиксированной нижней полосы. Она не переключается на моментум, когда историческая сделка возврата к среднему терпит неудачу.
Стройте модель только по данным до свечи обнаружения
Для j=0…N−1 задайте y[j]=log(C[j]) и оцените y=a+bj обычным методом наименьших квадратов. Остатки e[j]=y[j]−a−bj, их масштаб s=sqrt(sum(e²)/(N−2)). Через h шагов после окна m(h)=a+b(N−1+h), ценовые полосы exp(m(h)±ks). Предлагаются N=60, k=2; отклоняйте неположительные цены и почти нулевой s.
statsmodels OLS не добавляет свободный член в переданную матрицу регрессоров автоматически [2], поэтому включите столбец константы. Стройте модель по данным до t−1 включительно, а закрытие свечи t оценивайте при h=1. Включение t позволило бы самому шоку сдвинуть и центр, и ширину, которыми оценивается этот шок.
Фильтр контекста диапазона abs(b)×(N−1)/s≤1 сравнивает рассчитанный дрейф с масштабом остатков. Это правило отбора, а не тест стационарности. Когда выход за полосу создаёт кандидата, сохраните a, b, s, начальный индекс и входное окно модели. Активного кандидата никогда не пересчитывайте.
Истечение срока имеет приоритет над сигналом. Псевдокод явно задаёт порядок и инициализирует previous_z при первом выходе за полосу. Пропущенные данные, нечисловые или бесконечные результаты расчёта и нулевой масштаб остатков отключают кандидата, исключая деление на ноль и искусственно экстремальный z-показатель.
if no_candidate:
if invalid_or_nonpositive(close[t-N:t+1]): return
a,b,s = fit_log_ols(close[t-N:t], with_intercept=True)
if not finite(a,b,s) or s <= min_residual_scale: return
regime_ok = abs(b)*(N-1)/s <= 1.0
z = (log(C[t])-(a+b*N))/s
if regime_ok and z < -2:
freeze_candidate(a,b,s,origin=t-N,expiry=t+10,
previous_z=z,excursion_low=L[t])
else:
if t > candidate.expiry:
expire(); return
j = t-candidate.origin
z = (log(C[t])-(candidate.a+candidate.b*j))/candidate.s
update_excursion_low(L[t])
if candidate.previous_z < -2 and -2 <= z < 0:
emit_long(t)
candidate.previous_z = z
# Never refit an active candidate or backfill historical channels.
Возвращение внутри канала может быть успешным или неудачным.
Условный пример: центр около 100, наклон 0, масштаб логарифмических остатков s=0.01. Нижняя полоса двух сигм около 98.02, верхняя — 102.02. Цена 97.8 ниже полосы; последующее закрытие 98.3 возвращается внутрь. Вход 98.4, стоп 97.5 и цель 100 дают риск 0.9 и потенциальную прибыль 1.6, около 1.78R до затрат.
Успешная условная траектория сначала достигает 100. При неудаче новая информация ведёт цену к 96, затем к 94. Позицию нужно закрыть по реально доступной цене около 97.5 или хуже при гэпе. Хорошая аппроксимация прошлого не предотвращает изменение условий формирования цены.
Не следует расширять сигму после падения и заявлять, что предыдущий стоп-лосс так и не был по-настоящему пробит. Это изменило бы моментальный снимок решения, основанный на результатах. Обновления модели для будущих кандидатов не должны изменять учет существующих сделок.
Другая траектория прыгает сразу с 97.8 до 101. Цена вернулась в полосу, но базовая версия требует z<0 и потому не покупает выше центральной цели. Это правило фиксируется заранее, а не добавляется после гэпа с плохим отношением прибыли к риску.
Фиксированные коэффициенты не делают центр неподвижным
Фиксация коэффициентов a и b не делает проекцию центра горизонтальной: она движется по исходному наклону с ростом индекса времени. При сигнале зафиксируйте цель на проекции центра для ожидаемого времени входа, а стоп — ниже минимума всего отклонения за полосу с вычетом буфера.
Предлагается выход из позиции через десять свечей, если ни цель, ни стоп не достигнуты. Срок кандидата и время удержания позиции — разные отсчёты: первый ограничивает ожидание возврата в канал, второй — удержание после входа. Храните оба, чтобы открытие сделки случайно не продлевало срок кандидата.
Если исполнение задерживается относительно ожидаемого входа, заранее определите, сохраняется ли фиксированная цель или торговый план отменяется до отправки заявки по экономическому правилу. После исполнения не отодвигайте цель только ради привлекательного потенциального вознаграждения.
На быстрых движениях сравните допущение следующего открытия с реально исполнимой котировкой. Историческое пересечение линии не гарантирует сделку по её цене. Если цель задана ожидающей лимитной заявкой, моделируйте активацию, количество и возможное неисполнение, а не автоматически засчитывайте цену центра, когда её охватила следующая свеча.
Диагностика остатков не подтверждает прибыльность
NIST рассматривает классические предположения об остатках, например независимость и постоянство дисперсии [3]. Финансовые цены могут им не соответствовать. Поэтому ±2s не является автоматически 95% прогнозным интервалом для следующей цены, а обычное p-значение наклона OLS не доказывает наличие торгового преимущества.
Проверяйте автокорреляцию остатков, хвосты распределения и устойчивость s между окнами. Долгое пребывание остатков с одной стороны может означать торговлю против нового тренда. Диагностика должна объяснять поведение модели, а не служить отбору только удачных исторических эпизодов.
В ходе практического сравнения сохраняются фиксированные значения для каждого кандидата, и строится график движения цены относительно этих значений. Если кажущееся возвращение к исходному значению происходит только потому, что многократно перенастраиваемый центр смещается в сторону цены, то это эффект адаптации модели, а не возвращения цены к исходному значению.
R², стандартная ошибка и z-оценка служат разным целям. R² описывает соответствие модели данным, стандартная ошибка суммирует остаточную шкалу в пределах окна, а z-оценка выражает текущее отклонение в рамках этой фиксированной шкалы. Ни один из этих показателей не следует переименовывать в вероятность выигрыша следующей сделки.
Объём фильтрует события, не переписывая канал
Одна гипотеза исключает сделки против движения при необычно высоком RVOL: он может сопровождать переоценку актива. Другая ищет высокую активность при выходе за полосу и более тихий возврат внутрь. Выберите и зарегистрируйте признак до просмотра результатов, не применяйте обе истории по удобству.
Используйте базу для сопоставимого времени сессии, сохраняйте спреды и доступные новости с временем публикации. Итоговый объём выхода за полосу не должен влиять на решения до завершения этого движения. При подтверждённом возврате можно подвести итог наблюдённого отклонения, но available_at признака отражает время его последнего входного наблюдения.
Замена OLS регрессией с весами по объёму меняет саму модель. Проверяйте её как отдельную версию относительно невзвешенной базы. Иначе приписанная объёму польза может объединять изменения центра, масштаба остатков и входного фильтра без понимания вклада каждого.
Хронологические тесты и полезные контрольные группы
Сравните регрессионный канал с горизонтальным средним по типу Bollinger и базовым z-показателем без наклона при одинаковых входах, выходах и затратах. Выберите N, k и фильтр контекста на данных разработки, сохранив финальную нетронутую проверку. Удаляйте пересекающие границу разделения интервалы меток сделок, если иначе обе выборки используют исход одного движения за полосу.
Тестовые наборы должны проверять свободный член, окончание окна t−1, логарифмический масштаб, степени свободы, нулевой s, пропуски данных и неизменность прошлых решений при добавлении будущего. Проверьте кандидата, чей срок истёк и цена вернулась в полосу на следующей свече: он остаётся истёкшим и не даёт позднего сигнала.
Показывайте чистую доходность, хвостовые убытки, время без сделок и результаты по заранее заданным режимам. Усложняйте условия исполнения и гэпы в стресс-тестах. Если прибыльность зависит от точного исполнения по центру внутри неоднозначной свечи с гэпом, исправьте модель исполнения до экономических выводов.
Полином более высокого порядка может точнее описать историю, но добавляет неустойчивую экстраполяцию и больше решений исследователя. Линейная база ценна тем, что её коэффициенты, проекцию и неудачные случаи можно проверить напрямую.
Частые ошибки
Перестраивать прошлые каналы
Текущая линия переписывает ранние сигналы, создавая видимость постоянной точности графика.
Превращение R² в процент побед
Соответствие модели данным внутри выборки не то же самое, что и прогнозируемая эффективность торговли.
Торговать против смены рыночного режима
Старый канал может потерять свою актуальность, когда новая информация приводит к изменению цены на инструмент.
Список проверки перед использованием метода
Отмечайте пункты после проверки на своих данных. Прогресс сохраняется в этом браузере и не подтверждает прибыльность стратегии.
Частые вопросы
Всегда ли регрессионный анализ лучше, чем анализ полос Боллинджера?
Нет. Добавляются наклон и выбор модели. Для оценки их вклада сравнивайте стратегии при одинаковых правилах торговли и исполнения.
Может ли полином улучшить аппроксимацию?
Это можно исследовать, но это добавляет степеней свободы и риск экстраполяции. Более точное соответствие историческим данным само по себе не гарантирует лучшую стратегию.
Источники исследования
Каждый источник подтверждает указанное рядом определение или доказательство. Псевдокод, искусственные примеры и предлагаемые параметры требуют отдельной проверки.
- Linear Regression IndicatorFidelity. Прочитано определение регрессионного индикатора через конечную точку линии. Проверено: .
- statsmodels OLSstatsmodels. Прочитаны правила OLS для свободного члена, пропущенных данных и оценки модели. Проверено: .
- Are the model residuals well-behaved?NIST/SEMATECH. Прочитаны классические предположения об остатках; они не являются выводами о предсказуемости рынка. Проверено: .
Связанные методы
Примечание о рисках
Материал предназначен для обучения и планирования исследований, а не является финансовой рекомендацией. Backtest моделирует прошлые данные, не гарантирует будущую доходность и не совершает реальные сделки. Методы библиотеки не обязательно реализованы в приложении. См. методологию и учебный центр.
Проверьте правила, прежде чем рисковать реальным капиталом
Проверьте возможности приложения, данные и каждую смоделированную сделку; сложные детекторы могут потребовать отдельной реализации.
Скачать Backtest в App Store