% generate random paths and evaluate path-dependent options M = 1e4; % # repeats N = 1e2; % # time-steps Z = randn(N,M); r = 0.01; T = 1; sigma = 0.5; S0 = 1; dt = T/N; % create log returns X = (r-sigma.^2/2)*dt + sqrt(dt)*sigma*Z; % create log paths X = cumsum(X); % cumulative sum of returns % add initial values X = [zeros(1,M); X]; % create asset values S = exp(X); % option payoffs (cashflows) % example: option on the maximum value reached, strike 1 cashflows = exp(r*T)*max(max(S)-1,0); % example: option on the average value, strike 1 cashflows = exp(r*T)*max(mean(S)-1,0); % example: barrier option, European payoff, but zero payoff if the asset reaches 2 cashflows = exp(r*T)*max(S(end,:)-1,0).*(max(S)<2); V = mean(cashflows), e = std(cashflows)*1.96/sqrt(M)