Глубокое обучение от A до Z · 3-6

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

Чтобы подать цены акций в нейросеть, их сначала нужно нарезать окнами, нормализовать так, чтобы не подмешалась информация из будущего, и решить, что именно предсказывать (целевое значение). В этой части на реальных ценах Apple за 506 торговых дней мы одинаковым способом (walk-forward) сравниваем самую простую базовую линию «завтра = сегодня», линейную модель и LSTM. Результаты приводим как есть, хорошие они или плохие. Это учебный пример, а не инвестиционная рекомендация.

506 днейцены акций Apple (2015-02-17 ~ 2017-02-16)
1.209%ошибка прогноза (RMSE) базовой линии «завтра = сегодня»
1.46 · 1.55%ошибка прогноза LSTM при двух сидах — хуже базовой линии
+37.3%если бы просто купили и держали все 200 тестовых дней
+43.7 → −22.4%pизбыточная доходность «лучшего случайного правила»: обучение → тест
2 примеракода, которые сразу запускаются в Colab
1Окно и цель

Окно, нормализация, целевое значение — превращаем ряд чисел в задачу

На одном лишь ряду цен учиться нельзя. Его нужно превратить в задачу «посмотри на последние L дней и угадай следующий день». Сдвигая окно на одну позицию, мы каждый раз получаем ещё одну пару (вход, ответ).

Что показываем
Длина окна

Почему доходность, а не цена, и до каких пределов нормализовать

Уровень цены в разные периоды разный (в 2015 году около 120 долларов, в 2016 году около 90 долларов), поэтому на тесте появляется диапазон, которого модель не видела при обучении. Поэтому переходим к дневному изменению (логарифмическая доходность = log(сегодня/вчера) × 100%). Параметры нормализации (вычесть среднее и разделить на стандартное отклонение) считаются только на обучающем отрезке. Если взять среднее за весь период, информация тестового отрезка просочится в обучение (утечка из раздела 4). Целевое значение тоже нужно выбрать заранее: «доходность следующего дня (число)», «вырастет или упадёт (направление)» или «величина колебания».

2Ожидания и реальность

Почему от глубокого обучения ждут многого — и что сначала говорят данные

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

Автокорреляция чего
3Исследования

Где стало лучше, а где нет

Выводы двух крупных исследований расходятся. Нужно смотреть вместе: при каких условиях стало лучше, а при каких нет.

Пример
4Ловушки

Четыре ловушки — утечка, переобучение, структурный сдвиг, транзакционные издержки

Большинство «потрясающих результатов» в прогнозировании цен акций происходят из одной из этих четырёх ловушек. Рассмотрим каждую на числах из реальных данных.

Ловушка
Транзакционные издержки (за одну смену позиции)
5Walk-forward

Walk-forward валидация — учимся только на прошлом и идём вперёд шаг за шагом

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

Способ разбиения
6Сравнение

Базовая линия → линейная модель → LSTM — один тест, одна мерка

Последние 200 торговых дней (2016-05-04 ~ 2017-02-16) прогнозировались методом walk-forward. Стратегия: «ждём роста — держим акции, ждём падения — в деньгах»; при каждой смене между акциями и деньгами вычитается 0.1%.

Вид

Код для Colab — запустите эту страницу сами

Оба примера используют только библиотеки, предустановленные в Colab. Нажмите «Скачать блокнот (.ipynb)» и откройте его в Colab через Файл → Загрузить блокнот или скопируйте код и вставьте в ячейку нового блокнота.

Код 1 · Оценка базовой линии и линейной модели методом walk-forwardСвязан с разделами 1·4·5·6 · numpy, matplotlib · CPU 1 с · нужен интернет (загрузка данных)

Загружает открытый CSV, оценивает методом walk-forward две базовые линии и линейную гребневую (ridge) модель и сравнивает стратегию за вычетом транзакционных издержек со стратегией «купить и держать». Ловушки утечки и переобучения тоже показаны на числах. Чтобы подставить свои данные, замените PRICE.

