Глава 231: VAE факторная модель для финансовых рынков
В этой главе рассматриваются вариационные автоэнкодеры (VAE) как инструмент для обнаружения скрытых факторов риска на финансовых рынках. Мы показываем, как латентное пространство VAE естественным образом соответствует концепциям факторных моделей, обеспечивая нелинейное обобщение классических подходов, таких как PCA и модель Фамы-Френча. Реализация выполнена на языке Rust с использованием данных биржи Bybit.
Содержание
- Введение
- Математические основы
- Факторные модели и VAE
- Торговые приложения
- Расцеплённые факторы
- Обзор реализации
- Интеграция с Bybit
- Ключевые выводы
Введение
Традиционные факторные модели в финансах предполагают, что поперечное сечение доходностей активов обусловлено небольшим числом скрытых факторов риска. Метод главных компонент (PCA) обнаруживает эти факторы, находя ортогональные направления максимальной дисперсии в ковариационной матрице доходностей, тогда как модель Фамы-Френча предлагает заранее определённые факторы, такие как рыночная бета, размер и стоимость. Оба подхода имеют фундаментальное ограничение: они предполагают линейную связь между факторами и доходностями.
Однако финансовые рынки изобилуют нелинейностями. Кластеризация волатильности, смены режимов, асимметричная динамика обвалов и сложные межактивные зависимости — всё это указывает на то, что истинный процесс генерации данных далёк от линейного. Вариационный автоэнкодер предлагает элегантное решение: он обучает низкоразмерное латентное представление данных через нелинейную архитектуру энкодера-декодера, при этом вероятностная структура обеспечивает калиброванные оценки неопределённости и возможность генерации новых синтетических данных.
Ключевое понимание, связывающее VAE с факторными моделями, поразительно просто. В линейной факторной модели наблюдаемые доходности x генерируются как x = Bf + e, где B — матрица факторных нагрузок, f — вектор значений факторов, а e — идиосинкратический шум. В VAE сеть декодера отображает латентный вектор z в реконструированные наблюдения через нелинейную функцию. Если мы интерпретируем латентные переменные z как факторы риска, а декодер — как обобщённую (нелинейную) функцию факторных нагрузок, то VAE становится универсальной нелинейной факторной моделью.
В этой главе мы разрабатываем математику, стоящую за этим соответствием, реализуем VAE-факторную модель на Rust, обучаем её на мультиактивных данных криптовалют с Bybit и демонстрируем практические торговые приложения, включая извлечение факторов, генерацию сценариев и декомпозицию рисков.
Математические основы
Целевая функция VAE
Вариационный автоэнкодер обучает генеративную модель данных x, вводя латентные переменные z и оптимизируя вычислимую нижнюю границу логарифма правдоподобия. Генеративный процесс предполагает:
- Выборка латентных факторов из априорного распределения: z ~ p(z) = N(0, I)
- Генерация наблюдений из декодера: x ~ p_theta(x|z)
Поскольку истинное апостериорное распределение p(z|x) невычислимо, мы вводим приближённое апостериорное распределение (энкодер) q_phi(z|x) и оптимизируем вариационную нижнюю границу (ELBO):
ELBO = E_{q_phi(z|x)}[log p_theta(x|z)] - KL[q_phi(z|x) || p(z)] \_______________________________/ \________________________/ Член реконструкции Член KL-дивергенцииЧлен реконструкции побуждает декодер точно восстанавливать входные данные из латентных факторов. В финансах это означает, что модель должна выучить латентное представление, из которого можно восстановить исходные временные ряды доходностей. Член KL-дивергенции регуляризует латентное пространство, подталкивая приближённое апостериорное распределение к стандартному нормальному априорному, предотвращая запоминание обучающих данных и обеспечивая гладкое, хорошо структурированное латентное пространство.
Энкодер: q_phi(z|x)
Сеть энкодера отображает наблюдаемые данные (например, мультиактивные доходности) в параметры гауссовского распределения над латентными факторами:
q_phi(z|x) = N(z; mu_phi(x), diag(sigma^2_phi(x)))где mu_phi(x) и log(sigma^2_phi(x)) — выходы нейронной сети с параметрами phi. Каждое входное наблюдение отображается в вектор средних и вектор логарифмов дисперсий той же размерности, что и латентное пространство. Предположение о диагональной ковариации сохраняет модель вычислимой, позволяя при этом каждому латентному измерению иметь различную дисперсию.
Декодер: p_theta(x|z)
Сеть декодера отображает латентные факторы обратно в пространство наблюдений:
p_theta(x|z) = N(x; f_theta(z), sigma^2_x * I)где f_theta(z) — нелинейная функция, параметризованная нейронной сетью. В контексте факторных моделей этот декодер играет роль обобщённой матрицы факторных нагрузок, отображая абстрактные факторы риска в конкретные доходности активов.
Трюк репараметризации
Для обеспечения возможности оптимизации на основе градиентов через стохастический шаг выборки VAE использует трюк репараметризации. Вместо прямой выборки из q_phi(z|x) мы записываем:
z = mu + sigma * epsilon, epsilon ~ N(0, I)Эта переформулировка переносит стохастичность на входную шумовую переменную epsilon, которая не зависит от параметров модели, позволяя градиентам проходить через mu и sigma к весам энкодера.
KL-дивергенция в замкнутой форме
Для двух гауссовских распределений KL-дивергенция имеет решение в замкнутой форме:
KL[q_phi(z|x) || p(z)] = -0.5 * sum_j (1 + log(sigma_j^2) - mu_j^2 - sigma_j^2)где суммирование идёт по всем латентным измерениям j. Это выражение штрафует латентные измерения, чьё среднее отклоняется от нуля или чья дисперсия отклоняется от единицы, побуждая модель эффективно использовать каждое измерение.
Факторные модели и VAE
Латентное z как факторы риска
В классической линейной факторной модели:
КЛАССИЧЕСКАЯ ФАКТОРНАЯ МОДЕЛЬ:===================================================================
x = B * f + e
x: N-мерный вектор доходностей (N активов) B: матрица факторных нагрузок N x K f: K-мерный вектор факторов e: N-мерный идиосинкратический шум
Ключевое допущение: ЛИНЕЙНОСТЬ===================================================================
VAE ФАКТОРНАЯ МОДЕЛЬ:===================================================================
z ~ N(mu_phi(x), sigma^2_phi(x)) [энкодер извлекает факторы] x_hat = f_theta(z) [декодер применяет нагрузки]
z: K-мерный вектор латентных факторов f_theta: нелинейная функция факторных нагрузок sigma^2_phi: оценки неопределённости факторов
Ключевое преимущество: НЕЛИНЕЙНОСТЬ + НЕОПРЕДЕЛЁННОСТЬ===================================================================Соответствие прямое: латентный вектор z играет роль значений факторов f, сеть декодера — роль матрицы нагрузок B, а ошибка реконструкции соответствует идиосинкратическому шуму e. Критическое отличие в том, что как извлечение факторов (энкодер), так и отображение факторов в доходности (декодер) являются нелинейными, что позволяет модели улавливать сложную рыночную динамику, которую линейные модели упускают.
Связь с PCA
PCA является частным случаем VAE, где и энкодер, и декодер линейны, а вес KL-регуляризации установлен в ноль. В частности, если мы ограничим энкодер и декодер линейными отображениями (однослойные сети без функций активации), латентные измерения VAE сойдутся к главным компонентам данных. KL-регуляризация в полном VAE добавляет важное преимущество: она вращает и масштабирует факторы так, чтобы они были независимыми и имели единичную дисперсию, обеспечивая более интерпретируемую декомпозицию.
Связь с моделью Фамы-Френча
Модель Фамы-Френча использует заранее определённые факторы (рынок, размер, стоимость, моментум и т.д.), которые строятся из наблюдаемых характеристик. VAE обнаруживает факторы чисто из данных, без какого-либо предварительного определения. Факторы VAE могут улавливать те же явления, что и факторы Фамы-Френча (и эмпирически часто это делают, особенно первые несколько компонент), но они также могут обнаруживать новые факторы, которые трудно предопределить вручную, такие как сложные нелинейные взаимодействия между активами или зависящие от режима рисковые экспозиции.
Торговые приложения
Обнаружение нелинейных факторов
Наиболее прямое применение — обнаружение скрытых факторов риска, движущих поперечным сечением доходностей. Обучая VAE на мультиактивных доходностях и исследуя латентное пространство, трейдеры могут выявить:
- Доминирующие рыночные режимы: Латентные измерения, объясняющие наибольшую дисперсию, обычно соответствуют широким рыночным движениям, секторным ротациям или динамике «риск-вкл/риск-выкл».
- Нелинейные взаимодействия: В отличие от PCA-факторов, VAE-факторы могут улавливать асимметричные реакции (например, активы, которые ведут себя по-разному на растущих и падающих рынках).
- Изменяющаяся во времени структура факторов: Анализируя, как отображение энкодера меняется со временем, можно обнаружить сдвиги в факторной структуре, которые могут сигнализировать о смене режимов.
Генерация синтетических рыночных сценариев
Генеративная природа VAE позволяет производить выборку из латентного пространства для создания синтетических, но реалистичных рыночных сценариев:
КОНВЕЙЕР ГЕНЕРАЦИИ СЦЕНАРИЕВ:===================================================================
1. Выборка z ~ N(0, I) или z ~ N(mu_стресс, sigma_стресс) 2. Декодирование: x_синт = f_theta(z) 3. Использование x_синт для: - Стресс-тестирования портфелей - Монте-Карло расчётов риска - Аугментации обучающих данных - Анализа «что если»
Преимущество перед исторической симуляцией: - Может генерировать сценарии, никогда не встречавшиеся в истории - Сценарии учитывают выученную корреляционную структуру - Можно нацеливать на конкретные факторные режимы, обуславливая z===================================================================Декомпозиция рисков
Энкодер обеспечивает естественную декомпозицию портфельного риска на факторную и идиосинкратическую компоненты:
- Факторный риск: Кодирование портфельных доходностей для получения латентных факторов и их неопределённостей. Дисперсия латентных факторов количественно определяет систематический риск.
- Идиосинкратический риск: Ошибка реконструкции (разница между фактическими и декодированными доходностями) количественно определяет специфический для актива риск, не объяснённый латентными факторами.
- Атрибуция факторов: Возмущая отдельные латентные измерения и наблюдая эффект на декодированные доходности, можно приписать портфельный риск конкретным латентным факторам.
Расцеплённые факторы
Стандартный VAE может обучить факторы, которые переплетены — каждое латентное измерение улавливает смесь нескольких рыночных явлений. Для торговых приложений часто желательно иметь расцеплённые факторы, где каждое латентное измерение соответствует единственному, интерпретируемому рыночному драйверу.
Beta-VAE для расцепления
Beta-VAE модифицирует ELBO, масштабируя член KL-дивергенции:
ELBO_beta = E[log p(x|z)] - beta * KL[q(z|x) || p(z)]При beta > 1 более сильное давление регуляризации заставляет модель использовать каждое латентное измерение более эффективно, способствуя расцеплению. Каждое измерение подталкивается к улавливанию статистически независимого источника вариации. На финансовых рынках это может разделить:
- Измерение 1: Общее направление рынка (аналог рыночной беты)
- Измерение 2: Относительная стоимость между крупно- и малокапитализированными криптовалютами
- Измерение 3: Режим волатильности (высокая vs. низкая волатильность)
- Измерение 4: Динамика моментума vs. возврата к среднему
Компромисс заключается в том, что более высокие значения beta снижают качество реконструкции. На практике beta между 1.0 и 4.0 обычно обеспечивает хороший баланс между расцеплением и точностью реконструкции для финансовых данных.
Измерение расцепления
Для проверки того, что обученные факторы действительно расцеплены, можно:
- Корреляционный анализ: Вычислить корреляционную матрицу латентных активаций по обучающей выборке. Расцеплённые факторы должны показывать близкие к нулю внедиагональные корреляции.
- Анализ траверсов: Варьировать одно латентное измерение, удерживая остальные фиксированными, и наблюдать, какие аспекты декодированного выхода изменяются. Расцеплённый фактор должен влиять на единственный, когерентный аспект рынка.
- Коэффициенты Шарпа факторов: Построить лонг-шорт портфели на основе экспозиций к отдельным латентным факторам. Расцеплённые факторы должны производить потоки доходностей с различными профилями риска/доходности.
Обзор реализации
Реализация на Rust в этой главе предоставляет полную VAE-факторную модель со следующими компонентами:
Базовая архитектура
// VAE состоит из сетей энкодера и декодера// Энкодер: input_dim -> hidden_dim -> (mu, log_var) размерности latent_dim// Декодер: latent_dim -> hidden_dim -> input_dim
pub struct VaeFactor { // Веса энкодера encoder_w1: Array2<f64>, // вход -> скрытый encoder_b1: Array1<f64>, encoder_w_mu: Array2<f64>, // скрытый -> mu encoder_b_mu: Array1<f64>, encoder_w_logvar: Array2<f64>, // скрытый -> log_var encoder_b_logvar: Array1<f64>,
// Веса декодера decoder_w1: Array2<f64>, // латентный -> скрытый decoder_b1: Array1<f64>, decoder_w2: Array2<f64>, // скрытый -> выход decoder_b2: Array1<f64>,
pub config: VaeConfig,}Цикл обучения
Цикл обучения выполняет стохастический градиентный спуск по отрицательному ELBO. На каждой итерации:
- Прямой проход через энкодер для получения mu и log_var
- Выборка z с использованием трюка репараметризации
- Прямой проход через декодер для реконструкции входа
- Вычисление потерь ELBO (MSE реконструкции + beta * KL-дивергенция)
- Обратное распространение градиентов через всю сеть
- Обновление весов методом градиентного спуска
Извлечение и анализ факторов
После обучения модель предоставляет:
encode(): Отображает рыночные наблюдения в значения латентных факторов с оценками неопределённостиdecode(): Отображает значения факторов в прогнозируемые рыночные доходностиgenerate_scenarios(): Производит выборку из априорного распределения для создания синтетических рыночных сценариевfactor_loadings(): Вычисляет чувствительность каждого актива к каждому латентному фактору методом конечных разностей
Интеграция с Bybit
Реализация получает реальные рыночные данные с биржи Bybit через её публичный REST API:
// Получение данных свечей для нескольких активовlet symbols = vec!["BTCUSDT", "ETHUSDT", "SOLUSDT"];let loader = BybitDataLoader::new();
for symbol in &symbols { let candles = loader.fetch_klines(symbol, "1h", 500).await?; // Обработка свечей в ряды доходностей...}Интеграция с Bybit позволяет обучать модель на реальных данных криптовалютного рынка по нескольким активам, улавливая реальную межактивную динамику и корреляции. Мультиактивная матрица доходностей служит входом для VAE, где каждая строка — это временной шаг, а каждый столбец — доходность актива.
Предобработка данных
Доходности вычисляются как логарифмические доходности и стандартизируются (нулевое среднее, единичная дисперсия) перед подачей в VAE. Эта нормализация критически важна, потому что:
- Она приводит все активы к сопоставимому масштабу независимо от их ценовых уровней
- Она центрирует данные вокруг нуля, что соответствует априорному распределению с нулевым средним в латентном пространстве
- Она улучшает поток градиентов при обучении, избегая очень больших или очень малых активаций
Ключевые выводы
-
VAE обобщают линейные факторные модели: Латентное пространство VAE является нелинейным аналогом факторного пространства в PCA или моделях Фамы-Френча. Энкодер извлекает факторы, а декодер применяет (нелинейные) факторные нагрузки.
-
ELBO обеспечивает принципиальную целевую функцию: Член реконструкции гарантирует информативность факторов, а член KL-дивергенции обеспечивает регулярность и хорошую структуру факторного пространства.
-
Репараметризация позволяет сквозное обучение: Трюк репараметризации позволяет оптимизировать на основе градиентов через стохастический шаг выборки, делая всю модель дифференцируемой.
-
Расцепление улучшает интерпретируемость: Использование beta-VAE с beta > 1 побуждает каждое латентное измерение улавливать отдельное рыночное явление, делая факторы более интерпретируемыми и полезными для управления рисками.
-
Генерация сценариев выходит за рамки исторических данных: Путём выборки из латентного пространства трейдеры могут генерировать синтетические, но реалистичные рыночные сценарии, которые никогда не встречались исторически, обеспечивая более надёжное стресс-тестирование.
-
Факторные нагрузки раскрывают чувствительности активов: Якобиан декодера (аппроксимированный методом конечных разностей) показывает, как каждый актив реагирует на каждый латентный фактор.
-
Криптовалютные рынки — идеальные полигоны: Высокая волатильность, круглосуточная торговля и сложная межактивная динамика крипторынков предоставляют богатую структуру для VAE-факторных моделей.
-
Rust обеспечивает производственную производительность: Реализация на Rust обеспечивает безопасность памяти без сборки мусора, что делает её подходящей для мониторинга факторов и расчёта рисков в реальном времени в производственных торговых системах.
Ресурсы
- Kingma & Welling (2013). Auto-Encoding Variational Bayes. arXiv:1312.6114
- Higgins et al. (2017). beta-VAE: Learning Basic Visual Concepts with a Constrained Variational Framework. ICLR 2017
- Gu, Kelly & Xiu (2020). Autoencoder Asset Pricing Models. Journal of Econometrics
- Chen et al. (2020). Deep Learning in Asset Pricing. Management Science
- Документация Bybit API: https://bybit-exchange.github.io/docs/v5/intro