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

Hawkes Processes for Order Arrival and Market Event Modeling

Hawkes Processes for Order Arrival and Market Event Modeling
#microstructure
#Hawkes-process
#point-process
#order-arrival
#crypto
#HFT

Статья о цифровом отпечатке трейдера использует трехкомпонентный вектор — hawkes_mu, hawkes_alpha, hawkes_beta — как временную составляющую поведенческой сигнатуры участника и утверждает, что маркет-мейкеры демонстрируют сильное самовозбуждение. В ней не сказано, откуда берутся эти три числа, по каким данным они оцениваются и насколько им можно доверять. Эта статья — недостающая половина: оценивание, диагностика подгонки и одна производная величина, которая оказывается важнее самих трех параметров, — коэффициент ветвления nn.

Проверяемое здесь утверждение узкое и проверяемое. Поток ордеров самовозбуждается: агрессивная продажа повышает вероятность следующей агрессивной продажи так, что это не может воспроизвести пуассоновская модель с любой меняющейся во времени интенсивностью. Если это так, процесс Хоукса, подогнанный к исходным временным меткам сделок, должен (а) превосходить пуассоновский базовый уровень по правдоподобию на отложенных данных, (б) давать коэффициент ветвления строго между 0 и 1 и (в) проходить проверку согласия с преобразованием времени. Результаты (а) и (б) широко описаны для фондовых фьючерсов. Пункт (в) — место, где опубликованные статьи о процессах Хоукса обычно умолкают, и именно его криптовалютный поток в этом блоге еще не проверялся.

У блога уже есть два фрагмента необходимого контекста, поэтому здесь они не выводятся заново. Структура самовозбуждающейся обратной связи — события вызывают новые события того же типа, система докритична ниже порога и становится неуправляемой выше него — конкретно выведена как число воспроизводства g=ρ/Δg = \rho/\Delta в статье каскады ликвидаций как торговый сигнал, вместе с суммарным движением геометрического ряда, сверхкритическим режимом мгновенного обвала и автоматическими выключателями как одним из трех ограничителей. Коэффициент ветвления nn ниже — аналог gg для точечного процесса. Новое здесь состоит в том, что nn можно оценивать в реальном времени только по временным меткам сделок, без карты ликвидаций, глубины стакана и предположений о кредитном плече. Именно ради этого стоит использовать аппарат точечных процессов.

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

Основы точечного процесса, кратко

Дискретные импульсы событий поступления ордеров

Точечный процесс — это случайное множество моментов событий, определяемое его условной интенсивностью λ(t)\lambda^*(t) — мгновенной скоростью поступления при известной полной истории Ft\mathcal{F}_t:

λ(t)=limΔt0E[N(t,t+Δt)Ft]Δt\lambda^*(t) = \lim_{\Delta t \to 0} \frac{\mathbb{E}[N(t, t + \Delta t) \mid \mathcal{F}_t]}{\Delta t}

Однородный процесс Пуассона соответствует случаю λ(t)=μ\lambda^*(t) = \mu. Неоднородный процесс Пуассона позволяет λ(t)\lambda(t) следовать детерминированной форме, например внутридневной кривой в виде буквы U, но все равно предполагает условную независимость: знание о только что совершившейся сделке ничего не говорит о близости следующей. Именно это предположение нарушает реальный поток ордеров, и именно этому нарушению посвящена статья. Звездочка в λ(t)\lambda^*(t) — вся суть различия: она отмечает зависимость от истории.

Процесс Хоукса

Самовозбуждающиеся повторные толчки рыночных событий

Одномерный процесс Хоукса имеет интенсивность

λ(t)=μ+ti<tϕ(tti)\lambda^*(t) = \mu + \sum_{t_i < t} \phi(t - t_i)

где μ>0\mu > 0фоновая интенсивность (экзогенные поступления), а ϕ()0\phi(\cdot) \geq 0ядро возбуждения. Каждое событие увеличивает интенсивность на ϕ(0)\phi(0), после чего это увеличение затухает по форме ϕ\phi. Кластер недавних событий создает высокую интенсивность и делает дальнейшие события более вероятными: процесс помнит собственную историю.

