Description
I have posted code (StockPrice.cpp) that simulates a stock price path over an interval
of time [0, T]. Specifically, divide the time interval into N subintervals of length ∆t =
T
N
and put ti = i∆t. The code takes T = 0.5 (years) and N = 50. Let Z1, Z2, . . . , ZN denote
iid standard normals and, for 1 ≤ i ≤ N, put Bi =
√
∆t · (Z1 + · · · + Zi) with B0 = 0.
Then (B0, B1, . . . , BN ) samples a Brownian path at times 0 = t0, t1, . . . , tN = T. Then
put
Sti = S0e
µti+σBi
,
where µ = r −
1
2
σ
2
. Here r is the risk-free interest rate (taken to be 0.05), S0 is today’s
stock price (taken to be 100), and σ is the stock price volatility (taken to be 0.30). The
program uses simulation to estimate e
−rT EST = E[e
−rT ST ] ≈ V , where V is the sample
mean of the simulated values of V = e
−rT ST . The code estimates this to the nearest halfpenny (error is 0.005) with 95% confidence and shows progress every 100000 simulations.
Maintain these parameter choices throughout the following problems.
1. Run the program to verify that V agrees with S0. (This illustrates that µ is correct.)
2. Use the fact that the process Bei = −Bi has the same distribution as Bi to generate
an antithetic stock price path Set with each simulation. Then estimate e
−rT EST using the
statistic e
−rT
·
ST +SeT
2
in place of V . This should improve run-time substantially.
3. A call option on ST struck at K has payoff at time T given by CT = max(ST −K, 0).
Keeping the antithetic variance reduction in place, modify the code you used for problem
2 to value the call option by estimating e
−rT ECT . That is, use the sample mean of the
statistic C
∗ = e
−rT
·
CT +CeT
2
where CeT = max(SeT − K, 0). Take K = 110.
4. Re-do problem 3 with N = 1 instead of 50. You should get the same answer. Explain
why.
5. Use the Black-Scholes call option pricing formula (found in Functions.h) to compute
the “exact” value of this option. Your answer to 3 should be close, but probably not exact.
6. With N = 50 again, overlay a control variable on your code for problem 3 (keeping
the antithetic reduction in place) as follows. Since EBN = 0, E[B2
N ] = Var BN = T, and
so A = B2
N −T has mean 0. Put C
∗∗ = C
∗+aA for the appropriately chosen value of a and
estimate e
−rT ECT using the sample mean of the C
∗∗ statistic. This should further reduce
the run-time for valuing the option. Is the correlation Cor (A, C∗
) positive or negative?
Explain why.
Over −→
7. A “look-back” option works as follows. Let Smax be the maximum stock price
observed along the stock price path:
Smax = max(St0
, St1
, St2
, . . . , StN ).
(St0 = S0 = 100, and StN = ST .) The payoff of the look-back option at time T, call it LT ,
is given by LT = max(Smax − K, 0). Modify the code for problem 6 (keeping all variance
reduction in place) to value the look-back option with a strike of K = 110.
8. (At my discretion, the homework group that submits the best answer to this will be
awarded extra points.) The “shout” option works as follows. At any time τ between now
and expiration (0 ≤ τ ≤ T) the option holder can “shout” thereby locking in the price Sτ .
The payoff of the option at time T is then max(ST − K, Sτ − K, 0). The holder can shout
only once — the key is deciding when. In deciding when to shout the holder obviously
has no knowledge of future stock prices, i.e., of prices St
for t > τ . Modify your code to
estimate the value of this option. This is a harder problem.
Instructions. For each problem please submit a hard copy of your code, which should
be generously commented. Include screen shots showing the output. Some of your output
will “run off the screen” — that’s OK, just show the tail end of the output. Write up your
methodology and observations/conclusions including a discussion of what the variance
reduction techniques are doing and why you think they work so well.