summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pyisda/curve.pyx16
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,