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

DYSANOS hides dynamic arbitrage behind static discipline

Its 20-state decoder matters; successors must beat the period-return result.

2026-09-08 · 8 min read · US ETF options, using liquid SPY option chains and SPY shares for delta hedging

Reviewing: DYSANOS Generative Dynamic Smooth Arbitrage-free Non-parametric Option Surfaces · Hans Buehler, Blanka Horvath and Anastasis Kratsios · Read it on arxiv

Our backtest of this idea

Our automated quick test, not the paper's

Daily ML-SANOS Fixed-Contract SPY Option Surface Statistical Arbitrage

Backtest period 2020-01-01 to 2024-07-01 · hypothetical, net of modelled costs

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

Run on a different market than the paper

The paper models S&P 500 Index option surfaces using OptionMetrics IvyDB data. We would model SPY ETF option surfaces instead, because the core mechanism—fitting a smooth statically arbitrage-free daily option surface, modeling its low-dimensional state dynamics, and forecasting option-surface changes—survives for a highly liquid broad-market ETF option chain. This is an adaptation rather than a transfer of the paper's reported results: SPY options differ from SPX options in exercise and settlement conventions, dividend treatment, and liquidity.

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 platform does not provide the OptionMetrics IvyDB quote-level bid/ask data used in the paper's data pipeline. The implementation would fit the arbitrage-free surface to available end-of-day option prices/implied volatilities and cannot reproduce bid/ask-aware fitting, executable-spread filtering, or bid/ask-based option execution costs.
  • The paper's stated baseline AR(1)/PCA state model is reproducible, but any results from the SPY ETF adaptation test the adapted EOD implementation rather than the paper's SPX/IvyDB calibration and reported diagnostics.

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 (6)

  • Equation (5) midpoint-penalty implementation: The scalar objective with an unspecified positive epsilon is replaced by lexicographic minimization of bid-ask violations followed by midpoint error. (invalidates: The representative 2025-05-06 SANOS fit statistics, the reported approximately 0.3% ML-SANOS volatility fitting error, and downstream empirical diagnostics and arbitrage-occurrence results in Tables 1-6 as directly comparable results of the implemented fit.)
  • SPY option and hedge universe: The executable universe is SPY and its listed options rather than the paper's European SPX index options. (invalidates: The paper's strict static-arbitrage guarantee for raw European SPX quotes, its approximately 0.3% SPX volatility fit error, the SPX diagnostics in Table 1 and Figures 8-11, and the SPX arbitrage-occurrence and exact-state results in Tables 2-6.)
  • The specification gives contradictory and misattributed option-maturity constants: its operative filter and fidelity declaration use 1–756 days, matching the paper’s removal of same-day expirations and BDTE≤756 filter, while its constants table tags 2–255 days as from_paper even though 2 and 255 are only the first and last target-grid expiries, not the paper’s tradable-option filter bounds.
  • The paper defines the daily hidden state through a price-space ML-SANOS fit weighted by inverse Black–Scholes vega divided by sqrt(expiry), using a three-layer 100-node network with SELU activations, but the specification provides no executable ML-SANOS training loss, fitting weights, or activation, so the h_t series on which its AR(1), PCA, and forecasts depend is not defined as the paper defines it.

2 further finding(s) are described in the note.

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 -0.0%Jul 2024
Sharpe
-0.19
Total Return
-0.0%
Max Drawdown
-0.1%
CAGR
-0.0%
Volatility
0.0%
Beta vs SPY
0.00
Trades
80

Strict static no-arbitrage made the simulated dynamic arbitrage worse, by a wide margin. Across a million paths with daily rebalancing and zero costs, the authors' own generator produced validated period-return arbitrage at 12.500% of tested state-time centers. The intentionally arbitrage-ridden control, PCA applied directly to log implied vols, scored 1.584% under the same test. DYSANOS finished higher in every single row.

Buehler, Horvath and Kratsios put the problem up front. Their introduction flags it, their tables quantify it, and the conclusion says they have found numerical indication that DYSANOS admits dynamic arbitrage along its paths. They describe the dynamics module as a "somewhat simplistic" AR(1) baseline and a "baseline to beat". The surface representation is their main contribution. That defence mostly holds. The harder question is what these results demand from anyone who supplies better dynamics.

The work happens in 20 states

Existing arbitrage-free option simulators move a discrete floating grid of moneyness and time-to-expiry from one simulated day to the next. No trader can hold that object. A hedging agent needs returns for a fixed cash strike and calendar expiry, which the floating grid never supplies.

Linear interpolation between on-grid prices looks like the easy answer. The paper shows the cost: it gives the most expensive arbitrage-free price off the grid, while implied density vanishes between strikes. Spot can then occupy only model strikes without generating dynamic arbitrage.

The authors answer with a decoder. They reparameterize SANOS, their earlier smooth arbitrage-free surface family, so sigmoids and an Andreasen-Huge style tri-band transition operator turn an unconstrained real vector into martingale densities and discrete local volatilities. A three-layer feed-forward network, using 100 hidden nodes and SELU activations, maps a 20-dimensional state into that vector. Each decoded state yields a smooth surface that can price any strike and any expiry. Butterfly and calendar arbitrage are excluded by construction, without relying on a penalty.

