diff options
| -rw-r--r-- | pyisda/curve.pxd | 1 | ||||
| -rw-r--r-- | pyisda/curve.pyx | 14 |
2 files changed, 12 insertions, 3 deletions
diff --git a/pyisda/curve.pxd b/pyisda/curve.pxd index 6ebba44..0937eed 100644 --- a/pyisda/curve.pxd +++ b/pyisda/curve.pxd @@ -156,7 +156,6 @@ cdef extern from "<memory>" namespace "std" nogil: cdef class Curve: cdef shared_ptr[TCurve] _thisptr - cdef str ticker cdef class YieldCurve(Curve): cdef TDate* _dates diff --git a/pyisda/curve.pyx b/pyisda/curve.pyx index 60f7bb4..c9ce6f7 100644 --- a/pyisda/curve.pyx +++ b/pyisda/curve.pyx @@ -284,7 +284,7 @@ cdef class YieldCurve(Curve): def __setstate__(self, state): super().__setstate__(state[:5]) self._ninstr = <int>state[5] - cdef Py_ssize_t size = sizeof(TRatePt) * self._ninstr + cdef size_t size = sizeof(TRatePt) * self._ninstr self._dates = <TDate*>malloc(size) memcpy(self._dates, <char*> state[6], size) @@ -389,7 +389,8 @@ cdef class SpreadCurve(Curve): def __init__(self, today, YieldCurve yc, start_date, step_in_date, cash_settle_date, end_dates, double[:] coupon_rates, double[:] upfront_rates, - double[:] recovery_rates, bint pay_accrued_on_default=True): + double[:] recovery_rates, bint pay_accrued_on_default=True, + ticker=None): cdef TDate today_c = pydate_to_TDate(today) cdef TDate step_in_date_c = pydate_to_TDate(step_in_date) @@ -445,9 +446,17 @@ cdef class SpreadCurve(Curve): raise ValueError("Didn't init the survival curve properly") else: self._thisptr = make_shared(curve) + self.ticker = ticker survival_probability = Curve.__forward_zero_price + def __getstate__(self): + return super().__getstate__() + (self.ticker,) + + def __setstate__(self, state): + super().__setstate__(state[:5]) + self.ticker = state[5] + @classmethod def from_flat_hazard(cls, base_date, double rate, Basis basis=CONTINUOUS, str day_count_conv='Actual/365F'): @@ -591,5 +600,6 @@ def fill_curve(SpreadCurve sc, TDate[:] end_dates): 2) cdef SpreadCurve sc_new = SpreadCurve.__new__(SpreadCurve) sc_new._thisptr = make_shared(curve) + sc_new.ticker = sc.ticker free(rates) return sc_new |
