Premium selling strategies, often popularized by "Theta Gang" traders, rely on selling option contracts (writing calls or puts) to collect premium while letting time decay work in the seller's favor. The most lucrative environment for these strategies is when Implied Volatility (IV) is high. High IV suggests that the market expects significant price movement, inflating the price of option premiums. By identifying contracts with the highest IV, developers can build automated scanners to find opportunities for strategies like the Wheel, Iron Condors, or Credit Spreads.
Obtain API key
The Endpoint
To programmatically identify these opportunities, SteadyAPI provides a dedicated endpoint that ranks specific option contracts based on their volatility metrics.
Endpoint: GET /v1/markets/options/highest-iv
Documentation:
https://docs.steadyapi.com/#stocks-options-GETapi-v1-markets-options-highest-iv
Detailed Parameter Analysis
This endpoint is designed to return a list of option contracts ranked by their Implied Volatility percentage. To effectively screen for premium selling candidates, you must configure the parameters to target the most expensive options relative to their strike price.
- sort
This parameter controls the ranking order. For premium selling, set this toHIGHEST. This ensures the API returns contracts with the most inflated volatility first. WhileLOWESTis available, it is typically used for long strategies (buying options) where volatility expansion is desired. - page
The API returns results in paginated sets. Increment this integer to traverse through the list of high-IV contracts if the initial batch does not meet your liquidity or underlying asset criteria.
Python Example
The following script demonstrates how to fetch the top 20 highest IV options. It also calculates a Yield metric (Bid Price divided by Strike Price), which helps quantify the return on capital if the option were cash-secured or covered.
import requests
url = "https://api.steadyapi.com/v1/markets/options/highest-iv"
# Replace with your actual API key
headers = {
"Authorization": "Bearer YOUR_AUTH_KEY"
}
# Requesting the highest IV contracts
params = {
"sort": "HIGHEST",
"page": "1"
}
response = requests.get(url, headers=headers, params=params)
if response.status_code == 200:
data = response.json()
options_list = data.get("body", [])
print(f"{'Symbol':<20} | {'Strike':<8} | {'Type':<5} | {'Bid':<6} | {'IV':<8} | {'Yield %':<8}")
print("-" * 70)
for option in options_list:
symbol = option.get("baseSymbol")
strike = float(option.get("strikePrice"))
opt_type = option.get("symbolType")
bid = float(option.get("bidPrice"))
iv = option.get("volatility")
# Calculate immediate yield based on the bid price
# Yield = (Premium Received / Collateral) * 100
yield_pct = (bid / strike) * 100 if strike > 0 else 0
print(f"{symbol:<20} | {strike:<8.2f} | {opt_type:<5} | {bid:<6.2f} | {iv:<8} | {yield_pct:<8.2f}")
else:
print(f"Error: {response.status_code} - {response.text}")
Understanding the Response
The API returns a JSON object containing a list of option contracts. Each object represents a specific strike and expiration with its associated market data.
{
"body": [
{
"symbol": "WULF|20250117|1.50C",
"baseSymbol": "WULF",
"baseLastPrice": "2.14",
"symbolType": "Call",
"strikePrice": "1.50",
"expirationDate": "01/17/25",
"daysToExpiration": "329",
"bidPrice": "1.35",
"askPrice": "2.05",
"volatility": "420.81%"
}
]
}
Key Fields
- volatility
This is the annualized Implied Volatility percentage. A value of 420.81 percent indicates extreme expected movement. In premium selling, this is the primary filter; higher values equate to richer premiums but higher risk. - bidPrice
The price at which you can sell the option immediately. When calculating potential returns for writing contracts, always use the bid price rather than the last price or ask price to ensure realistic return estimates. - askPrice
The price to buy the option. A wide gap between bidPrice and askPrice indicates low liquidity. Algorithms should filter out options with wide spreads to ensure you can close the position later at a fair price. - strikePrice
The price at which the asset can be bought or sold. For cash-secured puts, this represents the collateral required (Strike multiplied by 100). - expirationDate
The date the contract expires. This is critical for calculating annualized returns. A high yield on a contract expiring in 329 days is different from the same yield on a contract expiring in 7 days.
Practical Use Cases
Automated Covered Call Scanners
Investors holding long stock positions can use this endpoint to check if their specific holdings appear in the high-IV list. If a stock they own spikes in IV, it may be an opportune time to sell covered calls against the position to reduce cost basis.
Cash-Secured Put Screeners
Traders employing the Wheel strategy can filter this list for stocks priced under a certain threshold (for example, under 50 dollars). By identifying high-IV puts on relatively stable or bullish stocks, traders can sell puts to generate income or acquire the stock at a discount if assigned.
Learn more or explore other endpoints:
SteadyAPI Stock and Options Data API