A typical SANOS setup contains around 2,000 discrete local volatilities. This version uses 7 expiries and 20 model strikes. From 20 latent numbers, it reproduces the fit to 0.3% average vol error out to one year, measured over roughly five years of SPX surfaces with expiries up to one year. The fitting sample contains 1,412 daily SPX surfaces from OptionMetrics IvyDB, spanning 2020-01-02 to 2025-08-29. On 2025-05-06, the underlying SANOS linear program placed 91.4% of 1,000 options inside bid/ask. For the remainder, median error was 21% of the half-spread.

No profit-seeking P&L strategy appears in the paper. Trading enters only through the arbitrage-detection LP. The commercial value lies downstream, in simulators used by hedging engines such as Deep Hedging and Deep Bellman Hedging, both cited by the authors as motivation. For that use, arbitrage diagnostics carry more weight than fit statistics. An agent trained in a simulated market containing free money learns to collect it.

Reproducible geometry, discretionary choices

The paper prints the grid geometry in full. Its 7 expiries are 2, 5, 10, 20, 40, 127.5 and 255 business days. It uses 20 model strikes, normalized moneyness from -2 to 1, and 100 sampled strikes per expiry as training targets. Smoothing mu = 0.5, while Sigma and sigma are bounded in 0.01 to 2. Fitting weights use inverse vega divided by root expiry. The spread-weighted put-call-parity forward is also written out.

Its filters are equally explicit: bids above 0.011, log volume and log open interest of at least 1, business days to expiry capped at 756, normalized moneyness in [-5, 2], at least 10 options for each expiry and no more than 1,000 per day. The arbitrage harness reaches the Bonferroni level of 0.05 divided by 442,368 and specifies the 9,216 denominator.

More discretion enters elsewhere. The authors did not attempt to learn mu or the expiry positions. They hand-selected neighbourhood sizes of 1,024 and 4,096, the tail multiplier r = 8 and the direct-law weight pi_0 = 0.1. Their importance sampler operates at about 30.5% effective sample size. We found no printed values for either the epsilon in the calibration objective or the numerical band in the loss test. Training uses standard batch gradient descent in Torch, with no printed learning rate, batch size or epoch count. Innovation mixing also appears under two conventions: w applies to the historic score in equation 1, while b applies to the Gaussian in equation 19.

Fittability conditions the final universe. The authors drop expiries whenever they cannot obtain a no-arbitrage fit, assuming those failures reflect data alignment rather than genuine opportunity. They also say the volume filter probably removes many post-one-year options during the early years because IvyDB volume appears unreliable there.

Where does the leakage come from?

One diagnostic should outlive the paper. The authors reprice 63 fixed cash options from day to day across 20,000 simulated paths. For historical fixed-contract IV changes, the first principal component explains 29.3% of variance, while reaching 90% requires 17 components. On the moving moneyness grid, the first component explains 77.7%, and four components reach 90%. The familiar finding that a handful of PCA factors describes the surface, traced here to Cont, da Fonseca and Durrleman, depends on the floating grid. A book holding fixed contracts behaves differently.

The simulated fixed-contract market also moves less than the real one. Historical standard deviations for level, skew and term changes are 0.0174, 0.0266 and 0.0335. The five-factor version produces 0.0136, 0.0229 and 0.0288. With all 20 factors, the figures become 0.0133, 0.0225 and 0.0285.

Dependence is weaker too. Spot-level and spot-skew correlations in the data are -0.610 and -0.675. The five-factor simulation gives -0.436 and -0.556, compared with -0.422 and -0.548 in the all-factor run. For one-day IV changes on the moving normalized-moneyness grid, the first component absorbs 90.0% of variance with five factors and 89.5% with all 20. The market figure is 80.8%. First rankwise angles are 4.9 and 4.7 degrees, with second angles around 30.4 degrees. Five-day realized log-variance gets the mean right, at 0.000918 historically and 0.000914 in simulation, yet delivers one fifth of the dispersion. Standard deviation is 0.002693 against 0.000578.

Placed beside the arbitrage result, those figures explain much of the leakage. The period-return test searches for a unit-L1 portfolio that never loses within a local neighbourhood of simulated paths and earns on average. A conditional law concentrating 90% of its movement along one direction, rotating secondary directions incorrectly by 30 degrees and producing no volatility cluster approaches degeneracy in the directions targeted by calendar or skew spreads. As the paper states, the SANOS constraints say nothing about transitions in a fixed contract. The decoder cannot repair those dynamics. Each date lies inside the static cone; the free lunch appears between dates.

The test is economically active. At 1bp, occurrence declines to 9.082%, then reaches 3.266% at 10bp. The control records 0.564% and 0.141%, respectively, which makes a rounding explanation unconvincing. The authors replay the two strongest weekly 10bp candidates across a million fresh five-day continuations. Candidate two records losses in 0.0752% of cases, with minimum P&L of -1.478e-3, and is rejected. Candidate one records no loss, with minimum P&L of 2.963e-4. Its one-sided 95% Clopper-Pearson upper bound on loss probability is 2.996e-6. The authors carefully avoid claiming certified non-negative P&L across the full conditional support. The result also looks unlikely to be a sampling ghost.

