Learn R Programming

QFRM (version 1.0.1)

ShoutFD: Shout option valuation via finite differences (FD) method

Description

Shout option valuation via finite differences (FD) method

Usage

ShoutFD(o = OptPx(Opt(Style = "Shout")), N = 100, M = 20, Smin = 0, Smax = 100)

Arguments

o
An object of class OptPx
N
The number of equally spaced intervals. Default is 100.
M
The number of equally spaced stock price. Default is 20.
Smin
similar to Smax
Smax
A stock price sufficiently high that, when it is reached, the put option has virtually no value. The level of Smax should be chosen in such a way that one of these equally spaced stock prices is the current stock price.

Value

A list of class OptPx, including option pricing parameters N, M, Smin, and Smax, as well as the computed option price PxFD.

Details

A shout option is a European option where the holder can 'shout' to the writer at one time during its life. At the end of the life of the option, the option holder receives either the usual payoff from a European option or the intrinsic value at the time of the shout, whichever is greater. An explicit finite difference method (Page 482 in Hull's book) is used here to price the shout put option. Similar to pricing American options, the value of the option is consolidated at each node of the grid to see if shouting would be optimal. The corresponding shout call option is priced using the Put-Call-Parity in the finite difference method .

References

Hull, J.C., Options, Futures and Other Derivatives, 9ed, 2014. Prentice Hall. ISBN 978-0-13-345631-8, http://www-2.rotman.utoronto.ca/~hull/ofod/index.html pp.609.

Examples

Run this code
(o = ShoutFD(OptPx(Opt(Right="C", Style="Shout"))))$PxFD

 o = OptPx(Opt(Right="C", Style="Shout"))
 (o = ShoutFD(o, N=10))$PxFD # very differnt result for N=10

 (o = ShoutFD(OptPx(Opt(Right="P", Style="Shout"))))$PxFD

 o = Opt(Right='P', S0=100, K=110, ttm=0.5, Style='Shout')
 o = OptPx(o, vol=0.2, r=0.05, q=0.04)
 (o = ShoutFD(o,N=100,Smax=200))$PxFD

 o = Opt(Right="C", S0=110, K=100, ttm=0.5, Style="Shout")
 o = OptPx(o, vol=0.2, r=0.05, q=0.04)
 (o = ShoutFD(o,N=100,Smax=200))$PxFD

Run the code above in your browser using DataLab