Ten Euler evaluations per sampled order-book window is the result a trader should remember. It is a claim about sampling cost. Whether the generated books can support a safe execution test remains a different question, which the paper leaves open.

Wang, Bacalum, Olby, Ventre and Stillman built FlowLOB as a conditional generator for level-2 book windows. Its backbone is a roughly 100M-parameter adaLN-Zero transformer. The output tensor has two channels, price and volume, across 20 book levels and 32 future time steps. Every level-time cell becomes one token, producing 640 tokens per window. Prices are represented relative to ticks. The first price coordinate records the mid-price change between consecutive states, while the remaining coordinates give adjacent level gaps in ticks. Volumes are transformed as log(V+1). This normalisation allows the same model to cover symbols with different price levels and tick sizes.

Conditioning comes through a 7x20x32 tensor containing the previous window's prices and volumes, time of day, and four scenario channels: trend, volatility, liquidity, imbalance. Trend and volatility apply across the full window. Liquidity and imbalance can vary at each future step.

The paper's main contribution is computational. A simulator is needed because, in the authors' words, "for any instrument, the market offers exactly one realized path." At 0.1s resolution, one HKEX session contains roughly 200,000 book states. A 50-step diffusion sampler makes 50 network calls for every state. Matching its fidelity in 10 calls raises the number of scenarios available under a fixed compute budget.

The authors isolate the training objective by holding the data, backbone and optimizer constant. Flow matching uses linear interpolation with velocity target x0 minus z. Variance-preserving diffusion predicts noise. Both objectives use the same fixed-step solver family at sampling time. Euler requires one network call per step, Heun two, and RK4 four.

The data comprises HKEX level-2 books with ten levels on each side. Eight symbols enter training: 5, 700, 981, 1024, 1211, 1299, 1810 and 9618.HK. The authors reserve 9999.HK entirely for zero-shot evaluation. Training covers 2025-09-01 to 2025-11-15, followed by two weeks of validation, with all evaluation conducted in December 2025. Sessions run from 09:30-12:00 and 13:00-16:00. Those sessions provide 198,000 / 19,800 / 1,980 grid points at 0.1s / 1s / 10s.

Flow-Euler-10 records W1 distances to the real pooled marginals 4-120x below matched diffusion at equal function evaluations. It has the smallest distance in 30 of 32 price/volume metric cells at the two finer frequencies. Counterfactual control is valid in 42 of 48 cells.

We could not test any of this on our own data. The architecture requires ten bid and ten ask price and volume levels sampled from 0.1s to 10s, whereas we have minute OHLCV bars for US equities. Passing those bars through FlowLOB would assess a time-series generator after the relevant book structure had already disappeared.

A controlled objective comparison

One dataset and backbone. One training recipe and solver family. Only the objective changes. The resulting comparison is cleaner than anything the LOB literature has offered.

More ODE steps do not help.

Euler at 10 steps leads in four of six panels. Across five of the six settings, no diffusion setup reaches it even at 200 NFE (network function evaluations). The sole exception is the 1s price marginal, where diffusion using Heun matches it at 20 NFE. The authors add that those configurations remain substantially weaker on volume. They argue that higher-order solvers suffer because Heun and RK4 evaluate off-path intermediate states, where the learned field has poorer calibration.

There is one selection caveat. Euler at N=10 is selected using W1, which later appears among the four reported realism distances. The paper does not identify the split used for the solver sweep. It does state that each run is evaluated using the checkpoint with the best validation loss. We therefore read the sampler selection and headline realism metric as dependent choices. The gap is large, however, and the same ordering appears across W1, KS, KL and JS, so I would give this caveat limited weight.

Do lower distances amount to a simulator?

For 700.HK at 0.1s, FlowLOB posts a price W1 of 0.01683. The corresponding figures are 0.1461 for zero-intelligence, 0.5660 for LOB-S5, 0.8921 for LOB-GAN and 10.73 for Hawkes. Its volume W1 is 791.8, compared with 4610 for LOB-S5, 7337 for ZI, 3.150e4 for LOB-GAN and 2.995e4 for Hawkes.

The zero-shot result on 9999.HK is stronger again. Price W1 reaches 0.008337, while volume W1 is 1020 and the KS distances are 0.01511 and 0.02853. An unseen symbol outperforming the in-distribution symbol supports the tick-relative representation.

