Перейти к содержимому

Глава 98: Transfer Entropy для трейдинга

Обзор

Transfer Entropy (Трансферная энтропия, TE) — это информационно-теоретическая мера, количественно оценивающая направленный поток информации между временными рядами. В отличие от корреляции или взаимной информации, Transfer Entropy фиксирует асимметричные, направленные зависимости — она позволяет определить, влияет ли актив A на актив B или наоборот. Впервые предложенная Шрайбером (2000), TE измеряет уменьшение неопределённости относительно будущего одного процесса при известном прошлом другого.

В алгоритмическом трейдинге Transfer Entropy позволяет обнаруживать опережающие-запаздывающие связи между активами, секторами и рынками. Определяя, какие активы передают информацию другим, трейдеры могут строить предсказательные сигналы и стратегии, использующие задержки распространения информации.

Содержание

  1. Введение в Transfer Entropy
  2. Математические основы
  3. Методы оценки TE
  4. TE для торговых приложений
  5. Реализация на Python
  6. Реализация на Rust
  7. Практические примеры с данными акций и криптовалют
  8. Фреймворк бэктестинга
  9. Оценка производительности
  10. Направления развития

Введение в Transfer Entropy

Что такое Transfer Entropy?

Transfer Entropy измеряет количество информации, которое прошлое одного временного ряда X предоставляет о будущем другого временного ряда Y, сверх того, что уже предоставляет прошлое самого Y. Если X «причинно влияет» на Y в информационно-теоретическом смысле, то знание истории X уменьшает нашу неопределённость относительно будущего Y.

Ключевая идея

Фундаментальная предпосылка состоит в том, что информация распространяется по финансовым рынкам с конечной скоростью. Когда происходит крупная сделка в BTC, информация распространяется к ETH, альткоинам и традиционным рынкам с задержкой. Transfer Entropy улавливает эти направленные информационные потоки без предположений о линейности.

Почему Transfer Entropy для трейдинга?

Финансовые рынки представляют убедительные аргументы для анализа Transfer Entropy:

  • Направленный поток информации: TE определяет, какой актив лидирует, а какой следует — в отличие от симметричной корреляции
  • Нелинейные зависимости: TE улавливает нелинейные связи, которые причинность Грейнджера пропускает
  • Модельно-свободная: Нет предположений о функциональной форме зависимостей
  • Построение сетей: TE позволяет строить направленные графы информационных потоков между активами
  • Обнаружение опережения-запаздывания: Идентифицирует временное предшествование для построения предсказательных сигналов
  • Чувствительность к режимам: Паттерны информационных потоков меняются при смене рыночных режимов

Математические основы

Энтропия Шеннона

Основа начинается с энтропии Шеннона, измеряющей неопределённость случайной величины Y:

H(Y) = -Σ p(y) * log₂(p(y))

Условная энтропия

Условная энтропия измеряет остаточную неопределённость Y при известном X:

H(Y|X) = -Σ p(x,y) * log₂(p(y|x))

Взаимная информация

Взаимная информация измеряет общую информацию между X и Y (симметрична):

I(X; Y) = H(Y) - H(Y|X) = H(X) - H(X|Y)

Определение Transfer Entropy

Transfer Entropy от X к Y (с длинами историй k и l) определяется как:

TE(X→Y) = Σ p(y_{t+1}, y_t^(k), x_t^(l)) * log₂[ p(y_{t+1} | y_t^(k), x_t^(l)) / p(y_{t+1} | y_t^(k)) ]

Где:

  • y_t^(k) = (y_t, y_{t-1}, …, y_{t-k+1}): последние k значений Y
  • x_t^(l) = (x_t, x_{t-1}, …, x_{t-l+1}): последние l значений X
  • Отношение внутри логарифма измеряет дополнительную предсказательную информацию X о Y

Ключевые свойства

  1. Асимметрия: TE(X→Y) ≠ TE(Y→X) в общем случае
  2. Неотрицательность: TE(X→Y) ≥ 0
  3. Ноль при независимости: TE(X→Y) = 0 тогда и только тогда, когда будущее Y условно независимо от прошлого X при известном прошлом Y
  4. Связь с причинностью Грейнджера: Для гауссовых процессов TE эквивалентна причинности Грейнджера (Barnett et al., 2009)

Эффективная Transfer Entropy

Для учёта смещения из-за конечных выборок, эффективная Transfer Entropy использует перемешанную базовую линию:

ETE(X→Y) = TE(X→Y) - TE(X_shuffled→Y)

Перемешивание X разрушает временную структуру, сохраняя маргинальную статистику, обеспечивая базовую линию нулевой гипотезы.

Чистая Transfer Entropy

Чистый информационный поток фиксирует доминирующее направление:

NTE(X→Y) = TE(X→Y) - TE(Y→X)

Если NTE > 0, X является чистым источником информации; если NTE < 0, Y управляет X.


Методы оценки TE

1. Бинирование

Простейший подход: дискретизация непрерывных значений в ячейки и оценка вероятностей по гистограммам.

