image

Implied Volatility (IV) is a critical metric for options traders, representing the market's forecast of a likely movement in a security's price. However, raw IV numbers can be misleading without context. To make informed trading decisions, traders rely on IV Rank and IV Percentile.

IV Rank compares the current IV to its high and low range over a specific period (usually one year). It tells you where the current volatility sits relative to its extremes. IV Percentile indicates the percentage of days in the past year that the IV was lower than the current level. These metrics are essential for mean reversion trading strategies; traders typically sell premium (e.g., Iron Condors, Credit Spreads) when IV Rank is high, expecting volatility to contract, and buy premium (e.g., Long Straddles) when IV Rank is low.


The Endpoint

GET /v1/markets/options/iv-rank-percentile

SteadyAPI provides a dedicated endpoint to retrieve these pre-calculated metrics, allowing developers to scan the market for overbought or oversold volatility conditions without processing historical data manually.

Documentation:
IV Rank Endpoint Doc


Obtain API key

Get your API key


Detailed Parameter Analysis

To filter the volatility data effectively, this endpoint supports specific query parameters:

  • type
    This required parameter filters the asset class. Valid values are STOCKS, ETFS, or INDICES. Using this allows you to segregate broader market volatility (Indices) from individual company volatility (Stocks).
  • price_min
    An optional parameter that filters results by the minimum stock price. This is useful for filtering out penny stocks or low-liquidity assets that may have skewed volatility data.
  • page
    Pagination control to navigate through the list of results.

Python Example

The following script demonstrates how to retrieve a list of stocks with their respective IV Rank and Percentile data using the requests library.

import requests

# Configuration
url = "https://api.steadyapi.com/v1/markets/options/iv-rank-percentile"
api_key = "YOUR_API_KEY"

# Define parameters
params = {
    "type": "STOCKS",
    "price_min": "20",  # Filter stocks priced above $20
    "page": "1"
}

headers = {
    "Authorization": f"Bearer {api_key}"
}

try:
    response = requests.get(url, headers=headers, params=params)
    response.raise_for_status()
    
    data = response.json()
    
    if "body" in data:
        print(f"{'Symbol':<10} | {'Price':<10} | {'IV Rank (1y)':<15} | {'IV % (1y)':<15}")
        print("-" * 60)
        
        for item in data["body"][:10]:  # Display top 10 results
            symbol = item.get("symbol")
            price = item.get("lastPrice")
            iv_rank = item.get("optionsImpliedVolatilityRank1y", "N/A")
            iv_pct = item.get("optionsImpliedVolatilityPercentile1y", "N/A")
            
            print(f"{symbol:<10} | ${price:<9} | {iv_rank:<15} | {iv_pct:<15}")
    else:
        print("No data found.")

except requests.exceptions.RequestException as e:
    print(f"Error fetching data: {e}")

Understanding the Response

The API returns a JSON object containing a list of assets sorted by activity and volatility metrics.

{
  "body": [
    {
      "symbol": "RUN",
      "symbolName": "Sunrun Inc",
      "lastPrice": "12.78",
      "optionsTotalVolume": "115,234",
      "optionsWeightedImpliedVolatility": "95.72%",
      "optionsImpliedVolatilityRank1y": "60.29%",
      "optionsImpliedVolatilityPercentile1y": "81%",
      "optionsWeightedImpliedVolatilityHigh1y": "118.06%"
    }
  ]
}

Key Fields

  • optionsWeightedImpliedVolatility
    This represents the current composite implied volatility of the options chain. In the example above, 95.72 percent indicates extremely high expected price movement.
  • optionsImpliedVolatilityRank1y
    This is the IV Rank. A value of 60.29 percent means the current IV is currently in the upper 60th percentile of its 52-week range (High minus Low).
  • optionsImpliedVolatilityPercentile1y
    This is the IV Percentile. A value of 81 percent means that 81 percent of the time over the past year, the implied volatility was lower than it is right now.
  • optionsTotalVolume
    High volume often correlates with reliable liquidity, making the IV metrics more actionable.

Practical Use Cases

Screening for Short Strangle Candidates

Traders looking to sell premium often look for stocks with an IV Rank above 50 percent. By filtering the API response for high optionsImpliedVolatilityRank1y values, algorithms can automatically populate a watchlist of stocks where premiums are expensive, increasing the potential profit from time decay (theta).

Avoiding Volatility Crush

Traders looking to buy long options (Calls or Puts) should look for low IV Percentile values. Buying options when IV is at the top of its range often leads to volatility crush, where the option value drops significantly even if the stock moves in the predicted direction. This endpoint helps filter for assets where volatility is relatively cheap.


Learn more or explore other endpoints:
SteadyAPI Stock and Options Data API

How to Read a Tweet Using SteadyAPI Oct 13, 2026

How to Read a Tweet Using SteadyAPI

Read one tweet by id. The text and counts are on legacy. meta.reply_count is how many replies were included.

How to Find Vehicles for Sale Using SteadyAPI Oct 11, 2026

How to Find Vehicles for Sale Using SteadyAPI

Search vehicle listings by make, model, and ZIP. Price and mileage on each row are numbers.

How to Estimate Vehicle Depreciation Using SteadyAPI Oct 11, 2026

How to Estimate Vehicle Depreciation Using SteadyAPI

Project trade-in value across years from a vehicle id, mileage, and condition. Mileage here is an integer.

How to Track Amazon New Releases Using SteadyAPI Oct 10, 2026

How to Track Amazon New Releases Using SteadyAPI

Pull one category’s new-release ranking. Store each row’s ASIN, rank, and price string.