Methodology
The exact formulas, data sources, scoring weights, and limitations behind every calculator, screener, and score on this site. This page is updated whenever methodology changes.
Most options-income websites hide their math behind a brand name. We don't. Below is the complete and current methodology for OptionIncomeTools. If you spot an error or have suggestions, email [email protected].
1. Data sources
| Data point | Primary source | Fallback | Refresh cadence |
|---|---|---|---|
| Option chains (strikes, bids, asks, last, IV, Greeks, OI, volume) | Polygon.io Options Starter | Tradier (BYO key) | 30-60 seconds |
| Equity quote (spot price) | Polygon snapshot | Put-call parity from chain | 30 seconds |
| Day-over-day change / prev close | Stooq CSV (free, reliable from CDN egress) | — | End-of-day |
| Dividend schedule (ex-date, amount, frequency) | Polygon /v3/reference/dividends | — | Daily |
| Earnings calendar | Polygon | — | Daily |
Every external request is cached in Cloudflare Workers KV with TTLs ranging from 30 seconds (quotes) to 24 hours (dividends). On cache miss followed by upstream failure, we serve the last-known-good value from a separate 30-day KV slot.
2. Option pricing — Black-Scholes-Merton
All theoretical option values use the standard closed-form Black-Scholes-Merton model with a continuous-dividend yield. For a European call:
For a European put:
where:
d2 = d1 − σ · √T
- S = spot price · K = strike · T = time to expiration in years (days/365)
- r = risk-free rate (currently 4.5%, sourced from 3-month T-bill yield; configurable per Worker)
- q = continuous-dividend yield (annualized from upcoming declared dividends; 0 if no dividend)
- σ = implied volatility (sourced from Polygon's chain field; we do NOT recompute it on the client)
- N(·) = standard normal CDF, implemented via Abramowitz-Stegun rational approximation (max error < 1e-7)
Limitation: American-style options can be exercised early. Black-Scholes is a European model and will under-price American puts and over-price American calls near ex-dividend dates. For income-selling strategies (CC, CSP), this approximation is acceptable because we care about expected value, not exercise-time alpha.
3. Greeks
Closed-form Greek derivatives, with the same r and q assumptions:
| Greek | Call | Put |
|---|---|---|
| Delta | exp(-q·T) · N(d1) | exp(-q·T) · (N(d1) − 1) |
| Gamma | exp(-q·T) · φ(d1) / (S · σ · √T) | same as call |
| Theta (per year) | −S · exp(-q·T) · φ(d1) · σ / (2√T) − r · K · exp(-r·T) · N(d2) + q · S · exp(-q·T) · N(d1) | −S · exp(-q·T) · φ(d1) · σ / (2√T) + r · K · exp(-r·T) · N(-d2) − q · S · exp(-q·T) · N(-d1) |
| Vega (per 1% IV change) | 0.01 · S · exp(-q·T) · φ(d1) · √T | same as call |
| Rho (per 1% rate change) | 0.01 · K · T · exp(-r·T) · N(d2) | −0.01 · K · T · exp(-r·T) · N(-d2) |
φ(·) is the standard normal PDF. Theta is reported per calendar day (divided by 365) in the Greeks calculator UI to match trader convention.
4. Annualized yield (covered calls, CSPs)
For a single-cycle annualized yield used everywhere on the site:
Where:
- premium = mid quote (or last if no quote), per contract × 100 shares
- collateral = strike × 100 for CSPs, or cost basis × 100 for CCs
- DTE = days to expiration
Honest caveat: annualized yield assumes you successfully repeat the cycle without ever getting assigned at a bad price or hit by an adverse IV move. Real-world net yields typically run 40-70% of the displayed annualized number after IV crush, assignment frequency, and gap moves. We display the cycle-arithmetic number because it's the industry convention; we don't claim it represents realized return.
5. Downside cushion
For a covered call:
For a cash-secured put:
Cushion represents how far the underlying can drop before the position turns negative — a simple proxy for downside risk before assignment.
6. Wheel Score (0-100 composite)
Used in the Wheel Strategy Screener to rank candidates:
- yield_norm = min(1, combined_yield / 1.5) — caps at 150% APY contribution
- liquidity_norm = liquidity_score / 100 (see #7)
- delta_quality = max(0, 1 − |delta_avg − 0.27| · 2) — peaks at 0.27 average delta
- iv_regime = max(0, 1 − max(0, iv − 0.80) / 0.5) — penalizes IV above 80%
Higher is better. We don't claim this is a backtested edge — it's a heuristic for surfacing candidates that combine income with manageable risk.
7. Risk Score (0-100, higher = riskier)
- cap_penalty = +10 for mid-cap, +20 for small-cap, 0 for large+/mega
- sector_penalty = +5 for Energy, Financial, Crypto-correlated
8. Liquidity Score (0-100)
This compresses raw volume + OI onto a log scale: 10K combined ≈ 50, 100K ≈ 75, 1M ≈ 100. Used to rank candidates and to surface "thin liquidity" warnings.
9. Income Goal Planner allocation
The planner solves a simple greedy allocation:
- Run the wheel screen at the user-selected risk band's filters (delta, DTE, market-cap, max price).
- For each candidate (in wheel-score order), allocate up to 20% of total capital (diversification cap).
- Stop when either expected monthly income reaches 120% of target, or 95% of capital is deployed.
- Compute expected monthly premium as (csp_premium + cc_premium) × 100 × contracts × (365 / cycle_DTE) / 12.
Probability of hitting target is a rough heuristic: (expected/target) · (1 − avg_delta·0.4) + diversification_bonus. It's not a Monte Carlo simulation.
10. Live Opportunities ranking
The live opportunities dashboard runs a parallel screen across ~30 popular tickers every 5 minutes, picks the top single CC and top single CSP per ticker within the delta band, and ranks by annualized yield. The KV cache layer is described in the data sources section.
11. Methodology changelog
- 2026-06-10 — Methodology page published. Added Wheel Score and Risk Score weights. Documented stale-while-revalidate caching layer.
- 2026-05-30 — Switched day-over-day change source from Yahoo to Stooq for Cloudflare egress compatibility.
12. Known limitations
Important things this site does NOT do:
- We do not model early-exercise risk for American options (we use European Black-Scholes).
- We do not Monte Carlo-simulate return distributions. All yield numbers are deterministic single-cycle math.
- We do not adjust for slippage, broker commissions, or assignment fees.
- We do not have access to historical IV — IV-rank computations are approximated from current IV only.
- The Polygon Options Starter plan provides 15-minute delayed quotes during market hours; live trading decisions should always be verified against your broker's order book.
13. Questions or corrections
If you spot a formula error or want to suggest a methodology improvement: [email protected]. Substantive corrections are credited in the changelog.