Инвестиции с нуля

От первого шага до первой прибыли

Робот Scatter&Gather: Время разбрасывать камни и время собирать камни

Линейная регрессия: Как я учу своего торгового робота предсказывать рынок

Приветствую! Сегодня я хочу поделиться с вами историей одного из самых элегантных апгрейдов в жизни моего торгового робота 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 выложил здесь.