A simple derivation of Black Scholes — Predicting Stock and Option Prices from the beginning
By: Duncan Wood
Tags: Options Trading, Options, Math, Black Scholes Model, Statistics

I’m a Math major and work as an Analyst in Technology, but I’ve been digging into the underlying stats behind options trading and found it to be really unintuitive and confusing. Especially Black Scholes — what a mess of a formula.

I wanted to put together a common sense overview of the statistics and math behind options trading, predicting stock prices and why option trading can make you money.

Explaining why the Black Scholes option price formula make sense, going over The Greeks and giving you an edge in option trading assuming only a high school math education.

Math Prerequisites

Euler’s Number (e) & Natural Logarithms (ln)

Normal Distributions — Mean, Standard Deviations & Variance

Basic algebra

Beginners Guide To Log Returns

Lets say we invested $100 with a 2% daily return with no risk. Our Return Rate would be 102%.

On day 0 we have $100

On day 1 we have $102

On day 2 we already have $102 invested, with a 2% return so the calculation would be 102 * 1.02 = 104.04

Which gives us the general formula:

Investment on Day n = Initial Investment * (Return Rate)^n

There is another way to write this which will be useful later on

= Initial Investment * exp(n * ln(Return Rate)) Since

exp(ln(X)) = X

and

ln(X^2) = 2 * ln(X) we can write the return rate to the power of n as: (Return Rate ^ n) = exp(ln(Return Rate ^ n))

= exp(n * ln(Return Rate)) Note:

exp(X) = euler number (e) to the power X

ln(X) = natural logarithm of X aka. inverse of exp

ln(Return Rate) is known as log returns

Just to hammer a point

You can add log returns, whilst you need to multiply returns

If a investment gains 10%, then gains another 10% Returns Rate = 1.1 * 1.1 = 1.21 Log Returns = ln(1.1) + ln(1.1) = ln(1.1 * 1.1) = ln(1.21)

This is important since it means we can use averages for log returns, where we can’t for return rate.

Why log returns?

If your investment of $100 goes up 10% to $110 and the next day goes down 10%, your investment is now $99

=> The average Return Rate is 0% but you actually lost $1

If we wanted our returns to be $0 in the scenario above we need our return on the second day to be 1/1.1 = 90.90..%

But now our average Return Rate = (1.10 + 1/1.1) / 2 = 1.00454545

Which seems pretty tricky to keep track of, with log returns this becomes much easier

Since ln(x) = -ln(1/x) Average of log returns:

(ln(1.1) + ln(1/1.1))/2 = 0

The point to remember

When you have variable Return Rate (as opposed to a fixed Return Rate), the average Return Rate is a misleading indicator of your actual returns.

log returns is a much better indicator, since if it’s positive you made money and if it’s negative you lost money.

Predicting Stock Prices

Ok, now you got the idea that log returns is a good thing, lets talk about predicting stock prices.

The first assumption is that the stock market is a casino

meaning that stock prices move randomly up and down, based on some measurable probability.

The second assumption is that the stock market returns are log normally distributed

Meaning that…

ln(Stock Price Later/ Stock Price Now) has a normal distribution

Now that isn’t a terrible assumption..

Here is an example for Open Prices $SPY over the last year

``Histogram of Log Returns for $SPY

Looks pretty normally distributed right… except for that outlier to the far left.

Hang on why are log returns normally distributed for a stock?

Basically this validates our initial assumption that the stock market is a casino, the probability that the stock goes up or down with equal probability around an average...

Last assumption, the average Return Rate for a stock is the risk free interest rate

A risk free rate, is like the interest rate you get from putting your money in a bank, we assume that stock returns should be the same.

We saw previously that average Return Rate for a variable return rate, is slightly more than the average of log returns.

Turns out for a log normally distributed Return Rate

Average Returns = exp(U + V/2) Where

U = average of log returns

V = variance of log returns

= square of the standard deviation of log returns

Given we want our Average Return to be the Risk Free Rate, we can figure out what the average of log returns needs to be to satisfy this assumption².

Risk Free Rate = exp(U + V/2)

ln(Risk Free Rate) = U + V/2

ln(Risk Free Rate) - V/2 = U We want our average (mean) of log returns to be

=> ln(Risk Free Rate) - V/2

=> ln(r) - std²/2

What is the probability a stock goes up >4%?

Lets assume a stock is trading at $100, and we want to know the probability that the stock is trading at below $104 tomorrow

We look up the historical log returns of the stock and see it’s daily log returns’ standard deviation is 2% and we will assume a Risk Free Rate of 1%.

