Okay so this might be a fairly trivial question but I'm having an issue with valuing a call option using both a Monte Carlo method and a PDE method.
When I started I first used the parameters:
Spot = 0 to 20
Strike = 10
Interest rate = 0
Volatility = 0.25
Time = 1
And both the Monte Carlo and PDE methods came out identical. However, when I changed the spot price range from 90 to 110 and the strike to 100, the Monte Carlo and PDE methods now give different results! For instance, with a spot price of 110, the Monte Carlo method gives (approximately) 16.19 as the option price. However, the PDE method instead gives 10 as the price. And the thing is, this happens with every Monte Carlo and PDE code I try (I found a few off the internet and I've been trying them out). Can someone tell me why this happens?
Thanks in advance.
Edit: Just as a small favor, can someone tell me what needs to be modified in this code in order to give the true result? I got the code from the link I mentioned below
r=0.0; % Interest rate sigma=0.25; % Volatility of the underlying M=1600; % Number of time points N=160; % Number of share price points Smax=110; % Maximum share price considered Smin=90; % Minimum share price considered T=1.; % Maturation (expiry)of contract E=100; % Exercise price of the underlying %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% dt=(T/M); % Time step ds=(Smax-Smin)/N; % Price step % Initializing the matrix of the option value v(1:N,1:M) = 0.0; % Initial conditions prescribed by the European Call payoff at expiry:V(S,T)=max(S-E,0); v(1:N,1)=max((Smin+(0:N-1)*ds-E),zeros(size(1:N)))'; %v(1:N,1)=max((Smin+(0:N-1)*ds-E),(5))'; % Boundary conditions prescribed by the European Call: v(1,2:M)=zeros(M-1,1)'; % V(0,t)=0 v(N,2:M)=((N-1)*ds+Smin)-E*exp(-r*(1:M-1)*dt); % V(S,t)=S-Eexp[-r(T-t)] as S ->infininty. % Determining the matrix coeficients of the explicit algorithm aa=0.5*dt*(sigma*sigma*(1:N-2).*(1:N-2)-r*(1:N-2))'; bb=1-dt*(sigma*sigma*(1:N-2).*(1:N-2)+r)'; cc=0.5*dt*(sigma*sigma*(1:N-2).*(1:N-2)+r*(1:N-2))'; % Implementing the explicit algorithm for i=2:M, v(2:N-1,i)=bb.*v(2:N-1,i-1)+cc.*v(3:N,i-1)+aa.*v(1:N-2,i-1); end % Reversal of the time components in the matrix as the solution of the BlackScholes % equation was performed backwards v=fliplr(v);