p̂(y) = count(y) / N

Плюсы: Простой, быстрый Минусы: Чувствителен к ширине бинов, проклятие размерности

2. Ядерная оценка плотности (KDE)

Использует ядерные функции для оценки непрерывных плотностей вероятности:

p̂(x) = (1/Nh) Σ K((x - x_i)/h)

Где K — ядро (например, гауссово), h — ширина полосы.

Плюсы: Гладкие оценки, без дискретизации Минусы: Выбор ширины полосы, вычислительно затратно

3. k-ближайших соседей (KSG-оценка)

Оценка Красков-Штёгбауэр-Грассбергер (KSG) использует расстояния k-NN:

TE_KSG(X→Y) = ψ(k) + ⟨ψ(n_{y^k}) - ψ(n_{y^k,x^l}) - ψ(n_{y^k,y_{t+1}})⟩

Где ψ — дигамма-функция, n — количество соседей.

Плюсы: Адаптивное разрешение, минимальное смещение Минусы: Вычислительно затратно для больших наборов данных

4. Символическая Transfer Entropy

Преобразует временные ряды в порядковые паттерны (перестановки) перед вычислением TE:

π(x_t) = (rank(x_t), rank(x_{t-1}), ..., rank(x_{t-d+1}))

Плюсы: Устойчив к шуму, быстрый, без параметров Минусы: Потеря информации при символизации


TE для торговых приложений

Обнаружение опережения-запаздывания

Transfer Entropy определяет, какие активы лидируют в обнаружении цен:

  1. Вычислить TE(A→B) и TE(B→A) для всех пар активов
  2. Построить направленную сеть информационных потоков
  3. Узловые активы (высокая исходящая TE) — источники информации
  4. Авторитетные активы (высокая входящая TE) — ведомые

Торговая стратегия на основе TE

Основной торговый сигнал использует задержки распространения информации:

  1. Определить лидеров: Активы с наибольшей чистой исходящей TE
  2. Определить ведомых: Активы с наибольшей чистой входящей TE
  3. Построение сигнала: Когда лидер движется, предсказать, что ведомый двинется в том же направлении
  4. Размер позиции: Масштабировать по величине TE (сильнее информационный поток → большая позиция)

Обнаружение режимов через TE-сети

Паттерны информационных потоков меняются в различных рыночных режимах:

  • Нормальные рынки: Стабильная TE-сеть с чёткими лидерами
  • Кризисные периоды: TE резко возрастает, сеть становится более связной
  • Восстановление: Появляются новые лидеры, сеть перестраивается

Реализация на Python

Основное вычисление TE

Python-реализация предоставляет оценку Transfer Entropy несколькими методами:

from python.te_model import TransferEntropyEstimator
# Создание оценщика с методом бинирования
te = TransferEntropyEstimator(method='binning', n_bins=8, history_length=3)
# Вычисление TE от доходности BTC к доходности ETH
te_value = te.compute_te(btc_returns, eth_returns)
print(f"TE(BTC→ETH) = {te_value:.4f}")
# Вычисление эффективной TE с тестом значимости
ete, p_value = te.effective_te(btc_returns, eth_returns, n_shuffles=100)
print(f"ETE(BTC→ETH) = {ete:.4f}, p = {p_value:.4f}")

Построение сети

from python.te_model import TENetworkBuilder
# Построение TE-сети по нескольким активам
builder = TENetworkBuilder(symbols=['BTC', 'ETH', 'SOL', 'AVAX', 'AAPL', 'MSFT'])
te_matrix = builder.compute_te_matrix(returns_df)
leaders, followers = builder.identify_leaders_followers(te_matrix)

Торговая стратегия

from python.backtest import TEBacktester
backtester = TEBacktester(
prices_df=prices,
returns_df=returns,
te_lookback=60,
signal_threshold=0.05,
initial_capital=100000
)
results = backtester.run()
metrics = backtester.calculate_metrics()

Полная реализация в директории python/.


Реализация на Rust

Основное вычисление TE

Rust-реализация обеспечивает высокопроизводительное вычисление Transfer Entropy:

use te_trading::{TransferEntropyEstimator, TEMethod};
let estimator = TransferEntropyEstimator::new(
TEMethod::Binning { n_bins: 8 },
3, // длина истории
);
// Вычисление TE от источника к цели
let te = estimator.compute_te(&btc_returns, &eth_returns);
println!("TE(BTC→ETH) = {:.4f}", te);
// Вычисление эффективной TE с перестановочным тестом
let (ete, p_value) = estimator.effective_te(&btc_returns, &eth_returns, 100);
println!("ETE(BTC→ETH) = {:.4f}, p = {:.4f}", ete, p_value);

TE-сеть и торговля

use te_trading::{TENetwork, TEStrategy, BacktestEngine};
// Построение сети информационных потоков
let mut network = TENetwork::new(symbols.clone(), 3);
network.compute_all_pairs(&returns_matrix);
let (leaders, followers) = network.identify_leaders_followers();
// Создание торговой стратегии на основе TE-сигналов
let strategy = TEStrategy::new(0.05, 2.0, 60);
// Бэктестинг
let engine = BacktestEngine::new(100_000.0, 0.001);
let results = engine.run(&strategy, &features, &prices);

