¿Tenemos algún método directo para obtener la "última" y "próxima" fecha de flujo de caja y la cantidad desde la fecha de valoración en Quantlib Python usando una cantidad fija o flotante, contador de días, fecha de valoración, nocional, índice, frecuencia de pago, etc.? Por favor, sugiera.
Respuestas
¿Demasiados anuncios?
Chris Mc
Puntos
31
No creo que haya un método directo pero puedes implementar fácilmente esa lógica extendiendo la clase que quieras.
Aquí hay un ejemplo:
import QuantLib as ql
today = ql.Date().todaysDate()
calendar = ql.TARGET()
start = calendar.advance(today, 2, ql.Days)
maturity = calendar.advance(start, ql.Period('5y'))
fixedSchedule = ql.MakeSchedule(start, maturity, ql.Period('1Y'))
floatSchedule = ql.MakeSchedule(start, maturity, ql.Period('6M'))
class MyVanillaSwap(ql.VanillaSwap):
def fixedLegCashFlows(self):
return list(map(ql.as_coupon, self.fixedLeg()))
def nextFixed(self):
nextCashFlow = list(filter(lambda x: x.date() > today, self.fixedLegCashFlows()))[0]
return (nextCashFlow.date(), nextCashFlow.amount())
swap = MyVanillaSwap(
ql.VanillaSwap.Payer, 250e6,
fixedSchedule, 0.0195, ql.Thirty360(),
floatSchedule, ql.Euribor6M(), 0, ql.Actual360()
)
swap.nextFixed()
La salida sería:
(Date(12,3,2021), 4875000.000000019)
Brad Tutterow
Puntos
5628
Métodos nextCashFlow
y previousCashFlow
se añadieron a la CashFlows
en Python en una reciente solicitud de extracción (véase https://github.com/lballabio/QuantLib-SWIG/pull/255 ) y estará disponible en la versión 1.19. Una vez que se publique (o antes si puedes compilar el master actual desde GitHub), podrás escribir
CashFlows.nextCashFlow(swap.fixedLeg())