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

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

От сеточника к стратегу: почему я закрываю проект «Торговый робот Scatter&Gather» и строю «мозговой центр» для роботов

От сеточника к стратегу: почему я закрываю проект «Торговый робот Scatter&Gather» и строю «мозговой центр» для роботов

Приветствую, коллеги и единомышленники. Сегодня я хочу поделиться не просто анонсом обновления, а историей эволюции мысли, которая привела меня к решению, граничащему с революцией для моей торговой системы. Речь пойдет о проекте Scatter&Gather, версии v9_medium, и о том, почему она станет последней в этой линейке. Но, как водится, конец одной истории — это лишь начало другой, куда более амбициозной.

Прощание с призраком прошлого: как я охотился за неуловимой ошибкой

Работа над алгоритмической торговлей — это часто бег с препятствиями, где главный соперник — не рынок, а собственный код. Последней такой навязчивой помехой стала ошибка в восьмой версии робота, которая напоминала мне капризного ребенка: вроде бы и не ломает все вдребезги, но портит настроение и результаты.

Суть проблемы была в рассинхронизации. Робот, выставив заявку, порой терял ее из виду в самый ответственный момент — на закрытии торговой сессии. Представьте себе ситуацию: робот, как ответственный менеджер, дает команду системе (QUIK в нашем случае) отозвать все активные заявки. Но система в тот же миг исполняет одну из них. Возникает информационный вакуум: робот считает, что заявка отозвана, а на самом деле актив уже куплен или продан. Это обнаружилось случайно, при разработке девятой версии. Мне понадобилось обнулить количество лотов тестовой акции и я увидел, что цифры в отчете брокера и в «мозгах» робота расходились, как показания двух свидетелей на суде.

Поиск этой неполадки напоминал детективное расследование без явных улик. Я искал ее в логах, тестировал сценарии, но она ускользала. Но похоже, что этот призрак наконец изгнан. В ходе тестирования я не нашел и намека на старый симптом. Это вселяет уверенность, что фундамент для следующего шага заложен прочный. Ведь строить новое на зыбкой почве — верный путь к краху.

Почему машинное обучение оказалось не панацеей, а головоломкой

Изначально я, как и многие, грезил о «серебряной пуле» — машинном обучении (ML), которое сделает робота всевидящим и всезнающим оракулом. Я погрузился в эксперименты, тратил дни на обучение моделей, надеясь, что алгоритм сам найдет невидимые глазу сигналы. Но реальность оказалась суровой учительницей.

ML не просто добавляет новый модуль — оно трансформирует всю логику работы программы, превращая ее из детерминированного солдата в непредсказуемого гения со своими причудами. Сложность возросла экспоненциально. Самый главный камень преткновения — диагностика ошибок. Когда система из пяти взаимодействующих модулей дает сбой, и один из них — «черный ящик» машинного обучения, понять, кто виноват, практически невозможно. Это как искать иголку в стоге сена, который еще и постоянно перемешивается.

Я пришел к выводу, что погоня за прогнозом поведения рынка в ущерб надежности — тупиковый путь. В трейдинге, особенно автоматизированном, важна не столько экзотическая интеллектуальность системы, сколько ее стабильность, прозрачность и управляемость. Поэтому я с чистой совестью отказываюсь от интеграции ML в текущего робота. От Машинного обучения (Machine learning) осталась только аббревиатура — модуль ML теперь расшифровывается как Машинная логика (Machine logic). Иногда лучший код — это тот, который ты можешь полностью понять и контролировать.

Враг номер один — не волатильность, а тихий слив капитала

Все, кто работал со стратегиями типа «сетки», знают их ахиллесову пяту — затяжной нисходящий тренд. Против резкого обвала у моего Scatter&Gather есть защита: он видит падение и уходит в стоп, как солдат в укрытие. Но что делать с тихим, почти незаметным сползанием рынка вниз неделя за неделей?

Это похоже на медленную течь в корабле. Ты не видишь бурного потока, но вода неуклонно прибывает, и однажды судно может затонуть, исчерпав все ресурсы на откачку. Робот продолжает ставить ордера, расходуя депозит, а отдача все призрачнее. А теперь умножьте этот риск на пять — ровно столько независимых роботов у меня работают параллельно, черпая средства из общего кошелька. Риски нарастают в геометрической прогрессии.

Именно этот вызов заставил меня кардинально пересмотреть архитектуру. Я понял, что проблема не в отдельных «рабочих» (роботах-сеточниках), а в отсутствии «управляющего директора», который бы видел общую картину и мудро распределял самый ценный ресурс — деньги.

Рождение идеи: не следующий робот, а «мозговой центр»

Итак, вместо того чтобы усложнять каждого отдельного робота до версии full, я решил сразу подняться на уровень выше. Моя новая идея — создать «робота-руководителя», или, если угодно, «мозговой центр». Его задачи будут фундаментальными:

1. Распределение капитала. Он, как главный риск-менеджер, будет динамически выделять средства каждому из пяти подчиненных роботов на основе их текущей эффективности. Тот, кто показывает лучшие результаты, получит больше «топлива». А тот, кто сливает, может быть временно отключен — зачем кормить нерентабельный актив?

2. Управление казначейством. Когда общий пул денег иссякает, в игру вступает шестой игрок — робот, управляющий фондом ликвидности (в СберИнвестициях это SBMM). Руководитель даст команду этому роботу-казначею продать часть фонда, пополнив боевой счет. И наоборот, при избытке свободных средств, которые не используются в активных стратегиях, казначей скупит излишки и пополнит активы фонда. Это превращает систему в самофинансирующийся организм.

Исторически такой подход — создание управляющей надстройки — повторяет эволюцию крупных корпораций: от набора независимых цехов к централизованному холдингу с казначейством и стратегическим планированием.

Что дальше? Тактика и стратегия

Мои планы теперь четко ранжированы по приоритетам. Первый и безоговорочный шаг — финальное доведение до ума Scatter&Gather v9_medium. Выложу его для вас на следующей неделе, когда пройду последний круг проверок. Но и в дальнейшей перспективе буду просто торговать, наблюдая за поведением роботов. Это необходимо, потому что исправлять баги в уже запущенной сложной системе с «руководителем» будет в разы сложнее.

После этого все мои силы и внимание перейдут к проектированию и созданию «мозгового центра». Это новый вызов, но он меня не пугает, а вдохновляет. Ведь я иду не по пути усложнения частностей, а по пути повышения интеллекта всей системы на макроуровне. Я верю, что в мире алгоритмической торговли будущее не за самыми «умными» отдельными роботами, а за самыми продуманными системами их взаимодействия.

Следите за обновлениями — самое интересное, как всегда, впереди.