AQAI QuantAI research lab for systematic strategies

Automated analysis

This analysis was drafted by our research engine and has not been checked by a human editor. It may contain errors. It separates the paper’s own results from our tests, and any figures called ours come from our own backtest.

Our automated analysisOur backtest

Pushing volatility surfaces to 99.9% arbitrage-free destroys the tail

Latent flow matching leads Q99 with 1.56 IV points against 2.57, and loses Q5 to Q95 to an uncorrected GAN

2026-09-08 · 10 min read · End-of-day US ETF options, primarily SPY options, using options_eod_greeks and options_universe

Reviewing: Latent Flow Matching for Arbitrage-Aware Implied Volatility Surface Generation · Oscar Brooks, Dusica Bajalica, Yating Liu et al. · Read it on arxiv

Our backtest of this idea

Our automated quick test, not the paper's

SPY Arbitrage-Regularized Latent Flow IV Surface Anomaly Volatility Strategy

Backtest period 2020-01-01 to 2025-10-08 · hypothetical, net of modelled costs

Why these figures are not the paper's (3)

Run on a different market than the paper

The paper uses SPX index options from OptionsDX, which are not available in the platform data. We would use SPY ETF options instead; the mechanism is still applicable because the method models vanilla-option implied-volatility surfaces and static no-arbitrage constraints, which transfer naturally from index options to liquid ETF options. The paper's reported metrics would not transfer to the SPY universe.

The paper's own figures describe its universe and do not carry over to ours.

This is not a replication of the paper (2)

  • The exact SPX OptionsDX dataset is unavailable; results would test the same methodology on SPY ETF options rather than reproducing the paper's empirical universe.
  • The platform has end-of-day options data only, so the implementation is limited to EOD surface construction and cannot evaluate intraday surface dynamics or execution.

The figures below measure what we could run, not the paper's own method, so they are not evidence for or against its claim.

Our own audit found this run does not follow the paper faithfully (4)

  • unconditional generative model used as directional fair-value reference: The flow samples from N(0,I) independent of the observed surface, so the generated 5th/95th quantiles are an unconditional empirical distribution. The spec uses these as a fair-value reference to trigger directional long/short-volatility mean-reversion trades on the current SPY surface. (invalidates: The paper's Section 4 limitations explicitly state the framework is unconditional and designed to reconstruct/sample the empirical distribution rather than forecast its future evolution; therefore the paper provides no evidence that generated quantiles predict future IV mean reversion, and none of the paper's results support the profitability or predictive efficacy of the cheap/expensive-IV trading signals built here.)
  • rolling training window size vs paper 1000-surface dataset: The rolling walk-forward training window is set to 504 daily surfaces instead of the paper's 1000-surface training set, so that signals begin early in the 2020-2025 backtest rather than roughly mid-2024. (invalidates: The paper's Table 2/3/4/5 distributional, quantile, financial-factor, and no-arbitrage-validity metrics were obtained with the full 1000-surface training set; they do not carry over to a model trained on a 504-surface rolling window.)
  • The paper's IV-surface construction pipeline (SVI calibration and interpolation per Gatheral-Jacquier, cross-maturity interpolation IN TOTAL VARIANCE, nearest-neighbor fill of missing values, and a cumulative-maximum calendar-arbitrage correction enforcing total implied variance non-decreasing in maturity) is entirely absent from the method block and therefore from the spec, which only says surfaces are built 'on the same fixed grid' with 'evenly spaced nodes' — since X_n is the object the whole VAE/flow pipeline is defined relative to, this preprocessing was lost at the distillation step and the SPY surfaces fed to the model are constructed by a different (unspecified) rule than the paper's.
  • The paper's calendar-arbitrage correction applied at surface-construction time (cumulative-maximum on total variance) means the paper's training surfaces are already partly de-arbitraged before the decoder penalties act; the spec omits this pre-correction, so the 90.8% no-arbitrage validity figure and the ablation arb-free rates (already declared non-comparable) additionally rest on a preprocessing step the spec does not perform.

These are our findings about our own implementation, not criticisms of the paper. Read the figures below as a description of what we ran.

Jan 2020Total -1.2%Oct 2025
Sharpe
-0.06
Total Return
-1.2%
Max Drawdown
-5.1%
CAGR
-0.2%
Volatility
3.5%
Trades
282

At 99.9% validity, the authors' generator misses Q99 by 23.778 implied vol points. The error is 1.56 under the settings they ship. Gaining Nine percentage points of validity makes tail accuracy roughly fifteen times worse. Their sensitivity analysis acknowledges the exchange, calling it "a clear trade-off between near-complete arbitrage elimination and distributional fidelity, particularly for extreme volatility regimes."

