IV Rank Scanner: Free Python Example and Live Data Workflow | FlashAlpha
ivrank · 6 min read

IV Rank Scanner: Free Python Example and Live Data Workflow

Calculate IV rank and percentile from consistent daily IV observations, inspect a synthetic sample, and choose the correct live volatility or screener workflow. Coverage, timestamps, filters and access explained.

T
Tomasz Dobrowolski Quant Engineer
Mar 15, 2026
Updated Oct 16, 2026
6 min read
IVRank ImpliedVolatility OptionsScreener Python PremiumSelling
Looking for the IV rank screener?

Open the IV dashboard for its selected watchlist, ATM IV and IV percentile. It does not expose a calculated IV-rank column or cover the whole 6,000+ symbol API universe. Signed-out results are delayed snapshots when available. Inspect each returned source timestamp before comparing names.

From an IV Rank Screen to a Research Candidate

High rank means IV is high relative to that symbol's own range; whether selling it pays is the research question. Run each candidate through five checks before it becomes a trade idea:

CheckWhyWhere
Earnings before expiry?Event IV inflates rank and then collapses.Earnings calendar
Quote spreadCrossing a wide market eats the premium you are selling.Option quote bid/ask
Open interest and volumeThin contracts are hard to exit.Option chain
Realized vol vs IV (VRP)High IV that realizes is not overpriced.Volatility endpoint
Lookback lengthOne extreme day can set the 52-week high and squash every later rank.Your lookback setting

After selecting candidates, use the 50-strategy research and trade ledgers to examine how structure and execution costs change outcomes. Its 2020-2025 ETF sample is not a backtest of today's high-IV stock list. To automate a broader filter, follow the IV rank screener API guide.

Why does IV rank matter more than raw IV?

AAPL at 30% IV and TSLA at 30% IV are completely different situations. AAPL's 52-week IV range might be 15%-35%, putting 30% near the top. TSLA's range might be 25%-80%, putting 30% near the bottom. Same raw number, opposite conclusions.

SymbolIV today52-week IV rangeIV rankRead
AAPL30%15% to 35%(30 − 15) / (35 − 15) = 75High within its own range; not proof of overpricing.
TSLA30%25% to 80%(30 − 25) / (80 − 25) = 9Low within its own range; not proof of underpricing.

IV rank solves this by normalizing: it tells you where current IV sits as a percentage of the annual range (0-100). IV percentile goes further - it tells you what percentage of trading days had lower IV than today. Both give you the context that raw IV lacks.

MetricDefinitionGood forBlind spot
Raw IVAnnualized expected move priced by the options.Sizing the expected move in dollars.No context: 30% is high for one name and low for another.
IV rankWhere today's IV sits between the 52-week low and high, 0 to 100.Fast cross-symbol comparison.One extreme day resets the range and compresses every later reading.
IV percentileShare of lookback days with IV below today's.How unusual today is, robust to a single spike.Says nothing about how far above the typical level IV sits.
VRP (IV minus realized)Implied vol less realized vol over the same window.A backward-looking implied/realized comparison.Backward-looking realized vol; an event can make it stale.

An elevated rank is a screening condition, not evidence that selling options has positive expected value. Earnings, liquidity, future realized movement, spreads and the entry/exit rule matter. The earnings IV-crush guide explains why event timing can change the comparison.

Key Insight

IV rank > 50 means current IV is in the upper half of its annual range. Many premium sellers use this as their minimum threshold for entering short vol positions.

Build an Actual IV Rank Scanner

Download iv-rank.py and the clearly labeled synthetic history. Python 3.10+ standard library is sufficient; no API key or paid data is required to reproduce the arithmetic. Run:

python iv-rank.py synthetic-iv-history.csv --min-rank 50 --min-percentile 70

Sample provenance: hypothetical AAPL, TSLA and NVDA series, generated for this example on October 16, 2026. Each has 252 weekday-dated observations ending October 15, 2026. These are synthetic values, not exchange data or a valid market calendar. Replace them with your licensed, consistently sampled IV series for actual research.

