Universal Features of Price Formation in Financial Markets: Perspectives from Deep Learning¶
Authors: Justin Sirignano, Rama Cont Institution: University of Illinois at Urbana-Champaign; CNRS & Imperial College London Year: 2018 (arXiv March 2018); published Quantitative Finance 19(9), 2019 arXiv: 1803.06917 Categories: q-fin.ST, q-fin.TR, stat.ML
Plain-language abstract¶
Standard practice in quantitative finance is to fit a separate model for each stock. Sirignano and Cont flip this: they train a single deep neural network on pooled data from ~500 US stocks and show it outperforms stock-specific models for predicting next-price-move direction — even on stocks the model has never seen in training. This is nontrivial evidence that the mapping from order-book state to price change is universal (stock-agnostic) and stationary (stable over at least 18 months). The architecture is a 3-layer LSTM on the Nasdaq-L3 order-book history, trained on billions of events from Jan 2014 – March 2017 across ~1000 stocks. The results argue strongly for pooling data across the universe rather than splitting it by stock or sector when training LOB models.
Key contributions¶
- Universal price formation — A single LSTM trained on pooled data from 500 stocks outperforms 500 individually-trained stock-specific LSTMs on next-price-move classification, including on stocks held out of the training set. 1 year of pooled data ≈ 500 stock-years of single-asset data.
- Nonlinearity gain — A stock-specific deep network beats a stock-specific VAR by 5–10% accuracy — nonlinear patterns in the LOB→price map are large.
- Stationarity — A model trained on Jan 2014–May 2015 retains forecast accuracy 18 months later (Jan–Mar 2017) with no retraining. Contradicts the common belief that frequent recalibration is required.
- Long-memory / path-dependence — An LSTM beats a feed-forward network; accuracy further improves when the history window grows from 100 to 5000 steps (~2 hours of events on average). Price formation is non-Markovian.
- No benefit from sector / tick-size stratification — Pre-partitioning data by sector or tick size and training separate models does NOT beat the pooled universal model. The network learns its own internal normalisation.
- Generalisation to new stocks — Model trained on stocks 1–464 performs within 0.2% of stock-specific models on held-out stocks 465–489, and actually beats them on average. Direct relevance for newly-listed stocks, stocks with short history, or handling stock splits.
Method summary¶
Architecture¶
Recurrent network: 3 stacked LSTM layers → one feed-forward ReLU layer → softmax over \(\{-1, +1\}\) (direction of next mid-price move). Trained on ~100k parameters (50 units/layer) and a 150 units/layer variant that reaches several hundred thousand parameters.
At each step \(t\):
where \(X_t\) is the LOB state (prices, sizes across levels) and \(h_t\) is the LSTM hidden state summarising the history.
Target¶
Next-price-move event — not a fixed-time horizon. Let \(\tau_1 < \tau_2 < \ldots\) be the sequence of times at which the mid-price changes. For each \(\tau_k\), predict:
Classification accuracy (proportion correct) is the reported metric. Baseline coin-flip = 50%; statistical noise at this sample size is <1%.
Training¶
- Data: Nasdaq L3 via LOBSTER. ~1000 stocks, Jan 2014 – March 2017.
- Universal model: asynchronous SGD distributed across 25 GPU nodes.
- Stock-specific models: one GPU per stock, ~500 in parallel.
Backpropagation through time¶
Truncated BPTT with \(T\) steps. The paper sweeps \(T \in \{100, 5000\}\) (∼170 sec to 2 hours of event time on average) and shows accuracy increases monotonically with \(T\).
Main results¶
| Comparison | Delta accuracy |
|---|---|
| Stock-specific LSTM vs stock-specific linear VAR | +5% to +10% |
| Universal LSTM vs stock-specific linear VAR | ~+10% |
| Universal LSTM vs stock-specific LSTM | Universal wins consistently, especially for data-poor stocks |
| Universal LSTM (trained on stocks 1–464) vs stock-specific LSTM on held-out 465–489 | Universal wins 25/25 stocks, +1.45% average |
| 150 units/layer vs 50 units/layer (universal) | Larger network wins — no overfitting on pooled data |
| LSTM vs feed-forward (Markov) | LSTM wins substantially |
| 5000-lag LSTM vs 100-lag LSTM | 5000-lag wins |
Training on 19 months of data beats training on 1/3/6 months for 100% of tested stocks (1-month training is 7.2% worse on average). Conclusion: use all available history.
Nonlinear features discovered¶
Sensitivity analysis reveals: - The standard depth-imbalance → next-price-move mapping (queueing-theory prediction from Cont & de Larrard 2013) emerges from the learned model — validated non-parametrically. - Levels 5–10 of the book contribute additional predictive power beyond the top of the book, though with tighter output range — consistent with multi-level OFI insights.
Limitations¶
- Event-time horizon, not wall-clock. The model predicts the next price move; the time to that move varies from sub-second to seconds. Implications for trading strategy depend on execution horizon.
- No transaction-cost analysis. Pure accuracy metric; whether a 10% edge over 50% is tradeable after costs is not addressed.
- US equities only. Universality claim is within the Nasdaq equity universe; transfer to futures, FX, crypto, or non-US equities is left to follow-up work.
- Feature opacity. Sensitivity analysis recovers some known relations (depth imbalance), but what drives the extra nonlinear signal remains under-documented. Not directly interpretable.
- Architecture choice not rigorously ablated. LSTM vs Transformer vs attention-based alternatives aren't compared — later literature (deep-lob-forecasting, DeepLOB) goes further on architecture.
- Stationarity claim is strong. 18-month stability is remarkable, but spans a largely calm market regime (2015–2017). Behaviour in a regime-change year is not tested.
Connections¶
- Follow-up / complement: deep-lob-forecasting (Briola-Bartolucci-Aste, 2024) sharpens the practical picture — same LOBSTER data, but classifies stocks by tick-size regime and argues that accuracy-does-not-imply-tradability. The universality claim here needs the tradeability filter there.
- Theoretical backing: price-impact-order-book-events (Cont-Kukanov-Stoikov, 2014) provides the linear counterpart — OFI → price change, universal across stocks. The LSTM is the nonlinear extension of the same hypothesis.
- Direct lineage: The follow-on cross-impact-ofi-equity-markets uses the same Nasdaq / LOBSTER data and confirms the universality finding using a linear-in-integrated-OFI model — a linear baseline that the LSTM doesn't dominate by as much as one might expect.
- Cross-reference: transformer-architecture is the newer sequence-model workhorse; Transformer-on-LOB is the natural successor to the LSTM approach.
Signal-design takeaways¶
For anyone building an LOB-snapshot or L3 signal:
- Pool across stocks. If you have <500 stocks' worth of single-name history, a universal model trained on a broader universe will almost certainly beat a stock-specific one.
- Don't pre-normalise. Volatility / tick-size / sector stratification does not help LSTMs on this task. Let the network absorb heterogeneity.
- Use long history. 100 lags is not enough. Target \(\geq\!1000\) lags; 5000 is better if compute allows.
- Event time, not wall-clock time. Predicting the next price move is cleaner than "price in \(\Delta t\)" because it removes the time-between-events noise.
- Recalibration is overrated. If the relationship is stationary, there is no penalty for training on old data and deploying for 12+ months.