【发布时间】:2013-08-28 11:42:20
【问题描述】:
我是python新手,所以问题可能很简单,无论如何,感谢您的耐心:
当我试图调用 newton-raphson 方法来计算看涨/看跌期权定价的 Black-Scholes 公式中的隐含波动率时, 首先,scipy.optimize 中的牛顿方法似乎计算了函数的零点,但在 Black-Scholes 公式中,我希望函数的值是期权价格,而不是零。 (我是编程新手,所以我不确定某些技术。)我是否应该编写另一个函数来执行以下操作:
def f(sigma, price):
return bsformula(S0,K,r,T,q,sigma) - price
那么,在调用newton方法的时候,它需要一个args=()作为函数中的一个参数,我这样写:
value = newton(bsprice2, 0.5, args=price)
但收到此错误消息:
File "BS.py", line 36, in bsimpvol
value = newton(bsprice2, 0.5, args=float(price))
File "/usr/lib/python2.7/dist-packages/scipy/optimize/zeros.py", line 143, in newton
q0 = func(*((p0,) + args))
TypeError: can only concatenate tuple (not "float") to tuple
你能告诉我这是为什么吗?如何解决? 非常感谢。
【问题讨论】:
-
把你的
price放在括号里,我很确定这是你的问题 -
谢谢,我试过了,还是不行,同样的错误。
-
value = newton(bsprice2, 0.5, args=(price, ))
-
你试过让 args 成为一个元组吗?
-
args =(price,) 我刚刚发现,如果我这样更正它,它可以工作!
标签: python tuples typeerror newtons-method