diff options
| -rw-r--r-- | pyisda/curve.pyx | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/pyisda/curve.pyx b/pyisda/curve.pyx index 71b61b3..091ee6b 100644 --- a/pyisda/curve.pyx +++ b/pyisda/curve.pyx @@ -493,24 +493,32 @@ cdef class YieldCurve(Curve): Parameters ---------- - date : :class:`datetime.date` + d2 : either a :class:`datetime.date` or a list of :class:`datetime.date`, or a pandas Series of Timestamp. Returns ------- - float + float, or numpy array. """ cdef: const TCurve* curve = get_TCurve(self) np.ndarray r c_datetime.date d size_t i + long[::1] np_dates if d1 is None: if isinstance(d2, np.ndarray): r = np.zeros_like(d2) - for i, e in enumerate(d2): + for i, d in enumerate(d2): r[i] = JpmcdsForwardZeroPrice(curve, curve.fBaseDate, - pydate_to_TDate(d2[i])) + pydate_to_TDate(d)) + return r + elif isinstance(d2, pd.Series): + np_dates = d2.values.view("int") + r = np.zeros(np_dates.size) + for i in range(r.size): + r[i] = JpmcdsForwardZeroPrice(curve, curve.fBaseDate, + np_dates[i] // (1_000_000_000 * 86400) + 134774) return r else: return JpmcdsForwardZeroPrice(curve, curve.fBaseDate, |
