Приветствую! Сегодня я хочу поделиться с вами историей одного из самых элегантных апгрейдов в жизни моего торгового робота Scatter&Gather. Все началось с оптимизации параметров, подстраивающих его работу под рынок. Робот научился реагировать на изменение рыночной ситуации, а также тестировать важнейший параметр, от которого зависит прибыль — шаг сделки — и использовать в реальной торговле значение, которое показало лучшие результаты на исторических данных.
Но в какой-то момент я понял: пора дать роботу зрение. Не сверхчеловеческое, не пророческий дар, а просто ясный, логичный взгляд на данные. И знаете, что я выбрал? Не сложную нейросеть, требующую вычислительных мощностей, а старую добрую, невероятно эффективную линейную регрессию.
Что скрывается за магией линейной регрессии?
Давайте отбросим страшные математические термины. Представьте, что вы — садовник, который заметил: чем больше солнца получают томаты, тем они крупнее. Вы не просто фиксируете наблюдение; вы хотите вывести точную формулу. Вы измеряете часы солнечного света и вес плодов день за днем. В итоге, вы приходите к выводу: «Каждый дополнительный час солнца прибавляет моим томатам 10 граммов». Поздравляю, вы только что применили принцип линейной регрессии!
Этот метод — не что иное, как поиск наилучшей прямой линии, которая описывает взаимосвязь между одними данными (признаками) и другим (целью). В мире финансов вместо часов солнца и граммов томатов у нас могут быть, например, объем торгов и уровень волатильности. Задача алгоритма — найти тот самый «коэффициент полезности» для каждого фактора.
Почему же это так эффективно? Потому что мир, особенно в краткосрочной перспективе, часто мыслит линейно. Спрос и предложение, страх и жадность — многие рыночные силы проявляют себя через прямолинейные, пусть и неочевидные на первый взгляд, зависимости. Линейная регрессия становится нашим математическим компасом в этом океане чисел.
От абстракции к реальности: Как это работает внутри Scatter&Gather?
Итак, как же этот «садовничий» подход применяется к жесткому миру алгоритмической торговли? Мой робот Scatter&Gather нуждался в способе предугадывать будущую волатильность — то, насколько сильно будут «плясать» цены в ближайшие несколько часов. Это знание критично для настройки таких параметров, как шаг между ордерами (сетки) или объем позиций.
Я снабдил его набором «чувств» — ключевых рыночных индикаторов. Представьте, что вы доктор, слушающий биение сердца рынка:
Текущая волатильность (5 периодов): Это пульс — мгновенное состояние «здоровья» рынка.
Среднесрочная и долгосрочная волатильность (10 и 20 периодов): Это история болезни и общий темперамент — как рынок вел себя вчера, позавчера и на прошлой неделе.
RSI (Индекс относительной силы): Это тонометр, показывающий, перекуплен ли актив или перепродан.
ATR (Средний истинный диапазон): Это знание о типичном размахе дневных колебаний — «норма» для данного пациента.
Вся магия происходит в формуле:
Прогноз = (Вес_1 × Признак_1) + (Вес_2 × Признак_2) + … + База.
Веса — это и есть тайное знание, которое модель должна обрести. Они показывают, насколько сильно каждый «симптом» влияет на итоговый «диагноз» — прогноз волатильности.
Как робот находит эти «золотые» веса?
Позвольте представить вам градиентный спуск. Этот процесс напоминает спуск с заснеженного холма с завязанными глазами. Вы стоите в случайной точке (со случайными начальными весами) и ваша задача — найти дно долины (минимум ошибки). Как? Вы делаете маленький шаг в ту сторону, где склон кажется самым крутым (рассчитываете градиент). Повторяете снова и снова, каждый раз корректируя направление. В конце концов, вы оказываетесь в самой низкой точке. Это и есть момент, когда модель научилась, а ее прогнозы стали наиболее точными.
Чем машинное обучение отличается от того, что было раньше?
До этого момента логика моего робота напоминала строгую инструкцию: «Если RSI больше 70, то считай волатильность высокой». Это традиционное программирование. Программист предполагает взаимосвязи и вручную прописывает правила. А что, если он ошибся? Или рынок изменился?
Машинное обучение, даже в его простейшей линейной форме, переворачивает этот подход с ног на голову. Вместо того чтобы давать инструкции, я предоставляю роботу данные. Я говорю модели: «Вот 10 000 примеров, где записаны все «симптомы» рынка и какая волатильность за ними последовала. Найди закономерности сам». И она находит! Это уже не слепое следование правилу, а основанное на данных предвидение.
Практический результат?
Скажу сразу, линейная регрессия внедрена в робота, но еще ни разу не запускалась. В эти выходные биржа не работает, так что «Доживем до понедельника», есть такой отличный старый фильм. Но давайте представим, как это должно (и, надеюсь, будет) работать. В один спокойный день, когда RSI был на нейтральных 55, а все волатильности — на минимуме, модель предсказала значение в 4.5%. Робот сохранил стандартные настройки. Но на следующий день, когда данные зафиксировали нервозность (резкий скачок текущей волатильности и высокий RSI), модель выдала прогноз в 15.2%. И «шестеренки» в алгоритме Scatter&Gather провернулись: «Опа, завтра будет жарко! Увеличиваю шаг сетки, чтобы поймать более широкое движение!». Это и будет момент истины.
Взгляд в будущее и итоги: Почему линейная регрессия — это надолго?
Конечно, этот инструмент не панацея. Он предполагает, что мир линеен, а финансовые рынки, увы, иногда болеют нелинейной лихорадкой. Модель может быть чувствительна к внезапным, «диким» движениям, которые выбиваются из общей статистики. И она не учитывает сложные временные зависимости, как это делают более продвинутые алгоритмы.
Но ее преимущества — простота, скорость, прозрачность и невероятная надежность — делают ее идеальным фундаментом. Это как заложить прочный, проверенный временем фундамент перед постройкой дома. Вы всегда можете надстроить этажи более сложных моделей, но основа будет незыблемой.
В конечном счете, линейная регрессия для меня — это не просто алгоритм. Это философия. Напоминание о том, что не всегда нужно стрелять из пушки по воробьям. Часто самый ясный и эффективный ответ лежит в умении увидеть прямую линию в хаосе точек. И теперь мой робот Scatter&Gather видит эту линию, делая нашу с ним совместную работу не просто автоматической, а по-настоящему разумной.
PS. Я принял решение убрать возможность скачивания предыдущих версий, так как они сырые и я не могу гарантировать их правильную работу.
Свежую версию 8.0_lite выложил здесь.


