【发布时间】:2015-04-29 08:07:49
【问题描述】:
我了解 dr=(r-v*v/2)*dT 行的尺寸存在错误。但是我对Matlab知之甚少。请帮忙修复它。代码小而简单。也许有人会找时间看看
function [optionPrice] = upAndOutCallOption(S,r,v,x,b,T,dT)
t = 0;
dr=[];
pert=[];
while (t < T) & (S < b)
t = t + dT;
dr = (r - v.*v./2).*dT;
pert = v.*sqrt( dT ).*randn();
S = S.*exp(dr + pert);
end
if S<b
% Within barrier, so price as for a European option.
optionPrice = exp(-r.*T).* max(0, S - x);
else
% Hit the barrier, so the option is withdrawn.
optionPrice = 0;
end
end
从另一个此类函数调用:
for k=1:amountOfOptions
[optionPrices(k)] = upAndOutCallOption(stockPrice(k)*o,riskFreeRate(k)*o,... volatility(k)*o, strike(k)*o, barrier(k)*o, timeToExpiry(k)*o, sampleRate(k)*o);
result(k) = mean(optionPrices(k));
end
因此,任何困难。
【问题讨论】:
-
欢迎来到 SO。我们不会为您调试代码。请提供能够重现您的错误的最小个可能的示例。
-
在 Matlab 中很容易输出表达式的结果,只需在末尾删除
;,因此在错误行之前的单独行中添加r、v、dT'已经提到可以帮助你。 -
@pawel.boczarski 更好地学习how to debug a Matlab script。
-
您在调用函数之前是否定义了变量“o”?
-
实际的错误信息会比“尺寸错误”更有帮助。
标签: matlab dimensions