diff options
| author | Guillaume Horel <guillaume.horel@gmail.com> | 2019-08-23 16:11:13 -0400 |
|---|---|---|
| committer | Guillaume Horel <guillaume.horel@gmail.com> | 2019-08-23 16:11:13 -0400 |
| commit | 3b698d9f788a6317136335ae2d82de03d7ed5260 (patch) | |
| tree | 6bb461d915feb6d3d2b575aa172086a8b344b5da | |
| parent | ab91fe7674fa7053c0e311a6526cd1cad342e42f (diff) | |
| download | pyisda-3b698d9f788a6317136335ae2d82de03d7ed5260.tar.gz | |
export start_date
| -rw-r--r-- | pyisda/credit_index.pxd | 2 | ||||
| -rw-r--r-- | pyisda/credit_index.pyx | 30 |
2 files changed, 20 insertions, 12 deletions
diff --git a/pyisda/credit_index.pxd b/pyisda/credit_index.pxd index eadb8f8..12d405f 100644 --- a/pyisda/credit_index.pxd +++ b/pyisda/credit_index.pxd @@ -14,7 +14,7 @@ cdef class CurveList: cdef vector[TDate] defaulted cdef class CreditIndex(CurveList): - cdef TDate start_date + cdef TDate _start_date cdef vector[TDate] _maturities cdef TContingentLeg** contingent_legs cdef TFeeLeg** fee_legs diff --git a/pyisda/credit_index.pyx b/pyisda/credit_index.pyx index 75e1067..da9a177 100644 --- a/pyisda/credit_index.pyx +++ b/pyisda/credit_index.pyx @@ -209,7 +209,7 @@ cdef class CurveList: cdef class CreditIndex(CurveList): def __init__(self, start_date, maturities, list curves, value_date=None): super().__init__(curves, value_date) - self.start_date = pydate_to_TDate(start_date) + self._start_date = pydate_to_TDate(start_date) for d in maturities: self._maturities.push_back(pydate_to_TDate(d)) @@ -220,10 +220,18 @@ cdef class CreditIndex(CurveList): cdef size_t i cdef pair[TContingentLeg_ptr, TFeeLeg_ptr] r for i in range(self._maturities.size()): - r = get_legs(self._maturities[i], self.start_date) + r = get_legs(self._maturities[i], self._start_date) self.contingent_legs[i] = r.first self.fee_legs[i] = r.second + @property + def start_date(self): + return TDate_to_pydate(self._start_date) + + @start_date.setter + def start_date(self, val): + self._start_date = pydate_to_TDate(val) + def __dealloc__(self): if self.contingent_legs is not NULL: for i in range(self._maturities.size()): @@ -263,7 +271,7 @@ cdef class CreditIndex(CurveList): def __reduce__(self): return (self.__class__, - (TDate_to_pydate(self.start_date), self.maturities, self.curves, + (self.start_date, self.maturities, self.curves, TDate_to_pydate(self.base_date))) def __hash__(self): @@ -289,7 +297,7 @@ cdef class CreditIndex(CurveList): h ^= Hash64(<char*>buf, buf_size) free(buf) - h = Hash64WithSeed(<char*>&self.start_date, sizeof(TDate), h) + h = Hash64WithSeed(<char*>&self._start_date, sizeof(TDate), h) h = Hash64WithSeed(<char*>&self.base_date, sizeof(TDate), h) h = Hash64WithSeed(<char*>self._maturities.data(), sizeof(TDate) * self._maturities.size(), h) h = Hash64WithSeed(<char*>self._weights.data(), sizeof(double) * self._weights.size(), h) @@ -369,7 +377,7 @@ cdef class CreditIndex(CurveList): int i = get_maturity_index(maturity_c, self._maturities) if i == -1: - legs = get_legs(maturity_c, self.start_date) + legs = get_legs(maturity_c, self._start_date) else: legs.first = self.contingent_legs[i] legs.second = self.fee_legs[i] @@ -415,7 +423,7 @@ cdef class CreditIndex(CurveList): i = get_maturity_index(maturity_c, self._maturities) if i == -1: legs = get_legs(maturity_c, - self.start_date) + self._start_date) else: legs.first = self.contingent_legs[i] legs.second = self.fee_legs[i] @@ -430,7 +438,7 @@ cdef class CreditIndex(CurveList): i = get_maturity_index(maturity_c, self._maturities) if i == -1: legs = get_legs(maturity_c, - self.start_date) + self._start_date) else: legs.first = self.contingent_legs[i] legs.second = self.fee_legs[i] @@ -456,7 +464,7 @@ cdef class CreditIndex(CurveList): double* recovery_rate with nogil: - cl = JpmcdsCdsContingentLegMake(self.start_date, + cl = JpmcdsCdsContingentLegMake(self._start_date, maturity_c, 1., True) @@ -493,7 +501,7 @@ cdef class CreditIndex(CurveList): found = get_maturity_index(maturity_c, self._maturities) if found == -1: JpmcdsStringToStubMethod(b"f/s", &stub_type) - fl = JpmcdsCdsFeeLegMake(self.start_date, + fl = JpmcdsCdsFeeLegMake(self._start_date, maturity_c, True, NULL, @@ -547,7 +555,7 @@ cdef class CreditIndex(CurveList): self._maturities[i] = pydate_to_TDate(val[i]) free(self.contingent_legs[i]) JpmcdsFeeLegFree(self.fee_legs[i]) - r = get_legs(self._maturities[i], self.start_date) + r = get_legs(self._maturities[i], self._start_date) self.contingent_legs[i] = r.first self.fee_legs[i] = r.second @@ -629,7 +637,7 @@ cdef class CreditIndex(CurveList): JpmcdsCdsParSpreads( self.base_date, self.base_date + 1, - self.start_date, + self._start_date, n[1], schedule_ptr, True, |
