本文整理汇总了Python中quantlib.util.converter.pydate_to_qldate函数的典型用法代码示例。如果您正苦于以下问题:Python pydate_to_qldate函数的具体用法?Python pydate_to_qldate怎么用?Python pydate_to_qldate使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了pydate_to_qldate函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: zbt_libor_yield
def zbt_libor_yield(instruments, yields, pricing_date,
basis='Actual/Actual (Bond)',
compounding_freq='Continuous',
maturity_dates=None):
"""
Bootstrap a zero-coupon curve from libor rates and swap yields
Args:
insruments: list of instruments, of the form Libor?M for Libor rates
and Swap?Y for swap rates
yields: market rates
pricing_date: the date where market data is observed. Settlement
is by default 2 days after pricing_date
Optional:
compounding_frequency: ... of zero-coupon rates. By default:
'Continuous'
Returns:
zero_rate: zero-coupon rate
maturity_date: ... of corresponding rate
"""
calendar = TARGET()
settings = Settings()
# must be a business day
eval_date = calendar.adjust(pydate_to_qldate(pricing_date))
settings.evaluation_date = eval_date
rates = dict(zip(instruments, yields))
ts = make_term_structure(rates, pricing_date)
cnt = DayCounter.from_name(basis)
if maturity_dates is None:
# schedule of maturity dates from settlement date to last date on
# the term structure
s = Schedule(effective_date=ts.reference_date,
termination_date=ts.max_date,
tenor=Period(1, Months),
calendar=TARGET())
maturity_dates = [qldate_to_pydate(dt) for dt in s.dates()]
cp_freq = compounding_from_name(compounding_freq)
zc = [ts.zero_rate(date=pydate_to_qldate(dt),
day_counter=cnt,
compounding=cp_freq).rate for dt in maturity_dates]
return (maturity_dates, zc)
示例2: _cfamounts
def _cfamounts(coupon_rate, pricing_date, maturity_date,
period, basis):
"""
cash flow schedule
"""
_period = str_to_frequency(period)
evaluation_date = pydate_to_qldate(pricing_date)
settings = Settings()
settings.evaluation_date = evaluation_date
calendar = TARGET()
termination_date = pydate_to_qldate(maturity_date)
# effective date must be before settlement date, but do not
# care about exact issuance date of bond
effective_date = Date(termination_date.day, termination_date.month,
evaluation_date.year)
effective_date = calendar.advance(
effective_date, -1, Years, convention=Unadjusted)
face_amount = 100.0
redemption = 100.0
fixed_bond_schedule = Schedule(
effective_date,
termination_date,
Period(_period),
calendar,
ModifiedFollowing,
ModifiedFollowing,
Backward
)
issue_date = effective_date
cnt = DayCounter.from_name(basis)
settlement_days = 2
bond = FixedRateBond(
settlement_days,
face_amount,
fixed_bond_schedule,
[coupon_rate],
cnt,
Following,
redemption,
issue_date)
res = zip(*bond.cashflows)
return(res)
示例3: test_yield
def test_yield(self):
rates_data = [
("Libor1M", 0.01),
("Libor3M", 0.015),
("Libor6M", 0.017),
("Swap1Y", 0.02),
("Swap2Y", 0.03),
("Swap3Y", 0.04),
("Swap5Y", 0.05),
("Swap7Y", 0.06),
("Swap10Y", 0.07),
("Swap20Y", 0.08),
]
settlement_date = pydate_to_qldate("01-Dec-2013")
rate_helpers = []
for label, rate in rates_data:
h = make_rate_helper(label, rate, settlement_date)
rate_helpers.append(h)
ts_day_counter = ActualActual(ISDA)
tolerance = 1.0e-15
ts = term_structure_factory("discount", "loglinear", settlement_date, rate_helpers, ts_day_counter, tolerance)
zc = zero_rate(ts, (200, 300), settlement_date)
# not a real test - just verify execution
self.assertAlmostEqual(zc[1][0], 0.0189, 2)
示例4: test_yield
def test_yield(self):
rates_data = [('Libor1M',.01),
('Libor3M', .015),
('Libor6M', .017),
('Swap1Y', .02),
('Swap2Y', .03),
('Swap3Y', .04),
('Swap5Y', .05),
('Swap7Y', .06),
('Swap10Y', .07),
('Swap20Y', .08)]
settlement_date = pydate_to_qldate('01-Dec-2013')
rate_helpers = []
for label, rate in rates_data:
h = make_rate_helper(label, rate, settlement_date)
rate_helpers.append(h)
ts_day_counter = ActualActual(ISDA)
tolerance = 1.0e-15
ts = PiecewiseYieldCurve.from_reference_date(
BootstrapTrait.Discount, Interpolator.LogLinear, settlement_date, rate_helpers,
ts_day_counter, tolerance
)
zc = zero_rate(ts, (200, 300), settlement_date)
# not a real test - just verify execution
self.assertAlmostEqual(zc[1][0], 0.0189, 2)
示例5: test_zero_curve
def test_zero_curve(self):
rate_helpers = build_helpers()
settings = Settings()
calendar = TARGET()
# must be a business Days
dtObs = date(2007, 4, 27)
eval_date = calendar.adjust(pydate_to_qldate(dtObs))
settings.evaluation_date = eval_date
settlement_days = 2
settlement_date = calendar.advance(eval_date, settlement_days, Days)
# must be a business day
settlement_date = calendar.adjust(settlement_date)
ts_day_counter = ActualActual(ISDA)
tolerance = 1.0e-2
ts = PiecewiseYieldCurve('discount',
'loglinear',
settlement_date,
rate_helpers,
ts_day_counter,
tolerance)
# max_date raises an exception...
ts.extrapolation = True
zr = ts.zero_rate(Date(10, 5, 2027), ts_day_counter, 2)
self.assertAlmostEqual(zr.rate, 0.0539332)
示例6: test_extrapolation
def test_extrapolation(self):
rate_helpers = build_helpers()
settings = Settings()
calendar = TARGET()
# must be a business Days
dtObs = date(2007, 4, 27)
eval_date = calendar.adjust(pydate_to_qldate(dtObs))
settings.evaluation_date = eval_date
settlement_days = 2
settlement_date = calendar.advance(eval_date, settlement_days, Days)
# must be a business day
settlement_date = calendar.adjust(settlement_date)
print('dt Obs: %s\ndt Eval: %s\ndt Settle: %s' %
(dtObs, eval_date, settlement_date))
ts_day_counter = ActualActual(ISDA)
tolerance = 1.0e-2
ts = PiecewiseYieldCurve.from_reference_date(BootstrapTrait.Discount,
Interpolator.LogLinear,
settlement_date,
rate_helpers,
ts_day_counter,
tolerance)
# max_date raises an exception without extrapolaiton...
self.assertFalse(ts.extrapolation)
with self.assertRaises(RuntimeError) as ctx:
ts.discount(ts.max_date + 1)
self.assertTrue(str(ctx.exception) in (
"time (30.011) is past max curve time (30.0082)",
"1st iteration: failed at 2nd alive instrument"))
示例7: test_yield
def test_yield(self):
rates_data = [('Libor1M',SimpleQuote(.01)),
('Libor3M', SimpleQuote(.015)),
('Libor6M', SimpleQuote(.017)),
('Swap1Y', SimpleQuote(.02)),
('Swap2Y', SimpleQuote(.03)),
('Swap3Y', SimpleQuote(.04)),
('Swap5Y', SimpleQuote(.05)),
('Swap7Y', SimpleQuote(.06)),
('Swap10Y', SimpleQuote(.07)),
('Swap20Y', SimpleQuote(.08))]
settlement_date = pydate_to_qldate('01-Dec-2013')
rate_helpers = []
for label, rate in rates_data:
h = make_rate_helper(label, rate, settlement_date)
rate_helpers.append(h)
ts_day_counter = ActualActual(ISDA)
tolerance = 1.0e-15
ts = PiecewiseYieldCurve(
'discount', 'loglinear', settlement_date, rate_helpers,
ts_day_counter, tolerance
)
zc = zero_rate(ts, (200, 300), settlement_date)
# not a real test - just verify execution
self.assertAlmostEqual(zc[1][0], 0.0189, 2)
示例8: test_extrapolation
def test_extrapolation(self):
rate_helpers = build_helpers()
settings = Settings()
calendar = TARGET()
# must be a business Days
dtObs = date(2007, 4, 27)
eval_date = calendar.adjust(pydate_to_qldate(dtObs))
settings.evaluation_date = eval_date
settlement_days = 2
settlement_date = calendar.advance(eval_date, settlement_days, Days)
# must be a business day
settlement_date = calendar.adjust(settlement_date)
print('dt Obs: %s\ndt Eval: %s\ndt Settle: %s' %
(dtObs, eval_date, settlement_date))
ts_day_counter = ActualActual(ISDA)
tolerance = 1.0e-2
ts = PiecewiseYieldCurve('discount',
'loglinear',
settlement_date,
rate_helpers,
ts_day_counter,
tolerance)
# max_date raises an exception without extrapolaiton...
self.assertFalse(ts.extrapolation)
with self.assertRaisesRegexp(RuntimeError,
"1st iteration: failed at 2nd alive instrument"):
dtMax = ts.max_date
示例9: heston_pricer
def heston_pricer(trade_date, options, params, rates, spot):
"""
Price a list of European options with heston model.
"""
spot = SimpleQuote(spot)
risk_free_ts = df_to_zero_curve(rates[nm.INTEREST_RATE], trade_date)
dividend_ts = df_to_zero_curve(rates[nm.DIVIDEND_YIELD], trade_date)
process = HestonProcess(risk_free_ts, dividend_ts, spot, **params)
model = HestonModel(process)
engine = AnalyticHestonEngine(model, 64)
settlement_date = pydate_to_qldate(trade_date)
settings = Settings()
settings.evaluation_date = settlement_date
modeled_values = np.zeros(len(options))
for index, row in options.T.iteritems():
expiry_date = row[nm.EXPIRY_DATE]
strike = row[nm.STRIKE]
option_type = Call if row[nm.OPTION_TYPE] == nm.CALL_OPTION else Put
payoff = PlainVanillaPayoff(option_type, strike)
expiry_qldate = pydate_to_qldate(expiry_date)
exercise = EuropeanExercise(expiry_qldate)
option = VanillaOption(payoff, exercise)
option.set_pricing_engine(engine)
modeled_values[index] = option.net_present_value
prices = options.filter(items=[nm.EXPIRY_DATE, nm.STRIKE,
nm.OPTION_TYPE, nm.SPOT])
prices[nm.PRICE] = modeled_values
prices[nm.TRADE_DATE] = trade_date
return prices
示例10: test_converter_2
def test_converter_2(self):
ql_1 = Date(20, Nov, 2005)
ql_2 = pydate_to_qldate('20-Nov-2005')
self.assertEquals(ql_1.day, ql_2.day)
self.assertEquals(ql_1.month, ql_2.month)
self.assertEquals(ql_1.year, ql_2.year)
示例11: test_converter_1
def test_converter_1(self):
ql_today_1 = today()
py_today = datetime.date.today()
ql_today_2 = pydate_to_qldate(py_today)
self.assertEquals(ql_today_1.day, ql_today_2.day)
self.assertEquals(ql_today_1.month, ql_today_2.month)
self.assertEquals(ql_today_1.year, ql_today_2.year)
示例12: next_imm_date
def next_imm_date(reference_date, tenor):
"""
Third Wednesday of contract month
"""
dt = qldate_from_pydate(reference_date)
for k in range(tenor):
tmp = imm.next_date(dt)
dt = pydate_to_qldate(tmp)
return pydate_from_qldate(dt)
示例13: _set_evaluation_date
def _set_evaluation_date(self, dt_obs):
if(~isinstance(dt_obs, Date)):
dt_obs = pydate_to_qldate(dt_obs)
settings = Settings()
calendar = JointCalendar(UnitedStates(), UnitedKingdom())
# must be a business day
eval_date = calendar.adjust(dt_obs)
settings.evaluation_date = eval_date
self._eval_date = eval_date
return eval_date
示例14: make_rate_helper
def make_rate_helper(label, rate, dt_obs, currency='USD'):
"""
Wrapper for deposit and swaps rate helpers makers
For Swaps: assume USD swap fixed rates vs. 6M Libor
TODO: make this more general
"""
if(currency.upper() != 'USD'):
raise Exception("Only supported currency is USD.")
rate_type, tenor, period = _parse_rate_label(label)
if not isinstance(dt_obs, Date):
dt_obs = pydate_to_qldate(dt_obs)
settings = Settings()
calendar = JointCalendar(UnitedStates(), UnitedKingdom())
# must be a business day
eval_date = calendar.adjust(dt_obs)
settings.evaluation_date = eval_date
settlement_days = 2
settlement_date = calendar.advance(eval_date, settlement_days, Days)
# must be a business day
settlement_date = calendar.adjust(settlement_date)
end_of_month = True
if((rate_type == 'SWAP') & (period == 'Y')):
liborIndex = Libor(
'USD Libor', Period(6, Months), settlement_days,
USDCurrency(), calendar, Actual360()
)
spread = SimpleQuote(0)
fwdStart = Period(0, Days)
helper = SwapRateHelper.from_tenor(
SimpleQuote(rate),
Period(tenor, Years),
calendar, Annual,
Unadjusted, Thirty360(),
liborIndex, spread, fwdStart)
elif((rate_type == 'LIBOR') & (period == 'M')):
helper = DepositRateHelper(SimpleQuote(rate),
Period(tenor, Months),
settlement_days,
calendar,
ModifiedFollowing,
end_of_month,
Actual360())
else:
raise Exception("Rate type %s not supported" % label)
return (helper)
示例15: set_quotes
def set_quotes(self, dt_obs, quotes):
self._quotes = quotes
if(~isinstance(dt_obs, Date)):
dt_obs = pydate_to_qldate(dt_obs)
settings = Settings()
calendar = JointCalendar(UnitedStates(), UnitedKingdom())
# must be a business day
eval_date = calendar.adjust(dt_obs)
settings.evaluation_date = eval_date
self._eval_date = eval_date
self._rate_helpers = []
for quote in quotes:
# construct rate helper
helper = make_rate_helper(self, quote, eval_date)
self._rate_helpers.append(helper)