Main Content


Determine European basket options price or sensitivities using Nengjiu Ju approximation model



PriceSens = basketsensbyju(RateSpec,BasketStockSpec,OptSpec,Strike,Settle,Maturity) calculates prices or sensitivities for basket options using the Nengjiu Ju approximation model.


PriceSens = basketsensbyju(___,Name,Value) specifies options using one or more name-value pair arguments in addition to the input arguments in the previous syntax.


collapse all

Find a European call basket option of five stocks. Assume that the basket contains:

  • 5% of the first stock trading at $110

  • 15% of the second stock trading at $75

  • 20% of the third stock trading at $40

  • 25% of the fourth stock trading at $125

  • 35% of the fifth stock trading at $92

These stocks have annual volatilities of 20% and the correlation between the assets is zero. On May 1, 2009, an investor wants to buy a 1-year call option with a strike price of $90. The current annualized, continuously compounded interest is 5%. Use this data to compute price and delta of the call basket option with the Ju approximation model.

Settle = datetime(2009,5,1);
Maturity  = datetime(2010,5,1);

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

% Define the Correlation matrix. Correlation matrices are symmetric, and
% have ones along the main diagonal.
NumInst  = 5;
InstIdx = ones(NumInst,1);
Corr = diag(ones(5,1), 0);

% Define BasketStockSpec
AssetPrice =  [110; 75; 40; 125; 92]; 
Volatility = 0.2;
Quantity = [0.05; 0.15; 0.2; 0.25; 0.35];
BasketStockSpec = basketstockspec(Volatility, AssetPrice, Quantity, Corr);

% Compute the price of the call basket option. Calculate also the delta 
% of the first stock.
OptSpec = {'call'};
Strike = 90;
OutSpec = {'Price','Delta'}; 
UndIdx = 1; % First element in the basket
[Price, Delta] = basketsensbyju(RateSpec, BasketStockSpec, OptSpec, Strike, Settle, ...
Maturity, 'OutSpec', OutSpec,'UndIdx', UndIdx)
Price = 5.1610
Delta = 0.0297

Compute Delta with respect to the second asset:

UndIdx = 2; % Second element in the basket
OutSpec = {'Delta'}; 
Delta = basketsensbyju(RateSpec, BasketStockSpec, OptSpec, Strike, Settle, Maturity, ...
Delta = 0.0906

Input Arguments

collapse all

Interest-rate term structure (annualized and continuously compounded), specified by the RateSpec obtained from intenvset. For information on the interest-rate specification, see intenvset.

Data Types: struct

BasketStock specification, specified using basketstockspec.

Data Types: struct

Definition of the option as 'call' or 'put', specified as a character vector or a 2-by-1 cell array of character vectors.

Data Types: char | cell

Option strike price value, specified as one of the following:

  • For a European or Bermuda option, Strike is a scalar (European) or 1-by-NSTRIKES (Bermuda) vector of strike prices.

  • For an American option, Strike is a scalar vector of the strike price.

Data Types: double

Settlement or trade date for the basket option, specified as a scalar datetime, string, or date character vector.

To support existing code, basketsensbyju also accepts serial date numbers as inputs, but they are not recommended.

Maturity date for the basket option, specified as a scalar datetime, string, or date character vector.

To support existing code, basketsensbyju also accepts serial date numbers as inputs, but they are not recommended.

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: PriceSens = basketsensbyju(RateSpec,BasketStockSpec,OptSpec, Strike,Settle,Maturity,'OutSpec','delta')

Define outputs, specified as the comma-separated pair consisting of 'OutSpec' and a NOUT- by-1 or a 1-by-NOUT cell array of character vectors with possible values of 'Price', 'Delta', 'Gamma', 'Vega', 'Lambda', 'Rho', 'Theta', and 'All'.

OutSpec = {'All'} specifies that the output is Delta, Gamma, Vega, Lambda, Rho, Theta, and Price, in that order. This is the same as specifying OutSpec to include each sensitivity.

Example: OutSpec = {'delta','gamma','vega','lambda','rho','theta','price'}

Data Types: char | cell

Index of the underlying instrument to compute the sensitivity, specified as the comma-separated pair consisting of 'UndIdx' and a scalar numeric.

Data Types: double

Output Arguments

collapse all

Expected prices or sensitivities (defined using OutSpec) for basket option, returned as a NINST-by-1 matrix.

More About

collapse all

Basket Option

A basket option is an option on a portfolio of several underlying equity assets.

Payout for a basket option depends on the cumulative performance of the collection of the individual assets. A basket option tends to be cheaper than the corresponding portfolio of plain vanilla options for these reasons:

  • If the basket components correlate negatively, movements in the value of one component neutralize opposite movements of another component. Unless all the components correlate perfectly, the basket option is cheaper than a series of individual options on each of the assets in the basket.

  • A basket option minimizes transaction costs because an investor has to purchase only one option instead of several individual options.

For more information, see Basket Option.


[1] Nengjiu Ju. “Pricing Asian and Basket Options Via Taylor Expansion.” Journal of Computational Finance. Vol. 5, 2002.

Version History

Introduced in R2009b

expand all