diff options
| -rw-r--r-- | pyisda/credit_index.pyx | 48 |
1 files changed, 23 insertions, 25 deletions
diff --git a/pyisda/credit_index.pyx b/pyisda/credit_index.pyx index 428fea9..f1cb621 100644 --- a/pyisda/credit_index.pyx +++ b/pyisda/credit_index.pyx @@ -498,10 +498,9 @@ cdef class CreditIndex(CurveList): TDate cash_settle_date_c = pydate_to_TDate(cash_settle_date) TDate maturity_c = pydate_to_TDate(maturity) TDate maturity_short_c - pair[TContingentLeg_ptr, TFeeLeg_ptr] legs_short - pair[TContingentLeg_ptr, TFeeLeg_ptr] legs_long + pair[TContingentLeg_ptr, TFeeLeg_ptr] legs_long, legs_short TDateInterval ivl - int i + Py_ssize_t i double carry double cl_pv_long, cl_pv_short, fl_pv_long, fl_pv_short np.npy_intp n = self._curves.size() @@ -569,28 +568,27 @@ cdef class CreditIndex(CurveList): TCurve* sc double* recovery_rate - with nogil: - with parallel(): - cl = JpmcdsCdsContingentLegMake(self._start_date, - maturity_c, - 1., - True) - cl_pv = 0.0 - for i in prange(self._curves.size()): - sc = <TCurve*>self._curves[i].get() - recovery_rate = <double*>(<char*>sc + self.offset_recovery_rates[i]) - # FIXME: do something better - if isnan(deref(recovery_rate)): - preinc(recovery_rate) - JpmcdsContingentLegPV(cl, - self.base_date, - cash_settle_date_c, - step_in_date_c, - yc.get_TCurve(), - sc, - deref(recovery_rate), - &cl_pv) - r += self._weights[i] * cl_pv + with nogil, parallel(): + cl = JpmcdsCdsContingentLegMake(self._start_date, + maturity_c, + 1., + True) + cl_pv = 0.0 + for i in prange(self._curves.size()): + sc = <TCurve*>self._curves[i].get() + recovery_rate = <double*>(<char*>sc + self.offset_recovery_rates[i]) + # FIXME: do something better + if isnan(deref(recovery_rate)): + preinc(recovery_rate) + JpmcdsContingentLegPV(cl, + self.base_date, + cash_settle_date_c, + step_in_date_c, + yc.get_TCurve(), + sc, + deref(recovery_rate), + &cl_pv) + r += self._weights[i] * cl_pv free(cl) return r |
