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