Коэффициент ветвления

n=0ϕ(t)dtn = \int_0^\infty \phi(t) \, dt

nn — среднее число дочерних событий, вызванных одним родительским. Для стационарности требуется n<1n < 1; стационарная средняя интенсивность равна λˉ=μ/(1n)\bar{\lambda} = \mu / (1-n) и расходится при n1n \to 1. Поэтому nn делит общую активность на экзогенную долю (1n)(1-n) и эндогенную долю nn: при n=0.7n = 0.7 семьдесят процентов событий являются реакцией на другие события, а не ответом на что-то внешнее по отношению к рынку.

Это ровно то же разделение каскадного множителя на докритическую и сверхкритическую части, которое рассмотрено в статье каскады ликвидаций, только полученное с другой стороны. Различается стоимость вычисления: для g=ρ/Δg = \rho/\Delta нужна прямая модель плотности принудительных продаж и текущей глубины стакана, а обе величины оцениваются на основе предположений о распределении плечей. Для nn нужен список временных меток.

Filimonov и Sornette (2012) сообщили о росте nn примерно с 0.3 до более чем 0.7 для фьючерсов E-mini S&P 500 в период с 1998 по 2007 год. Hardiman, Bercot и Bouchaud (2013) получили для того же контракта значение около n0.8n \approx 0.8 при степенном ядре с показателем примерно 1.15-1.15 на коротких лагах. Оба результата относятся к фондовым фьючерсам более чем десятилетней давности, и ни один нельзя перенести на криптовалюты без измерений. Цель этой статьи не в их воспроизведении, а в проверке того, сохраняется ли такой же режим на круглосуточном потоке бессрочных фьючерсов с другими участниками и без разрыва, связанного с открытием рынка.

Выбор ядра

Экспоненциальное ядро, ϕ(t)=αeβt\phi(t) = \alpha e^{-\beta t}, с n=α/βn = \alpha/\beta. Оно марковское, поэтому правдоподобие вычисляется рекурсией за O(1)O(1) на событие (см. ниже). С него начинается практически любая подгонка.

Степенное ядро, ϕ(t)=αcp/(c+t)1+p\phi(t) = \alpha c^p / (c+t)^{1+p}. Оно воспроизводит кластеризацию с долгой памятью, но лишается рекурсии: вычисление правдоподобия становится O(N2)O(N^2) или требует усечения.

Сумма экспонент, ϕ(t)=k=1Kαkeβkt\phi(t) = \sum_{k=1}^{K} \alpha_k e^{-\beta_k t}. Она приближает степенное затухание с KK временными масштабами, сохраняя рекурсию. Обычно достаточно K=3K = 3--55, причем βk\beta_k охватывают диапазон от миллисекунд до минут.

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

Многомерные процессы Хоукса

Перекрестно возбуждающиеся потоки рыночных событий

Для DD типов событий

λd(t)=μd+d=1Dtid<tϕdd(ttid)\lambda_d^*(t) = \mu_d + \sum_{d'=1}^{D} \sum_{t_i^{d'} < t} \phi_{dd'}(t - t_i^{d'})