Результат запуска (запуск 2026-10-03, numpy 2.4 · CPU). При тех же данных результат одинаков при любом запуске (в эксперименте с переобучением сид зафиксирован равным 0).
Код 2 · Оценка Keras LSTM тем же методом walk-forwardСвязан с разделом 6 · tensorflow (Keras), numpy · CPU около 2~4 мин

LSTM, предсказывающая следующий день по доходностям за последние 20 дней, переобучается каждые 50 дней. Результаты для двух сидов приводятся отдельно. Таблица из раздела 6 строится прямо по этому выводу.

Результат запуска (запуск 2026-10-03, TensorFlow 2.21 · Keras 3.15 · CPU). В зависимости от сида и версий числа могут отличаться.

Промпты для ИИ — этот код как отправная точка

Это промпты, которые можно вставить в ИИ-помощника вроде ChatGPT, Qwen или Claude. Если нажать «Копировать», после промпта будет добавлен выбранный код. Замените текст в 〔 〕 на свою ситуацию.

Код, который добавить

Ответ ИИ — лишь отправная точка. Предложенные статьи, числа и функции библиотек обязательно проверяйте по первоисточникам и официальной документации. Если для конкурса или статьи вы пользовались помощью ИИ, укажите факт и объём использования согласно правилам организаторов и журнала.

Глоссарий

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

Собрание аналогий — и где аналогии ошибаются

Аналогия — первый шаг к пониманию, но и семя заблуждения. Для аналогий с дрозофилой и мозгом указана сила. Прямая есть данные, что это действительно делает то же самое · Частичная похожи лишь некоторые свойства · Нет соответствие неизвестно

ПонятиеБытовая аналогияАналогия с дрозофилой и мозгомГде аналогия ошибается
ОкноУгадать завтрашнюю погоду по погоде за прошлую неделюЧастично Дрозофила тоже выбирает направление по изменению запаха за последние несколько секундУ погоды есть физические законы, а в ценах акций сами прогнозы людей меняют цену
Базовая линияСиноптик, который говорит: «Завтра будет так же, как сегодня»НетВыглядит просто, но обыграть трудно. Любая модель должна сначала обыграть именно это
Утечка данныхОценка ученика, подсмотревшего ответы до экзаменаНетЧаще всего ответы подсматривают, сами того не замечая. Утечка прячется в нормализации и вычислении признаков
Переобучение (смещение отбора)Подбросить 100 монет и назвать ту, что чаще выпадала орлом, «счастливой монетой»Нет«Удача» исчезает при следующем броске. Но в реальной стратегии распознать это гораздо труднее
Структурный сдвигПрогнозировать зимние продажи по истории продаж летней одеждыЧастично Когда среда меняется, выученная память дрозофилы тоже обновляетсяСезоны предсказуемы, а когда изменится характер рынка — неизвестно
Walk-forwardПробный экзамен, где каждую неделю прогнозируют следующую неделю, глядя только на прошлые записиНетВ отличие от пробного экзамена, рынок не ждёт, верен ваш прогноз или нет

Об авторе и источники

E-1 Об авторе · E-2 Научные источники · E-3 Материалы к рисункам

E-1 Об авторе

Сансон Ан (генеральный директор M-Robo)

Работал в Корейской корпорации электробезопасности и газете «Мэиль Кёндже» (Maeil Business Newspaper), а затем основал M-Robo — внешнее венчурное предприятие «Мэиль Кёндже», где сейчас является генеральным директором. M-Robo — медиавенчур, начинавший как внутренний стартап СМИ: он предоставлял газете «Кукмин Ильбо» робота-журналиста (StockBot) и выполнил множество проектов для Корейского агентства интернета и безопасности (KISA), Корейского фонда прессы, Корейского агентства по продвижению радиовещания и связи и других организаций. Сейчас компания развивает собственное ИИ-новостное издание Money-Robo. За время руководства компанией выиграл Asia Open Data Hackathon и дважды получил награду министра внутренних дел и безопасности за вклад в сфере дата-стартапов; является изобретателем и правообладателем 5 патентов в области искусственного интеллекта и блокчейна. Автор книги «Преступления с ИИ и самозащита»; разрабатывал электронные учебные курсы по финтеху, статистике и искусственному интеллекту для Онлайн-института непрерывного образования Корейского технологического и образовательного университета (KOREATECH). Высшая учёная степень — доктор экономических наук (Университет Тонгук, микроэкономика с математическими методами). Преподаёт дисциплины, связанные с данными и искусственным интеллектом, в нескольких университетах, в том числе в Университете Кукмин и Университете Хосо. Подробный профиль