The shipped version deserves separate judgment. At 90.8% validity, the abstract claims "a favorable balance between distributional similarity, tail preservation, and financial consistency without requiring post-sampling reweighting." The results support a narrower reading. VolGAN Raw has no arbitrage correction, yet it wins on sliced Wasserstein and at every pointwise quantile from Q5 through Q95. The global W1 difference between the models falls within one standard deviation. Arbitrage penalties pay off in the extreme upper tail and in pass rates.

A disclosure matters because our own equity curve appears above this article. The paper studies SPX options from OptionsDX. We could not access that dataset and substituted SPY ETF options. Our data is end-of-day only, leaving our run without intraday surface dynamics or intraday execution. We adapted the method to SPY, and none of the paper's reported metrics carries over to our results.

Inside the two-stage generator

An implied volatility surface supplies prices for unquoted vanillas and a consistent calibration target for local and stochastic volatility models. It can also populate scenario libraries used for option-portfolio risk measurement and stress testing. Bajalica, Brooks, Ben Tahar and Liu focus on that final application. Their framework is unconditional by design. As the conclusion states, it draws from the empirical distribution of surfaces instead of forecasting how those surfaces evolve.

Stage one uses a variational autoencoder. Each surface begins as 512 values arranged on a fixed grid with 32 moneyness levels and 16 maturities, then is compressed into a 6-dimensional Gaussian latent. Alongside the standard reconstruction and KL terms, the decoder loss includes three differentiable arbitrage penalties. The calendar term encourages implied vol to rise with maturity. The call-spread term encourages it to fall with moneyness. For butterfly violations, the model penalises failures of the Gatheral-Jacquier criterion g(tau,k) >= 0, calculated with central differences in log-moneyness.

Stage two freezes the VAE and treats its posterior means as the empirical latent sample. A small residual MLP learns flow matching along a trigonometric path, transporting N(0, I_6) to that latent cloud. To sample, the framework integrates the learned ODE through 100 Euler steps and passes the result through the decoder.

Training covers 1,000 end-of-day SPX surfaces from OptionsDX between January 2020 and December 2023. The maturity range is 7 to 365 days, while moneyness lies in [0.8, 1.2]. OTM puts supply the area below the money and OTM calls the area above it. SVI is fitted for each date before interpolation across maturities in total variance. Nearest neighbour filling handles the remaining gaps. The final calendar correction applies a cumulative maximum to total implied variance.

The authors report five independent runs, each containing 5,000 generated surfaces. L-FM, their name for the combined VAE and flow matching model, records the lowest global W1 against the pooled empirical vol distribution: 0.00283 +/- 0.00144. It ranks second on sliced Wasserstein distance at 0.00697 +/- 0.00056. The lowest Q99 error is also theirs, at 1.56. Across all three arbitrage tests, 90.8% +/- 1.5% of L-FM surfaces pass, compared with 69.7%, 46.7% and 32.1% for the baselines. The paper contains no P&L, no Sharpe and no hedging test. Its evidence consists of distributional distances and pass rates, leaving no economic result to contest.

The comparison set includes a score-based diffusion model with an arbitrage penalty, developed by Jin and Agarwal, whose paper concerns forecasting. Raw and reweighted versions of VolGAN complete the baselines. The authors describe each as an unconditional adaptation. In their account, VolGAN Raw learns the empirical distribution without post-sampling adjustment.

Does 90.8% meet a useful standard?

Within the paper's comparison, 90.8% wins plainly. Reweighted VolGAN reaches 69.7% +/- 8.8%, diffusion reaches 46.7% +/- 4.3%, and VolGAN Raw reaches 32.1% +/- 3.0%. L-FM also produces cleaner surfaces than its training set. Just 51.2% of those training surfaces satisfy all three conditions, which the authors attribute possibly to market noise, numerical inversion errors and interpolation artifacts.

The 51.2% figure deserves a pause. Those targets have already been SVI-fitted, interpolated in total variance, filled by nearest neighbour and corrected with a cumulative maximum. This smoothing affects the target distribution and the reported arbitrage statistic. When a model passes at 90.8% against training data that passes at 51.2%, it excludes a substantial share of the observed surface shapes. Cleanliness and realism have diverged.

