FFT Mispricing Scanner

Last reviewed: by .

Quantitative mispricing detection using Fast Fourier Transform option pricing models. Scans entire options chains to identify over- and underpriced contracts by comparing theoretical model prices against live market quotes. Available with a Professional subscription.

How "Mispricing" Is Defined Here

The scanner does not claim to know the "true" price of an option; no model does. What it does is calibrate a chosen model (Heston, VG, Bates, Kou, Merton, SABR, or Black-Scholes) to a clean ATM neighborhood of the live surface and then run that calibrated model across the full chain. The output is a set of model-implied prices for every listed strike, compared against live mid-quotes. Strikes where the model price sits outside the bid-ask spread by a meaningful margin are flagged. The interpretation is always: "given this model's assumptions, the market is pricing this strike inconsistently with the rest of the surface." That can be a real edge, or it can be the model failing. The multi-model comparison view is how you triangulate which.

Workflow: From Scan to Trade

Typical pattern: pick a liquid ticker, run the scan with auto-calibration on at least two models (Heston for smoothness, VG for tail behavior), and look for strikes where multiple models agree the same direction. Those consensus signals are the most trustworthy. Filter the result list by liquidity (minimum volume, OI, max bid-ask spread percent) so you are not chasing edge that disappears at fill time. Cross-reference each candidate against the GEX page to make sure the "mispricing" is not actually a dealer-positioning artifact (large gamma walls can produce real but ephemeral skew that models read as edge). Then check the bid-ask edge (the scanner reports both percentage and dollar edge), and only execute when the edge clears your slippage assumption with margin to spare.

Speed and Calibration Caveats

FFT pricing itself is millisecond-fast across an entire chain; that is the whole point of using FFT instead of direct integration. The bottleneck is the initial calibration step: Heston quick mode takes a few seconds, balanced mode 10 to 20 seconds, precise mode potentially over a minute. Bates (Heston-plus-jumps) is the slowest because the parameter space is larger. Calibration warm-starting on the watchlist scanner reuses fitted parameters from the previous pass, which makes subsequent passes much faster than the first. Plan around this: set up watchlists, run a cold-start scan, then iterate at the warm-start cadence.

Why FFT Specifically

FFT-based pricing uses the characteristic function of the underlying return distribution rather than direct simulation or analytic per-strike formulas. Once the characteristic function is known - Heston, Variance Gamma, Merton, Kou, and Bates all have closed-form characteristic functions - pricing every strike on the chain is a single Carr-Madan Fourier transform rather than strike-by-strike integration. That is what enables full-chain scanning at millisecond latency, and the FFT step stays constant-time per chain regardless of how many strikes are listed. The two models that don't go through this path are Black-Scholes and SABR: Black-Scholes prices off an interpolated volatility smile, and SABR prices through the Hagan implied-vol approximation into a Black-Scholes price, so neither needs the Fourier machinery. The remaining slow step is calibration, which is an inverse problem solved against live quotes, not the pricing itself.

Liquidity-First Filter Order

The order in which the filters apply matters. Liquidity floors run first, before any edge threshold: a minimum-volume and minimum-open-interest screen plus a crossed-market guard, then a maximum bid-ask spread percentage, all applied to the raw chain before the model is even calibrated. The minimum-edge threshold (in dollars and percent) is a post-scan screen layered on top of the priced results. The reason for the ordering is that an edge signal on an illiquid contract is unactionable - the slippage on entry will exceed the modeled edge - so the liquidity gates run first to keep the priced set tradeable. Liquidity presets (Smart, High Liquidity, Aggressive, and Show All) are starting points: Smart screens lightly (volume at or above 10, OI at or above 100, spread at or below 20%), High Liquidity is the strictest, Aggressive sits in between, and Show All disables the floors entirely. Refine the floors per-ticker once you have a feel for what is actually filling at mid.

This page is part of the Options Analysis Suite features overview. Browse the full documentation.