summaryrefslogtreecommitdiffstats
path: root/zerocurve.pyx
diff options
context:
space:
mode:
authorGuillaume Horel <guillaume.horel@serenitascapital.com>2016-06-28 15:59:05 -0400
committerGuillaume Horel <guillaume.horel@serenitascapital.com>2016-06-28 15:59:05 -0400
commited43f3874ccbe7782595b225821230cfca02ceb7 (patch)
treeafb9304c0946c54fe7002ac6a5d000fbb1d8518e /zerocurve.pyx
parent60e49a606ae270fb4d455da1b565e0ea656ffb3c (diff)
downloadpyisda-ed43f3874ccbe7782595b225821230cfca02ceb7.tar.gz
cleanups
Diffstat (limited to 'zerocurve.pyx')
-rw-r--r--zerocurve.pyx21
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"
)