Two of the three tests use conditions stronger than arbitrage itself demands. The paper says of the calendar penalty: "Although stronger than necessary, this condition is sufficient to ensure that the total implied variance is non-decreasing in maturity." Its call-spread condition follows the same pattern, requiring monotone implied vol in moneyness instead of monotone call prices. Only the calendar penalty binds in the shipped model, with weight 3e-2, because Table 1 sets the call weight to 0. The decoder therefore follows a maturity-monotonicity condition stricter than the no-arbitrage requirement. The cumulative-maximum calendar correction previously applied to the data reinforces that pressure.

Roughly 9.2% of generated surfaces still fail something.

A stress library can screen those surfaces and discard them. A calibration or pricing loop needs a user-built filter when the rejection rate is one-in-eleven. The limitations section gives the reason directly: "static no-arbitrage is encouraged through soft penalties rather than enforced by construction, so validity is assessed empirically and is not guaranteed for every generated surface."

L-FM separates only in the upper tail

The full quantile row changes the impression. VolGAN Raw beats L-FM from Q5 to Q95: 0.24 versus 0.40 at Q5, 0.22 versus 0.32 at Q25, 0.28 versus 0.35 at Q50, 0.25 versus 0.32 at Q75, and 0.62 versus 0.95 at Q95. Sliced Wasserstein also favours VolGAN Raw, at 0.00491 +/- 0.00078 compared with 0.00697 +/- 0.00056. Global W1 runs 0.00283 +/- 0.00144 against 0.00287 +/- 0.00113. With five runs for each model, those figures do not establish a separation.

Q99 reverses the ranking. L-FM posts 1.56 +/- 0.71 against 2.57 +/- 1.43. The point estimate favours L-FM, though the error bars overlap. Its lead is visible and the dispersion leaves it thin. The caution applied to global W1 works in the opposite direction here.

Four financial-factor distributions receive their own W1 comparisons: level, term structure, skew and curvature. Each model wins two. L-FM leads on level, 0.00388 against 0.00462, and curvature, 0.00263 against 0.00286. VolGAN Raw leads on skew, 0.00316 against 0.00328, and term structure, 0.00579 against 0.00859.

The abstract's claim that L-FM "closely reproduces the empirical distribution" therefore covers a fairly narrow comparative result. L-FM gains extreme-tail accuracy and arbitrage validity: 1.56 against 2.57 at Q99, plus 90.8% against 32.1%. The body of the distribution gets worse. The conclusion says L-FM "remains close to VolGAN Raw in distributional distance," which is a fair description. Close matters here. One of the two headline distributional gaps is within a standard deviation, while the other favours VolGAN Raw. An uncorrected GAN describes the middle more accurately than the arbitrage-penalised flow model. Publishing the entire row, instead of isolating the winning cell, makes that cost visible.

What 99.9% costs at Q99

Section 3.6.2 contains the authors' 99.9% configuration. Their released choice remains the 90.8% version, which is the version judged throughout the rest of this article. Under the heavier penalties, global W1 rises from 0.00283 to 0.03058 and SWD rises from 0.00697 to 0.04753. Every reported quantile error jumps: 1.986 at Q5, 2.407 at Q50, 8.951 at Q95 and 23.778 at Q99.

Compare 23.778 with the Q99 error for reweighted VolGAN, 22.99 +/- 1.16. Table 7 gives 23.778 for one configuration without dispersion, whereas the VolGAN figure comes from five runs. At the far tail, taking the soft-penalty approach to 99.9% performs no better than the reweighting it was designed to replace. Elsewhere, the conclusion differs. The same variant still beats reweighted VolGAN on global W1, 0.03058 against 0.03447. The reversal belongs specifically to Q99.

Ablations tell a similar story. Removing the calendar penalty lowers validity from 90.8% to 78.6% +/- 3.6%, while W1 moves from 0.0028 to 0.0054. Removing the butterfly penalty produces 84.3% +/- 6.4% validity and 0.0055 W1. A call-spread weight of 0.03 keeps validity at exactly 90.8% and makes both distributional metrics worse. After observing no call-spread violations in the training data, the authors set that weight to zero.

Reduced training is used for the latent dimension sweep: 1,000 epochs for the VAE and 400 for flow matching. This accounts for d=6 reaching 89.3% in that exercise instead of 90.8%. From dimensions 4 to 10, the arbitrage-free rate moves only from 88.9% to 89.3%. Validity is governed by the penalty weights, with latent size having little effect. The weight is a dial whose cost falls on the user. The paper provides a two-point calibration for it.

The hyperparameters were, in the paper's wording, "selected after tuning." We did not find a holdout split. Reported distances appear to compare the models with the same training distribution they learned. The dataset contains 1,000 daily surfaces for one underlying and spans a period that includes the COVID spike and the 2022 selloff. Claims of generalisation should remain limited accordingly.

