本文整理汇总了Python中quantlib.termstructures.yields.api.YieldTermStructure.discount方法的典型用法代码示例。如果您正苦于以下问题:Python YieldTermStructure.discount方法的具体用法?Python YieldTermStructure.discount怎么用?Python YieldTermStructure.discount使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类quantlib.termstructures.yields.api.YieldTermStructure
的用法示例。
在下文中一共展示了YieldTermStructure.discount方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: test_relinkable_structures
# 需要导入模块: from quantlib.termstructures.yields.api import YieldTermStructure [as 别名]
# 或者: from quantlib.termstructures.yields.api.YieldTermStructure import discount [as 别名]
def test_relinkable_structures(self):
discounting_term_structure = YieldTermStructure(relinkable=True)
settlement_days = 3
flat_term_structure = FlatForward(settlement_days=settlement_days,
forward=0.044, calendar=NullCalendar(), daycounter=Actual360())
discounting_term_structure.link_to(flat_term_structure)
evaluation_date = Settings().evaluation_date +100
self.assertEqual(
flat_term_structure.discount(evaluation_date),
discounting_term_structure.discount(evaluation_date)
)
another_flat_term_structure = FlatForward(settlement_days=10,
forward=0.067, calendar=NullCalendar(), daycounter=Actual365Fixed())
discounting_term_structure.link_to(another_flat_term_structure)
self.assertEqual(
another_flat_term_structure.discount(evaluation_date),
discounting_term_structure.discount(evaluation_date)
)
self.assertNotEqual(
flat_term_structure.discount(evaluation_date),
discounting_term_structure.discount(evaluation_date)
)
示例2: IborMarket
# 需要导入模块: from quantlib.termstructures.yields.api import YieldTermStructure [as 别名]
# 或者: from quantlib.termstructures.yields.api.YieldTermStructure import discount [as 别名]
class IborMarket(FixedIncomeMarket):
def __init__(self, name, market, **kwargs):
params = swap_params(market)
params = params._replace(**kwargs)
self._params = params
self._name = name
self._market = market
# floating rate index
index = IborIndex.from_name(market, **kwargs)
self._floating_rate_index = index
self._deposit_daycount = params.floating_leg_daycount
self._termstructure_daycount = 'ACT/365'
self._eval_date = None
self._quotes = None
self._termstructure = None
self._discount_term_structure = None
self._forecast_term_structure = None
self._rate_helpers = []
self._quotes = []
def _set_evaluation_date(self, dt_obs):
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
self._eval_date = eval_date
return eval_date
def set_quotes(self, dt_obs, quotes):
self._quotes.extend(quotes)
eval_date = self._set_evaluation_date(dt_obs)
for quote in quotes:
# construct rate helper
helper = make_rate_helper(self, quote, eval_date)
self._rate_helpers.append(helper)
def set_bonds(self, dt_obs, quotes):
""" Supply the market with a set of bond quotes.
The `quotes` parameter must be a list of quotes of the form
(clean_price, coupons, tenor, issue_date, maturity). For more
information about the format of the individual fields, see
the documentation for :meth:`add_bond_quote`.
"""
self._quotes.extend(quotes)
self._set_evaluation_date(dt_obs)
for quote in quotes:
self.add_bond_quote(*quote)
def add_bond_quote(self, clean_price, coupons, tenor, issue_date,
maturity):
"""
Add a bond quote to the market.
Parameters
----------
clean_price : real
Clean price of the bond.
coupons : real or list(real)
Interest rates paid by the bond.
tenor : str
Tenor of the bond.
issue_date, maturity : Date instance
Issue date and maturity of the bond.
"""
if not isinstance(coupons, (list, tuple)):
coupons = [coupons]
helper = make_eurobond_helper(
self, clean_price, coupons, tenor, issue_date, maturity)
self._rate_helpers.append(helper)
@property
def calendar(self):
return self._params.calendar
@property
def settlement_days(self):
return self._params.settlement_days
@property
#.........这里部分代码省略.........
示例3: test_default_constructor
# 需要导入模块: from quantlib.termstructures.yields.api import YieldTermStructure [as 别名]
# 或者: from quantlib.termstructures.yields.api.YieldTermStructure import discount [as 别名]
def test_default_constructor(self):
term_structure = YieldTermStructure()
with self.assertRaises(ValueError):
term_structure.discount(Settings().evaluation_date)
示例4: IborMarket
# 需要导入模块: from quantlib.termstructures.yields.api import YieldTermStructure [as 别名]
# 或者: from quantlib.termstructures.yields.api.YieldTermStructure import discount [as 别名]
class IborMarket(FixedIncomeMarket):
def __init__(self, name, market, **kwargs):
params = SwapData.params(market)
params = params._replace(**kwargs)
self._params = params
self._name = name
self._market = market
# floating rate index
index = IborIndex.from_name(market, **kwargs)
self._floating_rate_index = index
self._deposit_daycount = params.floating_leg_daycount
self._termstructure_daycount = 'ACT/365'
self._eval_date = None
self._quotes = None
self._termstructure = None
self._discount_term_structure = None
self._forecast_term_structure = None
def __str__(self):
return 'Fixed Income Market: %s' % self._name
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)
@property
def calendar(self):
return self._params.calendar
@property
def settlement_days(self):
return self._params.settlement_days
@property
def fixed_rate_frequency(self):
return self._params.fixed_rate_frequency
@property
def fixed_rate_convention(self):
return self._params.fixed_instrument_convention
@property
def fixed_rate_daycounter(self):
return self._params.fixed_rate_daycounter
@property
def termstructure_daycounter(self):
return self._termstructure_daycounter
@property
def reference_date(self):
return 0
@property
def max_date(self):
return 0
def to_str(self):
str = \
"Ibor Market %s\n" % self._name + \
"Number of settlement days: %d\n" % self._params.settlement_days +\
"Fixed rate frequency: %s\n" % self._params.fixed_rate_frequency +\
"Fixed rate convention: %s\n" % self._params.fixed_instrument_convention +\
"Fixed rate daycount: %s\n" % self._params.fixed_instrument_daycounter +\
"Term structure daycount: %s\n" % self._termstructure_daycount + \
"Floating rate index: %s\n" % self._floating_rate_index + \
"Deposit daycount: %s\n" % self._deposit_daycount + \
"Calendar: %s\n" % self._params.calendar
return str
def bootstrap_term_structure(self):
tolerance = 1.0e-15
settings = Settings()
calendar = JointCalendar(UnitedStates(), UnitedKingdom())
# must be a business day
eval_date = self._eval_date
settings.evaluation_date = eval_date
settlement_days = self._params.settlement_days
settlement_date = calendar.advance(eval_date, settlement_days, Days)
#.........这里部分代码省略.........