How We Calculate

Every number on this site is computed in your browser from the formulas below — nothing is hidden on a server, and nothing is fudged. If you want to check our math, here it is in full. We publish it precisely because you should verify the numbers before you trade on them.

The principles behind every figure

  • Returns are measured on the capital committed today — the current market value of the position, not what you paid years ago. A low historical cost basis can't flatter the headline return.
  • Everything is modelled at expiration. These are final-day outcomes. Before expiration, time value and implied volatility make the real P&L curve smoother and rounded.
  • Figures are before commissions, fees and taxes. Your broker's costs come off the top.
  • We do not predict early assignment. The math shows expiration outcomes; early assignment — most common on in-the-money calls just before an ex-dividend date — is a risk to manage, not a number we model.
  • It all runs in your browser. Your inputs are never sent anywhere — no login, no server, no database. You can optionally have a calculator remember your last inputs on your own device; that is off by default and never leaves your browser.

What the verdict words mean

The covered call and cash-secured put calculators print a one-line verdict that grades the trade by its annualized return. The word is a fixed scale, shown as a ladder under the verdict with the current tier marked (hover it for these thresholds):

  • Modest - under 8% annualized
  • Solid - 8 to 15%
  • Strong - 15 to 30%
  • Exceptional - 30% or more

A higher grade is not automatically a better trade. A fat annualized return often comes with a thin downside cushion or a near-term catalyst - read the cushion and the actual number alongside the word, never the word alone.

Covered call

  • Max profit (if called away) = (strike − cost basis + premium) × shares
  • Profit if it expires worthless = premium × shares
  • Breakeven (on the shares) = cost basis − premium
  • If-called return = (strike − current price + premium) ÷ current price — on capital committed today
  • Return on cost basis = (strike − cost basis + premium) ÷ cost basis — total return on the original purchase; shown only when cost basis differs from price
  • Static return = premium ÷ current price
  • Downside protection = premium ÷ current price
  • Annualised = return × (365 ÷ days to expiration) — "N/A" at 0 DTE

Open the Covered Call Calculator →

Cash-secured put

  • Max profit (credit collected) = premium × shares (shares = contracts × 100)
  • Cash secured = strike × shares
  • Breakeven / cost basis if assigned = strike − premium
  • Return on capital (if worthless) = premium ÷ strike
  • Discount to current price = (current price − strike) ÷ current price
  • Breakeven cushion = (current price − breakeven) ÷ current price
  • Annualised = return on capital × (365 ÷ days to expiration)

Open the Cash-Secured Put Calculator →

The wheel

Each cycle's type (put or call) is derived from state: you sell puts while in cash, and calls once a put assigns you shares.

  • Total premium = sum of every cycle's premium × (contracts × 100)
  • Net cash flow = premiums collected − cash to buy assigned shares + cash from shares called away
  • Adjusted cost basis (while holding shares) = assignment strike − premium collected per share since assignment
  • Total P&L = net cash flow + (shares still held × current price)
  • Return on capital = total P&L ÷ (largest put strike × contracts × 100)
  • Annualised = return on capital × (365 ÷ total days)

Open the Wheel Strategy Calculator →

Rolling (short-put repair)

  • Net credit of the roll = (new premium × new contracts − buyback × old contracts) × 100
  • New total net premium = premium collected to date + roll net credit
  • New breakeven = new strike − (new total net premium ÷ (new contracts × 100))
  • Annualised return on the roll = (roll net credit ÷ cash secured) × (365 ÷ new days to expiration)

The repair stage is detected from the roll, always preferring the lowest that still pays a net credit:

  • Stage 1 — same contracts, lower strike, net credit ≥ 0
  • Stage 2 — same contracts, same strike, net credit ≥ 0
  • Stage 3 — more contracts, lower strike, overall net credit ≥ 0

Open the Rolling Decision Calculator →

Payoff diagram

  • Each leg's P&L at underlying price S = sign × (intrinsic − premium) × 100 × contracts, where long = +, short = −; call intrinsic = max(0, S − strike), put intrinsic = max(0, strike − S)
  • Net credit / debit to open = premium collected on short legs − premium paid on long legs
  • Max profit / max loss = the combined P&L evaluated at zero and at every strike (the kinks); flagged "Unlimited" when the far-upside slope (net long vs short calls) isn't flat
  • Breakeven(s) = the underlying prices where the combined P&L crosses zero

