私はPythonを初めて使用するので、質問は簡単かもしれませんが、しばらくお待ちください:
ニュートンラフソン法を呼び出して、コール/プットオプションの価格設定のブラックショールズ式のインプライドボラティリティを計算しようとしていたので、最初に、scipy.optimize のニュートン法は関数のゼロを計算するようですが、Black- Scholes 式では、関数の値をゼロではなくオプション価格にしたいと考えています。(私はここでプログラミングについては初めてなので、いくつかのテクニックについてはわかりません。)次のようなことを行う別の関数を作成する必要があります。
def f(sigma, price):
return bsformula(S0,K,r,T,q,sigma) - price
次に、newton メソッドを呼び出すときに、args=() を関数の 1 つのパラメーターとして取ります。次のように記述します。
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
その理由を教えてください。修正方法は?とても有難い。