Options Screener — IV Premium, Unusual Volume, Covered Calls
Pricing
from $2.00 / 1,000 option contracts
Options Screener — IV Premium, Unusual Volume, Covered Calls
Screen US equity and ETF option chains on derived metrics, not raw chains: implied volatility vs realized volatility, volume-to-open-interest ratio, IV skew, put/call ratio, and annualized covered-call and cash-secured-put yields. Liquidity-filtered.
Pricing
from $2.00 / 1,000 option contracts
Rating
0.0
(0)
Developer
宗諭 楊
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
10 days ago
Last modified
Categories
Share
Options Screener — IV Premium, Unusual Volume & Covered-Call Yield
Most option scrapers hand you the chain. This one hands you the numbers you were going to compute from the chain.
Give it tickers and it returns option contracts ranked by a derived metric: implied volatility measured against the stock's own realized volatility, volume against open interest, or the annualized yield of selling the contract. Everything is liquidity-filtered first, because a yield you cannot fill is not a yield.
The five screens
| Screen | Ranks by | Answers |
|---|---|---|
| IV premium | iv ÷ realizedVol | Are these options expensive relative to how much the stock has actually been moving? |
| Unusual volume | volume ÷ openInterest | Where is today's trading larger than the entire existing position? |
| Covered-call yield | annualized call premium ÷ spot | If I hold the shares and sell this call, what is the annualized return? |
| Cash-secured-put yield | annualized put premium ÷ strike | If I set aside the cash and sell this put, what is the annualized return? |
| Liquid chain only | symbol / expiry / strike | Just the chain, with the illiquid strikes removed. |
What you get per contract
| Field | Example |
|---|---|
symbol / expiry / dte | AAPL / 2026-11-21 / 41 |
side / strike / moneyness | call / 340 / 1.01 |
mid / bid / ask / spreadPct | 8.45 / 8.30 / 8.60 / 0.035 |
iv | 0.287 |
realizedVol | 0.241 |
ivPremium | 1.19 — implied is 19% above realized |
volume / openInterest / volOiRatio | 4,210 / 1,905 / 2.21 |
coveredCallYield / cashSecuredPutYield | annualized, from the mid price |
atmIv / ivSkew / putCallVolRatio / putCallOiRatio | per expiration |
breakevenMovePct | the one-sigma move the option is pricing in |
inTheMoney / lastTradeDate / contractSymbol | inTheMoney is computed from the spot in the same row, so it always agrees with moneyness and extrinsicPct |
Two dataset views: Contracts (everything) and Premium selling (the two yields side by side with the spread, so you can see what is actually fillable).
Filters
- Days to expiry window — very short-dated options have unstable implied volatility, so the default starts at 7 days.
- Min open interest — without it the output fills with strikes nobody trades.
- Max bid-ask spread as a fraction of mid — the liquidity filter that makes the yields meaningful.
- Realized volatility window — the denominator of IV premium.
- Expirations per symbol — each one is a separate request.
How it handles bad data
The source encodes "this strike has no market" as a number, not as a blank: contracts
with no quotes come back with an implied volatility of about 0.00001. Averaged or ranked
naively, those values quietly destroy every statistic — and the rows still look fine,
because they have a strike, a bid, an ask and a last price.
| Check | What it catches |
|---|---|
| Placeholder IV | Implied volatility at or below 0.0001 is converted to null in the data layer, before it can reach any calculation. |
| Whole chain unpriced | If every contract in an expiration carries a placeholder IV, that symbol stops with an explanation instead of returning confident-looking numbers. |
| No expirations | Reported as "this symbol has no option chain", never as "nothing matched your filters". If none of the symbols has options while the control symbol SPY does, the run is refused with that explanation (no rows, no per-row charge). |
| Market closed | Yahoo zeroes option bids, asks and open interest outside US market hours (measured Monday 02:00 ET: 14 of 3,131 contracts still had a quote). With fewer than 5% of contracts quoted outside 9:30–16:00 ET on a trading day, the run is refused with the time and the last trade, instead of returning an empty success. The same picture during market hours is treated as a source failure. SUMMARY.quotedShare reports the share for every run. |
| Crossed market | More than 20% of contracts quoting bid above ask means the quote data is unusable. |
| Too little history | Realized volatility is the denominator of IV premium, so a short history stops the symbol rather than returning a ratio built on noise. |
| Everything filtered out | If liquidity filters remove every contract while quotes exist, the run succeeds with no rows and its status message says which filters removed them. |
| Unknown screen name | Rejected, not silently replaced with the default. |
A gate failure on one symbol does not kill the run; it appears in SUMMARY.warnings with
the reason, and that symbol is left out rather than half-reported.
Notes on the data and the metrics
ivPremiumis relative pricing, not a forecast. Above 1 means the option is priced for more movement than the stock has recently delivered. It does not mean selling is profitable.- Yields use the mid price, not the last trade — a last trade can be days old. Your
actual fill lands inside the spread, which is why
spreadPctis in every row. - Annualized yields use calendar days (365), because collateral is tied up in calendar days. Realized volatility annualizes with trading days (252).
- Quotes are delayed, not live. This is a screening tool, not an order-routing tool.
- Nothing here is investment advice.