create new implied volatility term structure - Maple Help

Online Help

All Products    Maple    MapleSim


Home : Support : Online Help : Mathematics : Finance : Financial Instruments : Finance/ImpliedVolatilitySurface

Finance[ImpliedVolatilitySurface] - create new implied volatility term structure

Calling Sequence

ImpliedVolatilitySurface(volatility, T, S, opts)

ImpliedVolatilitySurface(riskfreerate, dividendyield, spot, times, strikes, prices, opts)

ImpliedVolatilitySurface(riskfreerate, dividendyield, spot, dates, strikes, prices, opts)

ImpliedVolatilitySurface(riskfreerate, dividendyield, price, T, K, opts)

ImpliedVolatilitySurface(times, volatilities, opts)

ImpliedVolatilitySurface(dates, volatilities, opts)

ImpliedVolatilitySurface(times, values, volatilities, opts)

ImpliedVolatilitySurface(dates, values, volatilities, opts)

Parameters

volatility

-

algebraic expression, operator or procedure; implied volatility

T

-

name; variable representing time to maturity

S

-

name; variable representing the value of the underlying

riskfreerate

-

non-negative constant, algebraic expression or a yield term structure; risk-free rate

dividendyield

-

non-negative constant, algebraic expression or a yield term structure; dividend yield

spot

-

algebraic expression; initial value of the underlying asset

times

-

list or Vector; times (in years)

strikes

-

list, Vector, listlist or Matrix; strike prices of European call options

prices

-

list, Vector, listlist or Matrix; prices of European call options

dates

-

list; dates

price

-

algebraic expression or procedure; price of a European call option

K

-

name; variable representing the strike price

volatilities

-

list, Vector, listlist or Matrix; volatilities

values

-

list or Vector; values of the underlying

opts

-

equations of the form option = value where option is one of daycounter, interpolation, or referencedate; specify options for the ImpliedVolatilitySurface command

Description

• 

The ImpliedVolatilitySurface command creates new implied volatility term structure with the given parameters. This term structure is represented as a module. This module can be passed to other commands of the Finance package that expect an implied volatility term structure as one of the parameters; it can also be used as if it were a procedure. Assume, for example, that the module returned by ImpliedVolatilitySurface was assigned to the name V. Then for any positive constants T and S, VT,S will return the corresponding value of the implied volatility. If one of the parameters T or S is non-numeric, VT,S will return unevaluated.

• 

The ImpliedVolatilitySurface(times, volatilities, opts) and  ImpliedVolatilitySurface(dates, volatilities, opts) calling sequences create an implied-volatility term structure based on a piecewise interpolation of the specified implied volatilities at the given times or dates. The implied volatilities are assumed to be strike-independent. The times parameter is a list or Vector of times for which implied volatilities are available. In this case the value of the implied volatility at any time is assumed to be independent of the value of the underlying. The dates parameter must be a list of dates given in any of the formats recognized by the Finance[ParseDate] command. The volatilities parameter is a list or Vector of known volatilities.

• 

The ImpliedVolatilitySurface(times, values, volatilities, opts) and ImpliedVolatilitySurface(dates, values, volatilities, opts) calling sequences create an implied-volatility term structure based on a piecewise interpolation of the specified implied volatilities at the given times or dates. The values parameter is a list or a Vector of values of the underlying process for which implied volatilities are available. In this case the volatilities parameter must be a Matrix. The number of rows of the volatilities matrix must be equal to the number of elements in the values vector. Columns of the volatilities matrix correspond to elements of times or dates. So, volatilityi,j is the implied volatility at timesj (or datesj) if the value of the underlying is valuesi.

• 

The ImpliedVolatilitySurface(volatility, T, S, opts) calling sequence constructs an implied-volatility term structure based on the given volatility function. The parameter volatility is the implied volatility given as a function of time from reference and value of the underlying. It can be given either as a Maple procedure or as an algebraic expression. If volatility is given as a procedure it must accept two parameters (time and value of the underlying) and return the corresponding implied volatility as a floating-point number. Finally, if volatility is an algebraic expression, it must depend on two variables. In this case the parameters T and S will be used to determine which variable represents time and which variable represents the value of the underlying.

• 

The ImpliedVolatilitySurface(riskfreerate, dividendyield, callprice, T, K, opts) calling sequence constructs an implied-volatility term structure implied by the available prices of European call options. The parameter riskfreerate is the instantaneous interest rate, which may be time-dependent. The parameter spot is the initial value of the underlying asset. The parameter callprice is the price of the European call option given as a function of time to maturity and strike price. This parameter can be given either as a procedure or as an algebraic expression. In the first case, callprice must accept two parameters: time to maturity and strike price and return the corresponding option price. In the second case, callprice must be an algebraic expression depending on at most two variables. The parameters T and K will specify which variable represents time to maturity and which variable represents the strike price.

