From cd7c2f612050e692e804b4f51b7180ab540bbc59 Mon Sep 17 00:00:00 2001 From: Guillaume Horel Date: Tue, 5 Jul 2016 16:18:26 -0400 Subject: fix legs methods --- legs.pyx | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'legs.pyx') diff --git a/legs.pyx b/legs.pyx index 27bcf19..f45dce1 100644 --- a/legs.pyx +++ b/legs.pyx @@ -21,6 +21,18 @@ cdef class ContingentLeg: if self._thisptr is not NULL: free(self._thisptr) + def pv(self, today, step_in_date, value_date, ZeroCurve zc, SpreadCurve sc, + double recovery_rate): + cdef TDate today_c = pydate_to_TDate(today) + cdef TDate step_in_date_c = pydate_to_TDate(step_in_date) + cdef TDate value_date_c = pydate_to_TDate(value_date) + cdef double pv + if JpmcdsContingentLegPV(self._thisptr, today_c, value_date_c, step_in_date_c, + zc._thisptr, sc._thisptr, recovery_rate, &pv) == 0: + return pv + else: + raise ValueError + cdef class FeeLeg: def __cinit__(self, start_date, end_date, TBoolean pay_accrued_on_default, @@ -58,11 +70,11 @@ cdef class FeeLeg: def pv(self, today, step_in_date, value_date, ZeroCurve zc, SpreadCurve sc, TBoolean pay_accrued_at_start): - cdef today_c = pydate_to_TDate(today) - cdef step_in_date_c = pydate_to_TDate(step_in_date) - cdef value_date_c = pydate_to_TDate(value_date) + cdef TDate today_c = pydate_to_TDate(today) + cdef TDate step_in_date_c = pydate_to_TDate(step_in_date) + cdef TDate value_date_c = pydate_to_TDate(value_date) cdef double pv - if JpmcdsFeeLegPV(self._thisptr, today, step_in_date, value_date, + if JpmcdsFeeLegPV(self._thisptr, today_c, step_in_date_c, value_date_c, zc._thisptr, sc._thisptr, pay_accrued_at_start, &pv) == 0: return pv else: -- cgit v1.2.3-70-g09d2