Лекции

  • Сансон Ан (2025). Конспект лекций «Наука о данных для бизнеса». Кафедра конвергенции искусственного интеллекта, Открытый кибер-университет Кореи.
  • Сансон Ан (2025). [K-Digital] Обработка естественного языка с помощью ИИ. STEP (Платформа интеллектуального профессионального обучения), Онлайн-институт непрерывного образования Корейского технологического и образовательного университета.
  • Сансон Ан (2024). [K-Digital] Основы анализа финтех-данных. STEP (Платформа интеллектуального профессионального обучения), Онлайн-институт непрерывного образования Корейского технологического и образовательного университета.

Курсы на STEP: link.step.or.kr/1qyVoJ · link.step.or.kr/M9na9N · link.step.or.kr/brqEyc
Если из-за обновления сайта ссылки не открываются, заходите на www.step.or.kr.

Статьи и доклады

  • Сансон Ан (2025). Модель прогнозирования расходов домохозяйств на основе панельных данных о пенсионном обеспечении (KReIS): подход на основе моделей искусственного интеллекта. «Будущее общество» (Mirae Sahoe), 16(2). Полный текст
  • Сансон Ан (2025). Модель прогнозирования расходов домохозяйств на основе панельных данных о пенсионном обеспечении (KReIS): подход с использованием ИИ. Доклад на научной конференции по панельному исследованию пенсионного обеспечения (2025.05.13), Национальный институт пенсионных исследований, Национальная пенсионная служба Кореи. Материалы доклада
  • Сансон Ан (2025). Алгоритм обнаружения подозрительных сделок с наркотиками по текстам в соцсетях: анализ шаблонов и контекста. «Будущее общество» (Mirae Sahoe), 16(1). Полный текст
  • Сансон Ан (2024). Статистический подход к противодействию состязательным данным для защиты моделей обнаружения аномалий в финансовой сфере: эмпирический анализ и результаты моделирования. «Будущее общество» (Mirae Sahoe), 15(3). Полный текст
  • Сансон Ан (2024). Решение на основе ИИ для обнаружения публикаций в соцсетях по характеристикам виртуальных персонажей. Стендовый доклад на 2024 Summer Newmedia Party (2024.06.19), Сеульский университет медиа (аспирантура).
  • Сансон Ан (2024). Модель машинного обучения на панельных данных о производственном травматизме. Стендовый доклад на 10-й научной конференции по панели страхования от несчастных случаев на производстве (2024.05.17), Институт социального обеспечения работников, Корейская служба социального обеспечения работников.
  • Сансон Ан (2024). Анализ и прогнозирование временных рядов виртуальных активов: сравнение моделей временных рядов и моделей ИИ, предложения по улучшению. «Будущее общество» (Mirae Sahoe), 15(1). Полный текст

E-2 Научные источники

  1. [R1] Gu, S., Kelly, B., & Xiu, D. (2020). Empirical asset pricing via machine learning. The Review of Financial Studies, 33(5), 2223–2273. doi:10.1093/rfs/hhaa009 — раздел 3 (лучше всего показали себя деревья и нейросети; коэффициент Шарпа вне выборки для лонг-шорт портфеля на нейросети — 1.35)
  2. [R2] Makridakis, S., Spiliotis, E., & Assimakopoulos, V. (2020). The M4 Competition: 100,000 time series and 61 forecasting methods. International Journal of Forecasting, 36(1), 54–74. — раздел 3 (все 6 чисто машинно-обучающихся методов выступили слабо; победил гибрид статистики и машинного обучения)

