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