Si usted no permite ninguna forma de inferencia (por ejemplo, si un usuario proporcionara algunas fechas que no definieran un horario de intercambio regular y necesitara inferir remanentes, o si las fechas se suministraran con tenores como '1y1y') entonces consideraría que un horario está totalmente definido por los siguientes parámetros:
effective: datetime,
front_stub: Opcional[datetime],
back_stub: Opcional[datetime],
termination: datetime,
frequency: str,
roll: int | str,
modifier: str,
calendar: lista
Debe haber un horario regular definido entre las siguientes fechas. Un horario regular es aquel que tiene períodos correctos y completamente calificados en cada período, alineándose con el roll:
- effective y termination (si no hay remanentes)
- effective y back_stub (si no hay front_stub)
- front_stub y termination (si no hay back_stub)
- front_stub y back_stub (si ambos se proporcionan)
Para el horario regular debe ser construido progresando hacia adelante desde la fecha inicial por el número establecido de meses según el horario y estableciendo la fecha en el mes de acuerdo con el roll que puede ser numérico o algo sistemáticamente definido como final de mes o fecha IMM.
Una vez que estas fechas hayan sido determinadas (fechas efectivamente no ajustadas), deben ajustarse utilizando un modifier y un día hábil de calendar empresarial. Esto produce todos los valores asociados con un Horario.
Así es como rateslib determina los horarios:
# PYTHON
from rateslib.scheduling import Schedule
s = Schedule(
effective=dt(2015, 3, 18),
termination=dt(2016, 3, 16),
frequency="q",
roll="imm",
modifier="mf",
calendar="ldn",
payment_lag=0,
)
###
freq: Q, stub: SHORTFRONT, roll: imm, pay lag: 0, modifier: mf
Period Unadj Acc Start Unadj Acc End Acc Start Acc End Payment
0 Regular 2015-03-18 2015-06-17 2015-03-18 2015-06-17 2015-06-17
1 Regular 2015-06-17 2015-09-16 2015-06-17 2015-09-16 2015-09-16
2 Regular 2015-09-16 2015-12-16 2015-09-16 2015-12-16 2015-12-16
3 Regular 2015-12-16 2016-03-16 2015-12-16 2016-03-16 2016-03-16
Esta página tiene más información: Documentos de Horario
Cuando se comienza a inferir, cuando el usuario no suministra todos los campos necesarios y deben ser inferidos a partir de las opciones más comunes, se vuelve bastante complejo combinatoriamente. Trato de discutir algunas de las opciones en el capítulo sobre Programación en este libro: Codificación de Tasas de Interés