Hawkes Processes for Order Arrival and Market Event Modeling
L'articolo sull'impronta digitale utilizza un vettore di tre numeri: hawkes_mu, hawkes_alpha, hawkes_beta - come componente temporale della firma comportamentale di un partecipante e afferma che i market maker mostrano una forte autoeccitazione. Non dice mai da dove provengono questi tre numeri, da cosa vengono stimati o quanto dovresti fidarti di loro. Questo articolo è la metà mancante: lo stimatore, la diagnostica di adattamento e l'unica quantità derivata che risulta essere più importante dei tre parametri stessi: il rapporto di ramificazione .
L'affermazione qui testata è ristretta e verificabile. Il flusso degli ordini è auto-eccitante: una vendita aggressiva rende più probabile la successiva vendita aggressiva, in un modo che un modello di Poisson con qualsiasi tasso variabile nel tempo non può riprodurre. Se ciò fosse vero, un processo di Hawkes adattato ai timestamp del commercio grezzo dovrebbe (a) battere una linea di base di Poisson sulla probabilità di hold-out, (b) produrre un rapporto di ramificazione strettamente compreso tra 0 e 1 e (c) superare un test di bontà di adattamento con riscalamento temporale. I punti (a) e (b) sono ampiamente riportati per i futures su azioni. Il punto (c) è il punto in cui i documenti Hawkes pubblicati di solito tacciono, ed è dove il nastro crittografico non è mai stato controllato su questo blog.
Due elementi di background già posseduti da questo blog, quindi non vengono riderivati qui. La struttura di feedback autoeccitante – eventi che innescano più eventi dello stesso tipo, subcritici al di sotto di una soglia e fuori controllo al di sopra di essa – è derivata concretamente come numero di riproduzione in liquidation cascades as a trading signal, incluso il movimento totale in serie geometrica, il regime di flash-crash supercritico e gli interruttori automatici come una delle tre cose che lo vincolano. Il rapporto di ramificazione di seguito è riportato l'analogo del processo a punti di quello . Ciò che è veramente additivo qui: è stimabile in tempo reale basandosi esclusivamente sui timestamp delle transazioni, senza mappa di liquidazione, senza profondità del portafoglio ordini e senza ipotesi di leva finanziaria. Questa è l'intera ragione per preoccuparsi del meccanismo del processo a punti.
La premessa che il tempo dell'orologio sia l'asse di campionamento sbagliato è l'argomento fondante di beyond time bars, che risolve il problema costruendo barre migliori. Questo articolo risolve il problema in modo diverso: non campionando affatto e modellando direttamente i tempi dell'evento.
Fondamenti del processo puntuale, in breve

Un processo puntuale è un insieme casuale di tempi di eventi, definiti dalla sua intensità condizionale — il tasso di arrivo istantaneo data la cronologia completa :
Si tratta del processo di Poisson omogeneo . Il disomogeneo processo di Poisson lo consente seguono una forma deterministica (una curva intraday a forma di U, diciamo), ma assumono comunque un'indipendenza condizionale: sapere che un'operazione è appena avvenuta non ti dice nulla sul fatto che un'altra sia imminente. Questo presupposto è ciò che il flusso degli ordini reali viola e la violazione è l’intero argomento di questo articolo. L'asterisco dentro è l’intera distinzione: segna la dipendenza dalla storia.
Il processo Hawkes

