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

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

В комментариях многие справедливо написали что теория — это хорошо, но реальный рынок — это совершенно другое. Что там существует комиссии, проскальзывания, разные режимы торгов, человеческая психология и главное — что я буду делать сам без математика в напарниках?
Так вот, я решил принять этот вызов и самостоятельно, без Дмитрия Шалаева разобраться как похожая стратегия может вести себя на акциях Московской биржи.
Про биржу часто пишут что это казино, но в данном случае я не буду ставить на красное или чёрное, а буду пытаться зарабатывать на самом факте вращения колеса рулетки: на волатильности, обороте и вероятности — то есть буду вести себя как казино, а не как игрок. Казино не знает, кто выиграет следующую раздачу, но оно знает, что в конце дня будет в плюсе.
Поскольку я собираюсь построить своё казино, то мне нужен не азарт, а в первую очередь инфраструктура. Если говорить простым языком, то я хочу протестировать свою стратегию на реальных данных Московской биржи.
У меня уже был опыт с готовыми системами, например с библиотекой Backtrader на питоне, но поскольку идея здесь значительно отличается от привычных систем теханализа, то я решил действовать на чистом Python.
Котировки
Поскольку уже достаточно много брокеров предоставляют свои API для частных лиц, то скачать историю котировок совершенно не проблема:
Тинькофф → developer.tbank.ru
Алор → alor.dev
Финам → trade‑api.finam.ru
БКС → бета‑тестирование bcs.ru
Просто выбираю своего брокера и быстро скачиваю исторические минутные котировки.
Скачиваю котировки акций Мосбиржи через API брокераБенчмарк
Дальше скачиваю значения индекса IMOEX2 для бенчмарка. Это оказалось чуть сложнее и поэтому беру значения индекса напрямую через API Московской биржи.
Это занимает чуть больше времени.
Загружаю индекс IMOEX2 для бенчмаркаНормализация
Все котировки обычно в текстовом формате и содержат OHLCV — это стандартный формат рыночных данных, описывающий ценовое движение актива за определенный период (свечу). Он включает 5 показателей: Open (открытие), High (максимум), Low (минимум), Close (закрытие) и Volume (объем сделок).
Но раз активов очень много и мне не нужны все эти показатели, то написал скрипт который переведёт кодировки из текстового формата в более быстрый Parquet формат файлов и оставит только цены закрытия. Данные занимают в 10 раз меньше места и читаются очень быстро.
Привожу всё к единому форматуКастинг акций
Дальше написал такой скрипт, который будет делать выборку акций.
Философия здесь была очень простая: мне не нужны акции, которые хорошо растут, как это не странно звучит.
Потому что на растущем рынке зарабатывают все и для этого не нужен ни алгоритм, ни математика, ни мозг. Мне были интересны другие случаи.
Алгоритм идентифицирует временные дисбалансы волатильности — ситуации, когда статистические свойства актива временно выходят за границы устойчивого диапазона.
Я делаю выборку не руками, не учитываю новости и не «чувствую рынок». Это не моя интуиция — это выбор алгоритма, которому всё равно, какие у тикера буквы.
Провожу отбор бумагМашина времени
Большинство новичков делают одну и ту же ошибку: подгоняют параметры под всю историю сразу. Это самообман. В реальности у нас нет котировок из завтрашнего дня.
Поэтому мой конвейер живет в «скользящем окне».
Шаг 1: система видит только 2020 год. Она анализирует волатильность, отбирает топ-10 самых подходящих акций и формирует портфель. Затем наступает 2021-й — и мы проверяем, сколько денег этот портфель заработал (или слил) на «неизвестных» данных.
Шаг 2: окно расширяется. Система учится на данных 2020–2021 годов. Снова отбор, снова тесты — но уже на 2022-м.
Шаг 3: обучение на 2020–2022, торговля в 2023-м.
Никакого подглядывания в будущее. Если в 2022-м рынок рухнул, а мой алгоритм, обученный на спокойном 2021-м, этого не предвидел — я получаю убыток. Всё как в жизни.
Все шаги вместеВизуализация процесса
В моих логах запуска pipeline.py видно что алгоритм проходит год за годом.
И это именно инженерный подход, когда мы не ищем грааль, а тестируем идею и логику.
ПайплайнПайплайн — это последовательность этапов, через которые проходит проект от начала до завершения, представляющая собой структурированный рабочий поток, автоматизирующий процесс и обеспечивающий его прозрачность и управляемость
Вся система заработала, при этом она имеет модульную архитектуру и валидные данные.
Но как видно из логов даже самый идеальный код не гарантирует, что можно легко отбирать деньги у других людей на рынке.
Привожу мою интерпретацию из логов:
2021 — штиль
Рынок рос, алгоритм скучал. Сетка расставлена, но рыба не клюёт: +0,26%. Деньги не теряются, но и не зарабатываются — плата за осторожность.
2022 — идеальный шторм
Рынок рушится, вокруг паника, частные инвесторы теряют по 30–50% депозита. И здесь наступает звёздный час математики: +8,79% за год. Пока люди продавали на эмоциях, алгоритм методично скупал. Не потому что «верил в отскок», а потому что он был заложен в вероятностной модели заранее.
Ниже конкретный пример

