Option Trade Lab formulas
Every formula Option Trade Lab uses, in the order it calculates them
The option price, the Greeks, the implied volatility search, P&L, payoff at expiry and the "what moved the price" breakdown. A worked example with a real FIG put is near the end.
1. Inputs and notation
Every price and Greek comes from five numbers. The lab reads them from your ticket and the scenario sliders.
| Symbol | Meaning | Where it comes from in the lab |
|---|---|---|
| Stock price | Stock price slider, or the ticket's price then / now | |
| Strike price | Ticket: strike | |
| Time to expiry, in years | Days to expiry ÷ 365 (calendar days) | |
| Implied volatility, as a decimal | IV slider ÷ 100, so 68% becomes 0.68 | |
| Risk-free interest rate, as a decimal | Rate slider ÷ 100, so 4% becomes 0.04 | |
| Standard normal cumulative distribution | Section 2 | |
| Standard normal density | Section 2 | |
| Side of the trade | +1 if you bought, −1 if you sold | |
| Shares controlled | 100 × number of contracts |
Days are calendar days and never go below 0.
2. Standard normal functions
Black-Scholes needs the normal distribution. The lab computes it from the error function, using the Abramowitz and Stegun approximation 7.1.26. It's accurate to about 1.5 × 10−7.
a1 = 0.254829592, a2 = −0.284496736, a3 = 1.421413741, a4 = −1.453152027, a5 = 1.061405429. For negative x the lab uses erf(−x) = −erf(x).
3. Black-Scholes option price
is the strike discounted back to today. The lab floors the result at $0 to avoid tiny negative rounding errors.
At expiry, when = 0 (or = 0), the formula is replaced by intrinsic value:
At expiry, delta is +1 (call) or −1 (put) when the option is in the money and 0 otherwise. Every other Greek is 0.
4. The Greeks, per share
The textbook formulas give theta per year, vega per 1.00 of volatility and rho per 1.00 of rate. The lab rescales them to units you can read directly: theta per calendar day, vega per 1 IV point, rho per 1 percentage point of rate.
| Greek | Call | Put | Lab unit |
|---|---|---|---|
| Delta | $ per $1 stock move | ||
| Gamma | same as call | delta per $1 stock move | |
| Theta | $ per calendar day | ||
| Vega | same as call | $ per 1 IV point | |
| Rho | $ per 1% rate |
For your position, each Greek is multiplied by the shares you control and by the side of the trade:
Example: a short put (s = −1) has negative delta per share, so the position delta is positive. You gain when the stock rises.
5. Implied volatility (solved, not calculated)
No formula turns a price back into a volatility, so the lab searches for it. It looks for the at which the model price equals a known price, using bisection: try the midpoint and keep the half that contains the answer.
- Start with low = 0.5% and high = 500%.
- Price the option at mid = (low + high) / 2.
- If that price is below the target, set low = mid. Otherwise set high = mid.
- Repeat 90 times. The answer is (low + high) / 2.
IV at trade uses your fill price, the stock price then and the days left then. IV now uses the option price you enter, with the current stock price and days left. If the target is at or below the price at 0.5%, or at or above the price at 500%, there's no solution. The lab then reports it (at trade) or falls back to IV at trade (now).
6. Intrinsic value, time value and probabilities
Time value is floored at $0.
This is the risk-neutral probability built into the price, not a forecast of what will happen.
The lab uses this simple linear range for readability. A log-normal range, , is slightly wider on the upside.
7. Premium and P&L
Includes the opening commission only. A real close adds a second commission and fills at the bid (selling) or the ask (buying), not at the model price.
8. Payoff at expiry
The payoff chart uses the P&L formula above with set to intrinsic value at each stock price. The second, curved line uses the full Black-Scholes price with the days left on your slider.
| Position | Max profit | Max loss |
|---|---|---|
| Long call | Unlimited | Net premium paid |
| Long put | − net premium paid (stock at $0) | Net premium paid |
| Short call | Net premium received | Unlimited (the stock can keep rising) |
| Short put | Net premium received | − net premium received (stock at $0) |
9. “What moved the price” breakdown
State 0 is the trade-day inputs (, days0, , ). The scenario is (, days, , ) from your sliders. The lab prices five states, changing one more input each time:
| State | Inputs | Bar in the chart |
|---|---|---|
| S0, days0, σ0, r0 (equals your fill price) | At trade | |
| S0, days, σ0, r0 | ||
| S, days, σ0, r0 | ||
| S, days, σ, r0 | ||
| S, days, σ, r | (only shown if the rate changed) |
The sequence always adds up to the total. The alone effects usually don't, because the inputs interact. Changing the order of the sequence changes how the total is split.
10. Examples on the Greek cards
The examples reprice the full formula instead of using the linear Greek estimate, so they stay correct for large moves. is the Black-Scholes price, and every other input stays at the slider values.
| Card | Example shown | Formula |
|---|---|---|
| Delta | Stock up / down $1 | |
| Gamma | Delta after a $1 rise | |
| Theta | Tomorrow, nothing else changes | |
| Vega | IV up / down 5 points | |
| Rho | Rate up 1 point |
11. Worked example: a FIG put
Short 1 FIG Oct 30, 2026 $19.50 put, sold Sep 23 at $0.72 with a $0.77 commission. Inputs from Oct 15, 2026: = $22.89, = $19.50, 15 days, = 68.0% (solved from the $0.1715 mark), = 4%.
| Step | Calculation | Result |
|---|---|---|
| 15 / 365 | 0.04110 | |
| 0.68 × √0.04110 | 0.13785 | |
| [ln(22.89 / 19.5) + (0.04 + 0.68² / 2) × 0.04110] / 0.13785 | 1.2436 | |
| 1.2436 − 0.13785 | 1.1058 | |
| , | normal cumulative distribution | 0.1068, 0.1344 |
| Put price | 19.5 × e−0.04 × 0.04110 × 0.1344 − 22.89 × 0.1068 | $0.1716 / share |
| Intrinsic, time value | max(19.5 − 22.89, 0); price − intrinsic | $0.00, $0.1716 |
| Delta | N(d1) − 1 | -0.1068 (position +$10.68 per $1) |
| Gamma | n(d1) / (S σ √T) | 0.0583 |
| Theta | per calendar day | -0.0191 (position +$1.91 / day) |
| Vega | per 1 IV point | 0.0085 (position −$0.85 / point) |
| Rho | per 1% rate | -0.0011 (position +$0.11) |
| Chance ends in the money | N(−d2) | 13.4% |
| ±1 SD range | 22.89 ± 22.89 × 0.13785 | $19.73 – $26.05 |
| P&L at model price | −1 × (0.1716 − 0.72) × 100 − 0.77 | +$54.07 (76% of $71.23 kept) |
| Breakeven at expiry | 19.5 − 71.23 / 100 | $18.79 |
Option Trade Lab shows the same numbers, rounded. IBKR's own Greeks differ slightly because IBKR uses its own volatility and pricing model.
12. What the model leaves out
- Dividends. No dividend yield is modelled. Dividends lower call prices and raise put prices.
- Early exercise. US equity options are American style. The model is European, so it can underprice deep in-the-money puts, and calls just before an ex-dividend date.
- Volatility skew. Real IV differs from strike to strike and expiry to expiry. The lab uses one σ for every stock price on its charts.
- Trading costs. Bid/ask spreads and closing commissions aren't in the P&L.
- Day count. Calendar days ÷ 365. Some platforms use trading days ÷ 252, which gives different theta and IV.
Formulas as implemented in Option Trade Lab. For learning, not investment advice.