Since log returns is normally distributed, we use the Cumulative Normal Distribution Function (CDF) to get our probabilities.

The CDF essentially measures the area under the normal distribution curve

By M. W. Toews — Own work, based (in concept) on figure by Jeremy Kemp, on 2005–02–09, CC BY 2.5, https://commons.wikimedia.org/w/index.php?curid=1903871

Probability that a normal distribution is below a value:



CDF(z) = Probability that normal distribution is below a value z where

z = (value - mean) / std

and

std = standard deviation

And since the graph above is symmetrical around 0

CDF(-z) = Probability that normal distribution is above value z

Back to our stock price being more than $104 tomorrow…

P(Stock being > $104 tomorrow)

= P(log returns > ln(104/100))

= CDF(-z) where

z = (value - mean) / std



stock above $104 tomorrow from $100 today gives us

value = ln(104/100) from historical data we have

std = 2% from stock growing at risk free rate we get

mean = ln(1.01) - std²/2

Generalizing that a bit we get the probability of a stock trading at S is above X is given by

P(S > X)

= CDF(-z)

= CDF(1/std * (-value + mean))

= CDF(1/σ * (-ln(X/S) + ln(r) - σ²/2)) Note: I'll use σ for standard deviation

Predicting Stock Prices Further into the Future

Ok we looked at predicting the price of the stock tomorrow, but what about next year, or in 5 days?

It’s actually pretty easy, we just play around with our standard deviation and risk free rates.

Calculating Volatility — Standard Deviation of Log Returns

Lets say we have a list of daily stock prices for SPY, we calculate daily log returns with

ln(day n stock price / day n-1 stock price)

The standard deviation of these values gives us the standard deviation of daily log returns, but what if want the standard deviation of a 5 day period.

We can do something pretty simple, we just multiply the square root of the number of days

Daily Standard Deviation * √(N Days) = N days Standard Deviation

Why is that?

Quick answer is that we can add variances for independent events, I like to think about it as flipping a theoretical normally distributed coin.

If the variance of the values from flipping the coin once is X, then the variance of the values from flipping the coin twice is X + X .

and of course the variance is just the square of standard deviation

the standard deviation of 2 flips of our coin

= √(X + X)

= √(2 * X)

= √2 * √X

= √2 * standard deviation of 1 coin flip

The Volatility of a stock is the yearly standard deviation of log returns

Which is typically calculated by using the standard deviation of daily log returns over the last N days, and multiplying by √252 since there are typically 252 trading days for a stock in a year.

If you were given the Volatility and you wanted to calculate the standard deviation over 5 days you can do

5 days standard deviation = Volatility * √T T = 5/252 since you are looking for 5 days out of 252

Calculating the Risk Free Rate

You look this up or set it yourself, it will usually be calculated at the yearly level. To get 5 days risk free rate you would do

5 day risk free log returns = ln(Risk Free Rate) * T T = 5/252 since you are looking for 5 days out of 252 trading days

Tying that up

Calculating the probability a stock increases tomorrow is the same as calculating it increase next year, just with a different standard deviation and risk free rate.

In our formula from before if we use yearly values for standard deviation and risk free rate, we can sub r and σ with r * T and σ * √T to generalize for any time. Which lead us to..

General Form for Predicting Stock Prices in the Future

We have all our building blocks to provide a general formula for predicting if the stock trading at S is above some value X in the future t, given Volatility σ and r the log of yearly risk free interest rate.

P(Stock Trading at S today is above X at time t)

= CDF(-z)

= CDF((1/std) * (-value + mean))

