2013-08-26 1 views
2

을 튜플 튜플 (안 "부동")를 연결할 수 있습니다 :형식 오류 : 유일한 문제는 쉽게 될 수 있도록 내가 어쨌든, 양해 해 주셔서 감사 파이썬에 새로 온 사람

나는 뉴턴를 호출하려고했던 것처럼 -raphson 메서드를 호출하여 통화/Put 옵션 가격에 대한 Black-Scholes 공식의 내재 변동성을 계산합니다. 우선 scipy.optimize의 newton 메서드는 함수의 0을 계산하는 것으로 보이지만 Black-Scholes 수식에서 함수의 값은 0이 아닌 옵션 가격이됩니다. (. 내가 프로그래밍에 대한 새로운 여기에, 그래서 내가 몇 가지 기술에 대한 확실하지 않다) 내가 좋아하는 일을하는 또 다른 함수를 작성해야 :

def f(sigma, price): 
    return bsformula(S0,K,r,T,q,sigma) - price 

다음 뉴턴 메소드를 호출하는 동안, 그것은 인수 소요

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 

는 이유는 말해 줄 수 있습니까? 그것을 고치는 방법? 많은 감사하겠습니다.

+1

괄호 안에'price'를 넣으십시오. 저는 여러분의 문제라고 확신합니다. –

+1

고마워요. 해봤지만 작동하지 않습니다. 같은 오류가 있습니다. – StayFoolish

+0

값 = newton (bsprice2, 0.5, args = (price,)) – Hrishi

답변

0

Newton-Raphson 방법은 특정 지점에서 미분 ("vega")이 너무 작아서 솔루션을 사냥하거나 찾지 못하기 때문에 묵시적 휘발성을 계산하는 데 적합하지 않습니다.

0에서 시작하여 특정 애플리케이션/타겟 시장에 대해 엄청나게 높은 변동성을 보이는 이분법을 사용하십시오. 원하는 경우 1000 %/년을 사용할 수 있습니다. 일반적인 변동성이 연간 25 % 인 경우 솔루션을 찾는 속도가 조금 느립니다.

관련 문제