These toolbox functions compute prices, sensitivities, and profits for portfolios of options or other equity derivatives. They use the Black-Scholes model for European options and the binomial model for American options. Such measures are useful for managing portfolios and for executing collars, hedges, and straddles.

There are six basic sensitivity measures associated with option pricing: delta, gamma, lambda, rho, theta, and vega — the “greeks.” The toolbox provides functions for calculating each sensitivity and for implied volatility.

*Delta* of a derivative security is the
rate of change of its price relative to the price of the underlying
asset. It is the first derivative of the curve that relates the price
of the derivative to the price of the underlying security. When delta
is large, the price of the derivative is sensitive to small changes
in the price of the underlying security.

*Gamma* of a derivative security is the
rate of change of delta relative to the price of the underlying asset;
that is, the second derivative of the option price relative to the
security price. When gamma is small, the change in delta is small.
This sensitivity measure is important for deciding how much to adjust
a hedge position.

*Lambda*, also known as the elasticity
of an option, represents the percentage change in the price of an
option relative to a 1% change in the price of the underlying security.

*Rho* is the rate of change in option price
relative to the risk-free interest rate.

*Theta* is the rate of change in the price
of a derivative security relative to time. Theta is usually small
or negative since the value of an option tends to drop as it approaches
maturity.

*Vega* is the rate of change in the price of a derivative security
relative to the volatility of the underlying security. When vega is large the security is
sensitive to small changes in volatility. For example, options traders often must decide
whether to buy an option to hedge against vega or gamma. The hedge selected usually
depends upon how frequently one rebalances a hedge position and also upon the standard
deviation of the price of the underlying asset (the volatility). If the standard deviation
is changing rapidly, balancing against vega is preferable.

The *implied volatility* of an option is
the standard deviation that makes an option price equal to the market
price. It helps determine a market estimate for the future volatility
of a stock and provides the input volatility (when needed) to the
other Black-Scholes functions.

Toolbox functions for analyzing equity derivatives use the Black-Scholes model for European options and the binomial model for American options. The Black-Scholes model makes several assumptions about the underlying securities and their behavior. The binomial model, on the other hand, makes far fewer assumptions about the processes underlying an option. For further explanation, see Options, Futures, and Other Derivatives by John Hull in Bibliography.

Using the Black-Scholes model entails several assumptions:

The prices of the underlying asset follow an Ito process. (See Hull, page 222.)

The option can be exercised only on its expiration date (European option).

Short selling is permitted.

There are no transaction costs.

All securities are divisible.

There is no riskless arbitrage.

Trading is a continuous process.

The risk-free interest rate is constant and remains the same for all maturities.

If any of these assumptions is untrue, Black-Scholes may not be an appropriate model.

To illustrate toolbox Black-Scholes functions, this example computes the call and put prices of a European option and its delta, gamma, lambda, and implied volatility. The asset price is $100.00, the exercise price is $95.00, the risk-free interest rate is 10%, the time to maturity is 0.25 years, the volatility is 0.50, and the dividend rate is 0. Simply executing the toolbox functions

[OptCall, OptPut] = blsprice(100, 95, 0.10, 0.25, 0.50, 0); [CallVal, PutVal] = blsdelta(100, 95, 0.10, 0.25, 0.50, 0); GammaVal = blsgamma(100, 95, 0.10, 0.25, 0.50, 0); VegaVal = blsvega(100, 95, 0.10, 0.25, 0.50, 0); [LamCall, LamPut] = blslambda(100, 95, 0.10, 0.25, 0.50, 0);

yields:

The option call price

`OptCall`

= $13.70The option put price

`OptPut`

= $6.35delta for a call

`CallVal`

= 0.6665 and delta for a put`PutVal`

= -0.3335gamma

`GammaVal`

= 0.0145vega

`VegaVal`

= 18.1843lambda for a call

`LamCall`

= 4.8664 and lambda for a put`LamPut`

= –5.2528

Now as a computation check, find the implied volatility of the
option using the call option price from `blsprice`

.

Volatility = blsimpv(100, 95, 0.10, 0.25, OptCall);

The function returns an implied volatility of 0.500, the original `blsprice`

input.

The binomial model for pricing options or other equity derivatives assumes that the probability over time of each possible price follows a binomial distribution. The basic assumption is that prices can move to only two values, one up and one down, over any short time period. Plotting the two values, and then the subsequent two values each, and then the subsequent two values each, and so on over time, is known as “building a binomial tree.” This model applies to American options, which can be exercised any time up to and including their expiration date.

This example prices an American call option using a binomial
model. Again, the asset price is $100.00, the exercise price is $95.00,
the risk-free interest rate is 10%, and the time to maturity is 0.25
years. It computes the tree in increments of 0.05 years, so there
are 0.25/0.05 = 5 periods in the example. The volatility is 0.50,
this is a call (`flag = 1`

), the dividend rate is
0, and it pays a dividend of $5.00 after three periods (an ex-dividend
date). Executing the toolbox function

[StockPrice, OptionPrice] = binprice(100, 95, 0.10, 0.25,... 0.05, 0.50, 1, 0, 5.0, 3);

returns the tree of prices of the underlying asset

StockPrice = 100.00 111.27 123.87 137.96 148.69 166.28 0 89.97 100.05 111.32 118.90 132.96 0 0 81.00 90.02 95.07 106.32 0 0 0 72.98 76.02 85.02 0 0 0 0 60.79 67.98 0 0 0 0 0 54.36

and the tree of option values.

OptionPrice = 12.10 19.17 29.35 42.96 54.17 71.28 0 5.31 9.41 16.32 24.37 37.96 0 0 1.35 2.74 5.57 11.32 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

The output from the binomial function is a binary tree. Read
the `StockPrice`

matrix this way: column 1 shows
the price for period 0, column 2 shows the up and down prices for
period 1, column 3 shows the up-up, up-down, and down-down prices
for period 2, and so on. Ignore the zeros. The `OptionPrice`

matrix
gives the associated option value for each node in the price tree.
Ignore the zeros that correspond to a zero in the price tree.

`binprice`

| `blkimpv`

| `blkprice`

| `blsdelta`

| `blsgamma`

| `blsimpv`

| `blslambda`

| `blsprice`

| `blsrho`

| `blstheta`

| `blsvega`

| `opprofit`