Хороший наглядный примерQuantStatsотчета для ПАО «Якутская топливно‑энергетическая компания (ЯТЭК)», тикер YAKG
В этом отчёте YAKG очень наглядны цифры за 2022 года. Пока индекс Мосбиржи (IMOEX2) падал с убытком -26% и просадкой -39%, алгоритм вышел в плюс на 6.81%.
Но настоящая магия — в графе рисков. Max Drawdown стратегии составил микроскопические -0,2%! Пока рынок штормило с волатильностью 46%, а стратегия стояла неподвижно 3,29%. Коэффициент Шарпа 2,55 против рыночного -0,57 доказывает: это не случайность, а математическая победа над хаосом.
2024 — болото
Пилообразное падение без выраженных отскоков. Результат -4,8%.
Итоги
Итог шести лет неутешительный: сложный алгоритм, сотни сделок и… доходность, едва перекрывающая инфляцию.
Математика умеет выживать. Печатать деньги пока нет.
Пример удачного годаЗдесь конечно возникает большой вопрос к идее: если модель корректна, то почему бэктест на истории так слаб?
Думаю что результаты в том числе слабые из‑за учёта комиссий, потому что сделок на некоторых активах было очень много. Потом, у каждого рынка есть своя специфика и Московская биржа не такой уж и волатильный рынок (по сравнению с другими конечно).
И всё же называть мой тест провалом неправильно. За шесть лет, включая 2022-й, система ни разу не слила депозит, а просадки были маленькие.
Вообще похоже на то, что я построил не печатный станок, а сейф — мечту риск‑менеджера и кошмар любителя «иксов».
Главный вывод который я сделал для себя: математика отвечает за выживание, но доходность определяется средой применения этой математики.
Хорошая новость — алгоритм жив. Значит, проблема не в нём, а в полигоне. В следующей статье я планирую ступить на неизведанное для себя плато, туда, где волатильность часто зашкаливает — на крипторынок и посмотреть как тесты поведут себя там. Или буду работать над улучшением версии для Московской биржи. Пока не решил. Как думаете лучше поступить?
Там математика может зазвучать совсем иначе.
Может и Дмитрий Шалаев подсобит с идеями.
Автор: Михаил Шардин
🔗 Моя онлайн‑визитка
📢 Telegram «Умный Дом Инвестора»
10 февраля 2026 г.
зачем вся эта пена?
вот мой результат за 21 месяц, не какой математики, только технический анализ.
инфраструктура, похоже, неплохая — это уже много
обгон бенчмарка — ещё плюс
следующий шаг — выбор правильного бенчмарка, подбор в портфель тикеров под него
а то странно получается — выбрали imoex бенчмарком — обогнали, а потом говорите что инфляцию не обгоняет, так у вас и не было инфляции в бенчмарке