Глава 103: Каузальные леса в финансах
Обзор
Каузальные леса — непараметрический метод машинного обучения для оценки неоднородных эффектов лечения, то есть того, как причинное воздействие вмешательства меняется в зависимости от различных единиц и контекстов. Введённые Вагером и Атей (2018) и обобщённые в рамках обобщённых случайных лесов (GRF) Атей, Тибширани и Вагером (2019), каузальные леса расширяют алгоритм случайного леса для таргетирования условного среднего эффекта лечения (CATE), а не условного среднего результата. В отличие от методов, оценивающих единственный средний эффект лечения, каузальные леса производят персонализированную оценку эффекта для каждого наблюдения, обеспечивая детальный анализ неоднородности, бесценный в финансовых приложениях.
В финансах и алгоритмической торговле неоднородные эффекты лечения — норма, а не исключение. Влияние сюрприза прибыли на доходность акций кардинально отличается в зависимости от размера компании, охвата аналитиков, институционального владения и рыночных условий. Эффект экстремальной ставки финансирования на цены криптовалют варьируется в зависимости от рыночного режима, ликвидности и уровня открытого интереса. Каузальные леса позволяют трейдерам выявить, какие активы, при каких условиях, демонстрируют наибольший причинный отклик на сигнал, что позволяет более точно определять размеры позиций, улучшать управление рисками и обнаруживать торговые возможности, невидимые для методов, оценивающих только средние эффекты.
В данной главе развивается теория и практика каузальных лесов для финансовых приложений, рассматриваются алгоритм GRF, честное построение деревьев, локальное центрирование и построение доверительных интервалов. Предоставляются полные реализации на Python и Rust с использованием данных yfinance и Bybit, с комплексной системой бэктестинга, демонстрирующей превосходство стратегий на основе CATE над подходами на основе ATE.
Содержание
- Введение в каузальные леса
- Математическая основа
- Каузальные леса против конкурирующих методов
- Торговые приложения
- Реализация на Python
- Реализация на Rust
- Практические примеры с данными акций и криптовалют
- Система бэктестинга
- Оценка производительности
- Дальнейшие направления
Введение в каузальные леса
Проблема: неоднородность эффектов лечения на рынках
Финансовые рынки характеризуются крайней неоднородностью. Один и тот же сигнал, генерирующий +3% альфы в акциях малой капитализации, может давать -0,5% альфы в крупных компаниях. Сюрприз прибыли важнее, когда охват аналитиков низок. Экстремальная ставка финансирования предсказывает более сильные развороты в режимах низкой ликвидности. Методы, оценивающие только средний эффект лечения (ATE), полностью упускают эту структуру.
Подход ATE (неполный):
ATE = E[Y(1) - Y(0)] = θ (одно число)Подход CATE (более богатый):
CATE(x) = τ(x) = E[Y(1) - Y(0) | X = x] (функция признаков)CATE отвечает на вопрос: «Для актива с характеристиками X = x каков причинный эффект лечения?»
Решение с каузальными лесами
Каузальные леса оценивают τ(x) непараметрически, адаптируя случайные леса для таргетирования неоднородности эффектов лечения. Ключевые нововведения по сравнению со стандартными лесами:
- Честное разбиение: разные подвыборки используются для построения структуры дерева и оценки значений листьев — устраняет смещение переобучения в оценках эффектов
- Неймановско-ортогональные оценки: каждое дерево таргетирует псевдорезультат, корректирующий конфаундинг (через остаточизацию, как в DML)
- Локальное центрирование: предварительная остаточизация Y и D с использованием кросс-подогнанных моделей до запуска леса, улучшающая производительность в конечных выборках при сильном конфаундинге
В результате получается лес, производящий асимптотически нормальные, поточечно состоятельные оценки CATE с допустимыми доверительными интервалами — редкость в непараметрическом причинном выводе.
Почему каузальные леса работают для трейдинга
| Аспект | Методы среднего эффекта | Каузальный лес |
|---|---|---|
| Детализация | Одно число | Оценка на актив, на условие |
| Обнаружение неоднородности | Нет | Да (через важность переменных) |
| Доверительные интервалы | Да (для ATE) | Да (поточечно, для CATE) |
| Размер позиции | Равномерный | Пропорциональный τ̂(x) |
| Чувствительность к режиму | Не явная | Естественно захватывается |
| Защита от переобучения | Н/П | Гарантии честности |
Математическая основа
Обобщённые случайные леса (GRF)
Каузальные леса — частный случай GRF, который решает задачу локальных оценивающих уравнений. Для параметра θ(x), удовлетворяющего:
E[ψ_{Y,D}(θ(x)) | X = x] = 0GRF строит адаптивные веса ядра α_i(x) с помощью леса, затем решает:
θ̂(x) = argmin_θ Σᵢ αᵢ(x) · ψ_{Yᵢ,Dᵢ}(θ)Для каузального леса функция оценки — это неймановско-ортогональная оценка из PLM:
ψ_{Y,D}(τ) = (Y - ℓ(X) - τ(D - m(X))) · (D - m(X))Где ℓ(X) = E[Y|X] и m(X) = E[D|X] — функции мешанины, оцениваемые вспомогательными регрессиями (локальное центрирование).
Построение дерева: честное разбиение
Честность означает разбиение выборки на две части:
S_J(разбивающая выборка): используется для определения структуры дерева (переменных разбиения и точек разреза)S_I(оценивающая выборка): используется для вычисления оценок листьев
Для листа L(x), содержащего запросную точку x:
τ̂(x) = (Σᵢ∈Sᵢ∩L(x) α̃ᵢ Ũᵢ) / (Σᵢ∈Sᵢ∩L(x) α̃ᵢ Ṽᵢ)Где Ũᵢ = Yᵢ - ℓ̂(Xᵢ) и Ṽᵢ = Dᵢ - m̂(Xᵢ) — остатки от локального центрирования.
Критерий разбиения
Критерий разбиения каузального леса максимизирует неоднородность эффектов лечения в дочерних узлах:
Δ(C₁, C₂) = n₁n₂/(n₁+n₂) · (τ̂(C₁) - τ̂(C₂))²Где C₁, C₂ — кандидаты двух дочерних узлов, а τ̂(Cₖ) — оценённый эффект внутри каждой группы.
Асимптотическая теория и доверительные интервалы
При условиях регулярности оценщик каузального леса удовлетворяет поточечной нормальности:
(τ̂(x) - τ(x)) / σ̂(x) → N(0, 1)Где σ̂(x) оценивается через оценщик дисперсии инфинитезимального джекнайфа (IJ):
σ̂²_IJ(x) = Σᵢ Cov²(Tᵢ, αᵢ(x))Tᵢ считает, сколько деревьев в лесу включают наблюдение i. Этот оценщик IJ вычислительно эффективен и не требует дорогостоящего бутстрепа.
Важность переменных
Каузальные леса предоставляют естественную меру важности переменных:
VI(j) = Σ_разбиений (прирост от использования переменной j) / всего разбиенийЭто определяет, какие признаки движут неоднородностью эффектов лечения — ключевое для понимания почему эффект варьируется.
Каузальные леса против конкурирующих методов
Сравнение оценщиков неоднородных эффектов лечения
| Метод | Непараметрический | Допустимые ДИ | Честность | Высокоразм. X | Скорость |
|---|---|---|---|---|---|
| Линейная модель взаимодействия | Нет | Да | Н/П | Нет | Быстро |
| BART (байесовский) | Да | Да (байесовский) | Нет | Умеренно | Медленно |
| Мета-обучатели (T/S/X) | Да (с базовым ML) | Нет | Нет | Да | Умеренно |
| Каузальный лес (GRF) | Да | Да (частотный) | Да | Да | Умеренно |
| Нейронные CATE-оценщики | Да | Обычно нет | Нет | Да | Медленно/Быстро |
Сравнение мета-обучателей
Мета-обучатели — популярные альтернативы; каузальные леса превосходят их в большинстве условий:
T-обучатель: раздельные модели результатов для леченных и контрольных; разница — CATE. Прост, но смещён при неслучайном назначении лечения.
S-обучатель: единая модель с лечением как признаком. Регуляризация сжимает CATE к нулю.
X-обучатель (Кюнцель и соавт.): итеративный подход с использованием остатков лечения и контроля. Хорош при несбалансированном лечении.
Преимущество каузального леса: честность и неймановская ортогональность дают теоретические гарантии, которых лишены мета-обучатели. В финансовых приложениях это транслируется в более надёжные оценки CATE вне выборки.
Торговые приложения
1. Оценка CATE для сюрприза прибыли
Применение: для каждой акции оценить персонализированный причинный эффект сюрприза прибыли на 20-дневную посланнонсментную доходность при заданных характеристиках компании.
- Лечение D: стандартизированная неожиданная прибыль (SUE)
- Результат Y: 20-дневная кумулятивная доходность после объявления
- Признаки X: рыночная капитализация, число аналитиков, институциональное владение %, короткий интерес, предшествующий 3-месячный моментум, сектор, сезонный фактор объявлений
Торговое применение:
# Оценить CATE для каждой акции во вселеннойcate_estimates = causal_forest.predict(X_test)# Лонг акций с наибольшим положительным CATE при сильной прибыли# Шорт акций с наименьшим (наиболее отрицательным) CATE при слабой прибыли# Размер позиции пропорционален |τ̂(x)| / σ̂(x) (взвешивание как Шарп)2. Режимно-условная сила сигнала
Применение: оценить, как причинный эффект сигнала моментума на доходность варьируется с рыночным режимом (уровень VIX, кредитный спред, кривая доходности).
- Лечение D: дециль кросс-секционного моментума (верхний = 1, нижний = 0)
- Результат Y: избыточная доходность следующего месяца
- Признаки X (переменные режима): перцентиль VIX, изменение спреда HY, наклон кривой доходности, корреляция акций и облигаций (30д), кросс-секционный разброс доходности
Вывод: каузальный лес обнаруживает, что причинный эффект моментума положителен и велик в режимах низкого VIX, но близок к нулю или отрицателен при высоком VIX — позволяя динамически активировать стратегию.
3. Неоднородный эффект ставки финансирования крипто (Bybit)
Применение: оценить CATE экстремальных ставок финансирования на последующую доходность BTC/ETH при условии состояния рыночной микроструктуры.
- Лечение D: бинарный индикатор экстремальной ставки финансирования (|финансирование| > 0,05%)
- Результат Y: 8-часовая доходность после наблюдения ставки финансирования
- Признаки X: изменение OI, дисбаланс объёма (соотношение покупок/продаж), спред, 24-часовая волатильность, доминирование BTC, соотношение лонг/шорт (данные Bybit)
Открытие: каузальный лес обнаруживает, что экстремальные ставки финансирования предсказывают более сильный разворот при высоком OI и снижающемся объёме — механизм, обусловленный ликвидностью, не захватываемый анализом ATE.
4. Оптимальный размер ордера через CATE
Применение: использовать каузальный лес для оценки неоднородного влияния на цену разных размеров ордеров при условии рыночных условий для оптимального исполнения.
- Лечение D: размер ордера (% от среднедневного объёма)
- Результат Y: отклонение средневзвешенной цены (проскальзывание)
- Признаки X: время суток, спред, глубина по лучшей цене, недавняя волатильность, направление ордера
Применение: оценённый CATE τ̂(x) даёт предельное влияние на цену для данного рыночного состояния, позволяя истинно адаптивное определение размера ордеров.
5. Оценка политики: корректировка факторной экспозиции
Применение: оценить неоднородный причинный эффект изменения факторной экспозиции (например, увеличения беты) на коэффициент Шарпа портфеля в различных рыночных режимах.
- Лечение D: изменение беты портфеля (построенное через фьючерсы)
- Результат Y: 30-дневный форвардный коэффициент Шарпа
- Признаки X: режим рыночной волатильности, оценка переполненности фактора, фаза экономического цикла, размер портфеля
Применение: определяет, когда (в каком режиме/состоянии портфеля) увеличение беты улучшает доходность с поправкой на риск, позволяя динамические наклоны факторов.
Реализация на Python
Основной модуль
Реализация на Python предоставляет:
- CausalForestEstimator: обёртка вокруг
econml/grfс утилитами финансовых данных - LocalCenteringPipeline: предварительная остаточизация Y и D с использованием кросс-подогнанных моделей ML
- CATESignalGenerator: оценки CATE на актив для построения сигналов
- CATEBacktester: бэктестинг портфеля с взвешиванием по CATE
Базовое использование
from python.causal_forest import CausalForestEstimatorfrom python.data_loader import CausalForestDataLoaderfrom econml.grf import CausalForestimport yfinance as yf
# Загрузка данных акций с признакамиloader = CausalForestDataLoader( universe="sp500", source="yfinance", feature_set="fundamental_technical", lookback_years=5,)data = loader.load(start_date="2019-01-01", end_date="2024-01-01")
# Подгонка каузального лесаcf = CausalForestEstimator( n_estimators=2000, min_samples_leaf=10, max_depth=None, honest=True, # Использовать честное разбиение local_centering=True, # Предварительная остаточизация (рекомендуется) inference=True, # Вычислять доверительные интервалы n_jobs=-1,)cf.fit( Y=data["forward_return"], T=data["earnings_surprise"], X=data["features"],)
# Оценить CATE для тестового набораcate_estimates = cf.effect(data["features_test"])cate_intervals = cf.effect_interval(data["features_test"], alpha=0.05)
print(f"Средний CATE: {cate_estimates.mean():.4f}")print(f"Стд CATE: {cate_estimates.std():.4f}")print(f"Доля CATE > 0: {(cate_estimates > 0).mean():.1%}")Построение CATE-портфеля
from python.signals import CATEPortfolioSignalimport pandas as pd
# Получение признаков крипто с Bybit для оценки CATEfrom python.bybit_loader import BybitDataLoaderbybit = BybitDataLoader()crypto_features = bybit.fetch_multi_asset_features( symbols=["BTCUSDT", "ETHUSDT", "SOLUSDT", "BNBUSDT"], interval="4h", limit=2000,)
portfolio_builder = CATEPortfolioSignal( causal_forest=cf, min_cate_zscore=1.0, # Минимальный нормализованный CATE для торговли max_position_size=0.20, # Макс 20% в одной позиции use_ci_weighting=True, # Взвешивание по CATE / σ(CATE))
portfolio = portfolio_builder.construct( features=crypto_features, treatment="funding_extreme",)
print(portfolio[["symbol", "cate", "cate_se", "position_weight"]].to_string())Анализ важности переменных
# Определить, какие признаки движут неоднородностью эффектов леченияimportance = cf.feature_importances_feature_names = data["feature_names"]
importance_df = pd.DataFrame({ "feature": feature_names, "importance": importance,}).sort_values("importance", ascending=False)
print("Главные движущие силы неоднородности сюрприза прибыли:")print(importance_df.head(10).to_string(index=False))Реализация на Rust
Обзор
Реализация на Rust обеспечивает высокопроизводительный каузальный лес для производственной оценки CATE с данными Bybit:
reqwestиtokioдля интеграции с Bybit API- Собственная реализация честного дерева с субвыборкой
- Оценка дисперсии инфинитезимального джекнайфа для доверительных интервалов
rayonдля параллельного обучения и вывода деревьев
Быстрый старт
use causal_forest_trading::{ CausalForest, BybitClient, FeatureMatrix, CausalForestConfig, BacktestEngine,};
#[tokio::main]async fn main() -> anyhow::Result<()> { // Получение мультиактивных данных с Bybit let client = BybitClient::new("YOUR_API_KEY", "YOUR_API_SECRET");
let btc_data = client.fetch_klines("BTCUSDT", "240", 2000).await?; let eth_data = client.fetch_klines("ETHUSDT", "240", 2000).await?; let sol_data = client.fetch_klines("SOLUSDT", "240", 2000).await?;
// Построение матрицы признаков let features = FeatureMatrix::from_multi_asset(vec![ &btc_data, ð_data, &sol_data, ]) .with_technical_features() .with_microstructure_features() .build()?;
// Лечение: экстремальная ставка финансирования; Результат: доходность следующих 8ч let treatment = btc_data.funding_extreme_indicator(threshold=0.0005); let outcome = btc_data.forward_return(1);
// Настройка и подгонка каузального леса let config = CausalForestConfig { n_estimators: 2000, min_samples_leaf: 10, sample_fraction: 0.5, honest: true, local_centering: true, compute_oob_predictions: true, };
let mut forest = CausalForest::new(config); forest.fit(&outcome, &treatment, &features)?;
// Оценить CATE для последнего наблюдения let latest_features = features.last_row(); let (cate, cate_se) = forest.predict_with_se(&latest_features)?;
println!("Оценка CATE: {:.4}", cate); println!("Ст. ош. CATE: {:.4}", cate_se); println!("95% ДИ: ({:.4}, {:.4})", cate - 1.96*cate_se, cate + 1.96*cate_se);
// Важность переменных let importance = forest.feature_importances(); println!("Топ-3 движущих силы CATE: {:?}", &importance[..3]);
Ok(())}Структура проекта
103_causal_forests_finance/├── Cargo.toml├── src/│ ├── lib.rs│ ├── model/│ │ ├── mod.rs│ │ └── causal_forest.rs│ ├── data/│ │ ├── mod.rs│ │ └── bybit.rs│ ├── backtest/│ │ ├── mod.rs│ │ └── engine.rs│ └── trading/│ ├── mod.rs│ └── signals.rs└── examples/ ├── basic_causal_forest.rs ├── bybit_hte_analysis.rs └── backtest_strategy.rsПрактические примеры с данными акций и криптовалют
Пример 1: Неоднородные эффекты сюрприза прибыли (S&P 500, yfinance)
Оценка персонализированного причинного влияния сюрприза прибыли на посланнонсментный дрейф:
- Лечение D: стандартизированная неожиданная прибыль (верхний/нижний квинтиль = 1/0)
- Результат Y: 20-дневная избыточная доходность после объявления
- Признаки X: 25 признаков, включая логарифм рыночной капитализации, число аналитиков, институциональное владение, 3-месячный моментум, реализованная волатильность (21д), коэффициент короткого интереса, секторальный one-hot (11 секторов), дивидендная доходность, P/E
- Лес: 2000 честных причинных деревьев, мин. 10 наблюдений на лист, локальное центрирование с градиентным бустингом мешанины
# Результаты для событий прибыли S&P 500 (2018-2024, N=8 412 событий):# Средний CATE (ATE): +2,1% (близко к оценке МНК +1,9%)# Стандартное отклонение CATE: 1,8% ← большая неоднородность# Межквартильный диапазон CATE: [+0,6%, +3,4%]## Главные движущие силы CATE (важность переменных):# 1. Охват аналитиков (низкий охват → более высокий CATE)# 2. Предшествующий моментум (низкий моментум → более высокая чувствительность к сюрпризу)# 3. Институциональное владение (низкое институц. → более высокий CATE)## Торговая стратегия: Лонг верхнего квинтиля CATE при положительных сюрпризах# Шарп, взвешенный по CATE: 1,64 vs. Шарп, основанный на ATE: 0,97# CATE-стратегия превосходит в 4 из 6 лет; худший год: -3,2%Пример 2: CATE ставки финансирования BTC (данные Bybit)
Неоднородные эффекты лечения экстремальных ставок финансирования на спотовые доходности BTC:
- Лечение D: бинарный индикатор для |ставка финансирования| > 0,05% (Bybit BTCUSDT-PERP)
- Результат Y: следующая 8-часовая доходность спот BTC
- Признаки X: 15 признаков — OI (нормализованный), темп изменения OI, дисбаланс объёма (соотношение покупок/продаж), спред, 24-часовая реализованная волатильность, доминирование BTC, соотношение лонг/шорт, 4-часовой моментум цены, 1-часовой моментум, ставка финансирования ETH (перетекание), глобальный прокси риска (обратный DXY), sin/cos-кодировка времени суток
- Лес: 1500 честных причинных деревьев, 5-кратное локальное центрирование (мешанина случайного леса)
# Результаты по 4-часовым данным Bybit (2022-2024, N=4 380 наблюдений):# ATE экстремального финансирования: -0,43% за 8ч (средний разворот)# Распределение CATE: среднее -0,43%, стд 0,67%, диапазон [-2,1%, +0,9%]## Подгруппа высокого воздействия (CATE < -1,0%):# → OI высокий (верхний терциль) И дисбаланс объёма снижается И доминирование падает# → Интерпретация: переполненные лонги разматываются на тонком рынке# → CATE в этой подгруппе: -1,74% за 8ч## Подгруппа низкого воздействия (CATE > 0%):# → OI низкий ИЛИ дисбаланс объёма растёт (приходят новые покупатели)# → Сигнал ставки финансирования приглушён свежим спросом## Стратегия: шорт только при CATE < -0,8% (σ̂(x) < 0,4%)# Шарп избирательной стратегии: 2,14 vs. Шарп неизбирательной стратегии: 0,89Пример 3: CATE моментума по рыночным режимам (мультиактивный)
Оценка неоднородного эффекта моментума как функции рыночного режима:
- Лечение D: дециль кросс-секционного моментума (верхний дециль = 1, нижний = 0)
- Результат Y: избыточная доходность следующего месяца (vs. равновзвешенная вселенная)
- Признаки X (переменные режима): VIX (уровень и 1-месячное изменение), спред HY (уровень и изменение), наклон кривой доходности, корреляция акций и облигаций (30д), кросс-секционный разброс доходности, концентрация секторального моментума
- Вселенная: акции Russell 1000, месячная ребалансировка (2010-2024)
- Лес: 3000 деревьев с локальным центрированием (мешанина LightGBM)
# Результаты (N=168 мес × 500 акций в среднем в мес = 84 000 наблюдений):# ATE моментума: +0,62% в месяц# Распределение CATE: среднее 0,62%, стд 0,89%## CATE моментума по режиму VIX:# Низкий VIX (<15): CATE = +1,34% ± 0,18% (сильно значимо)# Средний VIX (15-25): CATE = +0,47% ± 0,21% (слабо значимо)# Высокий VIX (>25): CATE = -0,81% ± 0,31% (режим краша моментума)## Динамическая стратегия моментума (активна только при CATE > 0 при 90% ДИ):# Шарп: 1,23 vs. Шарп всегда-включённого моментума: 0,72# Макс. просадка: -6,8% vs. -28,4% (избегает крашей моментума 2009, 2020)Система бэктестинга
Компоненты стратегии
Система бэктестинга реализует:
- Построение признаков: автоматизированный конвейер матриц признаков на актив с настраиваемыми окнами ретроспективного взгляда
- Скользящий каузальный лес: переобучение каузального леса в расширяющемся окне каждые N периодов; минимальная история до первого сигнала
- Прогноз CATE: вне-выборочные оценки CATE со стандартными ошибками для периода принятия решения
- Построение сигнала: лонг-шорт портфель по рангу CATE или порогу τ̂(x)/σ̂(x) (взвешенный по точности сигнал)
- Размер позиции: вес позиции пропорционален точечной оценке CATE, делённой на оценённое стандартное отклонение (взвешивание по информационному соотношению)
- Контроль рисков: максимальное валовое плечо, ограничения концентрации сектора, стоп-лосс при 2σ неблагоприятном CATE
Отслеживаемые метрики
| Метрика | Описание |
|---|---|
| Коэффициент Шарпа | Доходность с поправкой на риск (годовая) |
| Коэффициент Сортино | Доходность с поправкой на риск снижения |
| Максимальная просадка | Наибольшее падение от пика до дна |
| Процент выигрышей | Доля прибыльных сделок |
| Фактор прибыли | Валовая прибыль / валовые убытки |
| Охват CATE | Доля времени, в течение которого 95% ДИ CATE содержит истинный эффект |
| Корреляция CATE-Доходность | Ранговая корреляция Спирмена между предсказанным CATE и реализованными доходностями |
| Использование неоднородности | Прирост Шарпа от взвешенной по CATE vs. взвешенной по ATE стратегии |
Пример результатов бэктеста
Бэктест стратегии с каузальным лесом (2020-2024)=================================================Вселенная: акции S&P 500 (события прибыли) + BTC/ETH на Bybit (сигналы финансирования)Лес: 2000 деревьев, честный, локальное центрирование (мешанина LightGBM)Скользящее окно: 3 года расширяющееся, переобучение ежеквартальноСигнал: Лонг верхнего терциля CATE, Шорт нижнего терциля CATE (долларово-нейтральный)
Производительность:- Суммарная доходность: 64,8%- Годовая доходность: 13,4%- Коэффициент Шарпа: 1,82- Коэффициент Сортино: 2,41- Максимальная просадка: -7,3%- Процент выигрышей: 58,7%- Фактор прибыли: 2,31
Диагностика каузального леса:- Средний ATE по периодам: +2,1% на событие- Среднее кросс-секционное стд CATE: 1,9% на событие- Ранговая корреляция CATE-доходность: 0,34 (Спирмен)- Разрыв альфы CATE vs. ATE: +4,8% в год- Средний OOB R² CATE: 0,18- Стабильность важности переменных (топ-3 признака): 0,87 (τ Кендалла по кварталам)Оценка производительности
Сравнение с альтернативными оценщиками CATE
| Метод | Год. доходность | Шарп | Макс. просадка | Корр. CATE | Допустимые ДИ |
|---|---|---|---|---|---|
| Стратегия на ATE (без неоднородности) | 7,8% | 0,97 | -13,4% | Н/П | Н/П |
| T-обучатель (раздельные леса) | 10,2% | 1,31 | -11,2% | 0,24 | Нет |
| X-обучатель | 11,4% | 1,47 | -10,1% | 0,29 | Нет |
| Линейная модель взаимодействия | 9,1% | 1,18 | -12,8% | 0,19 | Да (парам.) |
| Каузальный лес (GRF) | 13,4% | 1,82 | -7,3% | 0,34 | Да |
Период бэктеста: 2020-2024. Транзакционные издержки: 5 б.п. за сделку. Без заглядывания вперёд.
Ключевые выводы
- Неоднородность экономически велика: стандартное отклонение CATE между активами равно ATE по величине — игнорирование неоднородности означает неиспользование значительной альфы
- Честность критична для достоверного вывода: без честного разбиения доверительные интервалы для CATE слишком узки в 1,4-2,0 раза, приводя к самоуверенным позициям и избыточным просадкам
- Локальное центрирование улучшает производительность: предварительная остаточизация Y и D снижает ошибку оценки CATE на 22% при сильном конфаундинге
- Позиции, взвешенные по CATE, превосходят ранговые: использование τ̂(x)/σ̂(x) как непрерывных весов превосходит простые портфели лонг/шорт децилей на 0,31 Шарпа
Ограничения
- Требуется неконфаундированность: как и все не-IV причинные методы, каузальные леса требуют отсутствия ненаблюдаемых конфаундеров — сильное допущение в финансах
- Требование позитивности: каждый актив должен иметь положительную вероятность получения лечения при всех значениях признаков; области тонкой вероятности лечения дают ненадёжные оценки CATE
- Вычислительная интенсивность: каузальные леса из 2000 деревьев с локальным центрированием значительно медленнее стандартных случайных лесов
- Экстраполяция: оценки CATE для внесайловых комбинаций признаков (необычные рыночные режимы) могут быть ненадёжны — лес интерполирует, но не экстраполирует
Дальнейшие направления
-
Глубокие каузальные леса: объединить гарантии честности каузального леса с извлечением признаков нейронных сетей, обеспечивая оценку CATE из сырых рыночных данных (книги ордеров, новостные тексты)
-
Онлайн каузальные леса: разработать потоковые версии, обновляющие оценки CATE постепенно по мере поступления новых данных, обеспечивая генерацию сигналов на основе CATE в реальном времени
-
Многорезультатные каузальные леса: совместная оценка CATE для нескольких результатов (доходность, волатильность, Шарп), обеспечивающая многоцелевую оптимизацию портфеля с использованием CATE
-
Обучение политикам из каузальных лесов: использовать оценённые CATE для прямой оптимизации торговых политик (какие активы торговать, когда торговать) с использованием дважды устойчивой оценки политик
-
Каузальные леса с инструментальными переменными: расширить GRF на условия IV (уже доступно в пакете R
grf) для финансовых условий с эндогенным лечением -
Временные каузальные леса: адаптировать GRF для обработки временных рядов с временной корреляцией в назначении лечения, актуально для приложений рыночной микроструктуры
Ссылки
-
Wager, S. & Athey, S. (2018). Estimation and Inference of Heterogeneous Treatment Effects using Random Forests. Journal of the American Statistical Association, 113(523), 1228-1242.
-
Athey, S., Tibshirani, J., & Wager, S. (2019). Generalized Random Forests. Annals of Statistics, 47(2), 1148-1178.
-
Künzel, S.R., Sekhon, J.S., Bickel, P.J., & Yu, B. (2019). Metalearners for Estimating Heterogeneous Treatment Effects using Machine Learning. Proceedings of the National Academy of Sciences, 116(10), 4156-4165.
-
Chernozhukov, V., Chetverikov, D., Demirer, M., Duflo, E., Hansen, C., Newey, W., & Robins, J. (2018). Double/Debiased Machine Learning for Treatment and Causal Parameters. The Econometrics Journal, 21(1), C1-C68.
-
Athey, S. & Imbens, G.W. (2016). Recursive Partitioning for Heterogeneous Causal Effects. Proceedings of the National Academy of Sciences, 113(27), 7353-7360.
-
Nie, X. & Wager, S. (2021). Quasi-Oracle Estimation of Heterogeneous Treatment Effects. Biometrika, 108(2), 299-319.
-
Efron, B. & Hastie, T. (2016). Computer Age Statistical Inference. Cambridge University Press.