= CDF((1 / σ√T) * (-ln(X/S) + rT - (σ√T)²/2)) cleaning that up a bit is = CDF((1 / σ√T) * (ln(S/X) + (r - σ²/2)T) Remember that -ln(X) = ln(1/X)

Some of you might recognize this formula from Black Scholes, above is identical to N(d1)

Important Note: r = ln(Yearly Risk Free Rate)

So if your yearly risk free rate is 102% (gain of 2%) then r = ln(1.02) ~= 0.02

Stock Options

Options are contracts to optionally buy or sell a stock for some price (the strike price) in the future (the expiration)

The price of the contract is called the premium and when the option contract is exercised the underlying stock is either bought or sold.

Calls give the holder the option to buy the stock in the future for some price Puts give the holder the option to sell the stock in the future for some price

As a buyer of an option, you can decide not to exercise it. Meaning that if things don’t go your way, you can just lose the premium and not purchase/sell the stock.

But there is an obligation for the seller of an option to buy/sell the stock if the buyer wants.

Option Pricing: Black Scholes a simple derivation

Market Dynamics 101, you need a buyer and a seller and in the case of options both of them want to make money.

Lets take the example of a Call option below..

The buyer of a Call

Wants to make money from the stock, and wants to make sure that the value of the stock exceeds the strike price and any premium they paid for the option.

Call Premium < E(Stock price at expiration) - E(Strike Price)

E(X) here is an expectation function, meaning that over infinite trades of this option what is the average of X.

Sometimes the buyer would lose the premium altogether, and other times the stock price would jump making them money. The buyer wants the call premium to be less than the money they gained from acquiring at the strike price across those infinite trades. We take the probability weighted average over all those infinite trades to get the expectation.

The seller of a Call

Wants to make money from the premium, which means they either want the stock to not be above the strike price at expiration, or if it is above the strike price then the premium should cover any losses.

Call Premium > E(Stock price at expiration) - E(Strike Price)

Market Equilibrium

In an efficient market, with lots of buyers and sellers this would mean that

Call Premium = E(Stock price at expiration) - E(Strike Price)

Expectation of the paying the strike price

Expectation of paying strike price

= Strike Price * P(Stock > Strike Price)

We already know how to get the probability that the stock is above a price from our previous work!

P(Stock > Strike Price)

= P(S > X)

= CDF(-z)

= CDF((1 / σ√T) * (ln(S/X) + (r - σ²/2)T) Expectation of paying the strike price

= Strike Price * CDF((1 / σ√T) * (ln(S/X) + (r - σ²/2)T)

But.. a dollar tomorrow is not worth the same as a dollar today.

If we just put our money in a bank it would grow at the rate of our Risk Free Rate, so we need to discount our strike price to find the amount of money today which would grow at the risk free rate to the strike price at expiration.

Strike Price value today = Strike Price * exp(-rT) Giving us

Expectation of paying the strike price

= Strike Price * exp(-rT)

* CDF((1 / σ√T) * (ln(S/X) + (r - σ²/2)T))

Expectation of the Stock price at expiration

We obviously get nothing if the option expires and the stock doesn’t hit the strike price, but if the stock is above the strike price we want to know what we could expect the price to be.

E(Stock Price at expiration) = Expected Price of the stock given it's above the strike * Probability the Stock > Strike Price

For a log normal distribution the expectation for a value given it’s above A for a distribution X is given as

E(X given X > A)

= E(X) * CDF(-z + std) / CDF(-z) where

z = (value - mean) / std

and

value = ln(A)

and

std = standard deviation

Plugging that in we get

E(Stock Price at expiration) =

E(Stock Price) * CDF(-z + std) / CDF(-z)

*

P(stock > strike price)

You might remember that CDF(-z) is just the probability that the stock is above the strike price, which cancels out our P(stock > strike price) term.

And our E(Stock Price) is just our stock price multiplied by our risk free rate for our time period T, since that is our core assumption about the expected growth of the stock

E(Stock Price at expiration) =

Stock Price * exp(rT) * CDF(-z + std) Note:

- CDF(-z) is the probability that the stock is > strike price

- E(Stock Price) is future expected price = Stock Price * exp(rT)

Similar to what we did before for the strike price, we want to convert the stock price to today’s money since money tomorrow is not worth money today. We do this by multiplying by exp(-rT). Which cancels out our exp(rT)

E(Stock Price at expiration)

= Stock Price * exp(rT) * CDF(-z + std) * exp(-rT)

= Stock Price * CDF(-z + std)

Now we just want to expand our CDF(-z + std) term using what we figured out previously

From our previous work

CDF(-z) = CDF((1 / σ√T) * (ln(S/X) + (r - σ²/2)T)) So CDF(-z + std)

= CDF((1 / σ√T) * (ln(S/X) + (r - σ²/2)T) + σ√T)

= CDF((1 / σ√T) * (ln(S/X) + (r + σ²/2)T)) Remember std = σ√T

You might recognize this as N(d1) from Black Scholes

Putting it all together

Call Premium = E(Stock price at expiration) - E(Strike Price)

= S * CDF((1 / σ√T) * (ln(S/X) + (r + σ²/2)T))

-

X * exp(-rT) * CDF((1 / σ√T) * (ln(S/X) + (r - σ²/2)T)) or Call Premium = S * CDF(d1) - X * exp(-rT) * CDF(d2) where

d1 = (1 / σ√T) * (ln(S/X) + (r + σ²/2)T)

d2 = (1 / σ√T) * (ln(S/X) + (r - σ²/2)T) S = Stock Price today

X = Strike Price

T = Time to expiration in years (num days / 252)

CDF = Cumulative Normal Distribution function

σ = Stock volatility

This is exactly the Black Scholes Formula for calculating Call Premiums

What about Puts?

Puts are basically the same but in reverse. Since you want the premium to account for the difference between the strike and the expected value of a stock below the strike price.

Put Premium = E(Strike Price) - E(Stock price at expiration)

= X * exp(-rT) * CDF(-d1) - S * CDF(-d2)

Instead of P(Stock > Strike) we want to look at P(Stock < Strike), Due to the nature of the CDF, if CDF(x) gives us the P(>x) then CDF(-z) gives us the P(<x).

Volatility is the edge to making money with Options

With our formula Time, Stock Price, Strike Price & Risk Free Rate are known, but future volatility is unknown. (we can only estimate from historical volatility)

Call & Put prices are set by the market buying and selling them not by a formula, which means when applying this formula to current option prices volatility is the only input we can vary to match the current market price.

Backing out a stock’s volatility from current option prices is called Implied Volatility

Implied Volatility is the market’s expectation of future volatility, based on backing out the standard deviation from Black Scholes formula using current option prices

You might ask yourself, how does Implied Volatility compare against actual volatility, here is a graph of $SPY over the last year

Graph of $SPY Historical Volatility (HV) compared to Implied Volatility (IV) over the last year from iVolatility.com

In ‘normal times’ Historical Volatility is generally lower than Implied Volatility, in less normal times (like COVID) Historical Volatility is higher than Implied.

This means that Options premiums are typically too expensive, which gives you an edge

The Edge in Options Trading

Since options premiums are typically too expensive, this means you won’t make any money buying options, you make money selling them!

But it’s always good to check out how Historically Volatility is trailing against Implied Volatility.

Buy options when Implied Volatility is lower than Historical Volatility Sell options when Historical Volatility is higher than Implied Volatility.

The Greeks — Forecasting Future Option Prices

We have a formula for option prices relying on manual inputs for Stock price, Volatility, Time, and Risk free Rate.

Before buying an option it might be clever to graph out how the option price changes, depending on these factors.

You might have heard of the The Greeks in option trading, it’s a set of metrics which do exactly that.

Stock Price Changes — Delta & Gamma

Delta measures the theoretical change in option premium for a 1 dollar increase in stock price.

Gamma measures the additional change in premium (above the delta) for the second dollar increase in stock price

Option premium for a stock $2 higher = current option premium + delta + delta + gamma

Change in Call Premium for Stock Prices with 5 days until expiry with a Strike of $105

Delta is essentially this gradient of this line, and gamma is the gradient of delta.

You can see how our option price increases exponentially as the stock price changes, with gamma being highest around the strike price.

Time Changes — Theta

Theta measures the change in option premium for 1 day change in time to expiry. The premium starts reducing faster as you near expiry since the stock hasn’t got as much time to move above your strike price.

Volatility Changes —Vega

Vega measures the change in premium for a 1% change in Volatility. Another exponential graph

Option Premium for Stock at $100, with Strike at $110 with 5 days to expiry

Remember that Volatility is the market’s expectation of standard deviation of the stock, this is why you get IV Crush after earnings calls.

Volatility drops significantly as the market expectation of the likelihood of stock price changes drops, and so to do the value of your options.

Remember your edge, in this example above a call option at 60% Implied Volatility is priced at $0.58, if your stock is actually at 50% Volatility the premium should be $0.30, meaning if you sold this option an infinite number of times you could expect to make $0.28.

Risk Free Rate Changes —Rho

Rho measures the change in option premium for a 1% change in Risk Free Rate. It’s the most boring Greek, only really relevant for super long term options like LEAPs.

At short periods of time, doesn’t really have any impact.

How do I start Trading Options

Robinhood is good starter platform, but you need additional steps to unlock option trading but you get a random free stock when you sign up, as do I if you sign up via the link above.

Ending with some words of warning

You know how Black Scholes works, understand the Greeks and have an edge in option trading so you can make money!

Just remember a few things

You need to make a lot of option trades for any of this to make sense, these formula’s work over large numbers, expected returns over infinite repetition of the same trade. A single trade can easily lose money. Make sure you make lots of trades with small amounts of risk, so on average they make money and a few blowing up doesn’t blow you up.

Watch out for Dividends, they can put you at risk of being assigned early.

Good Luck and Happy Trading