Я пытаюсь приблизить цену европейского опциона в Matlab. Точное значение, рассчитанное с помощью Блэка-Шоулза , составит 6,89. Я использую симуляцию Монте-Карло с броуновским мостом для более быстрой конвергенции. К сожалению, цена, приближенная к моему коду, слишком высока (всегда около 120), и я не вижу проблемы с моим кодом. Пожалуйста, найдите код ниже. Если бы кто-нибудь мог помочь мне с моей проблемой, я был бы очень благодарен!
Лучший Яннис
PS: Входной параметр "Pfade" относится к числу смоделированных путей Броуновского моста. Если вам нужна дополнительная информация, пожалуйста, дайте мне знать, я довольно новичок в M C -Simulation и Matlab!
function P=eurocallprice_QMC_BBD(S0,K,r,T,sigma,n,Pfade)
dt=T/n;
timestep=[0:dt:T]';
Wt=zeros(n+1,Pfade);
%Simulate the Brownian motion at T:
eY = randn(1,Pfade);
Wt(n+1,:)= sqrt(T).*eY;
%Simulate the Brownian motion W(t):
for j=2:n
deltat1=(n+1-j)/(n+1-j+1);
eYt = randn(1,Pfade);
Wt(j,:)=deltat1*Wt(j-1,:)+(1-deltat1)*Wt(n+1,:)+sqrt(deltat1*dt)*eYt;
end
BB=Wt;
plot(BB)
SPaths = zeros(n+1, Pfade);
SPaths(1, :) = S0;
for i = 1:n+1
SPaths(i + 1, :) = SPaths(i,:) .* (1 + r * dt + sigma * BB(i,:));
end
Payoff = zeros(Pfade,1);
Payoff = max(0, SPaths(n+1,:) - K);
P = exp(-r*T) * mean(Payoff);
end