FFT Mispricing Scanner
Last reviewed: by Options Analysis Suite Research.
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.
- Multi-Model Pricing: Price options using Black-Scholes, Heston, Variance Gamma, Merton Jump Diffusion, Kou Double Exponential, Bates, and SABR stochastic volatility models.
- Auto-Calibration: Automatically calibrate model parameters to the live volatility surface with quick, balanced, and precise speed modes. While FFT pricing itself takes milliseconds, the initial calibration step may take several seconds to over a minute depending on the model, ticker liquidity, and selected speed mode.
- 7-Level Signal System: Strong Buy, Buy, Weak Buy, Neutral, Weak Sell, Sell, and Strong Sell signals based on model price vs market bid-ask positioning.
- Edge Calculation: Executable edge measurement showing profit potential when model price crosses the bid or ask, in both dollar and percentage terms.
- Liquidity Filtering: Filter results by minimum volume, open interest, bid-ask spread percentage, moneyness, and edge threshold with smart filter presets.
- Multi-Model Comparison: Compare pricing across multiple models simultaneously to identify consensus mispricings and model-specific opportunities.
- Heatmap Visualization: Color-coded strike-by-expiration heatmap view of price differences and signal strength across the entire chain.
- Multi-Expiration Scanning: Scan across all available expirations or focus on a single expiration with per-DTE calibration support.
- Web Worker Acceleration: Parallel computation via web workers for expensive models, keeping the UI responsive during heavy scans.
- Automated Watchlist Scanning: Define a custom watchlist of tickers and let the scanner automatically cycle through them, surfacing the highest-edge opportunities across your entire watchlist with calibration warm-starting for faster subsequent passes.
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.