diff options
| author | Guillaume Horel <guillaume.horel@gmail.com> | 2019-02-25 12:21:44 -0500 |
|---|---|---|
| committer | Guillaume Horel <guillaume.horel@gmail.com> | 2019-02-25 12:21:44 -0500 |
| commit | 8e5b21e901c08d0c6b0729879c565c98747501aa (patch) | |
| tree | fc6d822eaac9eca58f08ae2b107aa385e28f24e3 | |
| parent | b82e9ec45398d680baef09cd6694e9749308dba4 (diff) | |
| download | pyisda-more_enum.tar.gz | |
fix bugsmore_enum
| -rw-r--r-- | pyisda/cdsone.pxd | 10 | ||||
| -rw-r--r-- | pyisda/cdsone.pyx | 6 | ||||
| -rw-r--r-- | pyisda/credit_index.pyx | 10 | ||||
| -rw-r--r-- | pyisda/curve.pxd | 25 | ||||
| -rw-r--r-- | pyisda/curve.pyx | 35 | ||||
| -rw-r--r-- | pyisda/date.pxd | 50 | ||||
| -rw-r--r-- | pyisda/date.pyx | 14 | ||||
| -rw-r--r-- | pyisda/legs.pxd | 8 | ||||
| -rw-r--r-- | pyisda/legs.pyx | 4 | ||||
| -rw-r--r-- | pyisda/optim.pyx | 6 | ||||
| -rw-r--r-- | pyisda/utils.py | 4 |
11 files changed, 90 insertions, 82 deletions
diff --git a/pyisda/cdsone.pxd b/pyisda/cdsone.pxd index d40a7f2..e1e4eea 100644 --- a/pyisda/cdsone.pxd +++ b/pyisda/cdsone.pxd @@ -1,4 +1,4 @@ -from .date cimport TDateInterval +from .date cimport TDateInterval, _BadDayConvention, DayCountConvention from .curve cimport TCurve cdef extern from "isda/stub.h" nogil: @@ -23,8 +23,8 @@ cdef extern from "isda/cdsone.h" nogil: TBoolean payAccruedOnDefault, TDateInterval* dateInterval, TStubMethod* stubType, - long accrueDCC, - long badDayConv, + DayCountConvention accrueDCC, + _BadDayConvention badDayConv, char* calendar, TCurve* discCurve, double oneSpread, @@ -42,8 +42,8 @@ cdef extern from "isda/cdsone.h" nogil: TBoolean payAccruedOnDefault, TDateInterval* dateInterval, TStubMethod* stubType, - long accrueDCC, - long badDayConv, + DayCountConvention accrueDCC, + _BadDayConvention badDayConv, char* calendar, TCurve* discCurve, double upfrontCharge, diff --git a/pyisda/cdsone.pyx b/pyisda/cdsone.pyx index 5dd8040..f80fc1d 100644 --- a/pyisda/cdsone.pyx +++ b/pyisda/cdsone.pyx @@ -1,5 +1,5 @@ from .curve cimport YieldCurve -from .date cimport JpmcdsMakeDateInterval, pydate_to_TDate, dcc +from .date cimport JpmcdsMakeDateInterval, pydate_to_TDate, ACT_360, _FOLLOW cdef int SUCCESS = 0 @@ -59,7 +59,7 @@ def upfront_charge(date, value_date, benchmark_start_date, stepin_date, raise ValueError("can't convert to date interval") if JpmcdsCdsoneUpfrontCharge(today, value_date_c, benchmark_start_date_c, stepin_date_c, start_date_c, end_date_c, coupon_rate, pay_accrued_on_default, - &ivl, &stub, dcc("ACT/360"), b'F', b"None", + &ivl, &stub, ACT_360, _FOLLOW, b"None", yc._thisptr.get(), spread, recovery_rate, pay_accrued_at_start, &result) == SUCCESS: return result @@ -120,7 +120,7 @@ def spread_from_upfront(date, value_date, benchmark_start_date, stepin_date, raise ValueError("can't convert to date interval") if JpmcdsCdsoneSpread(today, value_date_c, benchmark_start_date_c, stepin_date_c, start_date_c, end_date_c, coupon_rate, pay_accrued_on_default, - &ivl, &stub, dcc("ACT/360"), b'F', b"None", + &ivl, &stub, ACT_360, _FOLLOW, b"None", yc._thisptr.get(), upfront, recovery_rate, pay_accrued_at_start, &result) == SUCCESS: return result diff --git a/pyisda/credit_index.pyx b/pyisda/credit_index.pyx index 8d2bf34..5885866 100644 --- a/pyisda/credit_index.pyx +++ b/pyisda/credit_index.pyx @@ -17,7 +17,7 @@ from .curve cimport (SpreadCurve, JpmcdsCopyCurve, tweak_curve, YieldCurve, from .date cimport (pydate_to_TDate, TDate_to_pydate, ACT_365F, JpmcdsDtFwdAny, TDateInterval, JpmcdsMakeDateInterval) from .cdsone cimport JpmcdsStringToStubMethod, TStubMethod -from .date cimport ACT_365F +from .date cimport ACT_365F, ACT_360, _MODIFIED cimport numpy as np np.import_array() import pandas as pd @@ -503,8 +503,8 @@ cdef class CreditIndex(CurveList): &stub_type, 1., 1.0, - 3, # ACT_360 - <long>b'M', # MODIFIED + ACT_360, # ACT_360 + _MODIFIED, # MODIFIED b'NONE', True) else: @@ -632,8 +632,8 @@ cdef pair[TContingentLeg_ptr, TFeeLeg_ptr] get_legs(TDate maturity, &stub_type, 1., 1.0, - 3, # ACT_360 - <long>b'M', # MODIFIED + ACT_360, # ACT_360 + _MODIFIED, # MODIFIED b'NONE', True) return r diff --git a/pyisda/curve.pxd b/pyisda/curve.pxd index 05a5995..04e85d6 100644 --- a/pyisda/curve.pxd +++ b/pyisda/curve.pxd @@ -1,4 +1,5 @@ from .cdsone cimport TStubMethod +from .date cimport DayCountConvention, _BadDayConvention from .legs cimport TContingentLeg, TFeeLeg from libcpp.vector cimport vector from libcpp cimport bool @@ -32,8 +33,8 @@ cdef extern from "isda/bastypes.h": int fNumItems TRatePt* fArray TDate fBaseDate - double fBasis - long fDayCountConv + Compounding fBasis + DayCountConvention fDayCountConv ctypedef struct TRatePt: TDate fDate @@ -119,12 +120,12 @@ cdef extern from "isda/cds.h" nogil: # Interval between coupon payments. Can be NULL when 3M is assumed TDateInterval *couponInterval, # Day count convention for coupon payment. Normal is ACT_360 - long paymentDcc, + DayCountConvention paymentDcc, # If the startDate and endDate are not on cycle, then this parameter # determines location of coupon dates. */ const TStubMethod *stubType, # Bad day convention for adjusting coupon payment dates. */ - long badDayConv, + _BadDayConvention badDayConv, # Calendar used when adjusting coupon dates. Can be NULL which equals # a calendar with no holidays and including weekends. */ const char *calendar @@ -150,9 +151,9 @@ cdef extern from "isda/cds.h" nogil: # determines location of coupon dates. TStubMethod *stubType, # Day count convention for coupon payment. Normal is ACT_360 - long paymentDcc, + DayCountConvention paymentDcc, # Bad day convention for adjusting coupon payment dates. - long badDayConv, + _BadDayConvention badDayConv, # Calendar used when adjusting coupon dates. Can be NULL which equals # a calendar with no holidays and including weekends. char *calendar, @@ -172,14 +173,14 @@ cdef extern from "isda/tcurve.h" nogil: TDate *dates, double *rates, int numPts, - double basis, - long dayCountConv) + Compounding basis, + DayCountConvention dayCountConv) TCurve* JpmcdsCopyCurve(TCurve* curve) TDate* JpmcdsDatesFromCurve(TCurve* curve) TCurve* JpmcdsNewTCurve(TDate baseDate, # (I) Base date int numPts, # (I) Length of dates & rates - double basis, # (I) Compounding periods/year - long dayCountConv) + Compounding basis, # (I) Compounding periods/year + DayCountConvention dayCountConv) cdef extern from "isda/cxzerocurve.h" nogil: double JpmcdsZeroPrice(TCurve* curve, TDate date) @@ -189,7 +190,7 @@ cdef extern from "isda/cxzerocurve.h" nogil: cdef double survival_prob(TCurve* curve, TDate start_date, TDate maturity_date, double eps) nogil cdef extern from "isda/cfinanci.h": - cdef enum Compounding: + ctypedef enum Compounding: CONTINUOUS "JPMCDS_CONTINUOUS_BASIS" DISCOUNT_RATE "JPMCDS_DISCOUNT_RATE" SIMPLE_RATE "JPMCDS_SIMPLE_RATE" @@ -199,7 +200,7 @@ cdef extern from "isda/cfinanci.h": int JpmcdsDiscountToRateYearFrac(double discount, # (I) Discount factor double yearFraction, # (I) See JpmcdsDayCountFraction - double basis, # (I) Basis for the rate + Compounding basis, # (I) Basis for the rate double *rate) nogil cdef extern from "isda/macros.h": cdef double JPMCDS_MAX_RATE diff --git a/pyisda/curve.pyx b/pyisda/curve.pyx index ade1de1..5de3859 100644 --- a/pyisda/curve.pyx +++ b/pyisda/curve.pyx @@ -2,7 +2,8 @@ from libc.math cimport log1p, log, exp, isnan from .date cimport (JpmcdsStringToDateInterval, pydate_to_TDate, dcc, TMonthDayYear, JpmcdsDateIntervalToFreq, JpmcdsDateFwdThenAdjust, TDate_to_pydate, JpmcdsDateFromBusDaysOffset, JpmcdsStringToDayCountConv, ACT_360, - BadDay, FOLLOW, MODIFIED, NONE) + ACT_365F, BadDayConvention, _BadDayConvention, + _FOLLOW, _MODIFIED, _NONE) from .date import dcc_tostring from .date cimport _previous_twentieth, _roll_date from .cdsone cimport JpmcdsStringToStubMethod @@ -183,14 +184,14 @@ cdef class Curve(object): cdef double* data = <double*>malloc(shape * sizeof(double)) cdef size_t i - if <Basis>curve.fBasis == Basis.CONTINUOUS: + if curve.fBasis == CONTINUOUS: for i in range(shape): h2 = curve.fArray[i].fRate t2 = (curve.fArray[i].fDate - curve.fBaseDate)/365. data[i] = (h2 * t2 - h1 * t1) / (t2 - t1) h1 = h2 t1 = t2 - elif <Basis>curve.fBasis == Basis.ANNUAL_BASIS: + elif curve.fBasis == ANNUAL_BASIS: for i in range(shape): h2 = log1p(curve.fArray[i].fRate) t2 = (curve.fArray[i].fDate - curve.fBaseDate)/365. @@ -267,7 +268,7 @@ cdef class YieldCurve(Curve): def __init__(self, date, str types, list periods, double[:] rates, str mm_dcc, str fixed_swap_period, str float_swap_period, - str fixed_swap_dcc, str float_swap_dcc, BadDay bad_day_conv): + str fixed_swap_dcc, str float_swap_dcc, BadDayConvention bad_day_conv): cdef: double fixed_freq @@ -285,7 +286,7 @@ cdef class YieldCurve(Curve): cdef: TDateInterval tmp - long period_adjust + _BadDayConvention period_adjust size_t i char* period_bytes @@ -294,9 +295,9 @@ cdef class YieldCurve(Curve): if JpmcdsStringToDateInterval(period_bytes, routine, &tmp) != SUCCESS: raise ValueError if types[i] == 'M': - period_adjust = MODIFIED + period_adjust = _MODIFIED else: - period_adjust = NONE + period_adjust = _NONE if JpmcdsDateFwdThenAdjust(settle_date, &tmp, period_adjust, "None", &self.dates[i]) != SUCCESS: raise ValueError('Invalid interval') @@ -318,7 +319,7 @@ cdef class YieldCurve(Curve): value_date, types_bytes, self.dates.data(), &rates[0], self.dates.size(), dcc(mm_dcc), <long> fixed_freq, <long> float_freq, dcc(fixed_swap_dcc), dcc(float_swap_dcc), - bad_day_conv, b"None" + <_BadDayConvention>bad_day_conv, b"None" )) cdef size_t size(self): @@ -407,11 +408,11 @@ cdef class YieldCurve(Curve): for i, d in enumerate(dates): yc.dates[i] = pydate_to_TDate(d) JpmcdsDiscountToRateYearFrac(dfs[i], <double>(yc.dates[i]-base_date_c)/365., - <double>1, &rates[i]) + ANNUAL_BASIS, &rates[i]) yc._thisptr = make_shared( JpmcdsMakeTCurve(base_date_c, yc.dates.data(), rates, dfs.shape[0], - <double>1, dcc(day_count_conv))) + ANNUAL_BASIS, dcc(day_count_conv))) return yc discount_factor = Curve.__forward_zero_price @@ -439,11 +440,11 @@ cdef class YieldCurve(Curve): df = JpmcdsForwardZeroPrice(self._thisptr.get(), forward_date_c, self.dates[i]) JpmcdsDiscountToRateYearFrac( df, <double>(self.dates[i] - forward_date_c)/365., - <double>1, &rates[k]) + ANNUAL_BASIS, &rates[k]) i += 1 yc._thisptr = make_shared(JpmcdsMakeTCurve( forward_date_c, yc.dates.data(), rates, yc.dates.size(), - <double>1, self._thisptr.get().fDayCountConv)) + ANNUAL_BASIS, self._thisptr.get().fDayCountConv)) return yc @cython.cdivision(True) @@ -588,7 +589,7 @@ cdef class SpreadCurve(Curve): NULL, ACT_360, &stub_type, - <long>b'M', + _MODIFIED, b'NONE') else: rates = vector[double](n_dates, JPMCDS_MAX_RATE) @@ -596,7 +597,7 @@ cdef class SpreadCurve(Curve): end_dates_c, rates.data(), n_dates, - 5000., + CONTINUOUS, ACT_360) if curve is not NULL: if fill_curve and curve.fNumItems != n_dates: @@ -753,7 +754,7 @@ cdef class SpreadCurve(Curve): cdef TDate max_date = 200000 # can go higher but this should be more than enough sc._thisptr = make_shared(JpmcdsMakeTCurve(base_date_c, &max_date, &rate, 1, - <double>basis, dcc(day_count_conv))) + basis, dcc(day_count_conv))) return sc @cython.boundscheck(False) @@ -832,7 +833,7 @@ cdef class SpreadCurve(Curve): NULL, &stub_type, ACT_360, - <long>b'M', + _MODIFIED, b'NONE', yc._thisptr.get(), self._thisptr.get(), @@ -864,7 +865,7 @@ cdef TCurve* _fill_curve(TCurve* sc, TDate* end_dates, int n_dates) nogil: size_t i TDate base_date = sc.fBaseDate double t - TCurve* curve = JpmcdsNewTCurve(base_date, n_dates, 5000., 2) + TCurve* curve = JpmcdsNewTCurve(base_date, n_dates, CONTINUOUS, ACT_365F) TRatePt* it = curve.fArray for i in range(n_dates): diff --git a/pyisda/date.pxd b/pyisda/date.pxd index 364792a..8322551 100644 --- a/pyisda/date.pxd +++ b/pyisda/date.pxd @@ -1,10 +1,10 @@ from cpython cimport datetime as c_datetime cdef extern from "isda/yearfrac.h" nogil: - int JpmcdsStringToDayCountConv(char* day_count, long* type) - char* JpmcdsFormatDayCountConv(long dayCountConv) + int JpmcdsStringToDayCountConv(char* day_count, DayCountConvention* type) + char* JpmcdsFormatDayCountConv(DayCountConvention dayCountConv) -cdef long dcc(str day_count) except -1 +cdef DayCountConvention dcc(str day_count) cdef extern from "isda/cdate.h": ctypedef struct TDateInterval: @@ -39,14 +39,19 @@ cdef extern from "isda/dateconv.h" nogil: cdef extern from "isda/ldate.h" nogil: - int JpmcdsDateFwdThenAdjust(TDate date, TDateInterval* interval, long badDayMethod, + int JpmcdsDateFwdThenAdjust(TDate date, TDateInterval* interval, _BadDayConvention badDayMethod, char* holidayFile, TDate *advAdjustedDate) int JpmcdsDtFwdAny(TDate date, TDateInterval* interval, TDate* sumDate) -cdef enum DCC: - ACT_365 = 1L - ACT_365F = 2L - ACT_360 = 3L + ctypedef enum DayCountConvention: + BAD_DCC "JPMCDS_BAD_DCC" + ACT_365 "JPMCDS_ACT_365" + ACT_ACT "JPMCDS_ACT_ACT" + ACT_365F "JPMCDS_ACT_365F" + ACT_360 "JPMCDS_ACT_360" + B30_360 "JPMCDS_B30_360" + B30E_360 "JPMCDS_B30E_360" + EFFECTIVE_RATE "JPMCDS_EFFECTIVE_RATE" cdef extern from "isda/busday.h" nogil: int JpmcdsDateFromBusDaysOffset(TDate fromDate, # (I) input date @@ -54,14 +59,21 @@ cdef extern from "isda/busday.h" nogil: char *holidayFile, # (I) holiday file specification TDate *result) int JpmcdsBusinessDay(TDate date, # Input Date - long method, # See ldate.h + _BadDayConvention method, # See ldate.h char *holidayFile, # Filename w/ Holidays TDate *outDate) - cdef enum: - JPMCDS_BAD_DAY_FOLLOW - JPMCDS_BAD_DAY_PREVIOUS - JPMCDS_BAD_DAY_NONE - JPMCDS_BAD_DAY_MODIFIED + ctypedef enum _BadDayConvention "BadDayConvention": + _FOLLOW "JPMCDS_BAD_DAY_FOLLOW" + _PREVIOUS "JPMCDS_BAD_DAY_PREVIOUS" + _NONE "JPMCDS_BAD_DAY_NONE" + _MODIFIED "JPMCDS_BAD_DAY_MODIFIED" + +cpdef enum BadDayConvention: + FOLLOW = _FOLLOW + PREVIOUS = _PREVIOUS + NONE = _NONE + MODIFIED = _MODIFIED + cdef extern from "isda/defaulted.h" nogil: int JpmcdsDefaultAccrual( @@ -73,18 +85,12 @@ cdef extern from "isda/defaulted.h" nogil: TStubMethod *stubType, double notional, double couponRate, - long paymentDcc, - long badDayConv, + DayCountConvention paymentDcc, + _BadDayConvention badDayConv, char *calendar, int *accrualDays, double *defaultAccrual) -cpdef enum BadDay: - FOLLOW = JPMCDS_BAD_DAY_FOLLOW - PREVIOUS = JPMCDS_BAD_DAY_PREVIOUS - NONE = JPMCDS_BAD_DAY_NONE - MODIFIED = JPMCDS_BAD_DAY_MODIFIED - cpdef TDate pydate_to_TDate(c_datetime.date d) cpdef c_datetime.date TDate_to_pydate(TDate d) diff --git a/pyisda/date.pyx b/pyisda/date.pyx index fba523e..9899c5a 100644 --- a/pyisda/date.pyx +++ b/pyisda/date.pyx @@ -21,8 +21,8 @@ cpdef c_datetime.date TDate_to_pydate(TDate d): raise ValueError("incorrect date") -cdef long dcc(str day_count) except -1: - cdef long r +cdef DayCountConvention dcc(str day_count): + cdef DayCountConvention r cdef char* dc = day_count cdef int err = JpmcdsStringToDayCountConv(dc, &r) if err == 0: @@ -31,7 +31,7 @@ cdef long dcc(str day_count) except -1: raise ValueError('{0} is not a valid day count'.format(day_count)) -def dcc_tostring(long day_count): +def dcc_tostring(DayCountConvention day_count): cdef char* c_string = JpmcdsFormatDayCountConv(day_count) return c_string @@ -58,7 +58,7 @@ cdef TDate _previous_twentieth(TDate d, bint roll) nogil: return -1 else: if roll: - return next_business_day(r, FOLLOW) + return next_business_day(r, _FOLLOW) else: return r @@ -71,7 +71,7 @@ def previous_twentieth(d, bint roll=True): @cython.cdivision(True) def cds_accrued(d, double coupon): cdef TDate date = pydate_to_TDate(d) + 1 - cdef TDate date1 = next_business_day(date, PREVIOUS) + cdef TDate date1 = next_business_day(date, _PREVIOUS) return (date - _previous_twentieth(date1, True))/360. * coupon @@ -93,7 +93,7 @@ cdef TMonthDayYear next_twentieth(TDate d) nogil: mdy.year += 1 return mdy -cdef inline TDate next_business_day(TDate date, long method) nogil: +cdef inline TDate next_business_day(TDate date, _BadDayConvention method) nogil: cdef TDate r if JpmcdsBusinessDay(date, method, "NONE", &r) != SUCCESS: return -1 @@ -190,7 +190,7 @@ def default_accrual(trade_date, edd, start_date, end_date, double notional, notional, coupon_rate, ACT_360, - FOLLOW, + _FOLLOW, b"None", &accrual_days, &default_accrual) != SUCCESS: diff --git a/pyisda/legs.pxd b/pyisda/legs.pxd index 77b4230..3304134 100644 --- a/pyisda/legs.pxd +++ b/pyisda/legs.pxd @@ -1,4 +1,4 @@ -from .date cimport TDateInterval +from .date cimport TDateInterval, _BadDayConvention, DayCountConvention from .cdsone cimport TStubMethod from .curve cimport TCurve @@ -22,7 +22,7 @@ cdef extern from "isda/cx.h": TDate* payDates double notional double couponRate - long dcc + DayCountConvention dcc TAccrualPayConv accrualPayConv TBoolean obsStartOfDay @@ -66,9 +66,9 @@ cdef extern from "isda/cds.h" nogil: # Fixed coupon rate (a.k.a. spread) for the fee leg double couponRate, # Day count convention for coupon payment. Normal is ACT_360 - long paymentDcc, + DayCountConvention paymentDcc, # Bad day convention for adjusting coupon payment dates. - long badDayConv, + _BadDayConvention badDayConv, # Calendar used when adjusting coupon dates. Can be NULL which equals # a calendar with no holidays and including weekends. char *calendar, diff --git a/pyisda/legs.pyx b/pyisda/legs.pyx index 8a6d1e7..07f9cd6 100644 --- a/pyisda/legs.pyx +++ b/pyisda/legs.pyx @@ -1,5 +1,5 @@ from libc.stdlib cimport free -from .date cimport pydate_to_TDate, TDate_to_pydate, dcc +from .date cimport pydate_to_TDate, TDate_to_pydate, dcc, _MODIFIED from .date import dcc_tostring from .cdsone cimport JpmcdsStringToStubMethod, TStubMethod from .curve cimport YieldCurve, SpreadCurve @@ -113,7 +113,7 @@ cdef class FeeLeg: notional, coupon_rate, dcc(payment_dcc), - <long>b'M', + _MODIFIED, b'NONE', protect_start) if self._thisptr is NULL: diff --git a/pyisda/optim.pyx b/pyisda/optim.pyx index b82a0d9..f24ba2d 100644 --- a/pyisda/optim.pyx +++ b/pyisda/optim.pyx @@ -5,7 +5,7 @@ from libc.math cimport exp, sqrt from .cdsone cimport JpmcdsStringToStubMethod, TStubMethod from .curve cimport (TCurve, YieldCurve, JpmcdsFreeTCurve, JpmcdsNewTCurve, CONTINUOUS) -from .date cimport TDate, pydate_to_TDate, ACT_360, ACT_365F +from .date cimport TDate, pydate_to_TDate, ACT_360, ACT_365F, _MODIFIED from .legs cimport (JpmcdsCdsContingentLegMake, JpmcdsCdsFeeLegMake, TContingentLeg, JpmcdsFeeLegPV, JpmcdsFeeLegFree, TFeeLeg) @@ -88,7 +88,7 @@ def init_context(YieldCurve yc not None, trade_date, value_date, start_date, 1., # notional 1., # coupon_rate ACT_360, # JPMCDS_ACT_360 - <long>b'M', + _MODIFIED, b'NONE', 1) # protect_start = True params.stepinDate = step_in_date_c @@ -96,7 +96,7 @@ def init_context(YieldCurve yc not None, trade_date, value_date, start_date, params.discountCurve = yc._thisptr.get() params.cdsCurve = JpmcdsNewTCurve(trade_date_c, 1, - <double>CONTINUOUS, + CONTINUOUS, ACT_365F) # JPMCDS_ACT_365F params.cdsCurve.fArray[0].fDate = end_date_c params.recoveryRate = recovery_rate diff --git a/pyisda/utils.py b/pyisda/utils.py index 4e3b024..8d3f6ba 100644 --- a/pyisda/utils.py +++ b/pyisda/utils.py @@ -26,7 +26,7 @@ import zipfile from io import BytesIO import xml.etree.ElementTree as ET from pyisda.curve import YieldCurve -from pyisda.date import BadDay +from pyisda.date import BadDayConvention def getMarkitIRData( @@ -151,6 +151,6 @@ def build_yc(trade_date, ql_curve=False): "3M", "30/360", "ACT/360", - BadDay.MODIFIED, + BadDayConvention.MODIFIED, ) return yc |