Un processo di Hawkes univariato ha intensità
con l'intensità di fondo (arrivi esogeni) e il nucleo di eccitazione. Ogni evento aumenta l'intensità , che poi decade con la forma di . Un insieme di eventi recenti produce un’elevata intensità, rendendo più probabili ulteriori eventi: il processo ricorda la propria storia.
Il rapporto di ramificazione
è il numero medio di eventi figlio attivati da un genitore. La stazionarietà richiede ; l'intensità media stazionaria è , che diverge come . COSÌ divide l'attività totale in una frazione esogena e una frazione endogena : A , il settanta per cento degli eventi sono reazioni ad altri eventi piuttosto che risposte a qualcosa al di fuori del mercato.
Questa è esattamente la divisione subcritica/supercritica del moltiplicatore a cascata in liquidation cascades, raggiunta da una direzione diversa. La differenza in quanto ti costa calcolare: richiede una mappa anticipata della densità delle vendite forzate e della profondità dei libri in tempo reale, entrambe stime stratificate su ipotesi sulla distribuzione della leva finanziaria. richiede un elenco di timestamp.
Filimonov e Sornette (2012) hanno riferito aumentando da circa 0,3 a oltre 0,7 nei futures E-mini S&P 500 tra il 1998 e il 2007. Hardiman, Bercot e Bouchaud (2013) collocano lo stesso contratto vicino con un nucleo di esponente della legge di potenza circa a brevi ritardi. Entrambi sono risultati di futures azionari di oltre un decennio fa e nessuno dei due si trasferisce alle criptovalute senza misurazione. Riprodurli non è lo scopo di questo articolo; verificare se lo stesso regime vale su un nastro di futures perpetui 24 ore su 24, 7 giorni su 7 con diversi partecipanti e se non esiste alcuna discontinuità di apertura del mercato.
Scelte del kernel
Esponenziale, , con . Markoviano, quindi la probabilità ha un -ricorsione per evento (sotto). È qui che inizia ogni adattamento pratico.
Legge di potenza, . Riproduce il clustering a memoria lunga, ma perde la ricorsione: diventa la valutazione della verosimiglianza o richiede il troncamento.
Somma degli esponenziali, . Si avvicina al decadimento della legge di potenza con tempistiche mantenendo la ricorsione. A di solito è sufficiente, con dai millisecondi ai minuti.
Se gli arrivi del commercio di criptovalute decadono in modo esponenziale o come legge di potere è una questione empirica con una risposta in termini di rapporto di verosimiglianza, ed è misurata di seguito anziché citata.
Processi Hawkes multivariati

Per tipi di eventi,
Dove descrive come digitare eccita il tipo . Con i kernel esponenziali la matrice di ramificazione è e la stazionarietà richiede un raggio spettrale . L'autovettore di associato all'autovalore più grande identifica la modalità di eccitazione dominante, ovvero quale gruppo di tipi di eventi tende ad attivarsi insieme.
L'istanza interessante per un portafoglio ordini è : acquisto a mercato, vendita a mercato, acquisto con limite, vendita con limite, annulla acquisto, annulla vendita. Quella matrice ha 36 voci ed è la parte del toolkit Hawkes che questo blog non ha da nessun'altra parte. Si noti che una delle voci previste è già documentata empiricamente senza il vocabolario: la cancellazione di massa correlata su livelli consecutivi - wall pulls - è misurata direttamente in [analisi della posizione della coda e del wall book degli ordini] (/en/blog/post/queue-position-order-book-wall-analysis). Un montato è lo stesso fenomeno espresso come nocciolo e le due misurazioni dovrebbero concordare. Se non lo fanno, uno di loro è sbagliato.
Le versioni cross-asset e multi-venue sono lo stesso meccanismo con etichette diverse: i kernel fuori diagonale catturano il lead-lag e il contagio, e Shi, Broussard e Booth (2019) hanno utilizzato esattamente questo sui 30 titoli Dow durante il flash crash del 2010, trovando un’eccitazione incrociata asimmetrica con fonti di contagio identificabili.
Calibrazione

Massima probabilità
Per gli orari degli eventi SU :
Il primo termine premia l'intensità laddove si sono verificati gli eventi; la seconda penalizza l'intensità che non ha prodotto nulla.
Per il kernel esponenziale la ricorsione
dà A per evento e il compensatore si chiude:
Costo totale , che è ciò che rende routine gli adattamenti di milioni di eventi. Ottimizzare con L-BFGS-B sotto vincoli di positività.
Due modalità di errore che vale la pena conoscere prima di fidarsi di un output. La superficie della probabilità si appiattisce notevolmente , quindi un adattamento quasi critico può riportare una stima puntuale dall'aspetto fiducioso situata in una valle che è quasi in piano In - Profila sempre la probabilità piuttosto che leggere l'Hessian dell'ottimizzatore. E nel caso multivariato il conteggio dei parametri cresce come , così passato è necessario il lasso di gruppo sulle norme del kernel o la matrice si adatta al rumore.
EM e stima non parametrica
EM tratta la struttura ramificata come latente: ogni evento è un immigrato da o un frutto di qualche evento precedente. La meccanica generica E-step/M-step, l'avvertenza dell'ottimale locale e la disciplina dell'inizializzazione multipla sono trattati nella sezione Baum-Welch di rilevamento del regime con HMM e sono identici qui. La parte specifica di Hawkes è la quantità E-step stessa:
è un posteriore rispetto a quale evento ha causato quale: un output interpretabile, non solo un intermedio di ottimizzazione. Sommando per tipo di evento si ottiene un'attribuzione del nastro: questa frazione delle vendite dell'ultima ora è stata innescata da vendite precedenti, quella frazione è arrivata dall'esterno. Ti consente anche di stimare in modo non parametrico come costante a tratti su una griglia, che è il modo in cui controlli l'ipotesi esponenziale senza impegnarti in un'alternativa. Costo: per intero matrice, quindi non si ridimensiona approssimativamente eventi senza approssimazione.
Il metodo spettrale di Bacry e Muzy è l'altro percorso senza modello: la densità spettrale di potenza di un processo di Hawkes stazionario dipende da , quindi stimando la densità di covarianza e risolvendo la fattorizzazione si recuperano i nuclei senza alcuna forma parametrica assunta.
Montaggio del vero nastro crittografico

