diff options
| author | Guillaume Horel <guillaume.horel@serenitascapital.com> | 2016-06-28 15:59:05 -0400 |
|---|---|---|
| committer | Guillaume Horel <guillaume.horel@serenitascapital.com> | 2016-06-28 15:59:05 -0400 |
| commit | ed43f3874ccbe7782595b225821230cfca02ceb7 (patch) | |
| tree | afb9304c0946c54fe7002ac6a5d000fbb1d8518e /zerocurve.pyx | |
| parent | 60e49a606ae270fb4d455da1b565e0ea656ffb3c (diff) | |
| download | pyisda-ed43f3874ccbe7782595b225821230cfca02ceb7.tar.gz | |
cleanups
Diffstat (limited to 'zerocurve.pyx')
| -rw-r--r-- | zerocurve.pyx | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/zerocurve.pyx b/zerocurve.pyx index 2918bae..e56a38e 100644 --- a/zerocurve.pyx +++ b/zerocurve.pyx @@ -2,16 +2,17 @@ from cpython cimport datetime from libc.stdlib cimport malloc, free from pyisda.zerocurve cimport JpmcdsBuildIRZeroCurve from pyisda.yearfrac cimport dcc -from pyisda.convert cimport JpmcdsStringToDateInterval, JpmcdsDateIntervalToFreq, JpmcdsDate +from pyisda.date cimport (JpmcdsStringToDateInterval, JpmcdsDateIntervalToFreq, + JpmcdsDate, JpmcdsDateFwdThenAdjust, NONE) cdef int SUCCESS = 0 -cdef class Tcurve: +cdef class ZeroCurve: cdef TCurve* _thisptr cdef TDate* _dates def __cinit__(self, date, str types, - list dates, double[:] rates, + list periods, double[:] rates, str mm_dcc, str fixed_swap_period, str float_swap_period, str fixed_swap_dcc, str float_swap_dcc, char bad_day_conv, char* holidayFile): @@ -28,10 +29,16 @@ cdef class Tcurve: else: raise ValueError - cdef TDate* _dates = <TDate*>malloc(len(dates) * sizeof(TDate)) + cdef TDate* _dates = <TDate*>malloc(len(periods) * sizeof(TDate)) + cdef TDateInterval tmp - for i, d in enumerate(date): - _dates[i] = JpmcdsDate(d.year, d.month, d.day) + for i, p in enumerate(periods): + period_bytes = p.encode('utf-8') + if JpmcdsStringToDateInterval(p, routine, &tmp) != SUCCESS: + raise ValueError + if JpmcdsDateFwdThenAdjust(value_date, &tmp, NONE, + "None", &_dates[i]) != SUCCESS: + raise ValueError('Invalid interval') fixed_bytes = fixed_swap_period.encode('utf-8') float_bytes = float_swap_period.encode('utf-8') @@ -47,7 +54,7 @@ cdef class Tcurve: raise ValueError self._thisptr = JpmcdsBuildIRZeroCurve( value_date, types_bytes, _dates, - &rates[0], len(dates), dcc(mm_dcc), <long> fixed_freq, + &rates[0], len(periods), dcc(mm_dcc), <long> fixed_freq, <long> float_freq, dcc(fixed_swap_dcc), dcc(fixed_swap_dcc), <long>bad_day_conv, "None" ) |
