diff options
| author | Guillaume Horel <guillaume.horel@gmail.com> | 2017-05-15 15:22:40 -0400 |
|---|---|---|
| committer | Guillaume Horel <guillaume.horel@gmail.com> | 2017-05-15 17:00:51 -0400 |
| commit | 9e70d178a3db4569e3ff8307ebe9e0bdfdd8b3b5 (patch) | |
| tree | 2049f1888e847719e0020324118f0171465b7901 | |
| parent | f560b5dc519ab7af8aa78bf53d3463388c87f8c0 (diff) | |
| download | pyisda-9e70d178a3db4569e3ff8307ebe9e0bdfdd8b3b5.tar.gz | |
fix de/serialization of the ticker
| -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 |