E-3 Данные и источники для рисунков

  • Данные о ценах акций: пример датасета Plotly finance-charts-apple.csv (GitHub plotly/datasets). Использована цена закрытия с учётом дивидендов (AAPL.Adjusted)

Советы преподавателю

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

АудиторияСтуденты и практики, которые хотят прогнозировать временные ряды — спрос, продажи, данные датчиков, цены, — а также начинающие в финтехе
Предварительные знанияСреднее и стандартное отклонение, переобучение и валидация из 3-2, LSTM из 3-7
Цели обучения① Превращать временной ряд в задачу обучения с помощью окна, нормализации и целевого значения ② Объяснять на числах утечку, переобучение, структурный сдвиг и транзакционные издержки ③ Сравнивать базовую линию и модели одной меркой с помощью walk-forward
Ориентировочное времяЧтение 40~50 мин · демонстрация 20 мин · практика в Colab 30 мин (код 1 — 10 мин, код 2 — запуск 4 мин + разбор 15 мин)

Три варианта занятия

Лекция, 50 мин

Упор на понятия

Вступление 5 мин (из шапки: «LSTM хуже базовой линии») → разделы 1·2 15 мин → четыре ловушки раздела 4 15 мин → разделы 5·6 10 мин → проверочные вопросы 5 мин.

OJT на рабочем месте, 90 мин

Упор на применение в работе

Определить базовую линию для объекта прогноза вашей команды (спрос, продажи и т. п.) 15 мин → превратить раздел 4 в чек-лист утечек для ваших данных 25 мин → подставить ваш временной ряд в код 1 35 мин → обсуждение формата отчёта о результатах 15 мин.

Индивидуальные занятия

Темп по уровню

Начинающим — только разделы 1·4·6. Продвинутых попросите вручную пройти цикл walk-forward в коде 1 и самим проверить, как меняются числа, если параметры стандартизации считать по всему периоду.

Ключевые моменты по разделам

РазделВопрос, на котором стоит остановитьсяСовет по управлению
1 Окно и цель«Что плохого в том, чтобы подавать цену как есть?»Нажимайте по порядку: цена → доходность
2 Ожидания и реальность«Что предсказать легче — направление или величину колебания?»Нажимайте по порядку: доходность → модуль и сравните число столбцов, вышедших за полосу
3 Исследования«Почему выводы двух исследований различаются?»Сравните рядом строки об объёме данных и типе задачи
4 Ловушки«Если проверить 100 вариантов и выбрать один, можно ли доверять его результату?»Смотрите по порядку: переобучение → транзакционные издержки (0 → 0.3%)
5 Walk-forward«Почему нельзя разбивать данные, случайно перемешав их?»Переключать два способа по очереди
6 Сравнение«LSTM оказалась хуже базовой линии. Что можно попробовать изменить?»Смотрите по порядку: RMSE → доходность стратегии

Топ-5 частых заблуждений

ЗаблуждениеВерное объяснениеЧто показать
LSTM специализируется на временных рядах, значит, она лучше базовой линииВ задачах с малым количеством подсказок обыграть базовую линию трудно. В этом эксперименте LSTM оказалась хуже базовой линииРаздел 6
При точности направления 55% можно заработатьЕсли при ошибках теряешь много, будет убыток. Нужно учесть транзакционные издержки и сравнить со стратегией «держать»Строка базовой линии в разделе 6 (55.0%)
Если в бэктесте было хорошо, то и в реальности будет хорошоЕсли выбирать после многих попыток, примешивается случайность. Да и характер рынка меняетсяРаздел 4: переобучение, структурный сдвиг
Нормализацию достаточно сделать один раз по всем даннымПараметры надо считать только на обучающем отрезке. Иначе просочится информация из будущегоРаздел 1, раздел 4: утечка
Нейросети бесполезны для прогноза цен акцийЕсть исследования, где стало лучше, — при больших данных, многих сигналах и задачах поперечного среза. Важны условияРаздел 3

