MATLAB中某些输入值的负选项价格?

时间:2015-08-18 15:15:45

标签: matlab quantitative-finance

在测试算法的过程中,我使用在MATLAB的金融工具箱中实现的标准定价函数 blsprice 计算随机输入值的期权价格。

令人惊讶的是(至少对我而言)
对于某些输入值组合,该函数似乎返回负选项价格。

作为一个例子,请采取以下措施:

> [Call,Put]=blsprice(67.6201,170.3190,0.0129,0.80,0.1277)

Call =-7.2942e-15
Put = 100.9502

如果我将到期时间更改为0.790.81,则该值会像我预期的那样变为非负数。

你们有没有人经历过类似的事情,并且可以提出一个简短的解释为什么会发生这种情况?

2 个答案:

答案 0 :(得分:2)

我不知道您使用的是哪个版本的金融工具箱,但对我来说(TB 2007b)它运行良好。

运行时:

[Call,Put]=blsprice(67.6201,170.3190,0.0129,0.80,0.1277)

我得到以下内容:

Call = 9.3930e-016
Put = 100.9502

这确实是积极的

答案 1 :(得分:1)

有点晚了,但我之前遇到过这样的事情。小负值可归因于用于计算累积正态分布的例程中的数字舍入误差和/或截断误差。

如您所知,计算机并不完美,并且在所有计算中始终存在小的数值误差,因此在我看来,应该问的问题是 - 使用的输入参数的准确性是多少,因此误差容限是多少?输出。

我之前遇到的方式是,在金融方面,典型的年度股票价格回报差异大约为30%,这意味着平均回报通常采用大约30%/ sqrt的标准误差进行抽样(N)假设2年的数据大约约为+/- 1%(因此N = 260 x 2 = 520,您有另一个数据存在平稳假设的问题)。因此,在此基础上,鉴于误差容限,上面得到的答案可能被解释为零。

此外,我们通常会以精确/分精度工作,并且在此基础上,您的答案可能会被解释为零。

以为我会给我的2c希望如果你还在检查答案,这在某些方面会有所帮助!