Юрий Николаев
Юрий Николаев личный блог
07 июня 2026, 13:04

Я научил компьютер предсказывать движения акций на Московской бирже — вот что получилось

Предупреждение сразу: это не инвестиционная рекомендация. Это честный рассказ о том что работает, что не работает, и почему.


Зачем вообще это делал

Каждый кто торгует на бирже знает эту ситуацию: открываешь Пульс — там пятьдесят мнений по одной акции, половина противоречат друг другу. Telegram-каналы с сигналами публикуют «КУПИТЬ SBER» без объяснений и без истории — угадали или нет никто не проверяет.

Я разработчик. Данные с Московской биржи бесплатны. Библиотеки для машинного обучения — тоже. Логичный вывод: сделать систему которая принимает решения по данным, а не по чьему-то мнению.

Главное правило которое я поставил себе с первого дня: всё логировать заранее, ничего не менять задним числом. Предсказание записывается утром до открытия торгов, результат проверяется вечером по факту.


Что такое машинное обучение — простыми словами

Многие слышали этот термин но не очень понимают что за ним стоит. Объясню на примере.

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

Машинное обучение работает так же, только вместо ребёнка — программа, а вместо фотографий — цифры.

В моём случае программа смотрит на данные по акции за последние годы: цена открытия, цена закрытия, объём торгов, цена на нефть, курс доллара и ещё около пятидесяти параметров. И учится отвечать на вопрос: «Через пять дней цена вырастет, упадёт или останется примерно на месте?»


Как я проверял что модель не просто «зазубрила» данные

Это ключевой вопрос в машинном обучении. Вернёмся к аналогии с ребёнком.

Если вы проверяете ребёнка на тех же самых фотографиях которые он уже видел — это нечестная проверка. Он просто запомнил ответы. Нужно показать новые фотографии которых он раньше не видел.

В моей системе я делаю так:

  • Беру данные за последние три года
  • Обучаю модель на первых двух с половиной годах
  • Последние шесть месяцев полностью прячу от модели во время обучения
  • Потом проверяю — как модель предсказывает эти «спрятанные» шесть месяцев

Это называется OOS-тест (от английского Out-Of-Sample — «вне выборки»). Простыми словами: проверка на данных которых модель никогда не видела. Если результат хороший — есть шанс что система работает по-настоящему, а не просто запомнила прошлое.


Как измеряется качество — что такое Sharpe

Допустим модель сделала десять сделок за шесть месяцев. Семь оказались прибыльными, три убыточными. Но этого недостаточно для оценки — важно ещё насколько стабильно система зарабатывает.

Представьте двух игроков в казино:

  • Первый выигрывает понемногу каждый день, иногда теряет, но в целом стабильно идёт вверх
  • Второй раз в месяц срывает большой куш, но в остальное время теряет деньги

Оба могут показать одинаковую итоговую прибыль, но первый явно надёжнее.

Коэффициент Шарпа (Sharpe ratio) — это математическая формула которая измеряет именно эту «надёжность заработка». Упрощённо: прибыль делится на разброс результатов.

  • Sharpe выше 2.0 — хорошо
  • Sharpe выше 1.0 — приемлемо
  • Sharpe ниже 0 — система теряет деньги

Результаты за последние шесть месяцев

Все цифры — на данных которые модель не видела при обучении. Учтена комиссия брокера 0.2% с каждой сделки.

Акция Sharpe Доходность Сделок
Т-Банк 5.72 +5.35% 9
Сбербанк 4.01 +1.47% 10
Газпром 2.40 +2.14% 10
ЭсЭфАй 1.20 +7.31% 20
ВТБ -0.16 -2.42% 7

Честно о том что не работает

ВТБ — три разных периода тестирования, три раза отрицательный результат. Модель хорошо «выучила» исторические данные, но на новых данных не работает. Это называется переобучение — как ребёнок который запомнил конкретные фотографии но не понял общий принцип «что такое кошка». Пока оставил в системе с предупреждением.

Новости — подключил восемь Telegram-каналов (Смартлаб, РБК, БКС и другие), собирал тональность публикаций. Оказалось бесполезным — рынок отыгрывает новости быстрее чем я их успеваю обработать на дневных данных.

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

периодов и проверял каждый отдельно¹. Честный вывод: стабильный результат только у Сбербанка. Высокие цифры по другим тикерам могут быть случайным совпадением конкретного периода. Это неприятная правда — но её важно признавать.

¹ Этот метод называется walk-forward validation — «скользящая проверка». Представьте что вы учитесь предсказывать погоду: сначала учитесь на январе-марте и проверяете апрель. Потом учитесь на январе-апреле и проверяете май. И так далее — каждый раз добавляете новые данные к обучению.


Как это работает каждый день

Каждый рабочий день в 09:30 (за двадцать минут до открытия Московской биржи) система:

  1. Скачивает свежие данные — цены, объёмы, курсы валют, цену нефти
  2. Рассчитывает около пятидесяти показателей по каждой акции
  3. Спрашивает у модели: «что будет через пять дней?»
  4. Публикует сигнал в Telegram с вероятностями каждого исхода

Вечером в 19:00 система проверяет что случилось с ценой и записывает результат — угадала или нет.

Каждое воскресенье публикует отчёт точности за неделю. Всё открыто, задним числом ничего не исправляется.


Почему это может быть полезно даже если не торгуете активно

Сигнал — это не команда «немедленно купить». Это дополнительная информация для размышления. Если система говорит BUY с вероятностью 58% — значит по мнению алгоритма шансы роста немного выше среднего. Принимать решение всегда вам.

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

Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
12 Комментариев
  • Gladiator_Spiculus
    07 июня 2026, 14:05
    прикольно удачи тебе
  • Beach Bunny
    07 июня 2026, 14:20

    Не может быть у вас

    Sharpe 5.72  при доходности +5.3%

    потому что сейчас БЕЗрисковая ставка 14.5% а потому Sharpe у вас ОТРИЦАТЕЛЬНЫЙ и возможно -6%

     

  • Михаил Михалев
    07 июня 2026, 14:24
    Допустим модель сделала десять сделок за шесть месяцев.
    Мало сделок. Огромная дисперсия.

    Акция
    Sharpe
    Доходность
    Сделок
    Т-Банк
    5.72
    +5.35%
    9
    Сбербанк
    4.01
    +1.47%
    10
    Газпром
    2.40
    +2.14%
    10

    Это всё на уровне шума. Опять же из-за малого количества сделок.

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

    Спрашивает у модели: «что будет через пять дней?»
    При расширении горизонта прогноза ошибка растёт экспоненциально.

    Сигнал — это не команда «немедленно купить». Это дополнительная информация для размышления.
    Какой-то черный ящик что-то предсказал. Практического толку от этого ноль:)
  • Играйся сколько хочешь.

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

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