diff options
| -rw-r--r-- | pyisda/curve.pyx | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/pyisda/curve.pyx b/pyisda/curve.pyx index 38ec250..e805e86 100644 --- a/pyisda/curve.pyx +++ b/pyisda/curve.pyx @@ -488,6 +488,32 @@ cdef class YieldCurve(Curve): <double>basis, dcc(day_count_conv)), JpmcdsFreeTCurve) return yc + def bump(self, epsilon): + cdef: + YieldCurve yc = YieldCurve.__new__(YieldCurve) + const TCurve* curve = get_TCurve(self) + TCurve* new_curve = <TCurve*>malloc(sizeof(TCurve)) + TRatePt *ptr1, *ptr2 + int N = curve.fNumItems + int i + + new_curve.fNumItems = N + new_curve.fBaseDate = curve.fBaseDate + new_curve.fBasis = curve.fBasis + new_curve.fArray = <TRatePt*>malloc(N * sizeof(TRatePt)) + new_curve.fDayCountConv = curve.fDayCountConv + ptr1 = curve.fArray + ptr2 = new_curve.fArray + for i in range(N): + ptr2.fDate = ptr1.fDate + ptr2.fRate = ptr1.fRate + epsilon + preinc(ptr1) + preinc(ptr2) + + yc.dates = vector[TDate](self.dates) + yc._thisptr.reset(new_curve, JpmcdsFreeTCurve) + return yc + def discount_factor(self, d2, d1=None): """ computes the discount factor at a given date. |
