summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--example.py50
1 files changed, 18 insertions, 32 deletions
diff --git a/example.py b/example.py
index f39571e..d17afa5 100644
--- a/example.py
+++ b/example.py
@@ -1,52 +1,38 @@
from pyisda.curve import YieldCurve, BadDay, SpreadCurve
-import sys
-sys.path.append("/home/share/CorpCDOs/code/python")
-from yieldcurve import getMarkitIRData, YC, rate_helpers
import datetime
-import array
import math
from pyisda.cdsone import upfront_charge, spread_from_upfront
from pyisda.legs import FeeLeg, ContingentLeg
+from pyisda.utils import build_yc
+import array
if __name__ == "__main__":
# build zero coupon curve
- markit_data = getMarkitIRData()
- yield_helpers = rate_helpers(MarkitData = markit_data)
- ql_yc = YC(MarkitData=markit_data)
- today_date = datetime.date.today()
+ today_date = datetime.date(2016, 7, 12)
+ yc = build_yc(today_date, True)
step_in_date = today_date + datetime.timedelta(days=1)
- value_date = datetime.date(2016, 7, 13) # settle_date
- 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)
+ value_date = datetime.date(2016, 7, 15) # settle_date
- zc = YieldCurve(today_date, types, periods, rates, 'ACT/360', '6M',
- '3M', '30/360', 'ACT/360', BadDay.MODIFIED)
start_date = datetime.date(2016, 6, 20)
end_date = datetime.date(2021, 6, 20)
upfront_quote = -0.03063
- spread = spread_from_upfront(today_date, today_date, today_date, step_in_date,
- start_date, end_date, 0.05, zc,
+ spread = spread_from_upfront(today_date, value_date, start_date, step_in_date,
+ start_date, end_date, 0.05, yc,
upfront_quote, 0.3)
- upf = upfront_charge(today_date, today_date, today_date, step_in_date,
- start_date, end_date, 0.05, zc, spread, 0.3)
+ #benchmark_start_date should be start_date. Not sure while there are 2 parameters
+ upf = upfront_charge(today_date, value_date, start_date, step_in_date,
+ start_date, end_date, 0.05, yc, spread, 0.3)
print(spread)
print(upf-upfront_quote)
coupon_leg = FeeLeg(start_date, end_date, True, 1000000, 0.01)
contingent_leg = ContingentLeg(start_date, end_date, 1000000)
- print(contingent_leg.pay_type)
- ig_spread = 0.0072175
+ ig_spread = 0.0070
spread = array.array('d', [ig_spread])
print("build spread curve", flush=True)
- sc = SpreadCurve(today_date, zc, today_date, step_in_date,
+ sc = SpreadCurve(today_date, yc, start_date, step_in_date,
value_date,
[end_date], spread, 0.4, 1)
sc_data = sc.inspect()['data']
@@ -55,16 +41,16 @@ if __name__ == "__main__":
continuous_rate = math.log(1+rate)
sc2 = SpreadCurve.from_flat_hazard(today_date, continuous_rate)
coupon_leg_pv = coupon_leg.pv(today_date, step_in_date,
- value_date, zc, sc, True)
+ value_date, yc, sc, True)
coupon_leg_pv2 = coupon_leg.pv(today_date, step_in_date,
- today_date, zc, sc2, True)
+ value_date, yc, sc2, True)
print("contingent leg pv", flush=True)
contingent_leg_pv = contingent_leg.pv(today_date, step_in_date,
- value_date, zc, sc, 0.4)
+ value_date, yc, sc, 0.4)
contingent_leg_pv2 = contingent_leg.pv(today_date, step_in_date,
- today_date, zc, sc2, 0.4)
+ value_date, yc, sc2, 0.4)
print("upfront_charge", flush=True)
- pv = 1000000 * upfront_charge(today_date, value_date, today_date, step_in_date,
- start_date, end_date, 0.01, zc, ig_spread, 0.4)
+ pv = 1000000 * upfront_charge(today_date, value_date, start_date, step_in_date,
+ start_date, end_date, 0.01, yc, ig_spread, 0.4)
print(pv, contingent_leg_pv-coupon_leg_pv)