Ogni numero in questa sezione deve provenire da un adattamento effettivo ai dati reali. Il recupero dei parametri inseriti in un simulatore non è la prova di altro che il funzionamento dell'ottimizzatore.
I dati: Binance BTC/USDT aggTrade timestamp su una finestra definita, con la finestra, il simbolo e il conteggio degli eventi dichiarati esplicitamente accanto a ogni figura riportata. aggTrade gli aggregati vengono eseguiti allo stesso prezzo da un ordine acquirente in un singolo record, che in questo caso è l'unità giusta: un ordine aggressivo è un evento, non un evento per esecuzione della controparte.
Adattamento univariato
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")
Le ultime due stampe sono il primo controllo di integrità che non costa nulla: se il modello stazionario significa intensità non si avvicina al tasso di eventi empirici, l'adattamento è errato indipendentemente da ciò che è stato riportato dall'ottimizzatore.
non deve essere riparato a mano. Profila la probabilità su una griglia di decadimenti e riporta il profilo, perché E scendere fortemente e può essere stabile mentre nessuno dei due parametri lo è.
Il kernel decade effettivamente in modo esponenziale?
L’affermazione della legge di potenza in letteratura proviene dai documenti sui futures azionari del 2013. Testatelo direttamente: adattate un kernel esponenziale e un kernel basato sulla legge di potenza sullo stesso nastro, confrontateli in base alla probabilità logaritmica sui dati conservati (non nel campione, poiché la legge di potenza ha un parametro aggiuntivo) e osservate separatamente il decadimento empirico dell'intensità a seguito di grandi operazioni.
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)
Log-log tracciato, un kernel esponenziale si piega; una legge di potenza è diritta. Questo grafico è una prova più forte di entrambi i numeri di verosimiglianza, perché mostra dove si trova il disadattamento: in genere gli esponenziali si adattano in modo insufficiente alla coda e si adattano eccessivamente ai primi millisecondi.
La matrice di ramificazione
Modello multivariato minimo praticabile: due dimensioni, acquisto aggressivo e vendita aggressiva, separate da is_buyer_maker. Se i dati L3 sono disponibili, estendi agli annullamenti.
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
Le due quantità da pubblicare sono la matrice stessa e il suo raggio spettrale. L'asimmetria è la parte interessante: se vendere-eccita-vendere supera l'acquisto-eccita-acquista, e se i termini incrociati sono simmetrici, sono affermazioni verificabili sul nastro crittografico che nessuno qui ha misurato.
Bontà di adattamento: ridimensionamento temporale
Il teorema del time-rescaling: se il modello è corretto, i tempi trasformati formano un processo di Poisson a tasso unitario, quindi le differenze Sono .
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)}")
Un avvertimento nel leggere questo test: con su centinaia di migliaia, il test KS viene rifiutato per banali errori di specifica. Un piccolo valore p a non significa quasi nulla da solo; l'output informativo è il grafico QQ di contro e la stessa statistica KS, che è una dimensione dell'effetto senza scala. Segnalateli entrambi, e segnalateli onestamente: se il kernel esponenziale viene rifiutato sul nastro crittografico, questo è un risultato che vale la pena pubblicare piuttosto che seppellire, nello stesso spirito dell'onesto risultato negativo su bordi robusti.
In realtà non ci si muove con fragilità?
L'affermazione che è un indicatore di fragilità in tempo reale che viene citato costantemente e testato raramente. Il test è semplice: stima sulle finestre scorrevoli in un periodo calmo e in una data nota della cascata crittografica, e vedere se aumenta prima o solo durante l'evento. Una quantità che aumenta solo in concomitanza con il crollo è una descrizione, non un avvertimento.
Stabilità e robustezza

