Pricing an Asian Option in MATLAB
An Asian option is an example of an option that has a path dependent payoff. This makes it ideally suited for pricing using the Monte-Carlo approach as discussed in the Monte-Carlo Methods tutorial.
The Simulating Multiple Asset Paths in MATLAB tutorial gives an example of MATLAB code for generating the types of multiple asset paths required for option pricing using Monte-Carlo methods. That tutorial is expanded here where MATLAB code for pricing an Asian option is presented.
MATLAB Script: AsianPutCall
The following is code for generating a user specified number of simulated asset paths and then using those paths to price a standard Asian Put and Call option. The payoff of the options is given by
where A is the average price of the underlying asset over the life of the option and X is the strike.
% Script to price an Asian option using a monte-carlo approach. S0 =50; % Price of underlying today X = 50; % Strike at expiry mu = 0.04; % expected return sig = 0.1; % expected vol. r = 0.03; % Risk free rate dt = 1/365; % time steps etime = 50; % days to expiry T = dt*etime; % years to expiry nruns = 100000; % Number of simulated paths % Generate potential future asset paths S = AssetPaths(S0,mu,sig,dt,etime,nruns); % calculate the payoff for each path for a Put PutPayoffT = max(X-mean(S),0); % calculate the payoff for each path for a Call CallPayoffT = max(mean(S)-X,0); % discount back putPrice = mean(PutPayoffT)*exp(-r*T) callPrice = mean(CallPayoffT)*exp(-r*T)
The following shows the results of executing the AsianPutCall script.
putPrice = 0.3600 callPrice = 0.4932
Other MATLAB based Monte-Carlo tutorials are linked off the Software Tutorials page.