Code covered by the BSD License

### Highlights from Volatility Surface

5.0
5.0 | 1 rating Rate this file 40 Downloads (last 30 days) File Size: 179 KB File ID: #23316 Version: 1.1

# Volatility Surface

### Rodolphe Sitter (view profile)

17 Mar 2009 (Updated )

Compute and Plot Volatility Surfaces from Market Prices

File Information
Description

The user inputs:

2 scalars:
- an annualized risk-free rate
- the current price of an underlying asset

3 vectors:
- a vector of time to maturity
- a vector of strike prices
- a vector European call prices gotten from the market for the same underlying asset.

The function VolSurface.m will then:

- compute and output the Black-Scholes implied volatility (this will be a matrix).
- get and plot the corresponding volatility surface using a kernel (Gaussian) density estimation.

Acknowledgements

Kernel Smoothing Regression inspired this file.

MATLAB release MATLAB 7.5 (R2007b)
29 Jan 2011 Marc

### Marc (view profile)

I like the kernel smoothing part ! thks for sharing

23 Jun 2010 Darren

### Darren (view profile)

Dear Rodolphe,
In follow up to my previous question: More important than the graph, shouldn't the surface structure return T, M, and IV to Example 1 (once I comment out the graphing issue)? I receive empty matrices.

Output:
Elapsed time is 0.552350 seconds.
>> whos
Name Size Bytes Class Attributes

CallPrice 721x1 5768 double
Maturity 721x1 5768 double
S0 1x1 8 double
SPX 723x4 23136 double
Strike 721x1 5768 double
r 1x1 8 double
surface 1x1 636 struct

>> surface

surface =
hT: NaN
hM: NaN
T: [0x2 double]
M: [0x2 double]
IV: [1x0 double]

Comment only
22 Jun 2009 Rodolphe Sitter

### Rodolphe Sitter (view profile)

Dear George,
I used the fzero command is my code which uses an algorithm originated by T. Dekker: a combination of bisection, secant, and inverse quadratic interpolation methods.
Matlab has the advantage of having a lot of built-in functions like this that you can use to make coding easier. When coding, you don't actually need to write your own algorithms but you should use the available Matlab functions who do the hard work for you.
I hope it answers you question.
thx for the feedback.

Comment only
20 Jun 2009 George Tzallas

### George Tzallas (view profile)

Dear Rodolphe,

I can't understand the method you are using in order to calculate the implied volatility, ImpliedVol(i). Why you don't use newton raphson method or bisection method, in order to match the volatility with the option market price coming from the BS formula?

Comment only
13 Jun 2009 Pankaj Kalwani

### Pankaj Kalwani (view profile)

I get the error message:

??? Error: File: C:\MATLAB6p5\work\VolSurface.m Line: 87 Column: 12
Missing operator, comma, or semicolon.

Comment only
22 May 2009 Rodolphe Sitter

### Rodolphe Sitter (view profile)

Yes you can just modify the output of the function BlackScholesPricer so that it gives you the put price instead of the call price.
Alternatively you can convert the put prices into call prices using the put-call parity so that you don't have to modify the code.
Hope it helps

Comment only
22 May 2009 derivcraze R S

### derivcraze R S (view profile)

If I would like to implement this code for a European Put option, do I just have to change the BS formula?

Comment only