MATLAB: Asian Call Put option simulation + Confidence intervals

asian callasian put

Hello! I'm trying to create the 95% confidence interval for a simulation of Asian Call and Put options. When I run the following code the result for the options seems to be outside of the Confidence interval so I'm wondering if I either have a mistake in the estimation or in the Confidence interval code. Here's my coding.
clear all
clc
S0 = 100; %Today's stock price
T = 0.5; %time to maturity
K = 105; % Strike (exercise) price
r = 5/100; % yearly interest rate
sigma = 23/100; %yearly volatility
m = 1e5; % number of simulations
n = round(T*252); %number of time steps/increments
S = zeros(1,n); S(1) = S0; dt = T/n; % time increments
t = 0:dt:T-dt; payoff_c = zeros(1,m); payoff_p = zeros(1,m);
Z = randn(m,n); % creating standard normal random variables
%Asian Call & Put simulation
for j = 1:m
for i = 1:n-1 % below, dt = t(i+1) - t(i)
S(i+1) = S(i)*exp((r-sigma.^2/2)*dt + sigma * sqrt(dt) * Z(j,i));
end
payoff_c(j) = max(0,mean(S)-K); payoff_p(j) = max(0,K-mean(S));
end
c_est = exp(-r*T)*mean(payoff_c)
p_est = exp(-r*T)*mean(payoff_p)
% Create Data
SE_Call = std(payoff_c)/sqrt(length(payoff_c)); % Standard Error
TS_Call = tinv([0.025 0.975],length(payoff_c)-1); % T-Score
CI_Call = mean(payoff_c) + TS_Call*SE_Call % Confidence Interval
SE_Put = std(payoff_p)/sqrt(length(payoff_p));
TS_Put = tinv([0.025 0.975],length(payoff_p)-1);
CI_Put = mean(payoff_p) + TS_Put*SE_Put

Best Answer

Your error is in assuming that they have normal (or t) distributiond.
They do not.
They appear to be exponential or gamma distributed instead:
figure
histfit(payoff_c, 500, 'exponential')
set(gca, 'XScale','log', 'YScale','log')
figure
histfit(payoff_p, 500, 'exponential')
set(gca, 'XScale','log', 'YScale','log')
figure
histfit(payoff_c, 500, 'gamma')
set(gca, 'XScale','log', 'YScale','log')
figure
histfit(payoff_p, 500, 'gamma')
set(gca, 'XScale','log', 'YScale','log')
.