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