📝

Draft article

This draft is visible to admins and superusers only. Sign in with an authorized account.

← К списку статей
August 24, 2026
5 мин. чтения

Transfer Entropy: Which Way Does Information Flow Between Crypto Assets?

Transfer Entropy: Which Way Does Information Flow Between Crypto Assets?
#causal-inference
#transfer-entropy
#information-theory
#crypto
#network

Этот блог уже установил, что крипторынок близок к однофакторному: корреляция сигналов между парами показывает, что на PC1 (фактор BTC) приходится 65% дисперсии, а четыре фактора объясняют 90%. Поэтому десять "диверсифицированных" пар несут информацию всего трех-четырех независимых. Установлено и то, что структура зависимости непостоянна: DCC-GARCH моделирует корреляционную матрицу как временной ряд со своими режимами, а раздел об ограничениях прямо говорит: "корреляция не является причинностью и не задает направление".

Именно этот пробел рассматривает статья. DCC сообщает, когда зависимость усиливается, но не может сказать, в каком направлении она указывает. Transfer entropy может: это модельно-независимая, по сути асимметричная мера того, сколько битов прошлое одного ряда добавляет к прогнозу будущего другого ряда сверх того, что уже объясняется прошлым целевого ряда. Если ETH последовательно передает информацию AAVE до переоценки AAVE, transfer entropy увидит асимметрию, которую не способна представить корреляционная матрица.

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

Измеренная сеть

Направленная информационная сеть

Статус: еще не запускался. Приведенный ниже pipeline реализован, но для этой статьи не выполнялся на реальных данных. Пока этого не произошло, статья описывает метод, а не результат. По стандарту блога — см. честный отрицательный результат и дефлированный Sharpe и множественное тестирование — некалиброванная сеть считается шумом, пока не доказано обратное.

Здесь нужно сообщить четыре вещи в указанном порядке, и ни одну нельзя утверждать на основании литературы:

  1. Матрица effective TE. Universe, биржа, диапазон дат, размер бара, effective TE в битах для каждой упорядоченной пары, p-value каждой пары и ориентированный граф, переживший фильтр значимости. Это заменяет обычные рассуждения вроде "BTC — доминирующий источник, DeFi-токены — приемники" таблицей исходящей силы, входящей силы и net flow.
  2. Доля ложноположительных результатов теста значимости, измеренная запуском всего pipeline на перемешанных и синтетически независимых рядах. См. раздел Нулевая калибровка ниже.
  3. Проверка чувствительности по двум свободным параметрам: n_bins в {3, 5} в сочетании с k в {1, 2, 3, 5}. Если рейтинг лидеров и ведомых сохраняется только в одной ячейке сетки, это и есть результат.
  4. Стабильность во времени. Сохраняется ли измеренный рейтинг вне выборки или перемешивается в каждом окне? Пока на это нет ответа, любые последующие выводы преждевременны.

Механика метода

Пути информации через пространство состояний

Три строительных блока

Энтропия Шеннона измеряет неопределенность случайной величины XX:

H(X)=i=1np(xi)log2p(xi)H(X) = -\sum_{i=1}^{n} p(x_i) \log_2 p(x_i)

Подбрасывание честной монеты дает 1 бит; честная игральная кость — log262.58\log_2 6 \approx 2.58 бита; детерминированная переменная дает 0.

Условная энтропия измеряет, сколько неопределенности о YY остается после того, как известен XX:

H(YX)=x,yp(x,y)log2p(x,y)p(x)H(Y|X) = -\sum_{x,y} p(x,y) \log_2 \frac{p(x,y)}{p(x)}

Она равна 0, когда XX определяет YY, и H(Y)H(Y), когда переменные независимы.

Взаимная информация — это общая информация между ними:

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

Она симметрична: I(X;Y)=I(Y;X)I(X;Y) = I(Y;X). Именно эту симметрию нам нужно нарушить.

Передача энтропии

Transfer entropy, введенная Schreiber (2000), нарушает симметрию, обусловливаясь собственным прошлым цели. Она измеряет, насколько прошлое источника XX уменьшает неопределенность о будущем цели YY сверх того, что уже объясняется прошлым YY.

Пусть Yt(k)Y_t^{(k)} обозначает историю длины kk, (Yt1,,Ytk)(Y_{t-1}, \dots, Y_{t-k}), а Xt(l)X_t^{(l)} — историю источника длины ll:

TXY=p(Yt+1,Yt(k),Xt(l))log2p(Yt+1Yt(k),Xt(l))p(Yt+1Yt(k))T_{X \to Y} = \sum p(Y_{t+1}, Y_t^{(k)}, X_t^{(l)}) \log_2 \frac{p(Y_{t+1} \mid Y_t^{(k)}, X_t^{(l)})}{p(Y_{t+1} \mid Y_t^{(k)})}

Эквивалентно, как разность условных энтропий:

TXY=H(Yt+1Yt(k))H(Yt+1Yt(k),Xt(l))T_{X \to Y} = H(Y_{t+1} \mid Y_t^{(k)}) - H(Y_{t+1} \mid Y_t^{(k)}, X_t^{(l)})

Если прошлое XX не помогает предсказать YY сверх собственного прошлого YY, то TXY=0T_{X \to Y} = 0. Если помогает, величина показывает число передаваемых битов прогнозной информации.

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

  • Неотрицательная: TXY0T_{X \to Y} \geq 0.
  • Асимметричный: в целом TXYTYXT_{X \to Y} \neq T_{Y \to X}. В этом вся суть.
  • Непараметрический: никаких допущений в модели — как линейные, так и нелинейные зависимости.
  • Единицы: биты при log2\log_2, nat при ln\ln.

Чистая трансферная энтропия дает доминирующее направление:

TXYnet=TXYTYXT_{X \to Y}^{\text{net}} = T_{X \to Y} - T_{Y \to X}

Положительное значение означает, что XX — net sender для YY; отрицательное — что лидирует YY.

Transfer entropy против причинности Грейнджера

Линейные и нелинейные причинные механизмы

Причинность Грейнджера (GC) спрашивает, улучшает ли прошлое XX линейный авторегрессионный прогноз YY. Это не тест коинтеграции Engle-Granger, описанный в статье о статистическом арбитраже и парной торговле: фамилия та же, понятия не связаны. Engle-Granger проверяет, стационарна ли линейная комбинация двух нестационарных рядов; причинность Грейнджера — помогает ли один ряд прогнозировать другой. Читатели могут их перепутать, поэтому это стоит сказать прямо.

Теоретическая эквивалентность гауссовских процессов

Барнетт, Барретт и Сет (2009) доказали, что для совместных гауссовых процессов причинность Грейнджера и энтропия переноса эквивалентны с точностью до монотонного преобразования:

TXY=12ln(1+FXY)T_{X \to Y} = \frac{1}{2} \ln\left(1 + F_{X \to Y}\right)

где FXYF_{X \to Y} — статистика причинности Грейнджера (логарифмическое отношение правдоподобия). Для линейных гауссовских данных оба метода восстанавливают одну и ту же причинную структуру. Поэтому transfer entropy — не столько конкурент GC, сколько его непараметрическое обобщение: она сводится к GC там, где выполняются предпосылки GC.

Где они расходятся

Свойство Причинность Грейнджера Transfer entropy
Предположение модели Линейный VAR Нет (model-free)
Нелинейные зависимости Не видит Улавливает
Предположение о распределении Гауссово (для F-теста) Нет
Требования к выборке Умеренные Высокие
Вычисления Быстрые (OLS) Медленные (оценивание плотности)
Интерпретация Улучшение прогноза Передача информации (биты)

Разрыв в принципе важен для крипторынка: доходности имеют тяжелые хвосты, волатильность кластеризуется, а связи зависят от режима — все это линейный VAR сглаживает. Достаточно ли этот разрыв велик, чтобы изменить рейтинг лидеров на реальных данных, — эмпирический вопрос, на который статья должна ответить, а не делать предположение.

Димпфл и Питер (2013) сообщают, что трансферная энтропия обнаруживает потоки, которые пропускает причинно-следственная связь Грейнджера в финансовых рядах, особенно в условиях стресса; Кескин и Асте (2020) сообщают о более богатой сети нелинейного TE в криптографии. Оба эти фактора приводятся здесь в качестве мотивации, а не в качестве доказательства для этого набора данных.

Effective transfer entropy: коррекция смещения

Поток информации с коррекцией предвзятости

Здесь особенно легко ошибиться. Оценки raw TE завышены на конечных выборках: подайте два независимых ряда и все равно получите TXY>0T_{X \to Y} > 0 из-за выборочного шума в эмпирическом совместном распределении. Смещение растет вместе с числом совместных состояний, а оно экспоненциально увеличивается по k+lk + l.

Эффективная трансферная энтропия устраняет это смещение:

TXYeff=TXYE ⁣[TXsurrogateY]T_{X \to Y}^{\text{eff}} = T_{X \to Y} - \mathbb{E}\!\left[T_{X_{\text{surrogate}} \to Y}\right]

где суррогат разрушает временную структуру XX, сохраняя его маргинальное распределение. Важно понимать, чем это является, а чем нет: среднее по суррогатам оценивает собственное смещение оценщика, и мы его вычитаем. Это не доверительный интервал, и effective TE — не "TE с полосами ошибок". Та же совокупность суррогатов одновременно служит нулевым распределением для p-value, но вычитание и тест — разные операции.

Суррогат строится блочным bootstrap, поэтому автокорреляция XX внутри блока сохраняется. Общая механика и обоснование блочной повторной выборки разобраны в статье Монте-Карло и bootstrap для бэктестов.

Реализация

Конвейер исследования передачи энтропии

Данные: часовые лог-доходности фиксированного universe крупных USDT perpetual-контрактов на одной бирже за указанный непрерывный диапазон дат. Стандартная загрузка OHLCV и построение лог-доходностей описаны в статье о статистическом арбитраже и парной торговле и здесь не повторяются.

Дискретизация и предупреждение об утечке

Transfer entropy требует дискретных состояний. Квантильное разбиение — обычный выбор и одновременно обычное место утечки будущего.

import numpy as np
import pandas as pd

def discretize_trailing(series, n_bins=3, warmup=500):
    """Discretize using bin edges estimated on a TRAILING window only.

    Computing quantile edges over the full sample is whole-series
    normalization leakage: every bar's label depends on the entire
    future distribution. See the look-ahead bias taxonomy.
    """
    x = np.asarray(series, dtype=float)
    out = np.full(len(x), -1, dtype=int)
    qs = np.linspace(0, 1, n_bins + 1)[1:-1]
    for t in range(warmup, len(x)):
        edges = np.quantile(x[:t], qs)      # strictly past data
        out[t] = np.digitize(x[t], edges)
    return out

Наивная версия по полной выборке годится для описательного утверждения — "за этот период информация текла так" — но загрязнена для любого торгового утверждения. Вся суть этого различия разобрана в таксономии смещения заглядывания в будущее. Если используете границы по полной выборке, скажите об этом и остановитесь перед словом "сигнал".

Перенос энтропии с нуля

from collections import Counter

def transfer_entropy(source, target, k=1, l=1):
    """Transfer entropy T_{source -> target} in bits.

    source, target : 1-D integer arrays of discrete states
    k : history length for the target
    l : history length for the source
    """
    source = np.asarray(source)
    target = np.asarray(target)
    n = len(target)
    max_lag = max(k, l)

    y_future = target[max_lag:]
    y_past = np.column_stack([target[max_lag - i - 1:n - i - 1] for i in range(k)])
    x_past = np.column_stack([source[max_lag - i - 1:n - i - 1] for i in range(l)])
    N = len(y_future)

    yf = y_future.tolist()
    yp = [tuple(row) for row in y_past]
    xp = [tuple(row) for row in x_past]

    c_yf_yp_xp = Counter(zip(yf, yp, xp))
    c_yp_xp = Counter(zip(yp, xp))
    c_yf_yp = Counter(zip(yf, yp))
    c_yp = Counter(yp)

    te = 0.0
    for (yf_val, yp_val, xp_val), count in c_yf_yp_xp.items():
        p_joint = count / N
        p_yf_given_yp_xp = count / c_yp_xp[(yp_val, xp_val)]
        p_yf_given_yp = c_yf_yp[(yf_val, yp_val)] / c_yp[yp_val]
        if p_yf_given_yp > 0 and p_yf_given_yp_xp > 0:
            te += p_joint * np.log2(p_yf_given_yp_xp / p_yf_given_yp)

    return te

Effective TE с нулевым распределением block bootstrap

def effective_transfer_entropy(source, target, k=1, l=1,
                               n_shuffles=200, block_size=5, rng=None):
    """Effective TE plus a surrogate p-value.

    Returns dict: te, ete, p_value, null_mean, null_std
    """
    rng = rng or np.random.default_rng(0)
    te_observed = transfer_entropy(source, target, k, l)

    n = len(source)
    n_blocks = int(np.ceil(n / block_size))
    null_tes = np.empty(n_shuffles)

    for b in range(n_shuffles):
        starts = rng.integers(0, n, size=n_blocks)
        shuffled = np.concatenate(
            [np.take(source, range(s, s + block_size), mode='wrap')
             for s in starts]
        )[:n]
        null_tes[b] = transfer_entropy(shuffled, target, k, l)

    null_mean = null_tes.mean()
    return {
        'te': te_observed,
        'ete': max(te_observed - null_mean, 0.0),
        'p_value': (np.sum(null_tes >= te_observed) + 1) / (n_shuffles + 1),
        'null_mean': null_mean,
        'null_std': null_tes.std(),
    }