Our SPY adaptation

We used end-of-day SPY ETF options from 2020-01-01 through 2025-10-08. Our implementation omitted the paper's surface-building process entirely. We performed no SVI calibration and no interpolation across maturity in total variance. We left gaps without nearest-neighbour filling and applied no cumulative-max calendar correction. The resulting training surfaces differ from those behind the paper's 90.8% figure.

Each month, we refitted an arbitrage-regularised VAE on a rolling window of 504 surfaces ending strictly before the trade date. The latent dimension was 6, with KL weight 0.01, calendar penalty 0.03, butterfly penalty 0.002 and call-spread penalty 0. Flow matching used the trigonometric path, 100 Euler steps and 5,000 generated surfaces at every refit. When observed SPY ATM implied vol reached or fell below the generated 5th percentile, we bought a delta-hedged ATM straddle with 30 to 60 days until expiry. At or above the 95th percentile, we sold a defined-risk iron butterfly using roughly 0.15-delta wings. Only one package could be open, using up to a third of the account, and gross exposure was capped at four times capital. Daily hedging returned the position to net zero delta whenever absolute delta exceeded 5 shares. We exited after 21 days held, after signal mean reversion, upon stops, or at 7 days to expiry. Costs were 65 cents commission and a dollar of slippage per contract per leg, with another 1bp charged on the stock hedge.

Performance was flat to slightly negative: total return -1.25%, Sharpe -0.06, Sortino -0.03, Calmar -0.04, maximum drawdown -5.08% and annualised volatility 3.52%. We do not treat this as a verdict on the authors' generator. Their paper has no Sharpe, no P&L and no hedging test, leaving no reported figure that can be compared with ours. A value of 0.00283 also has no direct comparison with a Sharpe ratio.

Sizing explains much of the risk profile. Annualised volatility of 3.52% and maximum drawdown of 5.08% came from a handful of entries, with one package active at a time. Our own design choices offer two immediate explanations for weak performance. We turned an unconditional generator into a directional fair-value reference, despite the authors saying the framework was not designed for that task. We also removed the smoothing used to create the clean surfaces on which their results are evaluated. This was one automated implementation. It provides evidence first about that implementation and only then about their model.

We encountered a related pattern in an earlier note on a diffusion sampler, which attempted to place a calibrated volatility clock inside its noise schedule (/articles/dspm-puts-a-volatility-clock-inside-diffusion-noise). The generative machinery works, while the financial quantity one hoped to control becomes attenuated or gets exchanged for another property.

The paper states its boundaries clearly. It does not examine behaviour beyond the fixed maturity-moneyness grid, and the framework remains unconditional. Conditional generation and forecasting are left for future work. A conditional version tested on a holdout period would strengthen the deployment case. The relevant tests would use pricing error for options outside the training grid or hedge error for a book repriced with generated scenarios. For now, this is a carefully documented scenario generator with a published cost schedule for its constraint dial. The dial sits at 90.8% for a reason.

How our backtest worked

The steps the code we ran actually executed, from its strategy card. Ours, not the paper's — it is one automated implementation of the idea, not the authors' own.

For each SPY trading day at close:
  If fewer than 504 prior SPY option surfaces are available:
    do not trade

  Monthly, refit on rolling 504 surfaces strictly before signal date:
    train arbitrage-regularized VAE on fixed IV grid
    encode surfaces to 6D posterior mean latent codes
    train trigonometric latent flow matching model on latent codes
    sample 5,000 generated surfaces per run from z0 ~ N(0,I6)
    compute generated distribution of ATM IV level metric

  Compute current SPY ATM IV level from the observed surface.

  If an existing package is open:
    rebalance SPY hedge daily to target net delta near zero when applicable
    exit if stop loss, take profit, mean-reversion band, 21 trading days, or DTE <= 7 is reached
    do not open a new package

  Else if current level <= generated 5th percentile:
    buy 1 ATM call + buy 1 ATM put, 30-60 DTE, deltas near +0.50/-0.50
    size by premium, max position size, leverage, and minimum-contract rules
    delta hedge with SPY at the close

  Else if current level >= generated 95th percentile:
    sell ATM call + sell ATM put and buy ~0.15 delta wings, 30-60 DTE
    require computable defined maximum loss
    size by max loss, max position size, leverage, and minimum-contract rules

  Execute option legs using available end-of-day option closes; skip legs/trades with missing required prices or Greeks.