Our SPY adaptation

We could not trade the same market as the paper. Our strategy uses SPY listed options in place of SPX. We possess end-of-day prices, whereas the paper's spread-aware linear program and bid/ask execution use IvyDB quote-level quotes that we do not have. This adaptation tests our end-of-day SPY implementation. It does not test the authors' SPX calibration or reproduce any of their reported diagnostics.

Our run spans 2020-01-01 to 2024-07-01. Total return was -0.02%, maximum drawdown was 0.09%, and realized volatility was 0.03%. Sharpe came to -0.19, Sortino to -0.05 and Calmar to -0.06. One automated pass on an adapted end-of-day SPY implementation finished flat and slightly negative.

The paper gives no backtest return or Sharpe. Its reported results cover SPX fit statistics, including 0.3% average vol error and 91.4% inside bid/ask on 2025-05-06, along with arbitrage occurrence rates. Table 6 reports the P&L of the two replayed arbitrage portfolios: means of 4.683e-3 and 5.821e-3, with minima of 2.963e-4 and -1.478e-3. None is comparable with a Sharpe ratio.

For our run, we fitted the arbitrage-constrained 20-state surface on expanding data through every close. After waiting for 252 surface observations, we fitted the PCA-AR(1) with five retained factors. The exact affine Gaussian transition generates the next day's state. We then reprice each unchanged option name at its fixed cash strike, with one trading day removed from expiry.

A trade requires an edge large enough to survive the full cost stack: quoted spreads, $0.65 per contract per execution, slippage equal to 25% of the quoted spread, SPY hedge costs of 1bp plus half a cent a share, and an expanding 95th-percentile out-of-sample error reserve by moneyness-expiry bucket. Positions are held for one day and delta-hedged in SPY. Sizing is 1% per position, gross action L1 is capped at 1, and leverage cannot exceed 4x. Those limits determine the scale of the return and drawdown above. A one-day delta-hedged book risking 1% per name cannot generate much volatility or drawdown. Nor can it earn much unless the forecast clears a tangible set of costs.

The error reserve decides the trade. We have previously discussed abstention layers that appear decisive in-sample and then scarcely bind (the 0DTE gate). Here, the reserve may consume every edge. The paper's own diagnostics warn against using its forecast this way. Because the baseline understates fixed-contract volatility in level, skew and term changes, a mean-reverting state forecast will under-predict tomorrow's move and quietly take short realized surface volatility exposure.

Those understatement figures belong to the authors. They come from SPX under their calibration. Our run uses a different process and a different underlying. Its weak result speaks first to our single automated pass. End-of-day quote quality and a 252-day warmup that begins trading in a post-COVID regime are our leading suspects.

The result a successor must beat

The decoder is the piece worth keeping.

A successor could replace the AR(1) with clustered or regime-switching innovations, or use the empirical resampling already supported by the paper. Its benchmark is 3.266% at daily 10bp. Bring that figure toward the control's 0.141% while preserving the 0.3% fit and zero to-expiry detections, and the representation deserves a place inside a hedging simulator. Leave the result unchanged, and an agent trained within DYSANOS gets paid to discover the model's own transitions rather than learn to hedge.

Our backtest stops at 2024-07-01, and everything after that date is deliberately left untouched so the same strategy can be checked out of sample later.

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 date t at the close:
  1. Load point-in-time SPY prices, option quotes, rates, and known dividends.
  2. Retain contracts with DTE 1–756 and valid executable quotes, IV, liquidity,
     moneyness, vega, strike-count, density, and arbitrage-fit diagnostics.
  3. Estimate expiry forwards from weighted put-call parity and reject contracts
     whose American early-exercise adjustment cannot be established conservatively.
  4. Fit the European-equivalent ML-SANOS surface using only expanding data through t.
     Decode through bounded local volatilities and nonnegative martingale densities.
  5. After at least 252 surface observations, fit the autonomous 20-state surface
     dynamics, retain five PCA innovation factors, and require all eigenvalues of
     kappa to have strictly positive real parts.
  6. Use the exact affine Gaussian transition to forecast the t+1 surface and fit
     the spot process only after the surface model.
  7. Reprice each same option_name at its fixed cash strike and calendar expiry,
     with remaining maturity reduced by one trading day.
  8. Compute long and short forecast edges from the entry ask or bid. Subtract
     estimated entry/exit spreads, slippage, commissions, SPY hedge costs, and the
     expanding 95th-percentile out-of-sample error reserve for its bucket.
  9. Rank positive net edges and allocate integer contracts subject to gross-action
     L1 <= 1, a 1% position cap, and 4x combined option-plus-hedge leverage.
 10. Execute at the close and establish SPY shares = -100 × contracts × option delta.
 11. At the t+1 close, exit the same contract at its executable bid/ask and close or
     rebalance the hedge. Exclude observations lacking required real execution data.