где ϕdd\phi_{dd'} описывает, как тип dd' возбуждает тип dd. Для экспоненциальных ядер матрица ветвления имеет вид G=[αdd/βdd]G = [\alpha_{dd'}/\beta_{dd'}], а для стационарности требуется спектральный радиус ρ(G)<1\rho(G) < 1. Собственный вектор GG, соответствующий наибольшему собственному значению, определяет доминирующий режим возбуждения — группу типов событий, которые обычно происходят вместе.

Интересная постановка для стакана ордеров имеет D=6D = 6: рыночная покупка, рыночная продажа, лимитная покупка, лимитная продажа, отмена покупки, отмена продажи. В этой матрице 36 элементов, и именно такой части инструментария Хоукса больше нет нигде в блоге. Заметим, что один из предсказываемых ею элементов уже эмпирически описан без этой терминологии: коррелированная массовая отмена на последовательных уровнях — снятие стен — напрямую измеряется в статье позиция в очереди и анализ стен стакана. Подогнанное ϕcancel,cancel\phi_{\text{cancel},\text{cancel}} — то же явление, выраженное через ядро, поэтому два измерения должны согласовываться. Если это не так, одно из них ошибочно.

Модели для нескольких активов и площадок используют тот же аппарат с другими метками: внедиагональные ядра фиксируют опережение-запаздывание и заражение. Shi, Broussard и Booth (2019) применили именно этот подход к 30 акциям Dow во время мгновенного обвала 2010 года и обнаружили асимметричное перекрестное возбуждение с идентифицируемыми источниками заражения.

Калибровка

Калибровка поля интенсивности событий

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

Для моментов событий {t1,,tN}\{t_1, \ldots, t_N\} на отрезке [0,T][0, T]:

(θ)=i=1Nlogλ(ti)0Tλ(t)dt\ell(\theta) = \sum_{i=1}^{N} \log \lambda^*(t_i) - \int_0^T \lambda^*(t) \, dt

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

Для экспоненциального ядра рекурсия

Ri=j<ieβ(titj)=eβ(titi1)Ri1+1R_i = \sum_{j < i} e^{-\beta(t_i - t_j)} = e^{-\beta(t_i - t_{i-1})} \cdot R_{i-1} + 1

дает λ(ti)=μ+αRi\lambda^*(t_i) = \mu + \alpha R_i за O(1)O(1) на событие, а компенсатор замыкается:

0Tλ(t)dt=μT+αβi=1N(1eβ(Tti))\int_0^T \lambda^*(t) \, dt = \mu T + \frac{\alpha}{\beta} \sum_{i=1}^{N} \left(1 - e^{-\beta(T - t_i)}\right)

Общая стоимость — O(N)O(N), поэтому подгонка на миллионе событий выполняется рутинно. Оптимизируйте методом L-BFGS-B с ограничениями положительности.

До доверия результату стоит знать о двух режимах отказа. При n1n \to 1 поверхность правдоподобия сильно уплощается: околокритическая подгонка может выдать выглядящую уверенно точечную оценку в почти плоской впадине, где изменение лежит в пределах ±0.1\pm 0.1 для nn. Поэтому всегда профилируйте правдоподобие по nn, а не считывайте оценку из матрицы Гессе оптимизатора. В многомерном случае число параметров растет как O(D2)O(D^2), поэтому после D10D \approx 10 нужна group-Lasso-регуляризация норм ядер, иначе матрица подгоняет шум.

EM и непараметрическая оценка

EM рассматривает структуру ветвления как скрытую: каждое событие является либо иммигрантом от μ\mu, либо потомком более раннего события. Общая механика E- и M-шагов, оговорка о локальном оптимуме и дисциплина множественных инициализаций описаны в разделе Baum-Welch статьи обнаружение режимов с HMM и здесь полностью совпадают. Специфическая для Хоукса часть — сама величина E-шага:

pij=ϕ(titj)λ(ti),pi0=μλ(ti)p_{ij} = \frac{\phi(t_i - t_j)}{\lambda^*(t_i)}, \quad p_{i0} = \frac{\mu}{\lambda^*(t_i)}

pijp_{ij} — апостериорная вероятность того, какое событие вызвало какое. Это интерпретируемый результат, а не просто промежуточная величина оптимизации. Суммирование по типу события дает атрибуцию потока: вот такая доля продаж за последний час вызвана предыдущими продажами, а такая пришла извне. Кроме того, это позволяет непараметрически оценить ϕ\phi как кусочно-постоянную функцию на сетке и проверить экспоненциальное предположение, не выбирая заранее альтернативную форму. Стоимость полной матрицы — O(N2)O(N^2) для pijp_{ij}, поэтому без приближения метод не масштабируется примерно дальше 10510^5 событий.

Спектральный метод Bacry и Muzy — другой безмодельный путь: спектральная плотность мощности стационарного процесса Хоукса раскладывается как C^(ω)=IΦ^(ω)2diag(μ)\hat{C}(\omega) = |I - \hat{\Phi}(\omega)|^{-2} \cdot \text{diag}(\mu), поэтому оценка плотности ковариации и решение факторизации восстанавливают ядра без предположения о параметрической форме.

Подгонка реального криптовалютного потока

Сведение потока криптовалютных сделок

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

Данные: временные метки aggTrade для Binance BTC/USDT на заданном окне, причем окно, символ и число событий должны быть явно указаны рядом с каждой опубликованной цифрой. aggTrade объединяет исполнения по одной цене от одного тейкерского ордера в одну запись, и это правильная единица здесь: один агрессивный ордер — одно событие, а не отдельное событие на каждое исполнение у контрагента.

Одномерная подгонка

import numpy as np
import pandas as pd
from tick.hawkes import HawkesExpKern

trades = pd.read_parquet("binance_btcusdt_aggtrades.parquet")

t0 = trades["transact_time"].iloc[0]
ts = ((trades["transact_time"] - t0) / 1000.0).to_numpy(dtype=np.float64)
T = ts[-1]

learner = HawkesExpKern(decays=BETA_GRID, penalty="none", verbose=False)
learner.fit([ts])

mu_hat = learner.baseline[0]
alpha_hat = learner.adjacency[0, 0]
n_hat = alpha_hat / BETA_CHOSEN

print(f"events   = {len(ts)}")
print(f"window   = {T/3600:.2f} h")
print(f"mu       = {mu_hat:.4f} events/s")
print(f"n        = {n_hat:.4f}")
print(f"lambda_bar (model) = {mu_hat/(1-n_hat):.4f} events/s")
print(f"lambda_bar (data)  = {len(ts)/T:.4f} events/s")

Две последние строки — первая бесплатная проверка здравого смысла: если стационарная средняя интенсивность модели μ/(1n)\mu/(1-n) не близка к эмпирической частоте событий, подгонка неверна независимо от того, что сообщил оптимизатор.

β\beta не следует фиксировать вручную. Профилируйте правдоподобие по сетке затуханий и публикуйте профиль, потому что α\alpha и β\beta сильно обмениваются влиянием, а n=α/βn = \alpha/\beta может быть стабильным, пока ни один из параметров по отдельности таковым не является.

Действительно ли ядро затухает экспоненциально?

Утверждение о степенном законе в литературе происходит из статей о фондовых фьючерсах 2013 года. Проверьте его напрямую: подгоните экспоненциальное и степенное ядро к одному и тому же потоку, сравните логарифмы правдоподобия на отложенных данных (не внутри выборки, поскольку у степенного закона есть дополнительный параметр) и отдельно рассмотрите эмпирическое затухание интенсивности после крупных сделок.

large = ts[trades["quantity"].to_numpy() > LARGE_TRADE_THRESHOLD]

lags = np.logspace(-3, 2, 60)   # 1 ms .. 100 s
rate = np.empty(len(lags) - 1)
for k in range(len(lags) - 1):
    lo, hi = lags[k], lags[k + 1]
    counts = [
        np.searchsorted(ts, t0_ + hi) - np.searchsorted(ts, t0_ + lo)
        for t0_ in large
    ]
    rate[k] = np.mean(counts) / (hi - lo)

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

Матрица ветвления

Минимальная жизнеспособная многомерная модель имеет два измерения: агрессивная покупка и агрессивная продажа, разделенные по is_buyer_maker. Если доступны данные L3, добавьте отмены.

buys  = ts[~trades["is_buyer_maker"].to_numpy()]   # taker bought
sells = ts[ trades["is_buyer_maker"].to_numpy()]   # taker sold

mv = HawkesExpKern(decays=BETA_CHOSEN, penalty="l2", C=C_CV, verbose=False)
mv.fit([buys, sells])

G = mv.adjacency / BETA_CHOSEN          # branching matrix
rho = np.max(np.abs(np.linalg.eigvals(G)))
print("G =\n", G)
print(f"spectral radius = {rho:.4f}")   # must be < 1

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

Согласие модели: преобразование времени

Теорема о преобразовании времени гласит: если модель верна, преобразованные моменты τi=0tiλ(s)ds\tau_i = \int_0^{t_i} \lambda^*(s)\,ds образуют пуассоновский процесс с единичной интенсивностью, поэтому разности Δτi\Delta\tau_i имеют распределение Exp(1)\text{Exp}(1).

from scipy.stats import kstest, expon

compensator = np.empty(len(ts))
for i, ti in enumerate(ts):
    compensator[i] = mu_hat * ti + (alpha_hat / BETA_CHOSEN) * np.sum(
        1 - np.exp(-BETA_CHOSEN * (ti - ts[:i]))
    )

tau = np.diff(compensator)
stat, pval = kstest(tau, expon(scale=1.0).cdf)
print(f"KS = {stat:.4f}, p = {pval:.4g}, N = {len(tau)}")

Есть важная оговорка по интерпретации этого теста: при NN в сотнях тысяч критерий KS отвергает модель из-за незначительной ошибки спецификации. Крошечное значение p при N=5×105N = 5 \times 10^5 само по себе почти ничего не означает; информативны QQ-график Δτ\Delta\tau против Exp(1)\text{Exp}(1) и сама статистика KS, которая является масштабно независимым размером эффекта. Публикуйте оба результата и делайте это честно: если экспоненциальное ядро отвергается на криптовалютном потоке, это достойный публикации результат, а не то, что нужно прятать, в духе честного отрицательного результата о надежных преимуществах.

Действительно ли n меняется вместе с хрупкостью?

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

Стабильность и устойчивость

Стабильная кластерная система событий

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

Разрешение временных меток создает самовозбуждение. Временные метки Binance aggTrade имеют миллисекундное разрешение. Сделки, которые действительно разделены микросекундами, схлопываются в одинаковые миллисекундные метки, а правдоподобие Хоукса воспринимает совпадающие события как максимальное возбуждение — ϕ(0)\phi(0) вычисляется ровно при нулевом лаге. Это смещает nn вверх, причем смещение растет вместе с активностью. Значит, оно сильнее всего именно во время всплесков, когда числу особенно хочется доверять. Измерьте это: посчитайте долю событий, имеющих общую временную метку с соседним событием, затем повторно подгоните модель, равномерно добавив этим событиям шум внутри их миллисекундного интервала, и сообщите, насколько изменился nn. Если джиттер меняет nn больше, чем доверительный интервал, итоговое число измеряет часы, а не рынок.

Пакетирование биржей. Биржи не отправляют события в момент их возникновения; они отправляют их, когда конвейер сопоставления и распространения сбрасывает накопившиеся данные. Документированный пример — ограничение Binance потока ликвидаций до одного сообщения в секунду: поток, который выглядит как кластер поступлений, частично является артефактом издателя. Любая пакетная обработка торговой ленты оставляет периодичность в распределении межсобытийных интервалов, которую ядро Хоукса охотно поглотит в α\alpha. Проверьте это напрямую: постройте гистограмму межсобытийных интервалов и найдите пики на периоде пакетирования до любой подгонки.

Чувствительность к предполагаемому затуханию. n=α/βn = \alpha/\beta зависит от β\beta, а β\beta обычно фиксируют или ищут по сетке, а не оценивают совместно. Отчитывайтесь о nn как о функции β\beta на правдоподобном диапазоне, а не как об одной точке. Если кривая плоская, число устойчиво; если nn тесно следует за β\beta, вы просто выбрали ответ заранее.

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

Здесь действует тот же принцип, что установлен в статье ловушка точности GPU: чисто работающий конвейер, который возвращает правдоподобное число, не доказывает правильность числа. Единственная защита — возмущать входы, которые не должны иметь значения, и проверять, что результат не меняется.

Что это дает и чего не дает

Полезная структура интенсивности в рыночной сложности

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

Формирование цены. В модели Kyle (1985) маркет-мейкер оценивает цену по чистому потоку ордеров, смешивающему информированную и шумовую торговлю; коэффициент воздействия λ\lambda и глубина 1/λ1/\lambda, вместе с последующей литературой и свидетельствами против линейности Kyle, разобраны в статье модели проскальзывания и затрат. В интерпретации Хоукса μ\mu соответствует действительно новой информации, а самовозбужденные события — механической реакции. Поэтому nn становится измеримым приближением доли потока, обусловленной шумом.

Кластеризация волатильности. Кластеризация, персистентность, условие стационарности α+β<1\alpha + \beta < 1 и долгосрочная дисперсия ω/(1αβ)\omega/(1-\alpha-\beta) — структурно точный аналог условий n<1n < 1 и μ/(1n)\mu/(1-n) — рассмотрены в статье прогнозирование волатильности криптовалют с GARCH. Действительно новое утверждение принадлежит Bacry, Delattre, Hoffmann и Muzy (2013): почти критический процесс Хоукса порождает ряды доходностей, автокорреляция волатильности которых затухает по степенному закону, без явной модели волатильности. Кластеризация волатильности возникает как свойство самовозбуждающегося потока ордеров, а не задается заранее.

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

Для исполнения из самовозбуждения следует рекомендация: замедлиться после одного среза и ускориться в спокойные периоды. Она уже лежит в основе раздела об обратной связи POV в статье алгоритмы исполнения TWAP, VWAP и POV, а критика наивного равномерного дробления приведена в Almgren-Chriss. Подгонка Хоукса добавляет не совет, а число: период полураспада подогнанного ядра ln2/β\ln 2 / \beta показывает, сколько времени требуется для затухания возбуждения от собственного среза, превращая фразу о коротком ожидании в конкретную длину паузы.

Ограничения

Смена режимов и ограничения модели событий

Без торможения. Классическая модель позволяет событиям только увеличивать интенсивность. На рынках бывает обратное: крупный лимитный ордер, поглощающий давление, может сдерживать агрессивную торговлю. Процессы Хоукса с ингибированием допускают отрицательные значения ядра, но требуют поддерживать λ(t)0\lambda^*(t) \geq 0. Важно ли это для конкретной подгонки, видно по непараметрической оценке ядра: если кусочно-постоянная ϕ^\hat\phi опускается ниже нуля на каком-либо лаге, ограниченная модель сопротивляется данным.

Нестационарность. Стандартная модель предполагает стационарность, а криптовалютный рынок работает 24/7, но не является однородным: ликвидность, состав участников и частота событий меняются в течение дня и около временных меток финансирования. Изменяющаяся во времени базовая интенсивность μ(t)\mu(t) учитывает это ценой дополнительных параметров, а приведенная выше чувствительность к окну оценки помогает понять, нужна ли такая модель.

Итоги

Поток ордеров организуется в кластерную интенсивность

Процесс Хоукса стоит своих вычислительных затрат по одной причине: он сводит кластеризацию потока ордеров к одному интерпретируемому числу — коэффициенту ветвления nn, который вычисляется только по временным меткам, без реконструкции стакана и предположений о плече или позиционировании. Это самая дешевая доступная оценка того, насколько рынок сейчас эндогенен, — тот же вопрос, на который каскады ликвидаций отвечают дороже через g=ρ/Δg = \rho/\Delta.

Аппарат прост: экспоненциальные ядра дают правдоподобие за O(N)O(N) благодаря рекурсии RiR_i, EM дает интерпретируемое апостериорное распределение того, какое событие вызвало какое, а преобразование времени дает настоящую проверку согласия вместо аргумента о правдоподобии. Сложно не вычислить результат, а доверять ему. Округление миллисекундных меток смещает nn вверх именно во время всплесков, пакетирование биржей оставляет структуру, которую ядро поглощает, а nn меняется вместе с предполагаемым затуханием и окном оценки. Коэффициент ветвления без этих четырех проверок чувствительности — это число, а не измерение.


Ссылки и дополнительная литература

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

Авторы

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-трейдингу и обновления платформы.

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