Open the Payoff Diagram Builder →

Bull put spread

Sell a higher-strike put, buy a lower-strike put for protection. Strikes and premiums are per share; shares = contracts × 100.

  • Width = short strike − long strike
  • Net credit = short premium − long premium
  • Max profit = net credit × shares — both puts expire worthless
  • Max loss = (width − net credit) × shares
  • Breakeven = short strike − net credit
  • Return on risk = net credit ÷ (width − net credit)
  • Annualised = return on risk × (365 ÷ days to expiration)

Open the Bull Put Spread Calculator →

Iron condor

A bull put spread below the price and a bear call spread above it. Only one side can be breached at expiration, so the loss uses the wider wing.

  • Put width = short put − long put; call width = long call − short call
  • Total credit = put-side credit + call-side credit
  • Max profit = total credit × shares — price finishes between the short strikes
  • Max loss = (wider width − total credit) × shares
  • Lower breakeven = short put − total credit; upper breakeven = short call + total credit
  • Profit zone = upper breakeven − lower breakeven
  • Return on risk / annualised as for the bull put spread, using the total credit

Open the Iron Condor Calculator →

Poor man's covered call (diagonal)

A long, deep-in-the-money LEAPS call stands in for the stock; a shorter-dated call is sold against it. The long call is valued at intrinsic only at the short call's expiration — a conservative model, so real results usually run a little better.

  • Net debit = (long premium − short premium) × shares — this is the maximum risk
  • Width = short strike − long strike
  • Max profit = (width − net debit per share) × shares
  • Breakeven / effective cost basis = long strike + net debit per share
  • Return on debit = max profit ÷ net debit
  • Annualised income yield = (short credit ÷ net debit) × (365 ÷ short days to expiration)

Open the Poor Man's Covered Call Calculator →

Collar

Long stock plus a protective put (lower strike) financed by a short call (higher strike). The stock price is your cost basis; net cost can be a debit or a credit.

  • Net cost per share = put premium − call premium (+ = debit, − = credit)
  • Breakeven = stock price + net cost per share
  • Max gain = (call strike − stock price − net cost per share) × shares
  • Max loss = (put strike − stock price − net cost per share) × shares
  • Downside protection = (stock price − put strike) ÷ stock price
  • Upside cap = (call strike − stock price) ÷ stock price

Open the Collar Calculator →

IV Rank & IV Percentile

  • IV Rank = (current IV − 52-week low) ÷ (52-week high − 52-week low) × 100, clamped to 0–100
  • IV Percentile = (days IV closed below today ÷ total days) × 100 — needs the daily count; we never fake it from the high/low range
  • Seller's verdict = rank ≥ 50 rich, 30–50 normal, < 30 cheap

Open the IV Rank Calculator →

Expected move

  • 1SD move ($) = price × (IV ÷ 100) × √(DTE ÷ 365)
  • 1SD move (%) = IV × √(DTE ÷ 365)
  • 2SD move = double the 1SD move
  • Bands = price ± move — ≈ 68% inside 1SD, ≈ 95% inside 2SD under a normal approximation

Open the Expected Move Calculator →

Black-Scholes & the Greeks

European exercise, no dividends. T = days ÷ 365; N(·) is the standard-normal CDF (Zelen-Severo approximation, error < 7.5e-8).

  • d1 = [ln(S/K) + (r + σ²/2)·T] ÷ (σ·√T); d2 = d1 − σ·√T
  • Call = S·N(d1) − K·e−rT·N(d2); Put = K·e−rT·N(−d2) − S·N(−d1)
  • Delta = N(d1) call / N(d1) − 1 put (per $1); Gamma = φ(d1) ÷ (S·σ·√T)
  • Vega = S·φ(d1)·√T, shown per 1% IV (÷ 100)
  • Theta shown per calendar day (annual θ ÷ 365); Rho per 1% rate (÷ 100)

Open the Black-Scholes Calculator →

Probability calculator

