Main Content

binprice

Binomial put and call American option pricing using Cox-Ross-Rubinstein model

Description

[AssetPrice,OptionValue] = binprice(Price,Strike,Rate,Time,Increment,Volatility,Flag) prices an American option using the Cox-Ross-Rubinstein binomial pricing model. An American option can be exercised any time until its expiration date.

example

[AssetPrice,OptionValue] = binprice(___,DividendRate,Dividend,ExDiv) adds optional arguments for DividendRate,Dividend, and ExDiv.

example

Examples

collapse all

This example shows how to price an American put option with an exercise price of $50 that matures in 5 months. The current asset price is $52, the risk-free interest rate is 10%, and the volatility is 40%. There is one dividend payment of $2.06 in 3-1/2 months. When specifying the input argument ExDiv in terms of number of periods, divide the ex-dividend date, specified in years, by the time Increment.

ExDiv = ( 3.5/12) / (1/12) = 3.5

[Price, Option] = binprice(52, 50, 0.1, 5/12, 1/12, 0.4, 0, 0, 2.06, 3.5)
Price = 6×6

   52.0000   58.1367   65.0226   72.7494   79.3515   89.0642
         0   46.5642   52.0336   58.1706   62.9882   70.6980
         0         0   41.7231   46.5981   49.9992   56.1192
         0         0         0   37.4120   39.6887   44.5467
         0         0         0         0   31.5044   35.3606
         0         0         0         0         0   28.0688

Option = 6×6

    4.4404    2.1627    0.6361         0         0         0
         0    6.8611    3.7715    1.3018         0         0
         0         0   10.1591    6.3785    2.6645         0
         0         0         0   14.2245   10.3113    5.4533
         0         0         0         0   18.4956   14.6394
         0         0         0         0         0   21.9312

The output returned is the asset price and American option value at each node of the binary tree.

Input Arguments

collapse all

Current price of underlying asset, specified as a scalar numeric value.

Data Types: double

Exercise price of the option, specified as a scalar numeric value.

Data Types: double

Risk-free interest rate, specified as scalar decimal fraction.

Data Types: double

Option time until maturity, specified as a scalar for the number of years.

Data Types: double

Time increment, specified as a scalar numeric. Increment is adjusted so that the length of each interval is consistent with the maturity time of the option. (Increment is adjusted so that Time divided by Increment equals an integer number of increments.)

Data Types: double

Asset volatility, specified as a scalar numeric.

Data Types: double

Flag indicating whether option is a call or put, specified as a scalar Flag = 1 for a call option, or Flag = 0 for a put option.

Data Types: logical

(Optional) Dividend rate, specified as a scalar decimal. If you enter a value for DividendRate, set Dividend and ExDiv = 0 or do not enter them. If you enter values for Dividend and ExDiv, set DividendRate = 0

Data Types: double

(Optional) Dividend payment at an ex-dividend date (ExDiv), specified as a 1-by-N row vector. For each dividend payment, there must be a corresponding ex-dividend date. If you enter values for Dividend and ExDiv, set DividendRate = 0.

Data Types: double

(Optional) Ex-dividend date, specified as a 1-by-N row vector for the number of periods.

Data Types: double

Output Arguments

collapse all

Asset price, returned as a vector that represents each node of the Cox-Ross-Rubinstein (CRR) binary tree.

Option value, returned as a vector that represents each node of the Cox-Ross-Rubinstein (CRR) binary tree.

References

[1] Cox, J., S. Ross, and M. Rubenstein. “Option Pricing: A Simplified Approach.” Journal of Financial Economics. Vol. 7, Sept. 1979, pp. 229–263.

[2] Hull, John C. Options, Futures, and Other Derivative Securities. 2nd edition, Chapter 14.

Version History

Introduced before R2006a