Глава 75: Открытие факторов с помощью LLM для трейдинга
Обзор
Открытие факторов с помощью LLM представляет собой смену парадигмы в количественных торговых исследованиях. Традиционный майнинг альфа-факторов опирается на ручное проектирование формул, экспертизу в предметной области и исчерпывающие алгоритмы поиска. Большие языковые модели (LLM) теперь могут автоматизировать и ускорить этот процесс, генерируя, оценивая и уточняя торговые факторы через понимание естественного языка и возможности генерации кода.
В этой главе рассматривается использование LLM, таких как GPT-4, Claude и специализированных финансовых моделей (FinGPT), для открытия новых альфа-факторов как для традиционных фондовых рынков, так и для криптовалютного трейдинга на платформах типа Bybit.
Содержание
- Введение
- Теоретические основы
- Основы альфа-факторов
- Открытие факторов на основе LLM
- Архитектура Alpha-GPT
- Конвейер генерации факторов
- Оценка и бэктестинг факторов
- Применение в криптовалютном трейдинге
- Стратегия реализации
- Управление рисками
- Метрики производительности
- Литература
Введение
Что такое открытие альфа-факторов?
Альфа-факторы — это количественные сигналы, которые прогнозируют будущую доходность активов за вычетом рыночного риска. Они являются строительными блоками систематических торговых стратегий:
┌─────────────────────────────────────────────────────────────────────────┐│ Эволюция открытия альфа-факторов │├─────────────────────────────────────────────────────────────────────────┤│ ││ Традиционный подход: Подход с LLM: ││ ┌──────────────────┐ ┌──────────────────┐ ││ │ Эксперт предметной│ │ Исследовательский│ ││ │ области │ │ ввод на естеств. │ ││ │ ↓ │ │ языке │ ││ │ Ручное │ │ ↓ │ ││ │ проектирование │ │ Генерация LLM │ ││ │ формул │ │ ↓ │ ││ │ ↓ │ │ Автоматическая │ ││ │ Бэктест │ │ валидация │ ││ │ ↓ │ │ ↓ │ ││ │ Итерация │ │ Итеративное │ ││ │ (недели/месяцы) │ │ уточнение │ ││ └──────────────────┘ │ (часы/дни) │ ││ └──────────────────┘ ││ ││ Примеры альфа-факторов: ││ • Моментум: rank(returns(20d)) ││ • Возврат к среднему: -zscore(close, 10) ││ • Профиль объёма: ts_rank(volume, 20) * sign(returns(5d)) ││ • Тональность: sentiment_score * news_volume ││ │└─────────────────────────────────────────────────────────────────────────┘Почему LLM для открытия факторов?
| Аспект | Традиционные методы | Открытие на основе LLM |
|---|---|---|
| Генерация идей | Ручной мозговой штурм | Автоматическая генерация |
| Знание предметной области | Обязательно | Может использовать обучающие данные |
| Синтаксис формул | Нужно изучать | Естественный язык → код |
| Скорость итераций | Дни/недели | Минуты/часы |
| Пространство поиска | Ограничено человеком | Экспоненциально больше |
| Предвзятость | Сильная исследовательская | Может быть разнообразнее |
| Интерпретируемость | Варьируется | Может объяснить рассуждения |
Теоретические основы
Структура факторной модели
Современное факторное инвестирование основано на предположении, что доходность может быть разложена:
$$R_i = \alpha_i + \sum_{k=1}^{K} \beta_{ik} F_k + \epsilon_i$$
Где:
- $R_i$ — доходность актива $i$
- $\alpha_i$ — альфа, специфичная для актива (то, что мы хотим найти!)
- $\beta_{ik}$ — экспозиция к фактору $k$
- $F_k$ — доходность фактора $k$
- $\epsilon_i$ — идиосинкратическая ошибка
LLM как генератор факторов
LLM можно рассматривать как функции, преобразующие исследовательские идеи в формулы факторов:
$$f_{LLM}: \text{Исследовательская идея} \rightarrow \text{Выражение фактора}$$
Ключевое понимание состоит в том, что LLM изучили паттерны из огромных объёмов финансовой литературы, исследовательских статей и репозиториев кода. Они могут:
- Синтезировать знания из нескольких областей
- Генерировать новые комбинации существующих факторов
- Переводить интуицию в математические выражения
- Быстро итерировать на основе обратной связи
Информационное содержание факторов
Хороший альфа-фактор должен иметь:
┌─────────────────────────────────────────────────────────────────────────┐│ Критерии качества факторов │├─────────────────────────────────────────────────────────────────────────┤│ ││ 1. Предсказательная сила (IC: Информационный коэффициент) ││ ┌──────────────────────────────────────────────────────┐ ││ │ Корреляция между значениями фактора и будущей │ ││ │ доходностью │ ││ │ IC = corr(фактор_t, доходность_{t+1}) │ ││ │ Цель: |IC| > 0.02 (2% корреляция значима) │ ││ └──────────────────────────────────────────────────────┘ ││ ││ 2. Стабильность (IC_IR: Информационное отношение) ││ ┌──────────────────────────────────────────────────────┐ ││ │ Постоянство предсказательной силы во времени │ ││ │ IC_IR = mean(IC) / std(IC) │ ││ │ Цель: IC_IR > 0.3 │ ││ └──────────────────────────────────────────────────────┘ ││ ││ 3. Уникальность (низкая корреляция с существующими) ││ ┌──────────────────────────────────────────────────────┐ ││ │ Фактор должен захватывать НОВУЮ информацию │ ││ │ corr(новый_фактор, существующие_факторы) < 0.7 │ ││ └──────────────────────────────────────────────────────┘ ││ ││ 4. Оборот (торговая реализуемость) ││ ┌──────────────────────────────────────────────────────┐ ││ │ Как часто нужно менять позиции │ ││ │ Меньший оборот = меньшие торговые издержки │ ││ │ Цель: Оборот < 50% за период │ ││ └──────────────────────────────────────────────────────┘ ││ │└─────────────────────────────────────────────────────────────────────────┘Основы альфа-факторов
Язык выражения факторов
Факторы обычно выражаются как математические формулы, оперирующие ценовыми и объёмными данными:
Базовые операции:├── returns(d) - d-дневная доходность: close / close.shift(d) - 1├── rank(x) - Кросс-секционный ранг (от 0 до 1)├── zscore(x, d) - Скользящий z-score: (x - mean(x,d)) / std(x,d)├── ts_rank(x, d) - Ранг временного ряда за d периодов├── ts_sum(x, d) - Скользящая сумма за d периодов├── ts_mean(x, d) - Скользящее среднее за d периодов├── ts_std(x, d) - Скользящее стандартное отклонение├── ts_max(x, d) - Скользящий максимум├── ts_min(x, d) - Скользящий минимум├── delay(x, d) - Запаздывающее значение├── delta(x, d) - Изменение: x - delay(x, d)├── correlation(x, y, d) - Скользящая корреляция└── covariance(x, y, d) - Скользящая ковариация
Переменные рыночных данных:├── open - Цена открытия├── high - Максимальная цена├── low - Минимальная цена├── close - Цена закрытия├── volume - Торговый объём├── vwap - Средневзвешенная по объёму цена└── amount - Торговый оборот (цена * объём)Примеры факторов
┌─────────────────────────────────────────────────────────────────────────┐│ Классические примеры альфа-факторов │├─────────────────────────────────────────────────────────────────────────┤│ ││ 1. Ценовой моментум (12-месячный, пропуск последнего месяца) ││ формула: rank(returns(252) - returns(21)) ││ логика: Активы с позитивным моментумом склонны продолжать ││ ││ 2. Краткосрочный разворот ││ формула: -rank(returns(5)) ││ логика: Краткосрочные проигравшие склонны отскакивать ││ ││ 3. Дивергенция объём-цена ││ формула: -correlation(close, volume, 10) ││ логика: Рост цены на низком объёме = слабость ││ ││ 4. Моментум, скорректированный на волатильность ││ формула: returns(20) / ts_std(returns(1), 20) ││ логика: Моментум, нормализованный на риск ││ ││ 5. Поток умных денег ││ формула: ts_sum(volume * sign(close - open), 10) / ts_sum(volume,10)││ логика: Отслеживание, идёт ли объём в направлении цены ││ ││ 6. Разворот ликвидности ││ формула: -correlation(returns(1), volume, 20) * ts_rank(volume, 20) ││ логика: Развороты на высоком объёме более значимы ││ │└─────────────────────────────────────────────────────────────────────────┘Открытие факторов на основе LLM
Парадигма Alpha-GPT
Alpha-GPT представил революционный подход к майнингу факторов через взаимодействие Человек-ИИ:
┌─────────────────────────────────────────────────────────────────────────┐│ Архитектура системы Alpha-GPT │├─────────────────────────────────────────────────────────────────────────┤│ ││ ┌─────────────────────────────────────┐ ││ │ ВВОД ПОЛЬЗОВАТЕЛЯ │ ││ │ "Я хочу моментум-фактор, который │ ││ │ учитывает подтверждение объёмом" │ ││ └─────────────────┬───────────────────┘ ││ │ ││ ↓ ││ ┌───────────────────────────────────────────────────────────────────┐ ││ │ КОМПИЛЯЦИЯ ЗНАНИЙ │ ││ │ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │ ││ │ │ Внешняя память │ │ Похожие примеры │ │ Правила домена │ │ ││ │ │(Библиотека │ │ (Few-shot) │ │ (Ограничения) │ │ ││ │ │ факторов) │ └────────┬────────┘ └────────┬────────┘ │ ││ │ └────────┬────────┘ │ │ │ ││ │ └──────────────────┬─┴─────────────────────┘ │ ││ │ │ │ ││ │ ↓ │ ││ │ ┌─────────────────────┐ │ ││ │ │ СИСТЕМНЫЙ ПРОМПТ │ │ ││ │ │ + Запрос │ │ ││ │ └──────────┬──────────┘ │ ││ └───────────────────────────────┼───────────────────────────────────┘ ││ │ ││ ↓ ││ ┌───────────────────────────────────────────────────────────────────┐ ││ │ ДВИЖОК LLM │ ││ │ ┌─────────────────────────────────────────────────────────────┐ │ ││ │ │ Сгенерированное выражение фактора: │ │ ││ │ │ rank(ts_sum(volume * sign(returns(1)), 5)) * │ │ ││ │ │ rank(returns(10)) │ │ ││ │ └─────────────────────────────────────────────────────────────┘ │ ││ └───────────────────────────────┼───────────────────────────────────┘ ││ │ ││ ↓ ││ ┌───────────────────────────────────────────────────────────────────┐ ││ │ ПОИСК АЛЬФЫ │ ││ │ • Валидация синтаксиса │ ││ │ • Выполнение бэктеста │ ││ │ • Расчёт IC/IR │ ││ │ • Анализ оборота │ ││ └───────────────────────────────┼───────────────────────────────────┘ ││ │ ││ ↓ ││ ┌───────────────────────────────────────────────────────────────────┐ ││ │ РЕЗУЛЬТАТЫ И ИНТЕРПРЕТАЦИЯ │ ││ │ • IC: 0.035, IC_IR: 0.42 │ ││ │ • Годовая доходность: 12.3%, Sharpe: 1.8 │ ││ │ • "Этот фактор комбинирует моментум, подтверждённый объёмом..." │ ││ └───────────────────────────────────────────────────────────────────┘ ││ │└─────────────────────────────────────────────────────────────────────────┘Alpha-GPT 2.0: Мультиагентная архитектура
Эволюция до Alpha-GPT 2.0 ввела мультиагентную систему:
┌─────────────────────────────────────────────────────────────────────────┐│ Мультиагентный конвейер Alpha-GPT 2.0 │├─────────────────────────────────────────────────────────────────────────┤│ ││ СЛОЙ 1: АГЕНТ МАЙНИНГА АЛЬФЫ ││ ┌─────────────────────────────────────────────────────────────────┐ ││ │ Инструменты: Генератор факторов, Валидатор выражений │ ││ │ Задача: Генерировать кандидатов альфа-выражений из идей │ ││ └─────────────────────────────────────────────────────────────────┘ ││ │ ││ ↓ ││ СЛОЙ 2: АГЕНТ МОДЕЛИРОВАНИЯ АЛЬФЫ ││ ┌─────────────────────────────────────────────────────────────────┐ ││ │ Инструменты: Обучение ML-моделей, Комбинатор признаков │ ││ │ Задача: Объединять факторы в предсказательные модели │ ││ └─────────────────────────────────────────────────────────────────┘ ││ │ ││ ↓ ││ СЛОЙ 3: АГЕНТ АНАЛИЗА АЛЬФЫ ││ ┌─────────────────────────────────────────────────────────────────┐ ││ │ Инструменты: Бэктестер, Анализатор рисков, Репортер │ ││ │ Задача: Оценивать и отчитываться о производительности │ ││ └─────────────────────────────────────────────────────────────────┘ ││ ││ Человек в цикле: Пользователь может вмешаться на любом слое ││ │└─────────────────────────────────────────────────────────────────────────┘Chain-of-Alpha: Последние достижения (2025)
Фреймворк Chain-of-Alpha вводит архитектуру двойной цепочки:
┌─────────────────────────────────────────────────────────────────────────┐│ Фреймворк Chain-of-Alpha │├─────────────────────────────────────────────────────────────────────────┤│ ││ ┌─────────────────────────────────────────────────────────────────┐ ││ │ ЦЕПОЧКА ГЕНЕРАЦИИ ФАКТОРОВ │ ││ │ │ ││ │ Рыночные данные → Анализ LLM → Кандидаты факторов → Валидация │ ││ │ ↑ │ │ ││ │ └───────────────────────────────────────────────┘ │ ││ │ Итерация с обратной связью │ ││ └─────────────────────────────────────────────────────────────────┘ ││ ↕ ││ ┌─────────────────────────────────────────────────────────────────┐ ││ │ ЦЕПОЧКА ОПТИМИЗАЦИИ ФАКТОРОВ │ ││ │ │ ││ │ Результаты бэктеста → Анализ производительности → Промпты │ ││ │ ↑ │ │ ││ │ └───────────────────────────────────────────────┘ │ ││ │ База знаний оптимизации │ ││ └─────────────────────────────────────────────────────────────────┘ ││ ││ Ключевая инновация: Обе цепочки работают синергетически, деля знания ││ о том, что работает и что нет, для непрерывного улучшения ││ │└─────────────────────────────────────────────────────────────────────────┘Архитектура Alpha-GPT
Компоненты системы
/// Основные компоненты системы открытия факторов на базе LLM#[derive(Debug, Clone)]pub struct FactorDiscoverySystem { /// LLM клиент для генерации факторов pub llm_client: LlmClient,
/// Парсер и валидатор выражений факторов pub expression_parser: ExpressionParser,
/// Движок бэктестинга pub backtester: Backtester,
/// Библиотека факторов для поиска похожих pub factor_library: FactorLibrary,
/// Конфигурация pub config: DiscoveryConfig,}
#[derive(Debug, Clone, Serialize, Deserialize)]pub struct DiscoveryConfig { /// Минимальный порог IC для принятия фактора pub min_ic: f64,
/// Минимальный порог IC_IR pub min_ic_ir: f64,
/// Максимальная корреляция с существующими факторами pub max_correlation: f64,
/// Максимально допустимый оборот pub max_turnover: f64,
/// Количество факторов для генерации за итерацию pub batch_size: usize,
/// Максимальное количество итераций уточнения pub max_iterations: usize,}
impl Default for DiscoveryConfig { fn default() -> Self { Self { min_ic: 0.02, min_ic_ir: 0.3, max_correlation: 0.7, max_turnover: 0.5, batch_size: 10, max_iterations: 5, } }}Инженерия промптов для генерации факторов
┌─────────────────────────────────────────────────────────────────────────┐│ Шаблон промпта для генерации факторов │├─────────────────────────────────────────────────────────────────────────┤│ ││ СИСТЕМНЫЙ ПРОМПТ: ││ """ ││ Вы количественный исследователь, специализирующийся на открытии ││ альфа-факторов. Ваша задача — генерировать торговые факторы, ││ которые предсказывают будущую доходность активов. ││ ││ Доступные операторы: ││ - rank(x): Кросс-секционный ранг ││ - zscore(x, d): Скользящий z-score ││ - ts_rank(x, d): Ранг временного ряда ││ - returns(d): d-дневная доходность ││ - ts_sum(x, d), ts_mean(x, d), ts_std(x, d): Скользящая статистика ││ - correlation(x, y, d), covariance(x, y, d): Скользящие корреляции ││ - delta(x, d): Изменение за d периодов ││ - delay(x, d): Запаздывающее значение ││ ││ Доступные данные: ││ - open, high, low, close, volume, vwap, amount ││ ││ Требования: ││ - Генерировать валидные выражения факторов ││ - Объяснять экономическую интуицию ││ - Учитывать транзакционные издержки (предпочитать низкий оборот) ││ """ ││ ││ ПОЛЬЗОВАТЕЛЬСКИЙ ПРОМПТ: ││ """ ││ Сгенерируйте альфа-факторы на основе этой исследовательской идеи: ││ {research_idea} ││ ││ Недавняя производительность похожих факторов: ││ {similar_factors_performance} ││ ││ Пожалуйста, выведите: ││ 1. Выражение фактора ││ 2. Экономическое обоснование ││ 3. Ожидаемое поведение (моментум/разворот/и т.д.) ││ 4. Потенциальные риски и ограничения ││ """ ││ │└─────────────────────────────────────────────────────────────────────────┘Конвейер генерации факторов
Сквозной рабочий процесс
┌─────────────────────────────────────────────────────────────────────────┐│ Конвейер открытия факторов │├─────────────────────────────────────────────────────────────────────────┤│ ││ ФАЗА 1: ГЕНЕРАЦИЯ ИДЕЙ ││ ─────────────────────────────────────────────────────────────────── ││ Вход: Научные статьи, рыночные аномалии, интуиции ││ Выход: Список гипотез о факторах ││ ││ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ││ │ Научные статьи │ → │ LLM-суммаризатор│ → │ Идеи факторов │ ││ │ Рыночные новости│ │ и переводчик │ │ на ест. языке │ ││ │ Отчёты аномалий │ └─────────────────┘ └─────────────────┘ ││ └─────────────────┘ ││ ││ ФАЗА 2: ГЕНЕРАЦИЯ ││ ─────────────────────────────────────────────────────────────────── ││ Вход: Идеи факторов ││ Выход: Кандидаты выражений факторов ││ ││ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ││ │ Идеи факторов │ → │ LLM-генератор │ → │ Кандидаты │ ││ │ + Примеры │ │ (с RAG) │ │ выражений │ ││ │ + Ограничения │ └─────────────────┘ └─────────────────┘ ││ └─────────────────┘ ││ ││ ФАЗА 3: ВАЛИДАЦИЯ ││ ─────────────────────────────────────────────────────────────────── ││ Вход: Выражения факторов ││ Выход: Валидные, вычислимые факторы ││ ││ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ││ │ Кандидаты │ → │ Парсер и │ → │ Валидные │ ││ │ выражений │ │ валидатор │ │ факторы │ ││ └─────────────────┘ └─────────────────┘ └─────────────────┘ ││ ││ ФАЗА 4: ОЦЕНКА ││ ─────────────────────────────────────────────────────────────────── ││ Вход: Валидные факторы ││ Выход: Метрики производительности, ранжирование ││ ││ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ││ │ Валидные факторы│ → │ Движок │ → │ IC, IR, Sharpe │ ││ │ + Рыночные данные│ │ бэктестинга │ │ Оборот │ ││ └─────────────────┘ └─────────────────┘ └─────────────────┘ ││ ││ ФАЗА 5: УТОЧНЕНИЕ ││ ─────────────────────────────────────────────────────────────────── ││ Вход: Обратная связь по производительности ││ Выход: Улучшенные факторы ││ ││ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ ││ │ Слабые факторы │ → │ LLM-уточнитель │ → │ Улучшенные │ ││ │ │ │ (с обр. связью) │ │ выражения │ ││ └─────────────────┘ └─────────────────┘ └─────────────────┘ ││ ││ Итерировать до схождения или max_iterations ││ │└─────────────────────────────────────────────────────────────────────────┘Оценка и бэктестинг факторов
Расчёт информационного коэффициента
/// Расчёт информационного коэффициента (IC) между фактором и доходностьюpub fn calculate_ic( factor_values: &[f64], forward_returns: &[f64],) -> f64 { // Используем ранговую корреляцию Спирмена let n = factor_values.len();
// Ранжируем обе серии let factor_ranks = rank_values(factor_values); let return_ranks = rank_values(forward_returns);
// Вычисляем корреляцию Спирмена let mean_f: f64 = factor_ranks.iter().sum::<f64>() / n as f64; let mean_r: f64 = return_ranks.iter().sum::<f64>() / n as f64;
let mut cov = 0.0; let mut var_f = 0.0; let mut var_r = 0.0;
for i in 0..n { let df = factor_ranks[i] - mean_f; let dr = return_ranks[i] - mean_r; cov += df * dr; var_f += df * df; var_r += dr * dr; }
if var_f == 0.0 || var_r == 0.0 { return 0.0; }
cov / (var_f.sqrt() * var_r.sqrt())}
/// Статистика IC во времени#[derive(Debug, Clone, Serialize, Deserialize)]pub struct ICStats { /// Средний IC pub mean_ic: f64,
/// Стандартное отклонение IC pub ic_std: f64,
/// Информационное отношение (IC_IR = mean_ic / ic_std) pub ic_ir: f64,
/// Процент периодов с положительным IC pub positive_ic_ratio: f64,
/// T-статистика для значимости IC pub t_stat: f64,}Применение в криптовалютном трейдинге
Интеграция с Bybit для факторного трейдинга
┌─────────────────────────────────────────────────────────────────────────┐│ Конвейер крипто-факторного трейдинга │├─────────────────────────────────────────────────────────────────────────┤│ ││ ┌───────────────────────────────────────────────────────────────────┐ ││ │ ЗАГРУЗКА ДАННЫХ │ ││ │ Bybit API ──→ ┐ │ ││ │ Binance ──→ │──→ OHLCV данные ──→ Инженерия признаков │ ││ │ Ончейн ──→ ┘ │ ││ └───────────────────────────────────────────────────────────────────┘ ││ │ ││ ↓ ││ ┌───────────────────────────────────────────────────────────────────┐ ││ │ ВЫЧИСЛЕНИЕ ФАКТОРОВ │ ││ │ │ ││ │ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │ ││ │ │ Моментум- │ │ Разворотные │ │ Объёмные │ │ ││ │ │ факторы │ │ факторы │ │ факторы │ │ ││ │ └─────────────┘ └─────────────┘ └─────────────┘ │ ││ │ │ │ │ │ ││ │ └────────────────┴────────────────┘ │ ││ │ │ │ ││ │ ↓ │ ││ │ ┌─────────────────┐ │ ││ │ │ Комбинатор │ │ ││ │ │ факторов │ │ ││ │ │ (ML или линейн.)│ │ ││ │ └────────┬────────┘ │ ││ └─────────────────────────┼─────────────────────────────────────────┘ ││ │ ││ ↓ ││ ┌───────────────────────────────────────────────────────────────────┐ ││ │ ГЕНЕРАЦИЯ СИГНАЛОВ │ ││ │ │ ││ │ Комб. оценка ──→ Размер позиции ──→ Лимиты риска │ ││ │ │ │ ││ │ ↓ │ ││ │ ┌─────────────────┐ │ ││ │ │ Торговые сигналы│ │ ││ │ │ BTC: +0.3 (лонг)│ │ ││ │ │ ETH: -0.2 (шорт)│ │ ││ │ │ SOL: +0.5 (лонг)│ │ ││ │ └────────┬────────┘ │ ││ └─────────────────────────────────────────────┼─────────────────────┘ ││ │ ││ ↓ ││ ┌───────────────────────────────────────────────────────────────────┐ ││ │ ИСПОЛНЕНИЕ │ ││ │ │ ││ │ Сигналы ──→ Маршрутизация ордеров ──→ Bybit API ──→ Подтверждение│ ││ │ │ ││ └───────────────────────────────────────────────────────────────────┘ ││ │└─────────────────────────────────────────────────────────────────────────┘Специфичные для крипто факторы
┌─────────────────────────────────────────────────────────────────────────┐│ Примеры криптовалютных факторов │├─────────────────────────────────────────────────────────────────────────┤│ ││ 1. Моментум ставки финансирования ││ формула: ts_mean(funding_rate, 8) * rank(returns(24h)) ││ логика: Устойчивое финансирование указывает на направление ││ ││ 2. Дивергенция открытого интереса ││ формула: delta(open_interest, 4h) / ts_std(open_interest, 24) ││ логика: Рост OI может сигнализировать продолжение тренда ││ ││ 3. Асимметрия ликвидаций ││ формула: (long_liquidations - short_liquidations) / ││ (long_liquidations + short_liquidations) ││ логика: Односторонние ликвидации могут сигнализировать разворот ││ ││ 4. Накопление китами ││ формула: ts_sum(exchange_outflow, 7d) / ts_mean(volume, 30d) ││ логика: Отток с бирж предполагает накопление ││ ││ 5. Межбиржевой спред ││ формула: zscore(price_binance - price_bybit, 24) ││ логика: Арбитражные возможности сигнализируют о неправильной цене ││ ││ 6. Социальный моментум ││ формула: rank(delta(social_volume, 1d)) * ││ sign(sentiment_score) ││ логика: Растущее позитивное внимание может опережать цену ││ │└─────────────────────────────────────────────────────────────────────────┘Стратегия реализации
Архитектура модулей
75_llm_factor_discovery/├── Cargo.toml├── README.md├── README.ru.md├── readme.simple.md├── readme.simple.ru.md├── src/│ ├── lib.rs # Корень библиотеки│ ├── discovery/│ │ ├── mod.rs # Модуль открытия│ │ ├── llm_client.rs # Клиент API LLM│ │ ├── prompt_builder.rs # Инженерия промптов│ │ ├── generator.rs # Генерация факторов│ │ └── refiner.rs # Уточнение факторов│ ├── parser/│ │ ├── mod.rs # Модуль парсера│ │ ├── expression.rs # AST выражений факторов│ │ ├── lexer.rs # Токенизатор│ │ └── validator.rs # Валидация выражений│ ├── evaluation/│ │ ├── mod.rs # Модуль оценки│ │ ├── ic.rs # Расчёт IC│ │ ├── backtester.rs # Движок бэктестинга│ │ └── metrics.rs # Метрики производительности│ ├── data/│ │ ├── mod.rs # Модуль данных│ │ ├── bybit.rs # Клиент Bybit│ │ ├── types.rs # Типы данных│ │ └── buffer.rs # Скользящие буферы│ ├── strategy/│ │ ├── mod.rs # Модуль стратегии│ │ ├── signals.rs # Генерация сигналов│ │ ├── combiner.rs # Комбинация факторов│ │ └── execution.rs # Исполнение ордеров│ └── utils/│ ├── mod.rs # Утилиты│ └── config.rs # Конфигурация├── examples/│ ├── basic_discovery.rs # Базовое открытие факторов│ ├── backtest_factors.rs # Демо бэктестинга│ └── live_trading.rs # Демо живого трейдинга├── experiments/│ └── test_factors.rs # Эксперименты с факторами└── tests/ └── integration.rs # Интеграционные тестыУправление рисками
Специфичные для факторов риски
┌────────────────────────────────────────────────────────────────────────┐│ Управление рисками открытия факторов │├────────────────────────────────────────────────────────────────────────┤│ ││ 1. Риск переобучения ││ ├── LLM может генерировать факторы, слишком подогнанные под данные ││ ├── Сложные выражения более склонны к переобучению ││ └── Митигация: ││ → Тестирование вне выборки (прокатывающая валидация) ││ → Штрафы за сложность (предпочитать простые выражения) ││ → Коррекция множественного тестирования (Бонферрони, BH) ││ ││ 2. Риск подсматривания данных ││ ├── Тестирование многих факторов увеличивает ложные открытия ││ ├── Обучающие данные LLM могут содержать известные факторы ││ └── Митигация: ││ → Отслеживать количество протестированных факторов ││ → Применять статистические коррекции ││ → Использовать holdout-периоды, не виденные при разработке ││ ││ 3. Риск смены режима ││ ├── Факторы могут перестать работать при смене рыночного режима ││ ├── Крипторынки имеют частые смены режимов ││ └── Митигация: ││ → Мониторинг затухания фактора (скользящий IC) ││ → Диверсификация по типам факторов ││ → Внедрение предохранителей (circuit breakers) ││ ││ 4. Риск галлюцинаций LLM ││ ├── LLM может генерировать бессмысленные выражения ││ ├── Может утверждать, что факторы работают без доказательств ││ └── Митигация: ││ → Строгая валидация выражений ││ → Всегда проверять реальными бэктестами ││ → Требовать экономическое обоснование ││ │└────────────────────────────────────────────────────────────────────────┘Размер позиций
Размер позиций для факторных стратегий:
1. Масштабирование по уверенности фактора: размер_позиции = базовый_размер × |сигнал_фактора| × оценка_уверенности
2. Масштабирование на основе IC: размер_позиции = базовый_размер × (скользящий_IC / целевой_IC) - Увеличивать позицию, когда фактор работает - Уменьшать, когда IC падает
3. Корректировка на волатильность: размер_позиции = целевая_вол / реализованная_вол × базовый_размер
4. Максимальные ограничения: - Макс. одна позиция: 10% портфеля (крипто) - Макс. экспозиция к фактору: 30% на тип фактора - Макс. общее плечо: 2x (консервативно)Метрики производительности
Метрики производительности факторов
| Метрика | Описание | Цель |
|---|---|---|
| IC (Информационный коэффициент) | Ранговая корреляция с доходностью | > 0.02 |
| IC_IR (Информационное отношение IC) | IC / std(IC) | > 0.3 |
| Sharpe Ratio | Доходность, скорректированная на риск | > 1.5 |
| Sortino Ratio | Доходность, скорректированная на нисходящий риск | > 2.0 |
| Максимальная просадка | Наибольшее падение от пика до дна | < 20% |
| Оборот | Скорость изменения позиций | < 50%/месяц |
| T-статистика | Статистическая значимость IC | > 2.0 |
| Время затухания | Период полураспада предсказательности | > 5 дней |
Метрики системы открытия
| Метрика | Описание | Цель |
|---|---|---|
| Hit Rate | Факторы, прошедшие валидацию | > 30% |
| Novel Factor Rate | Уникальные факторы (низкая корреляция) | > 20% |
| Задержка генерации | Время генерации пакета факторов | < 60с |
| Пропускная способность бэктеста | Факторов бэктестировано в час | > 100 |
| Улучшение уточнения | Прирост IC после итерации | > 20% |
Литература
-
Alpha-GPT: Human-AI Interactive Alpha Mining for Quantitative Investment
- URL: https://arxiv.org/abs/2308.00016
- Год: 2023
-
Alpha-GPT 2.0: Human-in-the-Loop AI for Quantitative Investment
- URL: https://arxiv.org/abs/2402.09746
- Год: 2024
-
Chain-of-Alpha: Unleashing the Power of Large Language Models for Alpha Mining
- URL: https://arxiv.org/abs/2508.06312
- Год: 2025
-
From Deep Learning to LLMs: A Survey of AI in Quantitative Investment
- URL: https://arxiv.org/abs/2503.21422
- Год: 2025
-
FinGPT: Open-Source Financial Large Language Models
- Yang, H., et al. (2023)
- URL: https://arxiv.org/abs/2306.06031
-
A Hybrid Approach to Formulaic Alpha Discovery with Large Language Model Assistance
- URL: https://journal.hep.com.cn/fcs/EN/10.1007/s11704-025-41061-5
- Год: 2025
-
Large Language Models in Equity Markets: Applications, Techniques, and Insights
- URL: https://pmc.ncbi.nlm.nih.gov/articles/PMC12421730/
- Год: 2025
-
Machine Learning for Factor Investing
- Coqueret, G., & Guida, T. (2020). Chapman & Hall/CRC
-
Quantitative Equity Portfolio Management
- Chincarini, L., & Kim, D. (2006). McGraw-Hill
Следующие шаги
- Простое объяснение - Версия для начинающих
- English Version - Английская версия
- Примеры - Рабочий код на Rust
Глава 75 Machine Learning for Trading