The price at expiration is lognormal: the log-return is Normal with standard deviation σ·√T and drift (r − ½σ²)·T. The rate defaults to 0 for a pure-volatility read.

  • P(finish above target) = N([ln(S/K) + drift] ÷ (σ·√T))
  • P(finish below) = 1 − P(above)
  • P(in the money) = the finish probability on the target's far side; P(seller keeps) = its complement
  • P(touch) ≈ min(1, 2 × P(finish beyond)) — reflection principle, exact at zero drift

Open the Probability Calculator →

Kelly position sizing

  • Payoff ratio b = average win ÷ average loss
  • Full Kelly fraction f* = p − (1 − p) ÷ b, where p = win rate — f* ≤ 0 means no edge: do not bet
  • Half / Quarter Kelly = f* ÷ 2 and f* ÷ 4 (most traders stake a fraction of full Kelly)
  • Dollar stake = fraction × account size
  • Expectancy = p × average win − (1 − p) × average loss

Open the Kelly Position Sizing Calculator →

Kelly simulator

Compounds an account trade by trade at Full, Half and Quarter Kelly over one shared, seeded random sequence — so the three sizings are always judged on the same run of wins and losses.

  • Lots per trade = floor(fraction × balance ÷ average loss)
  • P&L = lots × (+average win on a win, −average loss on a loss); balance = max(0, balance + P&L)
  • Ignoring lot rounding, a win scales the account by (1 + f·b) and a loss by (1 − f)
  • Max drawdown = largest peak-to-trough fall in the equity curve

Open the Kelly Simulator →

Strategy Finder

Not a formula — a deterministic rules map. Your four answers (experience, goal, assignment comfort, defined- vs undefined-risk preference) select a risk profile and a matched primary and alternate strategy, each linking to its calculator. The mapping is fixed and unit-tested, so the same answers always return the same recommendation.

Open the Strategy Finder →

How we test the math

Every formula above lives in a pure, framework-free function, and each one is pinned down by an automated test suite that has to pass before any change can ship — more than 570 assertions across all the calculators. We don't just test the easy case; the suite deliberately covers the awkward ones, because those are where calculators quietly get it wrong:

  • In-the-money covered calls and cash-secured puts, where premium and intrinsic value have to be separated correctly
  • Zero days to expiration, where annualised returns are guarded instead of dividing by zero
  • Deep in/out-of-the-money strikes, and a low cost basis, so a cheap historical entry can't flatter the headline return
  • Impossible inputs — a spread whose credit exceeds its width, say — are flagged, not silently turned into a fake profit
  • Full multi-cycle wheel loops and each rolling stage, end to end

A single failing assertion blocks the build, so a wrong number can't reach the live site unnoticed. To be clear about what this is: a check against the formulas published on this page — not a promise your broker will show the identical figure, since real fills, fees and early assignment all move the result (see the principles above).

Sources & references

The models above are standard, public and decades old. Where one has a canonical source, here it is — so you can check our work against the original, not just our description of it.

  • Option pricing & the Greeks: Black, F. & Scholes, M. (1973), "The Pricing of Options and Corporate Liabilities," Journal of Political Economy; and Merton, R. C. (1973), "Theory of Rational Option Pricing," Bell Journal of Economics. We model European exercise with no dividends.
  • The normal CDF N(·): the Zelen & Severo rational approximation in Abramowitz & Stegun, Handbook of Mathematical Functions (1964), formula 26.2.17 — absolute error below 7.5e-8.
  • Lognormal price & probabilities: the standard expiration-price model set out in Hull, Options, Futures, and Other Derivatives; the probability-of-touch uses the reflection principle (exact at zero drift).
  • Kelly position sizing: Kelly, J. L. (1956), "A New Interpretation of Information Rate," Bell System Technical Journal.
  • Contract mechanics, assignment & expiration: the Options Clearing Corporation and the Options Industry Council — the disclosure document "Characteristics and Risks of Standardized Options" (theocc.com, optionseducation.org).
  • Implied volatility & the expected move: Cboe options education and the Cboe VIX methodology (cboe.com). IV Rank and IV Percentile are industry conventions from retail options research, not proprietary formulas.

Citing a source means we use its definition or model; it does not imply the source endorses this site.

Found an error?

We would rather know. If a formula or a result looks wrong, tell us and we will check it and fix it — accuracy on the awkward cases is the whole point of this site. Get in touch.

Educational tools only. Nothing here is financial advice. Options trading carries the risk of significant loss — understand assignment and size positions accordingly before you trade.