Автор: Салимжан Бижанов.
Здравствуйте, уважаемые читатели!
Данный пост навеян мыслью/идеей, высказанной Механизатором (А.Кургузкиным) в одном из комментариев, о прогнозировании движения рынка при помощи обычной модели линейной регрессии (далее ЛР).
Ранее я не применял обыкновенную ЛР для прогнозирования движения рынка, а пользовался другим подходом: отбирал Факторы, влияющие на результирующий показатель, и выявлял некие закономерности при «экстремальных» значениях Факторов (и другими способами), грубо говоря выявлял некие паттерны.
А поскольку «экстремальные» значения «редки», то собирал в систему несколько разных паттернов. Весь анализ проводил на дневных данных, паттерны также давали сигнал на сутки вперед.
Это, если мы говорим о не трендовых системах, а прогнозных.
Прочитав идею Механизатора про обычную ЛР, решил построить модель. Выбрал 3 фактора, у которых, по опыту заметил, есть взаимосвязь с направлением движения рынка. Перечислять их не буду, потому что цель статьи не дать готовую модель, а дать пищу для размышлений.
Для тех, кто совсем не в теме: погуглите про корреляционно-регрессионный анализ.
Далее подготовил данные для исследования (в качестве примера рассматривается инструмент SPY), сделав их более-менее однородными. Как это сделать читайте в статье Механизатора:
/post/gotovim-tsenovye-dannye-pravilno-chast-1-uzhasy-geteroskedastichnosti-201
То есть грубо говоря, привел их к одной волатильности. Тем самым избавив себя от сложности прогнозирования волатильности.
График нормированного SPY (с марта 2000 по март 2014):
Этот подход не то чтобы избавляет нас от прогнозирования волатильности актива, просто мы исходим из гипотезы, что текущий уровень волатильности сохранится хотя бы еще сутки. По сути это тоже прогноз.
Когда данные были готовы, я оценил парные коэффициенты корреляции между факторами и результирующим показателем.
Но ничего ценного в этом нет. Значимых коэффициентов корреляции не было. Проблемы мультиколлинеарности тоже не было.
Далее методом наименьших квадратов (МНК) оценил коэффициенты модели ЛР.
Встал вопрос: как оценить адекватность полученной модели?
Тут можно действовать 2-мя способами:
1. чисто эконометрический подход: выдвижение и проверка гипотез о значимости модели, всех ее коэффициентов, анализ регрессионных остатков на нормальность распределения, гомоскедастичность и т.д.
2. чисто трейдерский: построить эквити из прогнозов и далее оценивать PF, максимальную просадку и т.д. Обязательно сделать кросс-валидацию!
Как сделать кросс-валидацию можете прочитать здесь:
/post/kross-validatsiya-cross-validation-304
Я выбрал 2-й подход, потому что наша цель не нормальность регрессионных остатков, а постараться заработать денег!
За прогноз принималось не само абсолютное значение прогноза, а знак прогноза, то есть прогнозировалось НАПРАВЛЕНИЕ движения на 1 сутки вперед.
Построив условное эквити я заметил, что один из факторов не оказывает практически никакого влияния на результат. Я удалил данный фактор. Снова пересчитал коэффициенты модели, где уже вместо 3, было 2 Фактора, оказывавших влияние.
В итоге получилась модель:
y=a0+a1*Фактор+a2*Фактор2
Снова построил условное эквити по данной 2-хфакторной модели.
Получился следующий результат:
Синяя линия прогнозное эквити, красная — факт движения нормированного SPY.
Примечание:
* Кросс-валидацию еще не провел. Это следующий этап.
* Комиссия и проскальзывание не учитывались.
Много еще куда в данному подходе «копать» можно. Это попробовать адаптивную ЛР и т.д.
У каждого подхода есть свои плюсы и минусы.
Плюс данного подхода в том, что он очень ликвидный.
Поясню идею:
прогнозировать на сутки вперед можно не только при закрытии рынка, но и в любую минуту дня. Сколько часов работает рынок? Сколько минут в часе? А если делать прогноз каждые полминуты? То можно работать с очень большим капиталом, тем более, если торговать самые ликвидные инструменты в мире.
Надеюсь вам понравилось!
Спасибо за внимание! До новых встреч!
Комментарии:
mehanizator: Я для оценки полезности фактора смотрел корреляцию фактора с выходом, если 0.05, это сильный фактор, если хотя бы 0.02, можно использовать как дополнительный в модели.
это на многолетних данных, конечно, на небольшом массиве всякого оверфиттинга может вылезти.
Салимжан Бижанов: mehanizator: Буду иметь в виду.Корреляция результирующего с первым фактором 0,07, со вторым 0,02.
С точки зрения эконометрики — это ничтожно малая зависимость.
mehanizator: более сильных зависимостей на рынках вы не найдете. но и с корреляцией в 0.05 можно улучшить шарп в разы.
Intro: Не верю!
Салимжан Бижанов: Intro:
ваше право.
Интро, что именно вас смущает? Сам подход?
Я сам стараюсь скептично ко многому на рынке относиться, поэтому исследовать здесь мне еще много чего.
у Вас опыт большой на рынке, Вы попробуйте с вашим набором факторов, покажите результаты исследования. Было бы интересно посмотреть.
Intro: Только сейчас посмотрел на таймфреймы, на которых велось исследование. 350% за такой период граалем не выглядят, чтобы быть неправдой. Подход не смущает, смущает что так просто копнув можно получить шикарную эквити на сипи 500.
Intro: Кстати, попробуйте прикрутить нормирование позиции в зависимости от волатильности.
mehanizator: оно же вроде с самого начала прикручено.
Салимжан Бижанов: единица измерения не %.
да, с самого начала нормируется ряд и исследуется.
Салимжан Бижанов: по поводу невысокой доходности. это да.
но главная цель на отдельном инструменте или системе — не высокая доходность, а соотношение доходность/риск. далее объединяем несколько систем в одну…
не мне вам, Интро, объяснять, но я об этом планирую еще пост написать позже.
Intro: Простите за наглость, а можно файлик с данными в виде csv? Ну или любом текстовом плоском виде?
Салимжан Бижанов: Intro, какие именно данные вас интересуют? то, что на графике, но только в текстовом файле?
Салимжан Бижанов: если да, то скиньте вашу почту, я пришлю.
Intro: 8351270/at/gmail.com
Салимжан Бижанов: отправил.
Intro: Да, спасибо. Интересно. Подглядывания в будущее точно нет?
Салимжан Бижанов: Интро, подглядывания точно нет, я перепроверял.
Chepell: Очень интересно! Скажите, а как все же нормировали spy, Механизатор разные варианты предлагал…
Если рассматривать конкретную эквити модели, то по сути вы всегда в рынке, по окончанию дня прогноз на следующий день и либо переворот, либо сохранение текущей позиции. Так?
Салимжан Бижанов: Chepell, спасибо.
«Скажите, а как все же нормировали spy, Механизатор разные варианты предлагал…»
нормировал на ma(abs(ln)).
«Если рассматривать конкретную эквити модели, то по сути вы всегда в рынке, по окончанию дня прогноз на следующий день и либо переворот, либо сохранение текущей позиции. Так? »
да, всё верно.
Салимжан Бижанов: здесь продолжение:
/post/prognozirovanie-napravleniya-dvizheniya-spy-prostoy-lineynoy-modelyu-chast-2-712
Yaroslav Alexeev: Факторы VIX и TLT? Хоть один угадал? 🙂
Салимжан Бижанов: Yaroslav Alexeev, нет.
Эти факторы не пробовал даже тестировать, надо будет попробовать.