MATLAB Answers


how to plot the payoff of an call/put option with matlab

Asked by Locks
on 23 Mar 2013

how can I plot:

- intrinsic value of a call/put option in matlab?

- how can I plot the call/put value including the time value?

Additionally, I would like to plot delta, gamma, vega, etc. for several strikes and time to maturity, is that possible?

thanks for your help


the cyclist
on 23 Mar 2013

All of this is possible in MATLAB, but your question is far too general. We have no idea knowing what you already understand (and don't understand) about this problem.

For example, do you know anything at all about plotting in MATLAB? (Would you know how to plot the line y = 2*x?)

How much do you understand about options? Do you know and understand the formulas for the values?

I suggest you try to break down your question into small chunks that will be easier for people to digest and help you answer. You should show what coded you have written for yourself as well.

on 23 Mar 2013

I know how to plot a line in matlab and I suppose I know enough abbout options, but I thought there could be a function where I do not need to do it by myself. Is there no function for this?

I do not really know how to get the axis an how to describe them

Furthermore, to plot the intrinsic value, I need the max function to get max(S-K,0)

For the option value I need the black scholes formula, which fortunately I have

I there an easy and efficient way to handle that problem


No products are associated with this question.

1 Answer

Answer by the cyclist
on 23 Mar 2013
Edited by the cyclist
on 23 Mar 2013
 Accepted answer

The Financial Toolbox has formulas for option prices [e.g. blsprice() for Black-Scholes model option pricing]. You can see the complete list of functions here:

If you don't have that toolbox, then you might find something you can use in the File Exchange. Here's one:

(But I have no idea if it is any good.)


on 24 Mar 2013

plotting both has worked now, but there is another thing I am not able to do.

I would like to plot a double arrow between the intrinsic value line and the black scholes line, to show the time value of the option. is there an easy way to do this?

additionally I would like to write 'time value' between the intrinsic value line and the block scholes line, how can I write something at a specific place in a plot?

thank you very much for your help

the cyclist
on 24 Mar 2013

You can add text to a specific place on the plot using text function.

help text

for details.

I forgot about this when you asked about arrows earlier. You can do this using the annotation() command.

For example,

annotation(gcf,'doublearrow',[0.2 0.3],[0.3 0.5])

It is a little annoying that annotations use figure coordinates rather than axis coordinates. Read this for details:

on 24 Mar 2013

is there a way to make the arrow smaller?

Join the 15-year community celebration.

Play games and win prizes!

Learn more
Discover MakerZone

MATLAB and Simulink resources for Arduino, LEGO, and Raspberry Pi

Learn more

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply Today

MATLAB Academy

New to MATLAB?

Learn MATLAB today!