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
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 areSTOCKS,ETFS, orINDICES. 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