How GreekGeek calculates its numbers
Every price, Greek and probability on the site comes from one model and a handful of inputs. This page lists each of them, where it comes from, and where the model falls short.
The model
GreekGeek uses the Black-Scholes-Merton model. It prices an option from six inputs by assuming the stock moves randomly with a steady level of volatility, and that dividends are paid out smoothly as a yearly yield. The prices of a call C and a put P are:
C = Se−qT N(d1) − Ke−rT N(d2)
CallP = Ke−rT N(−d2) − Se−qT N(−d1)
Putwhere
d1 = ln(S/K) + (r − q + σ2/2) Tσ T, d2 = d1 − σ T
N is the standard normal cumulative distribution: the chance that a bell-curve draw lands below a given value. φ, used in the Greeks below, is the height of that bell curve.
Where each input comes from
- S
- Stock price. The latest price from Yahoo Finance, the same quote shown at the top of each ticker page.
- K
- Strike. Taken from the contract itself.
- T
- Time to expiry, in years. Measured to 4pm New York time on the expiry date, when US stock options stop trading, and divided by a 365-day year. On expiry day it never drops below one hour, so contracts can still be priced.
- r
- Risk-free rate. The yield on the 13-week US Treasury bill (Yahoo symbol ^IRX), checked every 10 minutes. If that quote is missing or implausible, 4.5% is used.
- q
- Dividend yield. The stock's yearly dividend as a share of its price, as reported by Yahoo. Zero for stocks that pay none.
- σ
- Volatility. The implied volatility of each contract, worked out as described in the next section.
Implied volatility
Volatility is the one input nobody quotes directly. GreekGeek works it backwards: it finds the value of σ that makes the model price equal the midpoint between the bid and the ask. The midpoint is used because the last trade can be hours old, while the bid and ask show the market right now.
The search uses Newton’s method, which steps toward the answer using vega as the slope, and falls back to halving the interval when a step would jump outside it. It looks between 0.5% and 500% and stops once the answer is settled to ten decimal places. A midpoint below the option’s intrinsic value, or above what the model allows, has no answer and is skipped.
When there is no usable midpoint (no bid, or an ask below the bid) or the search fails, the site falls back to Yahoo’s own implied volatility, but only if it lies between 1% and 500%. Yahoo also fills quiet strikes with placeholder values that sit almost exactly on 100%, 50%, 25%, 12.5% and so on down by halves. Those are thrown out. If neither source works, the contract is shown without Greeks rather than with made-up ones.
The Greeks and their units
The Greeks are the model’s sensitivities: how much the option price moves when one input moves and the rest stay put. The formulas below are for a call. Each is per share, so multiply by 100 for one contract, which covers 100 shares.
| Greek | Formula (call) | Reported as |
|---|---|---|
| Delta | e−qT N(d1) | Dollars per $1 move in the stock |
| Gamma | e−qT φ(d1)S σ T | Change in delta per $1 move |
| Theta | [−Se−qT φ(d1) σ2 T− rKe−rT N(d2) + qSe−qT N(d1)] ÷ 365 | Dollars per calendar day |
| Vega | Se−qT φ(d1) T ÷ 100 | Dollars per 1 point of volatility |
| Rho | KTe−rT N(d2) ÷ 100 | Dollars per 1 point of interest rates |
For puts, delta is e−qT (N(d1) − 1) and gamma and vega are unchanged. Rho and theta swap N(d1) and N(d2) for N(−d1) and N(−d2), and those terms change sign. Theta counts calendar days, weekends included, because the clock in T does. Vega and rho are scaled to one percentage point, say 25% to 26%, rather than a full 100 points.
Probability and expected move
The chance an option finishes in the money is N(d2) for a call and N(−d2) for a put. It is the probability built into today’s prices under the model’s assumptions, not a forecast of what the stock will do.
The expected move is one standard deviation of the stock price by expiry, S σ T. The model expects the stock to finish inside that range about two times in three.
A worked example
Take a $100 stock, a $100 strike, 30 days to expiry, 25% implied volatility, a 4% rate and no dividend. These figures are calculated by the same code the rest of the site runs:
- d₁
- 0.0817
- d₂
- 0.0100
- Call price
- $3.02
- Put price
- $2.69
- Delta
- 0.533
- Gamma
- 0.0555
- Theta
- −0.0530
- Vega
- 0.1140
- Rho
- 0.0413
- Chance in the money
- 50.4%
- Expected move
- ±$7.17
So one contract costs about $302, loses about $5.30 a day to time decay, and gains about $11.40 for each point implied volatility rises.
Where the data comes from
Quotes, option chains, dividend yields and the T-bill rate come from Yahoo Finance. Yahoo’s data may be delayed by 15 minutes or more, and the site keeps each response for up to 1 minute to stay within Yahoo’s limits. Outside market hours, many contracts show no bid or ask, so their implied volatility comes from Yahoo or is missing.
Where the model falls short
Black-Scholes-Merton is a clean model of a messier market. Keep these gaps in mind.
Early exercise
The model prices European options, which can only be exercised at expiry. Most US stock options are American and can be exercised any day. That right is worth little for most calls, but it adds value to deep in-the-money puts and to calls just before a large dividend. For those, the true price can sit above the model’s.
Dividends paid in lumps
Real dividends arrive as single payments on set dates. The model spreads them evenly over the year as q. For short options that span an ex-dividend date, this can misprice calls and puts by roughly the size of the dividend.
Wide spreads
The midpoint is only a fair price when the bid and ask are close. On thinly traded strikes the spread can be a large part of the price, and the implied volatility and Greeks worked out from it are rough.
One volatility per contract
The model assumes a single, steady volatility. Real markets price each strike and expiry differently, which is why GreekGeek solves a separate implied volatility for every contract instead of using one number for the whole chain.