summaryrefslogtreecommitdiffstats
path: root/example.py
blob: ab648d84e60db37261671bdc155fd41e0b7cda92 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
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)