Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
"""
# Create schedule based on market and bond parameters.
index = market._floating_rate_index
schedule = Schedule.from_rule(
issue_date,
maturity,
Period(tenor),
index.fixing_calendar,
index.business_day_convention,
index.business_day_convention,
Rule.Backward, # Date generation rule
index.end_of_month,
)
daycounter = DayCounter.from_name("Actual/Actual (Bond)")
helper = FixedRateBondHelper(
SimpleQuote(clean_price),
market._params.settlement_days,
100.0,
schedule,
coupons,
daycounter,
Following, # Payment convention
100.0,
issue_date)
return helper
end_of_month = True,
day_counter = DayCounter.from_name(
market._params.floating_leg_daycount))
elif rate_type.startswith('ER'):
# TODO For Euribor futures, we found it useful to supply the `imm_date`
# parameter directly, instead of as a number of periods from the
# evaluation date, as for ED futures. To achieve this, we pass the
# `imm_date` in the `tenor` field of the quote.
helper = FuturesRateHelper(
price=SimpleQuote(quote_value),
imm_date=tenor,
length_in_months=3,
calendar=market._floating_rate_index.fixing_calendar,
convention=market._floating_rate_index.business_day_convention,
end_of_month=True,
day_counter=DayCounter.from_name(
market._params.floating_leg_daycount))
else:
raise Exception("Rate type %s not supported" % rate_type)
return helper
"""
rate_type, tenor, quote_value = quote
if rate_type == 'SWAP':
libor_index = market._floating_rate_index
spread = SimpleQuote(0)
fwdStart = Period(0, Days)
helper = SwapRateHelper.from_tenor(
quote_value,
Period(tenor),
market._floating_rate_index.fixing_calendar,
Period(market._params.fixed_leg_period).frequency,
BusinessDayConvention.from_name(
market._params.fixed_leg_convention),
DayCounter.from_name(market._params.fixed_leg_daycount),
libor_index, spread, fwdStart)
elif rate_type == 'DEP':
end_of_month = True
helper = DepositRateHelper(
quote_value,
Period(tenor),
market._params.settlement_days,
market._floating_rate_index.fixing_calendar,
market._floating_rate_index.business_day_convention,
end_of_month,
DayCounter.from_name(market._deposit_daycount))
elif rate_type == 'ED':
if reference_date is None:
raise Exception("Reference date needed with ED Futures data")
forward_date = next_imm_date(reference_date, tenor)
market._floating_rate_index.fixing_calendar,
Period(market._params.fixed_leg_period).frequency,
BusinessDayConvention.from_name(
market._params.fixed_leg_convention),
DayCounter.from_name(market._params.fixed_leg_daycount),
libor_index, spread, fwdStart)
elif rate_type == 'DEP':
end_of_month = True
helper = DepositRateHelper(
quote_value,
Period(tenor),
market._params.settlement_days,
market._floating_rate_index.fixing_calendar,
market._floating_rate_index.business_day_convention,
end_of_month,
DayCounter.from_name(market._deposit_daycount))
elif rate_type == 'ED':
if reference_date is None:
raise Exception("Reference date needed with ED Futures data")
forward_date = next_imm_date(reference_date, tenor)
helper = FuturesRateHelper(
price =SimpleQuote(quote_value),
imm_date = qldate_from_pydate(forward_date),
length_in_months = 3,
calendar = market._floating_rate_index.fixing_calendar,
convention = market._floating_rate_index.business_day_convention,
end_of_month = True,
day_counter = DayCounter.from_name(
market._params.floating_leg_daycount))
elif rate_type.startswith('ER'):
end_of_month,
DayCounter.from_name(market._deposit_daycount))
elif rate_type == 'ED':
if reference_date is None:
raise Exception("Reference date needed with ED Futures data")
forward_date = next_imm_date(reference_date, tenor)
helper = FuturesRateHelper(
price =SimpleQuote(quote_value),
imm_date = qldate_from_pydate(forward_date),
length_in_months = 3,
calendar = market._floating_rate_index.fixing_calendar,
convention = market._floating_rate_index.business_day_convention,
end_of_month = True,
day_counter = DayCounter.from_name(
market._params.floating_leg_daycount))
elif rate_type.startswith('ER'):
# TODO For Euribor futures, we found it useful to supply the `imm_date`
# parameter directly, instead of as a number of periods from the
# evaluation date, as for ED futures. To achieve this, we pass the
# `imm_date` in the `tenor` field of the quote.
helper = FuturesRateHelper(
price=SimpleQuote(quote_value),
imm_date=tenor,
length_in_months=3,
calendar=market._floating_rate_index.fixing_calendar,
convention=market._floating_rate_index.business_day_convention,
end_of_month=True,
day_counter=DayCounter.from_name(
market._params.floating_leg_daycount))
else:
_params = self._params._replace(**kwargs)
index = IborIndex.from_name(self._market,
self._forecast_term_structure,
**kwargs)
swap_type = Payer
nominal = 100.0
fixed_convention = \
BusinessDayConvention.from_name(_params.fixed_leg_convention)
floating_convention = \
BusinessDayConvention.from_name(_params.floating_leg_convention)
fixed_frequency = \
Period(_params.fixed_leg_period)
floating_frequency = Period(_params.floating_leg_period)
fixed_daycount = DayCounter.from_name(_params.fixed_leg_daycount)
float_daycount = DayCounter.from_name(_params.floating_leg_daycount)
calendar = calendar_from_name(_params.calendar)
maturity = calendar.advance(settlement_date, length, Years,
convention=floating_convention)
fixed_schedule = Schedule.from_rule(settlement_date, maturity,
fixed_frequency, calendar,
fixed_convention, fixed_convention,
Rule.Forward, False)
float_schedule = Schedule.from_rule(settlement_date, maturity,
floating_frequency,
calendar, floating_convention,
floating_convention,
Rule.Forward, False)