Михаил Михалёв
Михаил Михалёв личный блог
12 декабря 2025, 10:11

Я самый ленивый трейдер, часть 3

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


Математическая постановка проблемы:

1) Допустим, есть исторические данные за год в секундном таймфрейме.

2) Есть торговая стратегия, алгоритм которой фиксирован, но имеет ряд параметров.

3) Допустим, параметров 6, по 10 значений в каждом параметре. Это уже миллион комбинаций.

4) Симуляция на питоне одного инструмента за год на секундном таймфрейме занимает ~4 секунды.

 

Миллион комбинаций на 4 секунды = 4 миллиона секунд ~ 12 дней симуляции, чтобы проверить один инструмент на одной стратегии. Это минимальная оценка при наивной реализации.

 

Умножаем оценку на количество попыток из-за:

1) Ошибки в алгоритме — 10 попыток (и это далеко не предел, в торговых алгоритмах есть весьма неочевидные сюрпризы)

2) Неверный выбор диапазона значений параметров — по 3 ошибки на параметр — 18 ошибок.

3) Вероятные ошибки в исходных данных и подготовке — пусть 2 ошибки, но это сверхоптимистично.

4) Ещё какие-то форс-мажоры — оставим на полях, но тут тоже может быть существенный коэффициент.

 

Получаем 10*18*2 = 360 (при допущении, что ошибки друг от друга не зависят)

Итого 4 миллиона умножаем на 360 = 1440 миллионов секунд симуляций. ~ 46 лет чтобы найти оптимальные параметры стратегии с 6 параметрами.

 

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

 

Да, я самый ленивый трейдер, и даже наверное самый тупой, но я сильный программист — люблю применять грубую программистскую силу в задачах, которые требуют много вычислительных ресурсов.

 

Дальше идёт погромистская магия...

 

Спорим, что вы используете свою видеокарту неправильно?

4 секунды симуляции — это на голом питоне. Легким движением рук (если ты тру программист), ускоряем в 40-50раз. И получаем уже 0.1 сек на данных за год. Это на CPU и в один поток. Несколько потоков будут делать это быстрее (правда есть нюансики — быстро упираемся в ограниченную производительность памяти и ускорение не будет пропорционально количеству ядер).


Я самый ленивый трейдер,  часть 3


 

Когда нужен параллелизм, то смотрим в сторну GPU. GPU – это по своей сути такой многоядерный процессор, который за один такт может обрабатывать очень много данных по одной инструкции, но он тупой — имеет мало инструкций по сравнению с CPU. Зная это(а так же, и в первую очередь, как устроены контроллеры памяти, кэши, воркюниты, варпы, и прочая хардварная дичь) можно написать код торгового автомата, который весьма неплохо выполняется на GPU. И вот одна симуляция на данных за полгода происходит уже не 50 милисекунд, а внезапно 8 секунд… но есть один нюанс: параллельно вычисляются 160000 стратегий с разным набором параметров торгового автомата. (конечно на самом деле зависит от размерностей в архитектуре конкретной видеокарты, например моя скорее всего выполняла это в 64000 потоков одновременно).


Я самый ленивый трейдер,  часть 3

 

Т.е. одним нажатием кнопки бабло SearchParams я нахожу лучшие параметры стратегии из 160000 комбинаций за 8 секунд. т. е. Миллион комбинаций я переберу за минуту. Это уже не десятки лет как было в наивной первоначальной оценке. Это уже вполне конечное время, и за несколько попыток в течение очень короткого времени умный поймёт, что играть с казино крайне опасно, а упорный — продолжит эксперименты, потому что если к грубой программерской силе подключить математическую смекалку, то внезапно окажется, что некоторые параметры друг от друга зависят и образуют причудливые многомерные объёмы, а значит реальное количество комбинаций, которое нужно перебирать, сильно снижается, что даёт возможность добавлять ещё параметры и усложнять стратегии.


P.S. Почему секундный таймфрейм? Потому что могу:)

12 Комментариев
  • Silent Hamster
    12 декабря 2025, 10:39
    Че ты здесь делаешь, судя по посту, все деньги  мира должны быть уже у тебя)))))
  • Дмитрий Киреев
    12 декабря 2025, 10:50
    «Проблема в том, что какой бы ни был совершенный инструмент для торговли, без статистически подтвержденной стратегии шансы на удачу, даже краткосрочную, довольно невелики.»- Я вижу Вашу «проблему» в другом-Трейдинг  для Вас это лишь хобби, не удивлюсь что одно из многих. И результат поэтому  для Вас пока вторичен. Это как  например ходить в спортзал иногда.
  • SergeyJu
    12 декабря 2025, 11:18
    Надо было написать в заголовке «неленивый программер». 
    Если таймфрейм минута и параметров максимум 3, можно уже не так напрягаться со скоростью. 
    Причем тут глобальная развилка. Или уже не секунда, а миллисекунда, не квик, а Си++ в коллокации биржи и реальное ХФТ. Высокая трудоемкость и доходность, ограниченная в объеме ниша.
    Или средне-долгосрок, прикидка разумности параметров уже на дневках, доха в текущих условиях порядка 30 годовых и питона (и даже LUA, в пределе экселя ) вполне достаточно.  
  • Сиделец
    12 декабря 2025, 11:48
    смысла от этих симуляций, особенно посекундных? не знаешь же в какой момент Трамп, Зеленский или еще кто откроют рот. 

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн