diff options
| author | Guillaume Horel <guillaume.horel@gmail.com> | 2022-07-15 10:12:19 -0400 |
|---|---|---|
| committer | Guillaume Horel <guillaume.horel@gmail.com> | 2022-07-15 10:12:19 -0400 |
| commit | 6efce8d802fe1ea7cd636fba6e06029666b9370d (patch) | |
| tree | d21d961dd91ad8912ddc1436df84409bbfca9255 | |
| parent | bcc1dfee4fab1672671ade3fd66596f572c3b257 (diff) | |
| download | pyisda-6efce8d802fe1ea7cd636fba6e06029666b9370d.tar.gz | |
allow to pass in calendar
| -rw-r--r-- | pyisda/credit_index.pxd | 1 | ||||
| -rw-r--r-- | pyisda/credit_index.pyx | 17 | ||||
| -rw-r--r-- | pyisda/legs.pyx | 5 |
3 files changed, 13 insertions, 10 deletions
diff --git a/pyisda/credit_index.pxd b/pyisda/credit_index.pxd index 7722a9b..42a9e85 100644 --- a/pyisda/credit_index.pxd +++ b/pyisda/credit_index.pxd @@ -19,3 +19,4 @@ cdef class CreditIndex(CurveList): cdef vector[TDate] _maturities cdef TContingentLeg** contingent_legs cdef TFeeLeg** fee_legs + cdef char* calendar diff --git a/pyisda/credit_index.pyx b/pyisda/credit_index.pyx index 2d63306..b7ab396 100644 --- a/pyisda/credit_index.pyx +++ b/pyisda/credit_index.pyx @@ -229,7 +229,7 @@ cdef class CurveList: @cython.auto_pickle(False) cdef class CreditIndex(CurveList): - def __init__(self, start_date, maturities, list curves, value_date=None): + def __init__(self, start_date, maturities, list curves, value_date=None, str calendar="NONE"): super().__init__(curves, value_date) self._start_date = pydate_to_TDate(start_date) for d in maturities: @@ -239,10 +239,11 @@ cdef class CreditIndex(CurveList): sizeof(TContingentLeg)) self.fee_legs = <TFeeLeg**> malloc(self._maturities.size() * sizeof(TFeeLeg)) + self.calendar = calendar 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.calendar) self.contingent_legs[i] = r.first self.fee_legs[i] = r.second @@ -399,7 +400,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, self.calendar) else: legs.first = self.contingent_legs[i] legs.second = self.fee_legs[i] @@ -445,7 +446,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, self.calendar) else: legs.first = self.contingent_legs[i] legs.second = self.fee_legs[i] @@ -460,7 +461,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, self.calendar) else: legs.first = self.contingent_legs[i] legs.second = self.fee_legs[i] @@ -578,7 +579,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.calendar) self.contingent_legs[i] = r.first self.fee_legs[i] = r.second @@ -826,7 +827,7 @@ cdef inline int get_maturity_index(TDate maturity, const vector[TDate]& maturiti return i cdef pair[TContingentLeg_ptr, TFeeLeg_ptr] get_legs(TDate maturity, - TDate start_date) nogil: + TDate start_date, char* cal) nogil: cdef: pair[TContingentLeg_ptr, TFeeLeg_ptr] r TStubMethod stub_type @@ -844,7 +845,7 @@ cdef pair[TContingentLeg_ptr, TFeeLeg_ptr] get_legs(TDate maturity, 1.0, ACT_360, # ACT_360 MODIFIED, # MODIFIED - b'NONE', + cal, True) return r diff --git a/pyisda/legs.pyx b/pyisda/legs.pyx index 06b9680..a04486c 100644 --- a/pyisda/legs.pyx +++ b/pyisda/legs.pyx @@ -97,10 +97,11 @@ cdef class FeeLeg: if True, protection starts at beginning of day. Default to True. stub : string, one of 'f/s', 'b/s', 'f/l', 'b/l', optional Default 'f/s' + cal : string, default NONE """ def __cinit__(self, start_date, end_date, bint pay_accrued_on_default, double notional, double coupon_rate, str payment_dcc='ACT/360', - bint protect_start=True, str stub="f/s"): + bint protect_start=True, str stub="f/s", str cal="NONE"): cdef TStubMethod stub_type @@ -116,7 +117,7 @@ cdef class FeeLeg: coupon_rate, dcc(payment_dcc), MODIFIED, - b'NONE', + cal, protect_start) if self._thisptr is NULL: raise ValueError |