Un montato non è una misura finché non sai quanto si muove quando cambi cose che non dovrebbero avere importanza. Quattro trappole specifiche, in ordine approssimativo in base al danno che provocano.
La risoluzione del timestamp produce autoeccitazione. Binance aggTrade i timestamp hanno una risoluzione di millisecondi. Le operazioni che erano realmente distanti microsecondi collassano su identici francobolli di millisecondi, e una probabilità di Hawkes legge gli eventi coincidenti come la massima eccitazione: valutato esattamente con un ritardo pari a zero. Questo pregiudica verso l'alto, e la distorsione cresce con l'attività, il che significa che è peggiore esattamente durante i picchi in cui si desidera che il numero sia affidabile. Quantificarlo: contare la frazione di eventi che condividono un timestamp con un vicino, quindi riadattarli con quegli eventi jitterati uniformemente all'interno del loro contenitore di millisecondi e riportare quanto si muove. Se il jitter cambia per un valore superiore all'intervallo di confidenza, il numero principale misura l'orologio, non il mercato.
Batch degli scambi. Gli scambi non emettono eventi nel momento in cui si verificano; li emettono mentre la loro pipeline di corrispondenza e diffusione si scarica. La limitazione di un secondo al secondo da parte di Binance sul flusso di liquidazione è un precedente documentato: un flusso che assomiglia ad arrivi in cluster è in parte un artefatto dell'editore. Qualsiasi batch nel feed commerciale imprime una periodicità sulla distribuzione inter-arrivo in cui un kernel Hawkes assorbirà felicemente . Controllalo direttamente: istogramma i tempi di inter-arrivo e cerca i picchi nel periodo di batching prima di montare qualsiasi cosa.
Sensibilità al decadimento presunto. dipende da , E è solitamente fisso o ricercato su una griglia piuttosto che stimato congiuntamente. Rapporto in funzione di nell'intervallo plausibile, non come punto. Se la curva è piatta, il numero è reale; Se tracce da vicino, hai scelto la tua risposta.
Finestra di stima. stimati su un’ora, un giorno e una settimana differiranno, in parte perché il processo è genuinamente non stazionario e in parte perché una finestra più lunga mescola i regimi, il che gonfia l’eccitazione apparente fondendo la variazione tra regimi con il raggruppamento all’interno del regime. Riporta lo sweep della lunghezza della finestra. Il modo giusto per leggere una lievitazione è rispetto alla stessa lunghezza della finestra misurata altre volte, mai rispetto a un numero di una finestra diversa.
Il modello qui è quello stabilito nella trappola di precisione della GPU: una pipeline che funziona in modo pulito e restituisce un numero plausibile non è la prova di un numero corretto e l'unica difesa è perturbare gli input che non dovrebbero avere importanza e confermare che l'output non si muove.
Cosa ti compra e cosa non ti compra

Tre collegamenti alla teoria della microstruttura, tenuti brevi perché il blog li tratta approfonditamente altrove.
Formazione del prezzo. In Kyle (1985), il market maker prezza il flusso netto degli ordini mescolando trading informato e rumore; il coefficiente di impatto e profondità sono presentati con la letteratura successiva - comprese le prove contro la linearità di Kyle - in modelli di costo di slittamento. Gli Hawkes leggono le mappe sulle informazioni veramente nuove e sugli eventi autoeccitati sulla reazione meccanica, sul fare un proxy misurabile per la quota di flusso determinata dal rumore.
Clustering di volatilità. Clustering, persistenza, condizione di stazionarietà e la varianza di lungo periodo — strutturalmente l'esatto analogo di E - sono trattati in Previsione della volatilità GARCH per le criptovalute. L’affermazione veramente nuova è Bacry, Delattre, Hoffmann e Muzy (2013): un processo di Hawkes quasi critico genera serie di rendimenti la cui autocorrelazione della volatilità decade come una legge di potenza, senza alcun modello di volatilità esplicito da nessuna parte. Il raggruppamento di volatilità cade come una proprietà emergente del flusso di ordini auto-eccitante piuttosto che come presupposto.
Effetto Epps. Bacry e Muzy hanno mostrato che un modello Hawkes bivariato riproduce il decadimento della correlazione misurata ad alta frequenza di campionamento esclusivamente dal tempo di propagazione finito dell'eccitazione tra i due processi: non è richiesto alcun meccanismo aggiuntivo.
In termini di esecuzione, la prescrizione che segue dall'autoeccitazione - rallentare dopo uno slice, accelerare nei periodi di quiete - è già il nucleo della sezione del ciclo di feedback POV in Algoritmi di esecuzione TWAP, VWAP e POV, e la critica dell'ingenuo equal slicing è Almgren-Chriss. Ciò che aggiunge un adattamento di Hawkes non è il consiglio ma un numero: l'emivita del kernel adattato dice quanto tempo impiega l'eccitazione della tua porzione a decadere, il che converte "aspetta un po'" in una durata di pausa specifica.
Limitazioni