Проверочные вопросы (нажмите, чтобы раскрыть разбор)

Q1. Сколько пар (вход, ответ) получится из 505 доходностей при окне 5 дней?

505 − 5 = 500.

Q2. Если 200 тестовых дней переобучать каждые 20 дней, сколько раз будет обучение? Сколько пар в первом обучении?

10 раз. В первом обучении 500 − 200 = 300 пар, в последнем — 480 пар.

Q3. Если стратегия 40 раз покупала и продавала, а транзакционные издержки — 0.1% за раз, на сколько издержки урезали доходность?

40 × 0.1 = 4%p (приближённо, в терминах логарифмической доходности).

Q4. Из 100 случайных правил выбрали лучшее на обучающем отрезке: избыточная доходность на обучающем отрезке +43.7%p, на тестовом −22.4%p. Что это показывает?

Результат, выбранный после многих попыток, подогнан под случайность и не воспроизводится на новом отрезке (переобучение, смещение отбора). Тестовый отрезок нужно использовать только один раз, в самом конце.

Q5. У базовой линии «завтра = сегодня» ошибка прогноза меньше, чем у LSTM. Как это написать в отчёте?

Написать результат как есть: «На этих данных (1 акция, 506 дней, сигнал — прошлые доходности) и при этих настройках (окно 20 дней, переобучение каждые 50 дней, 40 эпох) LSTM не обыграла базовую линию (RMSE 1.462%·1.550% против 1.209%)». Затем указать, какие условия можно изменить, и ограничения обобщения.

Задания в Colab

Базовое

В ridge_fit из кода 1 замените параметры стандартизации (mu, sd) на рассчитанные по всему периоду (весь X) и запустите снова. Запишите, как изменились RMSE и доходность стратегии, и в двух предложениях объясните, почему это утечка.

Повышенной сложности

Замените цель в коде 2 с «доходности следующего дня» на «модуль доходности следующего дня (величину колебания)». Базовой линией возьмите «средний модуль за последние 20 дней». Связав это с автокорреляцией из раздела 2, сообщите, обыгрывает ли LSTM базовую линию в прогнозе колебаний, используя не менее 3 сидов.

Настройка сложности и что изучить дальше

НачинающимРазделы 2·3 можно пропустить без потери логики. Переобучение из раздела 4 и таблицу из раздела 6 посмотрите обязательно
УглублённоПопросите изучить, как корректировать результаты бэктеста после многих попыток (множественная проверка гипотез). Найденные статьи проверяйте по первоисточнику
Что изучить дальшеСансон Ан, конспект курса «Наука о данных для бизнеса» (наука о данных в целом) · STEP [K-Digital] Основы анализа данных в финтехе (напрямую связан с этой частью) · STEP [K-Digital] Обработка естественного языка в ИИ (связан с 3-5·3-8)
Материалы для преподавателяКритерии оценки проверочных вопросов и примеры ответов на задания — на странице ответов для преподавателей (3-6)

Отличная работа!

Вы дочитали часть «3-6 Временные ряды и цены акций» до конца. Обитатели лаборатории подведут итоги — каждый по словечку.

Профессор
ПрофессорМы провели эксперимент: на реальных ценах акций сначала попробовали обыграть базовую линию.
  • Сначала нужно обыграть самую простую базовую линию «завтра = сегодня»
  • В этом эксперименте у LSTM ошибка прогноза была больше, чем у базовой линии
  • Всегда проверяйте утечку, переобучение, структурный сдвиг и транзакционные издержки (это учебный пример, а не инвестиционная рекомендация)
Ассистентка
АссистенткаLSTM проиграла базовой линии…
Муха-исследователь
Муха-исследовательЗаписать результат как есть — вот настоящее мастерство.