summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--pyisda/curve.pyx22
1 files changed, 11 insertions, 11 deletions
diff --git a/pyisda/curve.pyx b/pyisda/curve.pyx
index c2624c2..57ef1f0 100644
--- a/pyisda/curve.pyx
+++ b/pyisda/curve.pyx
@@ -541,6 +541,7 @@ cdef class SpreadCurve(Curve):
cdef TStubMethod stub_type
if JpmcdsStringToStubMethod(b"f/s", &stub_type) != 0:
+ free(end_dates_c)
raise ValueError("can't convert stub")
cdef int result
@@ -564,6 +565,7 @@ cdef class SpreadCurve(Curve):
free(end_dates_c)
cdef list r = []
if result != SUCCESS:
+ free(par_spreads)
raise ValueError("can't compute par spread")
else:
for i in range(n_dates):
@@ -582,24 +584,22 @@ cdef class SpreadCurve(Curve):
def fill_curve(SpreadCurve sc, TDate[:] end_dates):
cdef size_t n_dates = end_dates.shape[0]
- cdef double* rates = <double*>malloc(n_dates * sizeof(TDate))
-
cdef size_t i
cdef TDate base_date = sc._thisptr.get().fBaseDate
cdef double t
+ cdef TCurve* curve = JpmcdsNewTCurve(sc._thisptr.get().fBaseDate,
+ n_dates,
+ 5000.,
+ 2)
+ cdef TRatePt* it = curve.fArray
+
for i in range(n_dates):
t = (end_dates[i] - base_date)/365.
- rates[i] = -log(JpmcdsForwardZeroPrice(sc._thisptr.get(), base_date,
- end_dates[i])) / t
+ it[i].fDate = end_dates[i]
+ it[i].fRate = -log(JpmcdsForwardZeroPrice(sc._thisptr.get(), base_date,
+ end_dates[i])) / t
- cdef TCurve* curve = JpmcdsMakeTCurve(sc._thisptr.get().fBaseDate,
- &end_dates[0],
- rates,
- n_dates,
- 5000.,
- 2)
cdef SpreadCurve sc_new = SpreadCurve.__new__(SpreadCurve)
sc_new._thisptr = make_shared(curve)
sc_new.ticker = sc.ticker
- free(rates)
return sc_new