【发布时间】:2016-06-27 19:15:36
【问题描述】:
我对 Matlab/Octave 编程很陌生,但是有一个我似乎无法解决的问题。
我写了以下内容,这实际上是使用 Black Scholes 公式对期权价格进行的非常直接的计算(只是为您提供一些背景知识)。但是,我确实经常收到以下错误消息:
"下标索引必须是小于 2^31 的正整数或逻辑"
人们会认为这很好地解释了它,而且我知道以前有过关于它的问题。然而,导致麻烦的事情是我根本没有在我的代码中使用任何类型的下标索引。
这是我的代码:
function v=BS_LBO_strike_call(s,T,sigma,r,q,l,alpha)
d1=(log(alpha*l./s) + (r-q-0.5*sigma^2)*T)/(sigma*sqrt(T));
d2=(log(alpha*l./s) - (r-q+0.5*sigma^2)*T)/(sigma*sqrt(T));
d3=(log(alpha*l./s) + (r-q+0.5*sigma^2)*T)/(sigma*sqrt(T));
d4=(log(alpha*l./s) + (r-q-0.5*sigma^2)*T)/(sigma*sqrt(T));
v = exp(-r*T)*s(0.5*sigma^2./(r-q)*(l./s).^(2*(r-q)./sigma^2).*normcdf(d1) - 0.5*sigma^2./(r-q)*alpha.^(-2*(r-q)./sigma^2).*exp((r-q).*T).*normcdf(d2) + alpha.exp*((r-q).*T).*normcdf(d3) - (l./s).*normcdf(d4));
所以,我似乎无法弄清楚 Octave 有什么问题。
如果您能对此有所了解,我将不胜感激。我确信一定有一些我忽略的小事
【问题讨论】:
-
与错误关联的行是哪一行?
-
最后一行中的
alpha.exp*是您帖子中的错字还是实际代码? -
另外,问题出在这部分的最后一行:
s(0.5*sigma^2.。您正在使用s之后括号右侧的所有内容来索引s。也许你的意思是s*(0.5 *sigma^2?