160 likes | 466 Views
Monte Carlo Simulation. We will explore a technique, called Monte Carlo simulation, to numerically derive the price of an option or other derivative security. The motivation for this is two-fold.
E N D
Monte Carlo Simulation • We will explore a technique, called Monte Carlo simulation, to numerically derive the price of an option or other derivative security. The motivation for this is two-fold. • First, the Black-Scholes formula assumes that returns are normally distributed. But sometimes we may be interested in deriving the price under alternative distributional assumptions. • Second, the Black-Scholes formula only holds for a call or put option. But there are other “exotic” derivatives for which we may not have an analytical formula. • In both these cases, we can use Monte Carlo simulation to derive the price of a derivative.
Basic Idea behind Monte Carlo Simulation • Monte Carlo simulation is a term used to apply to any method that solves a problem by generating suitable random numbers, and observing the fraction of numbers that obey some property. • For our case, we want to use Monte Carlo simulation to value an option. • So we will generate random numbers that simulate random stock prices. For each of the stock prices, we will estimate the option payoff. We then discount and average the option payoff across our simulations. The average estimate will be our estimate of the option price.
Application • We will apply Monte Carlo simulation to the valuation of a call option, and compare it to the analytical Black-Scholes price.
Step 1: Simulate a random standard normal variable • 1. You can directly generate a random standard normal variables using “Data Analysis” • A standard normal variable is distributed N(0,1), i.e., it is distributed with mean zero and standard deviation 1. • 2. If you cannot use the add-in, then you can use the “rand()” function. The rand() function created a uniform random variable. We can then convert the uniform random variable into a N(0,1) variable as follows: • (a) z = norminv(rand(), 0, 1) • (b) We can use two uniformly distributed random variables to create a random normal variable as follows: • Random Standard Normal variable = z = (SQRT(-2*LN(RAND())))*(COS(2*PI()*RAND()))
Step 2: Use the random normal variable, z, to generate a stock price • For our example here, we assume that stock returns are normally distributed. • Specifically, the assumption under which Black-Scholes is derived is that stock prices are “log-normally” distributed, which implies that the log-returns are normally distributed. This is the assumption we will make here. • Let us suppose we want to simulate the stock price after a “t” period, S(t), knowing the current stock price, S(0). • S(t) = S(0) exp [ (r – dividend_yield - 0.5 vol2) t + vol sqrt(t) z ], where z is the standard normal random variable.
Step 3: Compute the payoff • Use the estimate of the stock price at maturity, S(T), to estimate the option payoff. • For a call option, the payoff is Max (S(T) – X, 0). For a put option, the payoff is Max(X – S(T), 0). • The payoff of an exotic option, like a down-and-out call, will be more complicated, but such options can also be easily valued.
Step 4: Estimate the option price • We repeat the simulation n=1,.., N times. • The Monte Carlo estimate of the option price is the average of the discounted payoffs over all the N simulations. • We discount using the risk-free rate. So the estimate of the option price is: • (1/N) sum (exp(- r T) C (n))
Observations on errors • A lot of simulations are required to reduce the error. It is not unusual to require N=10,000 or more to get reasonable accuracy. • There are methods that can make a monte carlo simulation converge faster. These techniques are usually taught in a upper level numerical methods course.
How to reduce error • A simple way to reduce the error is to use an “antithetic” sample. • Take the original random number, z, and replace it with –z. • Now, redo everything with this random number. • Denote C(z) as the estimate with the original random sample, and C(-z) as the estimate with the antithetic sample. • The average of these two estimates, [C(z) + C(-z)]/2, will usually be more accurate.