from pyisda.curve import ZeroCurve, BadDay, SpreadCurve import sys sys.path.append("/home/share/CorpCDOs/code/python") from yieldcurve import getMarkitIRData import datetime import array from pyisda.cdsone import upfront_charge, spread_from_upfront from pyisda.legs import FeeLeg, ContingentLeg if __name__ == "__main__": # build zero coupon curve markit_data = getMarkitIRData() date = datetime.date.today() periods, rates = zip(*markit_data['deposits']) periods = list(periods) rates = list(rates) periods_swaps, rates_swaps = zip(*markit_data['swaps']) types = 'M' * len(periods) + 'S' * len(periods_swaps) rates = array.array('d', rates) periods.extend(periods_swaps) rates.extend(rates_swaps) zc = ZeroCurve(date, types, periods, rates, 'ACT/360', '6M', '3M', 'ACT/360', 'ACT/360', BadDay.MODIFIED) start_date = datetime.date(2016, 3, 21) end_date = datetime.date(2021, 6, 20) upfront_quote = -0.03063 spread = spread_from_upfront(date, date, date, date+datetime.timedelta(days=1), start_date, end_date, 0.05, zc, upfront_quote, 0.3) upf = upfront_charge(date, date, date, date+datetime.timedelta(days=1), start_date, end_date, 0.05, zc, spread, 0.3) print(spread) print(upf-upfront_quote) coupon_leg = FeeLeg(start_date, end_date, True, 1000000, 0.05) spread = array.array('d', [0.007725]) print("pomme") step_in_date = date + datetime.timedelta(days=1) sc = SpreadCurve(date, zc, start_date, step_in_date, datetime.date(2016, 7, 6), [end_date], spread, 0.4, 1)