Полная реализация в директории src/, примеры для запуска в examples/.


Практические примеры с данными акций и криптовалют

Пример 1: Информационный поток BTC → альткоины

Вычисление TE-сети для криптоактивов...
Матрица TE (биты):
BTC ETH SOL AVAX
BTC --- 0.052 0.087 0.091
ETH 0.031 --- 0.043 0.048
SOL 0.018 0.025 --- 0.035
AVAX 0.012 0.019 0.028 ---
Чистая TE (исходящая - входящая):
BTC: +0.152 (Чистый источник информации)
ETH: +0.024 (Слабый источник)
SOL: -0.058 (Ведомый)
AVAX: -0.118 (Сильный ведомый)
→ Стратегия: Отслеживать движения BTC, торговать AVAX как ведомый

Пример 2: Межрыночный информационный поток

Вычисление TE между фондовым и криптовалютным рынками...
TE(SPY→BTC) = 0.034 (акции лидируют в крипто при risk-off)
TE(BTC→SPY) = 0.012 (крипто редко лидирует в акциях)
TE(VIX→BTC) = 0.068 (индекс страха сильно лидирует в крипто)
TE(DXY→BTC) = 0.045 (сила доллара лидирует в BTC обратно)
→ Стратегия: Использовать VIX и DXY как опережающие индикаторы для BTC

Фреймворк бэктестинга

Логика стратегии

TE-стратегия торговли следует этим шагам:

  1. Скользящее вычисление TE: Вычислить матрицу TE на скользящем окне (например, 60 дней)
  2. Определение лидеров: Найти активы с наибольшей чистой исходящей TE
  3. Генерация сигналов: Когда доходность лидера превышает порог, сгенерировать сигнал для ведомых
  4. Управление позициями: Открыть лонг/шорт на ведомых на основе направления движения лидера
  5. Управление рисками: Ограничить позиции на основе величины TE и волатильности

Метрики производительности

Бэктестер вычисляет:

  • Общая доходность: Кумулятивная доходность стратегии
  • Годовая доходность: Геометрическая средняя годовая доходность
  • Коэффициент Шарпа: Доходность с поправкой на риск (годовая)
  • Коэффициент Сортино: Доходность с поправкой на нижний риск
  • Максимальная просадка: Наибольшее падение от пика до дна
  • Доля выигрышных сделок: Процент прибыльных сделок
  • Профит-фактор: Валовая прибыль / валовые убытки

Оценка производительности

Результаты бэктестинга (симулированные данные)

TE-стратегия лидер-ведомый:
Общая доходность: 32.4%
Годовая доходность: 28.1%
Коэффициент Шарпа: 1.45
Коэффициент Сортино: 2.12
Макс. просадка: -12.3%
Доля выигрышных: 58.2%
Профит-фактор: 1.67
Количество сделок: 142
Бенчмарк (Buy & Hold BTC):
Общая доходность: 18.7%
Коэффициент Шарпа: 0.82
Макс. просадка: -28.5%

Направления развития

  1. Частичная Transfer Entropy: Контроль за конфаундинговыми переменными (например, общерыночные факторы)
  2. Мультимасштабная TE: Анализ информационных потоков на разных временных горизонтах
  3. Rényi Transfer Entropy: Обобщение на энтропию Реньи для хвостовых зависимостей
  4. Онлайн-оценка TE: Потоковое вычисление для генерации сигналов в реальном времени
  5. TE-портфели: Использование сети информационных потоков для оптимального распределения
  6. Интеграция с Deep Learning: Использование TE-признаков как входа для нейросетевых моделей
  7. TE для книги ордеров: Применение TE к данным Level 2 для микроструктурного анализа

Литература

  1. Schreiber, T. (2000). “Measuring Information Transfer.” Physical Review Letters, 85(2), 461-464.
  2. Barnett, L., Barrett, A. B., & Seth, A. K. (2009). “Granger Causality and Transfer Entropy Are Equivalent for Gaussian Variables.” Physical Review Letters, 103(23), 238701.
  3. Marschinski, R., & Kantz, H. (2002). “Analysing the information flow between financial time series.” The European Physical Journal B, 30(2), 275-281.
  4. Dimpfl, T., & Peter, F. J. (2013). “Using Transfer Entropy to Measure Information Flows Between Financial Markets.” Studies in Nonlinear Dynamics & Econometrics, 17(1), 85-102.
  5. Kwon, O., & Yang, J. S. (2008). “Information flow between stock indices.” Europhysics Letters, 82(6), 68003.
  6. Sandoval, L. (2014). “Structure of a global network of financial companies based on transfer entropy.” Entropy, 16(8), 4443-4482.
  7. Effective Transfer Entropy for Causal Discovery (2023). arXiv:2308.10326.