hedging.iid {OptHedging}R Documentation

Value and optimal hedging strategy for a call or a put option using simulations.

Description

Computes the value of C and the optimal hedging strategy for a call or a put option on a grid at discrete time intervals, using optimal hedging and simulations. The continuous time model is assumed to be a Levy process, so the periodic returns are i.i.d. Only the returns at the first period need to be simulated. For values of the asset not on the grid, interpolation is needed. The optimal number of shares phi to be bought at period i-1, when the discounted price is s and the discounted value of the hedging portfolio is P, is given by phi = (interpol1d(s,a[i,],minS,maxS)-P*rho)/s and the change in the discounted portfolio is phi * s. At time 0, P = interpol1d(s,C[1,],minS,maxS).

Usage

hedging.iid(R,T,K,r,put,n,m,minS,maxS)

Arguments

R

Simulated iid excess periodic returns for the first period.

T

Maturity of the option (in years).

K

Strike price.

r

Annual (continuous) interest rate.

put

1 (default) for a put and 0 for a call.

n

Number of hedging periods.

m

Number of points of the grid.

minS

Minimum value of the grid.

maxS

Maximum value of the grid.

Value

S

Points on the grid at which the option is evaluated.

C

C(i,j) represents the value of the option at period i-1 for point S(j) on the grid.

a

a(i,j) represents a value needed to compute the optimal hedging strategy at period i-1 for point S(j) on the grid.

phi1

phi1(j) is the initial number of shares of the asset to be bought if its price is S(j).

rho

Constant needed for the computation of the hedging strategy.

Author(s)

Bruno Remillard

References

Chapter 3 of 'Statistical Methods for Financial Engineering, B. Remillard, CRC Press, (2013).

Examples

# Computes the price of a one-year maturity put option when hedged 5 times 
# at regular time intervals. 
# The model is assumed to be Black-Scholes with parameters mu and sigma, 
# so the excess periodic returns are Gaussian.

n = 5;         # number of hedging periods
m = 5001;      # number of points of the grid
minS = 80.0;   # minimum value of the grid
maxS = 120.0;  # maximum value of the grid
S0 = 100.0;    # initial value
K  = 100.0;    # strike price
T  = 1.0;      # maturity of the option
r  = 0.05;     # annual (continuous) rate 
put = 1;       # Put = 0 implies call!
  

#Simulation of excess periodic returns
sigma = 0.06;  # annual volatility of the returns
mu = 0.09;     # annual mean of the returns
Tp = T/n;
rp = r*Tp;
sigmap = sigma*sqrt(Tp);
Kp = K*exp(-r*T);
mup = mu*Tp-0.5*sigmap*sigmap;

#Gaussian excess returns
N = 10000;     # number of simulated returns
R = mup -rp +sigmap*rnorm(N);


# Computation
out0 = hedging.iid(R,T,K,r,put,n,m,minS,maxS)

C = out0$C;
a = out0$a;
rho = out0$rho;
S = out0$S;
phi1 = out0$phi1;

# Initial value of the option computed from interpolating C
C0 = interpol1d(S0,C[1,],minS,maxS);

# Initial value of the option computed from interpolating C
phi = (interpol1d(S0,a[1,],minS,maxS)-C0*rho)/S0;

par(mfrow=c(2,1))
plot(S,C[1,],type='s',main=bquote('Put values ' * C[0] * ' at time 0  for n' ==.(n)  ))


plot(S,phi1,type='s',main=expression('Number of shares ' *phi[1] * ' at start'))

par(new=TRUE)
C0
phi

[Package OptHedging version 1.0 Index]