0
下記のコード(ほとんどのコードの最下部)に、scipyのoptimize.least_squaresをfminの代わりに実装したいと思います。しかし、私はfmin部分をleast_squaresに変更するときに次のエラーに遭遇し、これを解決する方法を知らない。 enter image description here ValueError:scipyのfminとleast_squaresをアンパックするには値が大きすぎます
何次のエラーメッセージがどういう意味: ValueErrorを:あまりにも多くの値はParameters
==========
sigma: float
volatility factor in diffusion term
lamb: float
jump intensity
mu: float
expected jump size
delta: float
standard deviation of jump
Returns
=======
RMSE: float
root mean squared error
'''
global i, min_RMSE
sigma, lamb, mu, delta = p0
if sigma < 0.0 or delta < 0.0 or lamb < 0.0:
return 500.0
se = []
for row, option in options.iterrows():
T = (option['Maturity'] - option['Date']).days/365.
r = option['Interest']
#absolut_error = abs(option['Call'] - option['Model'])
model_value = M76_value_call_FFT(S0, option['Strike'], T,
r, sigma, lamb, mu, delta)
se.append((model_value - option['Call']) ** 2)
RMSE = math.sqrt(sum(se)/len(se))
min_RMSE = min(min_RMSE, RMSE)
if i % 50 == 0:
print '%4d |' % i, np.array(p0), '| %7.3f | %7.3f' % (RMSE, min_RMSE)
print
i += 1
return RMSE
def generate_plot(opt, options):
#
# Calculating Model Prices
#
sigma, lamb, mu, delta = opt
options['Model'] = 0.0
for row, option in options.iterrows():
T = (option['Maturity'] - option['Date']).days/365.
options.loc[row, 'Model'] = M76_value_call_FFT(S0, option['Strike'],
T, r, sigma, lamb, mu, delta)
#
# Plotting
#
mats = sorted(set(options['Maturity']))
options = options.set_index('Strike')
for i, mat in enumerate(mats):
options[options['Maturity'] == mat][['Call', 'Model']].\
plot(style=['bs', 'r--'], title='%s' % str(mat)[:10],
grid=True)
plt.ylabel('Call Value')
plt.savefig('img/M76_calibration_3_%s.pdf' % i)
if __name__ == '__main__':
#
# Calibration
#
i = 0 # counter initialization
min_RMSE = 100 # minimal RMSE initialization
print('BRUTE')
p0 = sop.brute(M76_error_function_FFT, ((0, 0.01, 1),
(0, 0.3, 5), (-10, 0.01, 10),
(0, 0.01, 40)), finish=None)
# p0 = [0.15, 0.2, -0.3, 0.2]
print('FMIN')
opt = sop.fmin(M76_error_function_FFT, p0,
maxiter=500, maxfun=750,
xtol=0.000001, ftol=0.000001)
generate_plot(opt, options)
print options
あなたの質問に完全なエラーメッセージとバックトレース*を表示してください。 – cdarke
@cdarke私は下の私の答えでエラーメッセージと写真を添付しました。 :) – Hede
これは、@ HedeLGGustafssonの所在地ではありません。それは_question **のテキスト** _にしてください。画像は検索が難しく、コピーして貼り付けることができず、アクセシビリティに乏しい。 – Chris