Шаг 1: Соберите и очистите данные
Выгрузите дневные цены VIX с Yahoo Finance (тикер ^VIX) и RVI с сайта MOEX. Удалите пропуски, проведите логарифмирование цены для стационарности. Добавьте лаги на 1, 5, 22 дня — это базовые признаки для любого ML‑алгоритма. Для RVI скачайте также историю ставки RUONIA с сайта ЦБ РФ — она отражает рублёвую ликвидность.
Шаг 2: Сформируйте признаки и целевую переменную
Целевая переменная — волатильность через N дней (например, VIX через 5 дней). Признаки: скользящее среднее, стандартное отклонение, диапазон high‑low, асимметрия за последние 7 дней. Для RVI дополнительно включите разность между индексом и его 20‑дневной средней — это отражает «настрой» рынка. Нормализуйте признаки (StandardScaler) для нейросетей, для XGBoost/RF это необязательно.
Шаг 3: Разделите выборку и настройте модель
Используйте expanding‑window валидацию: обучайте на 70 % начальных данных, проверяйте на следующих 5–10 % и сдвигайте границу. Для XGBoost задайте max_depth=5, learning_rate=0,1, n_estimators=300, early_stopping_rounds=20. Для Random Forest — n_estimators=300, max_features='sqrt'. LSTM начинайте с одного скрытого слоя (32 нейрона), dropout=0,2, batch_size=32. Не сравнивайте модели на одних и тех же данных — разные горизонты требуют разных признаков.
Шаг 4: Оцените метрики и переобучение
Посчитайте MAE, RMSE, R² на тестовом окне. Если R² на обучении > 0,95, а на тесте < 0,6 — модель переобучена. Уменьшите max_depth или добавьте регуляризацию. Для LSTM проверьте loss на валидации: если он растёт после 20 эпох — снизьте количество нейронов. Используйте SHAP для XGBoost — вы увидите, какие признаки сильнее всего влияют на прогноз.
Шаг 5: Протестируйте на свежих данных и автоматизируйте
После выбора модели примените её к данным за последние 30–60 дней, которые не участвовали в валидации. Сравните предсказанные значения с реальными — если ошибка превышает 2–3 волатильности (пункты), перетренируйте модель на расширенном окне. Для автоматизации напишите скрипт на Python, который еженедельно скачивает данные, запускает обучение и записывает сигнал (например, «высокая волатильность»). LLM (ChatGPT) поможет заготовить каркас такого скрипта — попросите «напиши pipeline для обновления модели XGBoost прогноза VIX».