From 3b3d53ea09d054c3bd909ae632dded1d3758ea86 Mon Sep 17 00:00:00 2001 From: Guillaume Horel Date: Tue, 17 Nov 2020 17:24:07 -0500 Subject: allow to pass array of dates --- pyisda/curve.pyx | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/pyisda/curve.pyx b/pyisda/curve.pyx index 1cf7f23..87d613e 100644 --- a/pyisda/curve.pyx +++ b/pyisda/curve.pyx @@ -5,7 +5,7 @@ from .date cimport (JpmcdsStringToDateInterval, pydate_to_TDate, dcc, TMonthDayY JpmcdsDateFromBusDaysOffset, JpmcdsStringToDayCountConv, ACT_360, BadDay, FOLLOW, MODIFIED, NONE) from .date import dcc_tostring -from .date cimport _previous_twentieth, _roll_date +from .date cimport _previous_twentieth, _roll_date, c_datetime from .cdsone cimport JpmcdsStringToStubMethod from .legs cimport (JpmcdsCdsContingentLegMake, JpmcdsCdsFeeLegMake, JpmcdsContingentLegPV, JpmcdsFeeLegPV, FeeLegAI, JpmcdsFeeLegFree) @@ -219,10 +219,22 @@ cdef class Curve(object): ------- float """ - cdef const TCurve* curve = get_TCurve(self) + cdef: + const TCurve* curve = get_TCurve(self) + np.ndarray r + c_datetime.date d + size_t i + if d1 is None: - return JpmcdsForwardZeroPrice(curve, curve.fBaseDate, - pydate_to_TDate(d2)) + if isinstance(d2, np.ndarray): + r = np.zeros_like(d2) + for i, e in enumerate(d2): + r[i] = JpmcdsForwardZeroPrice(curve, curve.fBaseDate, + pydate_to_TDate(d2[i])) + return r + else: + return JpmcdsForwardZeroPrice(curve, curve.fBaseDate, + pydate_to_TDate(d2)) else: return JpmcdsForwardZeroPrice(curve, pydate_to_TDate(d1), pydate_to_TDate(d2)) -- cgit v1.2.3-70-g09d2