Попарная матрица

def compute_te_matrix(disc_returns, k=1, n_shuffles=200):
    cols = list(disc_returns.columns)
    m = len(cols)
    te_matrix = np.zeros((m, m))
    pval_matrix = np.ones((m, m))

    for i in range(m):
        for j in range(m):
            if i == j:
                continue
            r = effective_transfer_entropy(
                disc_returns[cols[i]].values,
                disc_returns[cols[j]].values,
                k=k, n_shuffles=n_shuffles,
            )
            te_matrix[i, j] = r['ete']
            pval_matrix[i, j] = r['p_value']

    return (pd.DataFrame(te_matrix, index=cols, columns=cols),
            pd.DataFrame(pval_matrix, index=cols, columns=cols))

Быстрый путь

pyinform оборачивает оптимизированную реализацию C:

from pyinform.transferentropy import transfer_entropy as te_pyinform

te_btc_to_eth = te_pyinform(btc_disc, eth_disc, k=2)
te_eth_to_btc = te_pyinform(eth_disc, btc_disc, k=2)

Нулевая калибровка

Калибровка нулевого распределения

Это самая ценная и чаще всего пропускаемая часть анализа. Прежде чем верить любому ребру измеренной сети, запустите весь pipeline — дискретизацию, effective TE, суррогатный тест и фильтр значимости — на данных, где истинный ответ заранее известен и равен нулю:

  1. Перемешанные реальные доходности. Уничтожьте синхронизацию между рядами, сохранив маргинальное распределение каждого ряда.
  2. Синтетические независимые ряды. Смоделируйте MM независимых процессов с тяжелыми хвостами и кластеризацией волатильности, по построению не имеющих перекрестной зависимости.

Затем сообщите долю упорядоченных пар, которые тест помечает при α=0.05\alpha = 0.05. Если она не близка к 0,05, тест некалиброван, и каждое ребро реальной сети подозрительно.

Множественное тестирование усугубляет проблему. Universe из 8 активов дает 8×7=568 \times 7 = 56 упорядоченных попарных тестов, а из 20 активов — 380. Поправки Bonferroni, Holm и Benjamini–Yekutieli FDR подробно выведены в статье о дефлированном Sharpe и множественном тестировании, вместе с калибровочным исследованием, где FDR наивного теста равен 1,000 против 0,007 у BHY.

Но не останавливайтесь на обычном Bonferroni: эти 56 тестов не являются 56 независимыми взглядами. Криптоактивы сильно коррелируют — этот блог измерил 65% дисперсии в PC1, — что является именно failure mode correlated grid, описанным в Act 5 той статьи. Если считать число ячеек коррелированной сетки числом попыток, можно чрезмерно дефлировать результат и ложно отвергнуть настоящий edge. Нужен диапазон effective-trial оценок, а не одна точка: формула средней корреляции Neff=N/(1+(N1)ρˉ)N_{\text{eff}} = N/(1 + (N-1)\bar\rho) на мягком конце и eigenvalue-оценки (participation ratio, PCA-95%, Kaiser) в более защищаемой середине. Отчитайте диапазон effective-NN для TE-сетки и проверьте, сохраняются ли ребра во всем диапазоне.

Чувствительность: два свободных параметра

Управление чувствительностью к информации

Оба параметра ниже обычно задают по правилу большого пальца и больше не пересматривают. Их нужно перебрать, сообщая рейтинг лидеров и ведомых в каждой ячейке.

Длина истории kk

kk определяет, какую часть собственного прошлого цели вы учитываете. Слишком малое значение заставляет приписывать источнику автокорреляцию самой цели; слишком большое делает совместное распределение слишком разреженным для оценки. Число совместных состояний равно Ak+l+1|\mathcal{A}|^{k+l+1}: при 3 bins, k=2k=2, l=1l=1 это 34=813^4 = 81 состояния, а при k=5k=5 уже 37=21873^7 = 2187 при нескольких тысячах наблюдений.

Обычные стартовые значения — k{1,2}k \in \{1, 2\} для часовых данных и k{1,,5}k \in \{1, \dots, 5\} для дневных, с дополнительной проверкой AIC/BIC на эквивалентном лаге VAR. Это сетка для перебора, а не ответ.