Nessuna inibizione. Il modello classico consente solo agli eventi di aumentare l'intensità. I mercati sostengono il contrario: un ordine limite di grandi dimensioni che assorbe la pressione può scoraggiare il trading aggressivo. I processi di Hawkes con inibizione consentono valori del kernel negativi, a costo di doverli imporre . Se questo è importante per un dato adattamento è visibile nella stima del kernel non parametrica, se la costante a tratti scende sotto lo zero con un certo ritardo, il modello vincolato sta contrastando i dati.
Non stazionarietà. Il modello standard presuppone la stazionarietà e le criptovalute sono 24 ore su 24, 7 giorni su 7 ma non uniformi: liquidità, mix di partecipanti e tasso di eventi cambiano nel corso della giornata e in base ai timestamp dei finanziamenti. Una linea di base variabile nel tempo gestisce questo al costo di più parametri e la sensibilità della finestra di stima sopra è il modo in cui scopri se ne hai bisogno.
Riepilogo

Il processo di Hawkes vale il macchinario per una ragione: riduce il raggruppamento del flusso di ordini in un unico numero interpretabile, il rapporto di ramificazione. , calcolabile solo dai timestamp senza ricostruzione del portafoglio ordini e senza ipotesi sulla leva finanziaria o sul posizionamento. Ciò la rende la stima più economica disponibile di quanto sia endogeno un mercato attualmente: la stessa domanda liquidation cascades risponde in modo costoso attraverso .
Il meccanismo è semplice: i kernel esponenziali danno un probabilità tramite il ricorsione, EM fornisce un a posteriori interpretabile su quale evento ha causato quale, e il riscalamento temporale fornisce un vero test di bontà di adattamento piuttosto che un argomento di plausibilità. Ciò che non è semplice è fidarsi dell’output. Distorsioni di arrotondamento del timestamp al millisecondo verso l'alto proprio durante le raffiche, scambiare la struttura delle impronte in batch che il kernel assorbirà, e si muove sia con il decadimento assunto che con la finestra di stima. Un rapporto di ramificazione riportato senza queste quattro sensibilità è un numero, non una misura.
Riferimenti e ulteriori letture
- Hawkes, AG (1971). "Spettri di alcuni processi puntuali autoeccitanti e reciprocamente eccitanti." Biometrika, 58(1), 83-90.
- Bacry, E., Mastromatteo, I., e Muzy, J.-F. (2015). "I processi di Hawkes nella finanza." Microstruttura del mercato e liquidità.
- Shi, F., Broussard, J. P. e Booth, G. G. (2019). "Modellazione del comportamento di un flash crash in un mercato azionario utilizzando processi Hawkes multivariati."
- Hardiman, S., Bercot, N., e Bouchaud, J.-P. (2013). "Riflessività critica nei mercati finanziari: un'analisi del processo di Hawkes."
- Bacry, E. e Muzy, J.-F. (2014). "Modello di Hawkes per il prezzo e le dinamiche di scambio ad alta frequenza." Finanza quantitativa.
- Bompaire, M., Bacry, E. e Gaiffas, S. (2017). "tick: una libreria Python per l'apprendimento statistico, con un'enfasi sui processi Hawkes." JMLR.
- Filimonov, V. e Sornette, D. (2012). "Quantificare la riflessività nei mercati finanziari."
- Kumar, P. (2021). "Processo Deep Hawkes per la creazione di mercati ad alta frequenza."
- documentazione della libreria tick: modulo Hawkes.
- Morse, S. "Classe Python per processi Hawkes." (Tutorial e codice)
Autori
Trading-systems engineer
Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.