Skip to content

Pricing a European Call by Hand With Black–Scholes

Original question

I'm given a European call option with specific parameters. How do I calculate its price using Black-Scholes manually?
With a non-dividend-paying stock at 105105, a strike of 100100, six months remaining, a continuously compounded rate of 4%4\%, and annual volatility of 25%25\%, the European call is worth about 11.1711.17 per share under Black–Scholes. Convert inputs to years and decimals, calculate d1d_1 and d2d_2, look up two normal probabilities, and subtract the discounted strike term from the stock term.

Translate the contract into the formula's inputs

Take τ=0.5\tau=0.5, S=105S=105, K=100K=100, r=0.04r=0.04 and σ=0.25\sigma=0.25. The formula uses

d1=log⁡(S/K)+(r+σ2/2)τστ,d2=d1−στ.d_1=\frac{\log(S/K)+(r+\sigma^2/2)\tau}{\sigma\sqrt{\tau}}, \qquad d_2=d_1-\sigma\sqrt{\tau}.
Let NN denote the standard normal cumulative distribution function. The option value is C=SN(d1)−Ke−rτN(d2)C=S N(d_1)-Ke^{-r\tau}N(d_2). Under the risk-neutral lognormal model, N(d2)N(d_2) is the chance of exercise. The N(d1)N(d_1) term appears after integrating the stock-weighted portion of the payoff, which shifts the normal argument by στ\sigma\sqrt{\tau}. Look up the lower-tail area in the normal table. Some printed tables report the area between zero and the argument, in which case add 0.50.5 for a positive argument.

Calculate the two normal probabilities and the price

StepWorkingValue
Log moneynesslog⁡(105/100)\log(105/100)0.0487900.048790
Drift adjustment(0.04+0.252/2)(0.5)(0.04+0.25^2/2)(0.5)0.0356250.035625
Scaled volatility0.250.50.25\sqrt{0.5}0.1767770.176777
Normal argumentsd1d_1 and d1−0.176777d_1-0.1767770.477524, 0.3007480.477524,\ 0.300748
Lower-tail probabilitiesN(d1)N(d_1) and N(d2)N(d_2)0.683506, 0.6181970.683506,\ 0.618197
Present value of strike100e−0.04(0.5)100e^{-0.04(0.5)}98.01986798.019867
The stock term is about 71.768171.7681 and the strike term about 60.595560.5955. Their difference is 11.172511.1725. For a quick no-arbitrage check, the price exceeds the lower bound 105−98.0199≈6.98105-98.0199\approx6.98 and is below the spot price of 105105. A contract representing 100 shares would have a model premium of roughly 1,117.251{,}117.25 before rounding to the market's quote increment.
Keep annual volatility in decimal form and enter the maturity in years. The στ\sigma\sqrt{\tau} term is the standard deviation of the log return over the remaining time. When you reach the last line, multiply N(d1)N(d_1) by today's spot and N(d2)N(d_2) by the discounted strike, then take the difference. As a check, the price must exceed the positive forward intrinsic value S−Ke−rτS-Ke^{-r\tau} in this example and stay below the spot. Using the raw strike in the second term would ignore when it is paid.
Compare your hand calculation with the options pricer using the same maturity, spot, strike, rate and volatility.

Interactive example

Move volatility and expiry in Black–Scholes

This European call uses strike 100, a continuously compounded risk-free rate of 5% and zero dividends. The benchmark spot is 100.

Price at spot 100 is 10.45 · delta 0.637
Call prices across spot prices compared with the expiry payoff01020307085100115130Spot priceValue
  • Call price today
  • Expiry payoff

References and next steps