Дискретизация

  • 3 bins (вниз / flat / вверх): устойчивы, работают на ограниченных данных, отражают только направленную структуру.
  • 5 bins: отражают величину, но требуют существенно больше данных.
  • Квантильные границы: примерно равная заполненность без пустых bins, но см. предупреждение об утечке выше.
  • Ordinal/symbolic encoding: стиль permutation entropy, устойчивый к монотонным преобразованиям.

Непрерывная kernel-based TE полностью избегает потерь дискретизации, но требует выбора bandwidth и гораздо более тяжелых вычислений.

Перебор

for n_bins in (3, 5):
    for k in (1, 2, 3, 5):
        disc = discretize_all(returns, n_bins=n_bins)
        te_df, p_df = compute_te_matrix(disc, k=k)
        rank = net_flow_ranking(te_df, p_df)
        report(n_bins, k, rank)

Вопрос не в том, "каков рейтинг", а в том, "одинаков ли рейтинг во всех ячейках". Если актив является net sender только при k=2k=2, nbins=3n_{\text{bins}}=3, эта нестабильность и есть результат, о котором нужно сообщить.

Confounding: условная transfer entropy

Условные информационные потоки

Если и XX, и YY обусловлены латентным фактором ZZ, попарная TE покажет поток между ними, полностью являющийся артефактом общего источника. На однофакторном рынке это не крайний случай, а ожидание по умолчанию. Условная transfer entropy устраняет этот эффект:

TXYZ=H(Yt+1Yt(k),Zt(l))H(Yt+1Yt(k),Xt(l),Zt(l))T_{X \to Y | Z} = H(Y_{t+1} \mid Y_t^{(k)}, Z_t^{(l)}) - H(Y_{t+1} \mid Y_t^{(k)}, X_t^{(l)}, Z_t^{(l)})

Любое утверждение, что SOL передает информацию AVAX, нужно перепроверить с условием на BTC. Если поток исчезнет, попарный результат был рыночным фактором в маскировке.

te_sol_avax_given_btc = te_pyinform(sol_disc, avax_disc, k=2,
                                    condition=btc_disc)

Условие не бесплатно: каждая conditioning-переменная умножает пространство совместных состояний на Al|\mathcal{A}|^{l}. Поэтому conditional TE при том же kk требует существенно больше данных, чем попарная версия.

Стабильность и торговая применимость

Стабильная причинно-следственная связь между режимами

Информационный поток не статичен, как ничто на этом рынке. Это исходная предпосылка обнаружения режимов с HMM и причина оценивать все в окнах, а не подгонять один раз. Однако rolling-версия этого анализа наследует известный результат, а не открывает новый: усиление криптозависимости в кризисе уже опубликовано с числами. Корреляция сигналов между парами показывает рост средней корреляции с 0,15 на боковом рынке до 0,90 при панике, а NeffN_{\text{eff}} падает с 4.2 до 1.1. В приложении 3 статьи DCC-GARCH средняя попарная корреляция превращается в сигнал risk-off с trailing-quantile флагом и прямой оговоркой: "это сигнал риска, а не alpha-сигнал".

Централизация исходящей силы TE по Фримену — другой скаляр для другой матрицы, но прием тот же: свернуть объект зависимости d×dd \times d в одно число и наблюдать, растет ли оно. Поэтому вопрос не в том, "растет ли централизация перед просадками", а в том, превосходит ли она среднюю попарную корреляцию как сигнал risk-off, при прямом сравнении на тех же окнах и против тех же просадок.

def network_centralization(G):
    """Freeman centralization of out-strength. High = one dominant source."""
    if G.number_of_nodes() < 2:
        return 0.0
    s = [sum(d['weight'] for _, _, d in G.out_edges(v, data=True)) for v in G.nodes()]
    total = sum(s)
    if total == 0:
        return 0.0
    n = len(s)
    return sum(max(s) - x for x in s) / ((n - 1) * total)

Прежде чем писать о каком-либо downstream-применении, нужно ответить на два вопроса:

  1. Сохраняется ли рейтинг лидеров вне выборки? Подгоните сеть на окне tt и проверьте рейтинг на окне t+1t+1. Отчитайте корреляцию рангов между окнами. Рейтинг, меняющийся каждую неделю, описывает шум.
  2. Добавляет ли TE-фильтр что-либо к lead-lag сделке? Правильный эксперимент — одно контролируемое сравнение: один и тот же механизм входа и выхода по rolling z-score из статей о статистическом арбитраже и парной торговле и подходе расстояний, запущенный дважды, где наличие TE-фильтра значимости — единственное различие, с учетом комиссий.

