【发布时间】:2020-01-12 20:15:42
【问题描述】:
我试图在 Matlab 中估算欧式看涨期权的价格。使用Black-Scholes 计算的确切值将是 6.89。我正在使用带有布朗桥的蒙特卡罗模拟来加快收敛速度。不幸的是,与我的代码近似的价格太高了(它总是在 120 左右),我看不出我的代码有问题。请在下面找到代码。如果有人可以帮助我解决我的问题,我将非常感激!
最佳雅尼斯
P.S.:输入参数“Pfade”是指模拟的布朗桥路径的数量。如果您需要更多信息,请告诉我,我是 MC-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
【问题讨论】:
-
如果您能提供一个示例,说明您对
eurocallprice_QMC_BBD的输入是什么以及您认为它们代表什么,那将会很有帮助。 stackoverflow.com/help/minimal-reproducible-example -
您好,感谢您的回复。 S0(t = 0 时的股票价格)= 100。K(执行价格)= 100。r(无风险利率)= 0.05。 T(成熟度)= 1。 sigma(波动率)= 0.2。 Pfade(布朗桥路径数)= 9000。
-
n用的是什么?您能否提供一个指向您正在使用的 Black-Scholes 公式的指针(我在您的帖子中添加了 Wikipedia 链接,但即使这样也有一些变体)? -
我使用的是 n = 32。
-
我使用这个网站上的计算器来计算布莱克-斯科尔斯值:mystockoptions.com/…
标签: matlab options montecarlo