summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGuillaume Horel <guillaume.horel@gmail.com>2019-02-25 12:21:44 -0500
committerGuillaume Horel <guillaume.horel@gmail.com>2019-02-25 12:21:44 -0500
commit8e5b21e901c08d0c6b0729879c565c98747501aa (patch)
treefc6d822eaac9eca58f08ae2b107aa385e28f24e3
parentb82e9ec45398d680baef09cd6694e9749308dba4 (diff)
downloadpyisda-more_enum.tar.gz
fix bugsmore_enum
-rw-r--r--pyisda/cdsone.pxd10
-rw-r--r--pyisda/cdsone.pyx6
-rw-r--r--pyisda/credit_index.pyx10
-rw-r--r--pyisda/curve.pxd25
-rw-r--r--pyisda/curve.pyx35
-rw-r--r--pyisda/date.pxd50
-rw-r--r--pyisda/date.pyx14
-rw-r--r--pyisda/legs.pxd8
-rw-r--r--pyisda/legs.pyx4
-rw-r--r--pyisda/optim.pyx6
-rw-r--r--pyisda/utils.py4
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