Для этой статьи не выполнено ни то, ни другое. Нет lead-lag бэктеста, портфеля information momentum или сравнения режимов. Механика построения весов для гипотетического information-momentum sleeve описана в статье Сравнение алгоритмов оптимизации портфеля, но softmax по raw net strength в битах произволен по масштабу и требует обоснования нормализации. Непроверенный код стратегии здесь не публикуется.

Стоимость вычислений

Ограничения вычислительного потока

TE имеет сложность O(N)O(N) на пару, но константу определяют число совместных состояний Ak+l+1|\mathcal{A}|^{k+l+1} и число суррогатов. Для MM активов и BB bootstrap-реплик требуется M(M1)BM(M-1)B оценок TE; для 50 активов и 200 суррогатов это 490 000. Стоимость одной оценки полностью зависит от оборудования, версии pyinform и NN. Измерьте ее на своей машине, а не доверяйте цитируемой цифре. Если все слишком медленно, есть три рычага:

  • Распараллелить. Каждая пара независима — используйте joblib или multiprocessing.
  • Предварительно отсеять. Сначала вычислите raw TE, а суррогаты запускайте только для пар выше порога. (Это делает тест значимости условным на прохождении отсечения и требует поправки.)
  • Сократить universe. Сначала кластеризуйте активы и вычисляйте TE между представителями кластеров.

Итог

Разрешенная сеть направленной информации

Transfer entropy — принципиальная, модельно-независимая мера направленного информационного потока, заполняющая реальный пробел в инструментарии блога: DCC-GARCH говорит, когда зависимость усиливается, а TE — в каком направлении она указывает. Для гауссовских процессов она точно сводится к причинности Грейнджера через T=12ln(1+F)T = \tfrac{1}{2}\ln(1 + F), что делает ее обобщением, а не конкурентом.

Но пока это не результат. Pipeline реализован, а failure modes перечислены: смещение конечной выборки, исправляемое суррогатами; разбиение по всей серии как look-ahead leakage; коррелированная сетка из 56 тестов, ломающая наивные поправки на множественное тестирование; confounding общего драйвера на однофакторном рынке; свободные параметры, способные определить ответ. Каждый пункт — причина не доверять некалиброванной TE-сети. Опубликовать сеть без нулевой калибровки, проверки чувствительности и out-of-sample стабильности означало бы выдать failure modes за findings.

Ссылки

  • Schreiber, T. (2000). "Measuring Information Transfer." Physical Review Letters, 85(2), 461-464.
  • 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.
  • Marschinski, R., Kantz, H. (2002). "Analysing the information flow between financial time series." European Physical Journal B, 30(2), 275-281.
  • 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.
  • Keskin, Z., Aste, T. (2020). "Information-theoretic measures for nonlinear causality detection: application to social media sentiment and cryptocurrency prices." Royal Society Open Science, 7(9), 200863.
  • Jang, S.M. et al. (2022). "Using transfer entropy to measure information flows between cryptocurrencies." Physica A, 586, 126476.
  • Nicola, G. et al. (2020). "Network Analysis of Multivariate Transfer Entropy of Cryptocurrencies in Times of Turbulence." Entropy, 22(7), 760.
Дисклеймер: Информация в этой статье предоставлена исключительно в образовательных и ознакомительных целях и не является финансовым, инвестиционным или торговым советом. Торговля криптовалютами сопряжена с высоким риском убытков.

Авторы

Eugen Soloviov
Eugen Soloviov

Инженер торговых систем

Разработка торговых ботов с 2017 года: межбиржевой арбитраж (подключал до 30 бирж), парный арбитраж на коинтеграции между спотом и фьючерсами, скальпинг, фронтраннинг, торговля по новостям, сентиментный анализ, трендовые алгоритмы, а также алгоритмы управления и балансировки портфелей. Делает выставление ордеров до 1 мс, warehouse для big data, бэктестинг-движки, AI-агентов и интерфейсы для ботов (в т.ч. open-source profitmaker.cc). Стек: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, архитектура.

Newsletter

Будьте в курсе событий

Подпишитесь на нашу рассылку, чтобы получать эксклюзивную аналитику по AI-трейдингу и обновления платформы.

Мы уважаем вашу конфиденциальность. Отписаться можно в любой момент.