我试图绘制相对误差(y轴)和(x轴)上的时间步长。我使用LSM算法为美国选项定价,当我运行程序时,我没有收到任何输出,我不知道为什么。这是我的代码:
clear;
clc;
r = 0.06;
q = 0.03;
S0 = 40;
T = 1;
sigma = 0.4;
K = 40;
N = 10000;
M = 100000;
k = 1;
[Call,Put] = blsprice(S0,K,r,T,sigma,q);
for i = 1:200
u(i) = LSM(T,r,q,sigma,K,S0,i,M,k);
relative_error(i) = abs(Call - u(i))/Call;
hold on
plot(i,relative_error(i))
end
答案 0 :(得分:1)
问题在于您一次将一个点传递给Matlab绘图函数。绘图功能的工作原理是获取一系列点并在它们之间画一条线。有一点,它不可能这样做。在for循环之后调用plot函数或使用:
plot(i,relative_error(i),'r*')
清楚地标明每一点。