# The full script validates dates, duplicates, finite IV and history length.
iv_rank = 100 * (current_iv - min(history)) / (max(history) - min(history))
prior = history[:-1]
iv_percentile = 100 * sum(iv < current_iv for iv in prior) / len(prior)
passes = iv_rank >= 50 and iv_percentile >= 70

In this example, rank uses 252 observations including today, and percentile compares today with the 251 strictly prior observations. Ties do not count as lower. Vendors can use different windows and tie rules; do not assume their percentile equals this calculation.

Coverage, Timestamp and Exclusion Rules

CheckRule in this sampleWhy
UniverseOnly symbols actually present in the CSVIt is not a market-wide scanner.
Observation timeEvery symbol must end on the dataset's latest dateOld observations must not compete with new ones.
HistoryRequire 252 observations; zero range is unavailableShort history and division by zero must not become a rank of zero.
IV definitionUse one daily time, tenor, ATM method and percentage unitChanging the measurement changes the ranking.
Candidate filterRank at least 50 AND percentile at least 70These are explicit demonstration thresholds, not optimized trading rules.

The output retains excluded symbols with a reason. Inspect gaps and the calendar span: 252 observations approximate a trading year only when the daily sampling and exchange calendar are consistent. Sorting ATM IV alone finds high raw IV; it does not compute IV rank.

Choose the Correct Live Workflow

WorkflowAccess and inputsWhat you can inspect
Local calculationFree script plus your own consistent daily IV CSVRank, percentile, sample count, observation date and exclusions
Current symbol volatility/v1/volatility/{symbol}, Growth and aboveDocumented implied/realized metrics; archive consistent observations for your rank series
Server-side multi-symbol filtersPOST /v1/screener, Growth and above; eligible universe varies by tierInspect the current screener contract, returned symbols and limits
Browser referenceIV dashboard; request allowance and symbol access still applySelected watchlist's ATM IV and IV percentile, with each response timestamp

Growth provides 2,500 daily requests. One daily volatility request for each of 50 symbols would use 50 requests before retries or other work; compare that schedule with your current allowance. The broad API symbol catalogue, the browser watchlist and the server-side screener universe are separate coverage sets.

Turn a Screen Into a Research Question

Check earnings timing, spreads and contract liquidity, then examine the proposed structure's executable risk and costs. IV minus past realized volatility is not a forecast of future variance. High rank alone cannot establish overpricing or tell you to sell premium.

Use the API screener guide for automation and the strategy research and ledgers for methodology. Their ETF study is not a backtest of today's stock candidates. Evaluate the saved CSV before scheduling repeated API calls or sending alerts.

Related Reading

Frequently Asked Questions

The downloadable local calculation and synthetic sample are free and need no API key. Current volatility and server-side screener API workflows require Growth and above. A browser watchlist does not promise full-universe Free API access.

IV rank locates current IV within a high-low range. IV percentile counts how many historical observations had lower IV. The example uses 252 observations for the range and 251 prior observations for percentile, excluding ties.

No. Raw IV is a volatility level. Rank needs a consistent historical range for each symbol; percentile needs the historical distribution. The downloadable script calculates both.

The browser dashboard uses a selected watchlist and displays ATM IV, IV percentile, realized-volatility context and related metrics. It does not expose a calculated IV-rank column. Inspect each returned source time; signed-out snapshots are delayed when available.

No. High rank is a screening condition. Event risk, future realized movement, liquidity, costs, position structure and the tested entry/exit rule determine the economic outcome.

The highest IV stocks change every day, driven by earnings, macro events, and sector rotation. A scanner that runs automatically - pulling real IV data, filtering for elevated premium, and alerting you before the open - is the foundation of any systematic premium selling workflow. Build it once, run it forever.

Live Market Pulse

Get fast visibility into market shifts with full-chain analytics over low-latency REST and MCP polling.

Intelligent Screening

Screen millions of option pairs per second using your custom EV rules, filters, and setups.

Export-Ready

Export structured signals to your own execution stack or broker integration - FlashAlpha delivers the analytics, you keep control of order routing.

Join the Community

Discord

Engage in real time conversations with us!

Twitter / X

Follow us for real-time updates and insights!

GitHub

Explore our open-source SDK, examples, and analytics resources!