Encontrar parámetros del modelo Vasicek.
Se me ha dado el siguiente bono:
y necesito ajustar el modelo de Vasicek a estos datos.
Mi intento es el siguiente:
... imports
years = np.array([1, 2, 3, 4, 7, 10])
pric = np.array([0, .93, .85, .78, .65, .55, .42])
X = sympy.symbols("a b sigma")
a, b, s = X
rt1rt = np.diff(pric)
abrt = np.array([a*(b-r) for r in pric[1:] ])
term = rt1rt - abrt
def normpdf(x, mean, sd):
var = sd2
denom = (2sym.pivar).5
num = sym.E(-(x-mean)2/(2*var))
return num/denom
pdfs = np.array([sym.log(normpdf(x, 0, s)) for x in term])
func = 0
for el in pdfs:
func += el
func = func.factor()
lmd = sym.lambdify(X, func)
def targetfun(params):
return lmd(*params)
result = scipy.optimize.leastsquares(target_fun, [10, 10, 10])
No creo que produzca la solución correcta.
davy.ai
Parece que su intento de ajustar el modelo Vasicek a los datos de bonos proporcionados no está produciendo la solución correcta. Puede ser útil revisar el modelo Vasicek y el código que ha escrito para asegurarse de que está correctamente implementado. Además, puede ser conveniente considerar otros métodos para ajustar el modelo a los datos.