Я не могу понять источник этой ошибки:
строка 327 в функции возврата функции_wrapper (* (wrapper_args + args)) TypeError: SSVOptionPriceObjFun c () отсутствует 1 обязательный позиционный аргумент: ' marketVolSurface '
Соответствующий код указан ниже:
x0 = [1.0, 0.0] # (lambda0, rho)
x0 = np.asarray(x0)
args = (spot, 0.01*r, daysInYear, mktPrices, volSurface)
# constraints: lambd0 >0, -1<= rho <=1
boundsHere = ((0, None), (-1, 1))
res = minimize(SSVOptionPriceObjFunc, x0, args, method='L-BFGS-B', jac=None,
bounds=boundsHere,options={'xtol': 1e-8, 'disp': True})
Ниже приведена минимизируемая функция. Первые два аргумента являются свободными переменными, а остальные пять фиксируются как параметры.
def SSVOptionPriceObjFunc(lambda0, rho, spot, spotInterestRate, daysInYear, marketPrices,
marketVolSurface):
Я хочу найти (lambd0, rho), дающий минимум. Из отладчика кажется, что мое первоначальное предположение x0 интерпретируется как одна переменная, а не как вектор, что дает ошибку об отсутствующем позиционном аргументе. Я попытался передать x0 в виде списка, кортежа и ndarray; все терпят неудачу. Может кто-то заметить ошибку или предложить обходной путь? Заранее спасибо.
Обновление: я нашел решение: используйте функцию-обертку из пакета functools, чтобы установить параметры. импортировать functools как ft SSVOptionPriceObjFuncWrapper = ft.partial (SSVOptionPriceObjFun c, spot = spot, spotInterestRate = 0.01 * r, daysInYear = daysInYear, marketPrices = mktPrices, marketVolSurface = volSurface) 101Процентное сальдо по объему * 1013 args = Нет
Спасибо за ответы.