Determine American option prices and sensitivities using Bjerksund-Stensland 2002 option pricing model


PriceSens = optstocksensbybjs(RateSpec, StockSpec, Settle,
Maturity, OptSpec, Strike, 'Name1', Value1...)



The annualized continuously compounded rate term structure. For information on the interest rate specification, see intenvset.


Stock specification. See stockspec.


NINST-by-1 vector of settlement or trade dates.


NINST-by-1 vector of maturity dates.


NINST-by-1 cell array of strings 'call' or 'put'.


NINST-by-1 vector of strike price values.


(Optional) All optional inputs are specified as matching parameter name/value pairs. The parameter name is specified as a character string, followed by the corresponding parameter value. Parameter name/value pairs may be specified in any order; names are case-insensitive and partial string matches are allowed provided no ambiguities exist. Valid parameter names are:

  • NOUT-by-1 or 1-by-NOUT cell array of strings indicating the nature and order of the outputs for the function. Possible values are: 'Price', 'Delta', 'Gamma', 'Vega', 'Lambda', 'Rho', 'Theta', or 'All'.

    For example, OutSpec = {'Price'; 'Lambda'; 'Rho'} specifies that the output should be Price, Lambda, and Rho, in that order.

    To invoke from a function: [Price, Lambda, Rho] = optstocksensbybjs(..., 'OutSpec', {'Price', 'Lambda', 'Rho'})

    OutSpec = {'All'} specifies that the output should be Delta, Gamma, Vega, Lambda, Rho, Theta, and Price, in that order. This is the same as specifying OutSpec as OutSpec = {'Delta', 'Gamma', 'Vega', 'Lambda', 'Rho', 'Theta', 'Price'};.

  • Default is OutSpec = {'Price'}.


PriceSens = optstocksensbybjs(RateSpec, StockSpec, Settle,
Maturity, OptSpec, Strike, 'Name1', Value1...)
computes American option prices and sensitivities using the Bjerksund-Stensland 2002 option pricing model.

optstocksensbybjs can be used to compute six sensitivities for the Bjerksund-Stensland 2002 model: delta, gamma, vega, lambda, rho, and theta. This function is also capable of returning the price of the option. The selection of output parameters and their order is determined by the optional input parameter OutSpec. This parameter is a cell array of strings, each one specifying a desired output parameter. The order in which these output parameters are returned by the function is the same as the order of the strings contained in OutSpec.

PriceSens is a NINST-by-1 vector of expected prices or sensitivities values.

    Note:   optstocksensbybjs computes prices of American options with continuous dividend yield using the Bjerksund-Stensland option pricing model. All sensitivities are evaluated by computing a discrete approximation of the partial derivative. This means that the option is revalued with a fractional change for each relevant parameter, and the change in the option value divided by the increment, is the approximated sensitivity value.


collapse all

Compute American Option Prices and Sensitivities Using the Bjerksund-Stensland 2002 Option Pricing Model

This example shows how to compute American option prices and sensitivities using the Bjerksund-Stensland 2002 option pricing model. Consider four American put options with an exercise price of $100. The options expire on October 1, 2008. Assume the underlying stock pays a continuous dividend yield of 4% and has a volatility of 40% per annum. The annualized continuously compounded risk-free rate is 8% per annum. Using this data, calculate the delta, gamma, and price of the American put options, assuming the following current prices of the stock on July 1, 2008: $90, $100, $110 and $120.

Settle = 'July-1-2008';
Maturity = 'October-1-2008';
Strike = 100;
AssetPrice = [90;100;110;120];
Rate = 0.08;
Sigma = 0.40;
DivYield = 0.04;

% define the RateSpec and StockSpec
StockSpec = stockspec(Sigma, AssetPrice, {'continuous'}, DivYield);

RateSpec = intenvset('ValuationDate', Settle, 'StartDates', Settle,...
'EndDates', Maturity, 'Rates', Rate, 'Compounding', -1);

% define the option type
OptSpec = {'put'};

OutSpec = {'Delta', 'Gamma', 'Price'};

[Delta, Gamma, Price] = optstocksensbybjs(RateSpec, StockSpec, Settle, Maturity,...
OptSpec, Strike, 'OutSpec', OutSpec)
Delta =


Gamma =


Price =


Related Examples


Bjerksund, P. and G. Stensland, Closed-Form Approximation of American Options, Scandinavian Journal of Management, 1993, Vol. 9, Suppl., pp. S88-S99.

Bjerksund, P. and G. Stensland, Closed Form Valuation of American Options, Discussion paper 2002 (

Introduced in R2008b

Was this topic helpful?