• 

The ImpliedVolatilitySurface(riskfreerate, dividendyield, spot, times, strikes, prices, opts) and ImpliedVolatilitySurface(riskfreerate, dividendyield, dates, strikes, prices, opts) calling sequences are similar to the above except that the price function will be determined based on an interpolation of known prices.

Examples

withFinance:

r:=0.05

r:=0.05

(1)

d:=0.01

d:=0.01

(2)

σ:=0.3

σ:=0.3

(3)

First construct an implied volatility term structure based on:

C:=BlackScholesPrice100,K,T,r,σ,d,call

C:=100.ⅇ0.01000000000T0.5000000000+0.5000000000erf14.14213562ln100.K+0.2912500000TT1.ⅇ0.3000000000TK0.5000000000+0.5000000000erf14.14213562ln100.K+0.2912500000TT0.03535533905T

(4)

LV:=ImpliedVolatilitySurfacer,d,C,T,K

LV:=moduleend module

(5)

LV1.0,50

1.8612422231041

(6)

LV1.0,150

0.1088801580

(7)

The following example is based on a piecewise approximation of known implied volatilities.

V:=0.30,0.29,0.3|0.31,0.30,0.31|0.32,0.31,0.33|0.33,0.32,0.35

V:=0.300.310.320.330.290.300.310.320.30.310.330.35

(8)

T:=0.5,1.0,1.5,2.0

T:=0.51.01.52.0

(9)

S:=95,100,105

S:=95100105

(10)

LV2:=ImpliedVolatilitySurfaceT,S,V,Bicubic,referencedate=Jun-7-2006

LV2:=moduleend module

(11)

LV20.5,105

0.3000000000

(12)

LV20.5,100

0.2900000000

(13)

LV2Jun-7-2007,105

0.3100000000

(14)

LV2Jun-7-2007,110

0.3196873473

(15)

t:=YearFractionJun-7-2017

t:=2.298630137

(16)

LV2t,110

0.3776241518

(17)

In this example you use bi-linear and bi-cubic interpolation of known prices.

T:=seq0.1i,i=1..20

T:= 1 .. 20 VectorcolumnData Type: anythingStorage: rectangularOrder: Fortran_order

(18)

K:=seq90+i,i=1..20

K:= 1 .. 20 VectorcolumnData Type: anythingStorage: rectangularOrder: Fortran_order

(19)

A:=MatrixseqseqBlackScholesPrice100,Ki,Tj,r,σ,d,j=1..20,i=1..20,datatype=float8

A:= 20 x 20 MatrixData Type: float8Storage: rectangularOrder: Fortran_order

(20)

LV2:=ImpliedVolatilitySurfacer,d,100,T,K,A,Bilinear

LV2:=moduleend module

(21)

LV3:=ImpliedVolatilitySurfacer,d,100,T,K,A,Bicubic

LV3:=moduleend module

(22)

LV21,100

0.6011620097

(23)

LV21,105

0.5527749264

(24)

LV21.5,100

0.7016426945

(25)

LV21.5,105

0.6658347722

(26)

LV31,100

0.6011620097

(27)

LV31,105

0.5527749264

(28)

LV31.5,100

0.7016426945

(29)

LV31.5,105

0.6658347722

(30)

In this example you plot implied volatility surface obtained using a piecewise interpolation of known prices.

P:=Matrix7.20,7.60,8.60,10.0,2.85,3.52,5.00,6.30,0.50,1.10,2.25,3.50,0.05,0.25,0.85,1.85,0.05,0.10,0.35,0.85

P:=7.207.608.6010.02.853.525.006.300.501.102.253.500.050.250.851.850.050.100.350.85

(31)

T:=0.05,0.10,0.35,0.65

T:=0.050.100.350.65

(32)

K:=80.0,85.0,90.0,95.0,100.0

K:=80.085.090.095.0100.0

(33)

V:=Finance:-ImpliedVolatilitySurface0.05,0.00,87,T,K,P,Bicubic

V:=moduleend module

(34)

plot3dV,0.05..0.65,80..100,orientation=145,75,axes=BOXED

See Also

Finance[BlackScholesProcess], Finance[DiscountCurve], Finance[ForwardCurve], Finance[ForwardRate], Finance[MertonJumpDiffusion], Finance[ParRate], Finance[ZeroCurve]

References

  

Brigo, D., Mercurio, F., Interest Rate Models: Theory and Practice, Springer Verlag, 2001.

  

Gatheral, J., The Volatility Surface: A Practitioner's Guide, (with foreword by Nassim Taleb), Wiley, 2006.

  

Hull, J., Options, Futures, and Other Derivatives, 5th. edition, Prentice Hall, 2003.


Download Help Document

Was this information helpful?



Please add your Comment (Optional)
E-mail Address (Optional)
What is ? This question helps us to combat spam