Theory and practice of option pricing Juliusz Jabłecki Department of Quantitative Finance Faculty of Economic Sciences University of Warsaw jjablecki@wne.uw.edu.pl and Head of Monetary Policy Analysis Division National Bank of Poland 1
Lecture 3: Numerical approach to option pricing In this lecture we discuss: Stability of finite-difference schemes Sources of instability in (explicit) finite difference schemes Monte Carlo simulation: design, convergence and uses Comparison of F-D and M-C methods 2
Let s return to the numerical exercise from Lecture 2: Example. Estimate the price of a European call option on a nondividend-paying stock S with current price 100, assuming that the strike K = 110, option maturity T = 1 year, the volatility σ = 0.25, while the interest rate r = 0.02. Using S min = 0 and S max = 200, ds = 1 and dt = 0.0001 we get» CallFD(1, 0.0001)» 6.887011839066840 Compare that to the B-S formula result of 6.8886 pretty good. If we go for a less fine grid, we naturally end up with poorer match:» CallFD(10, 0.0001)» 6.71997741030402 But look what happens if we decide to improve the grid:» CallFD(0.1, 0.0001)» NaN 3
Similarly, if we change dt:» CallFD(1, 0.01)» -6.558865660767193e+11 Nonsense! This shows that the finite difference scheme can be numerically unstable. This is not a general feature of FD schemes, but just their simplest version which we have implemented. To eliminate this instability we can go for a so called implicit scheme, whereby the unknown values are given implicitly (rather than explicitly, as in our discretization). 4
Another very useful numerical technique is Monte Carlo simulation. Suppose we are supposed to calculate the price of a derivative contract with terminal payoff V ( ) written on an underlying instrument S. By the Fundamental Theorem of Asset Pricing, we know that absence of arbitrage implies V (S t) e rt is a martingale in the risk neutral measure: V 0 e r 0 = V 0 = E Q V T (S T ) e rt = e rt E Q (V (S T )), In other words, the time zero price of V is given by the risk neutral expactation of terminal payoff. Thus, to estimate V we just need to generate a large number of terminal values Ŝ at T, and take their average V e rt S 1 + Ŝ2 +... + ŜN N The key to that is knowing the dynamics of S. 5
Recall that in our simple model we assumed that the expected return on S is zero and that interest rates in the economy are also zero. Over a short time span t our asset could go either up or down: S + Sσ dt S t S Sσ dt So: S = ɛσ t, ɛ = ±1 More generally, we typically assume that the underlying has lognormal dynamics in the risk-neutral measure S = Sr t + σsɛ t, ɛ N(0, 1) 6
This means that if we start from S 0 we can proceed to simulate a random path of S letting S t+ t = S t (1 + r t) + σs t ɛ t t If we want N paths with M data points each, we need N M draws of random numbers ɛ. Random normals are typically generated by the command:»randn»0.80639 Here s a simulation of 10 sample paths of a process with low volatility and high volatility 7
500 sigma=0.1 400 300 200 100 0 0 20 40 60 80 100 120 8
500 sigma=0.6 400 300 200 100 0 0 20 40 60 80 100 120 9
We can also plot a histogram of terminal values 10
11
Armed with this we can easily price any European option. Consider again: Example. Estimate the price of a European call option on a nondividend-paying stock S with current price 100, assuming that the strike K = 110, option maturity T = 1 year, the volatility σ = 0.25, while the interest rate r = 0.02. Let s say we use 100 trials» mean(max(0,assetpaths(:,end)-110))*exp(-0.02)» 8.1993 This is not impressive compared to the B-S formula which suggests 6.88. We may increase the number of trials: 12
8 7.5 7 6.5 6 5.5 0 20 40 60 80 100 13
By 5,000 the simulation appears to converge but even with 10,000 simulations the limiting value is 7.14. What can we do to improve accuracy? We can increase number of time steps! 14
8.5 dt=1/100 dt=1/200 dt=1/400 8 7.5 7 6.5 6 5.5 0 20 40 60 80 100 15
With 400 steps per year we already get a decent 6.93 better, but still not perfect. Why the error? Recall our discretization scheme: S t+ t = S t (1 + r t) + σs t ɛ t t It is clear that by discretizing, we are committing a small error. Not only that the discretization is even changing the marginal distribution of S t. We assumed it was log-normal, and yet here S t+ t is normally distributed! In this specific case, discretization error can be eliminated by observing that: ds S = rdt + σɛ dt = d(log S t ) = (r σ2 2 )dt + σɛ dt 16
And then we get S t+ t = S t exp (r σ2 2 ) t + σɛ t which we can use to generate sample paths. Note that generating sample paths for a large number of time steps and simulation runs will be time consuming. For European options this is not a problem, because we can just simulate terminal values instead of entire paths. But for exotic, path-dependent products e.g. down-and-out options, finite difference schemes will be much more efficient. The same goes for American options. 17