Quiero calcular el rendimiento de los bonos con el precio de mercado y los cupones. Intento replicar C++ de ( https://mhittesdorf.wordpress.com/2013/03/03/introducing-quantlib-internal-rate-of-return/ ) en Python pero sin éxito. ¿Cómo usar el solucionador de "bisección" en quantlib-python?
solver = ql.Bisection()
solver_max = 0.5
solver_min = 0.1
solver_maxEvaluations = 1000
solution = solver.solve(?, solver_maxEvaluations, solver_min, solver_max)
No ImplementadoError: Número o tipo de argumentos incorrectos para la función sobrecargada "Bisection_solve".
Los posibles prototipos de C/C++ son:
Bisección::resolver(PyObjecto *,Real,Real,Real)
Bisección::resolver(PyObjecto *,Real,Real,Real,Real)
¿Cuál es el "Objeto Peyote" en este caso?
0 votos
Hola Kirill Dolmatov, ¡bienvenido a Quant.SE! Sin mirar el QuantLib por qué de hacer las cosas probablemente tiene sentido. Por qué no tratas de arreglar eso. Tal y como está la pregunta es: ¿hay otras formas? Que es bastante vaga y se puede responder con: Sí
0 votos
Tal vez sea más bien una cuestión de programación, pero creo que la API de QuantLib es el tema que nos ocupa.
0 votos
PYobject es sólo una envoltura para quantlib en Python.
0 votos
¿Has probado a eliminar el signo de interrogación? Tu mensaje de error es bastante obvio.
0 votos
@StudentT , pongo el signo de interrogación porque no sé qué debo poner. Intento poner "ql.FixedRateBond" pero me sale "RuntimeError: failed to call Python function". Es bastante obvio que si pongo el signo de interrogación me sale "SyntaxError: invalid syntax". ¿Tienes alguna idea de lo que debería poner?
0 votos
@KirillDolmatov No pongas nada. El wrapper de python te construirá el primer argumento. Pruébalo.
0 votos
@StudentT Entonces no entiendo qué solver será resolver. Pero he probado: solver = ql.Bisection() solver_max = 0.5 solver_min = 0.1 solver_maxEvaluations = 1000 solution = solver.solve(solver_maxEvaluations, solver_min, solver_max) Y obtengo el mismo error.
0 votos
@EstudianteT Creo que debe haber flujos de caja y npv ( Ejemplo de C++ ) Pero no sé cómo poner estos argumentos...