Main Content

spreadbybjs

Price European spread options using Bjerksund-Stensland pricing model

Description

Price = spreadbybjs(RateSpec,StockSpec1,StockSpec2,Settle,Maturity,OptSpec,Strike,Corr) returns the price for a European spread option using the Bjerksund-Stensland pricing model.

Note

Alternatively, you can use the Spread object to price spread options. For more information, see Get Started with Workflows Using Object-Based Framework for Pricing Financial Instruments.

example

Examples

collapse all

Define the spread option dates.

Settle = datetime(2012,1,1);
Maturity = datetime(2012,4,1);

Define asset 1. Price and volatility of RBOB gasoline

  Price1gallon = 2.85;          % $/gallon
  Price1 = Price1gallon * 42;   % $/barrel
  Vol1 = 0.29;

Define asset 2. Price and volatility of WTI crude oil

   Price2 = 93.20;         % $/barrel
   Vol2 = 0.36;

Define the correlation between the underlying asset prices of asset 1 and asset 2.

Corr = 0.42;

Define the spread option.

OptSpec = 'call';
Strike = 20;

Define the RateSpec.

rates = 0.05;
Compounding = -1;
Basis = 1;
RateSpec = intenvset('ValuationDate', Settle, 'StartDates', Settle, ...
'EndDates', Maturity, 'Rates', rates, ...
'Compounding', Compounding, 'Basis', Basis)
RateSpec = struct with fields:
           FinObj: 'RateSpec'
      Compounding: -1
             Disc: 0.9876
            Rates: 0.0500
         EndTimes: 0.2500
       StartTimes: 0
         EndDates: 734960
       StartDates: 734869
    ValuationDate: 734869
            Basis: 1
     EndMonthRule: 1

Define the StockSpec for the two assets.

StockSpec1 = stockspec(Vol1, Price1)
StockSpec1 = struct with fields:
             FinObj: 'StockSpec'
              Sigma: 0.2900
         AssetPrice: 119.7000
       DividendType: []
    DividendAmounts: 0
    ExDividendDates: []

StockSpec2 = stockspec(Vol2, Price2)
StockSpec2 = struct with fields:
             FinObj: 'StockSpec'
              Sigma: 0.3600
         AssetPrice: 93.2000
       DividendType: []
    DividendAmounts: 0
    ExDividendDates: []

Compute the European spread option price based on the Bjerksund-Stensland model.

Price = spreadbybjs(RateSpec, StockSpec1, StockSpec2, Settle, ...
Maturity, OptSpec, Strike, Corr)
Price = 
11.2000

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

Stock specification for underlying asset 1. For information on the stock specification, see stockspec.

stockspec can handle other types of underlying assets. For example, for physical commodities the price is represented by StockSpec.Asset, the volatility is represented by StockSpec.Sigma, and the convenience yield is represented by StockSpec.DividendAmounts.

Data Types: struct

Stock specification for underlying asset 2. For information on the stock specification, see stockspec.

stockspec can handle other types of underlying assets. For example, for physical commodities the price is represented by StockSpec.Asset, the volatility is represented by StockSpec.Sigma, and the convenience yield is represented by StockSpec.DividendAmounts.

Data Types: struct

Settlement dates for the spread option, specified as a NINST-by-1 vector using a datetime array, string array, or date character vectors.

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

Maturity date for spread option, specified as a NINST-by-1 vector using a datetime array, string array, or date character vectors.

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

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

Data Types: char | cell

Option strike price values, specified as an integer using a NINST-by-1 vector of strike price values.

If Strike is equal to zero, the function computes the price of an exchange option.

Data Types: double

Correlation between underlying asset prices, specified as an integer using a NINST-by-1 vector.

Data Types: double

Output Arguments

collapse all

Expected prices of the spread option, returned as a NINST-by-1 vector.

More About

collapse all

Spread Option

A spread option is an option written on the difference of two underlying assets.

For example, a European call on the difference of two assets X1 and X2 would have the following pay off at maturity:

max(X1X2K,0)

where:

K is the strike price.

For more information, see Spread Option.

References

[1] Carmona, R., Durrleman, V. “Pricing and Hedging Spread Options.” SIAM Review. Vol. 45, No. 4, pp. 627–685, Society for Industrial and Applied Mathematics, 2003.

[2] Bjerksund, Petter, Stensland, Gunnar. “Closed form spread option valuation.” Department of Finance, NHH, 2006.

Version History

Introduced in R2013b

expand all