Every figure above describes a pooled marginal, leaving temporal structure unresolved. The paper also plots mid-price return and spread distributions, along with cross-level volume correlations, for both symbols at all three frequencies. Those panels provide no distances and must be judged visually. At 10s, the authors report what the plots suggest: generated returns have heavier tails than the real data, while cross-level volume dependence is stronger.

The ordering reverses at 10s. Zero-intelligence has the best price distances for both symbols. On 700.HK, its price W1 is 0.1445 against FlowLOB's 4.942. LOB-S5 is competitive or best on several volume distances, with 700.HK volume W1 at 4413 against 1.541e4 for FlowLOB.

The frequency path matters. ZI's price W1 barely moves, reading 0.1461 then 0.1454 then 0.1445. FlowLOB moves from 0.01683 to 0.1518 and then 4.942. FlowLOB deteriorates as the interval widens; ZI stays nearly flat. The abstract limits its realism claim to "the two finer sampling frequencies," so the paper acknowledges this boundary. The authors attribute the decline to fewer training windows and broader multi-tick return support at coarse resolution. They propose expanding the symbol universe and extending the history. This paper does not run that fix.

Control is weakest where traders need it

Liquidity and imbalance satisfy the control test for every symbol, frequency and direction. The authors explain that both are calculated directly from generated depth, making their signal "closely aligned with the output tensor." Trend and volatility, the channels a stress tester would care about more, produce weaker evidence.

At 0.1s, trend is tied after rounding. For 700.HK, high is 0.549 against 0.549 and low is 0.555 against 0.555. For 9999.HK, high is 0.536 against 0.536 and low is 0.534 against 0.534. Every one is marked with an asterisk in the table.

On 700.HK, trend-low at 1s gives 1.37 against 1.37. Trend-high at 1s improves by 0.01, at 1.40 against 1.41. At 10s, the high trend direction does move correctly, reaching 5.49 against 6.65 on 700.HK. Trend-low fails at the same frequency: 11.5 against a reference 6.82 on 700.HK, and 9.41 against 6.14 on 9999.HK. Volatility-low also fails, with 0.874 versus 0.866 on 700.HK and 0.827 versus 0.817 on 9999.HK.

Volatility-high succeeds at every frequency. On 700.HK, the comparison is 0.192 against 0.212 at 0.1s and 0.408 against 0.472 at 10s. On 9999.HK, it is 0.186 against 0.196 and 0.632 against 0.658.

The conclusion states the limitation directly: the model "is strongest at the finer sampling frequencies, while its advantage weakens at coarser resolution; trend control is also less reliable over short windows." Larger data, wider symbol coverage and longer contexts are the proposed answer. Since the authors do not run that extension, the tables cannot show how much additional data trend control would require.

Each cell is judged by one directional comparison: counterfactual distance below reference distance. We found no confidence intervals, seed variation or significance test anywhere in the paper. The asterisks show how narrow several reported wins are.

Execution remains a future test

The outputs are described as "suitable for snapshot-based policies such as dynamic execution," with a citation to earlier work by three of the paper's authors on simulation-based RL for execution. This paper reports no P&L, fill or execution result. Its design also creates a structural obstacle. The conditioning tensor remains fixed throughout the ODE trajectory, so each 32-step window is generated open-loop and cannot respond to an order. Queue position and impact feedback are absent. An execution study would need an added fill model, and marginal distances do not establish whether fills inferred from these books would be accurate.

DiffLOB is the nearest prior conditional-counterfactual book model, yet it does not appear in the realism table. The authors explain that its setting is not directly matched to their multi-symbol task. The strongest conditional benchmark is therefore excluded by declaration. Among the included methods, the strongest price benchmark is a marginal-fitting agent without conditional dynamics. We have raised this missing-benchmark problem in diffusion research for finance before (our review).

One missing result would change my view: train an execution agent on FlowLOB rollouts and another on ZI rollouts, then evaluate both against real December books using a fill model. Until such evidence arrives, the defensible conclusion stays narrow and useful. For anyone already sampling book states with diffusion, the straight-path objective reaches its target in 10 calls. No diffusion configuration in the reported sweep matched it, even at 200.