本文整理汇总了Python中quantlib.time.api.today函数的典型用法代码示例。如果您正苦于以下问题:Python today函数的具体用法?Python today怎么用?Python today使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了today函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _blsimpv
def _blsimpv(price, spot, strike, risk_free_rate, time,
option_type='Call', dividend=0.0):
spot = SimpleQuote(spot)
daycounter = ActualActual()
risk_free_ts = FlatForward(today(), risk_free_rate, daycounter)
dividend_ts = FlatForward(today(), dividend, daycounter)
volatility_ts = BlackConstantVol(today(), NullCalendar(),
.3, daycounter)
process = BlackScholesMertonProcess(spot, dividend_ts,
risk_free_ts, volatility_ts)
exercise_date = today() + Period(time * 365, Days)
exercise = EuropeanExercise(exercise_date)
payoff = PlainVanillaPayoff(option_type, strike)
option = EuropeanOption(payoff, exercise)
engine = AnalyticEuropeanEngine(process)
option.set_pricing_engine(engine)
accuracy = 0.001
max_evaluations = 1000
min_vol = 0.01
max_vol = 2
vol = option.implied_volatility(price, process,
accuracy,
max_evaluations,
min_vol,
max_vol)
return vol
示例2: blsprice
def blsprice(spot, strike, risk_free_rate, time, volatility,
option_type='Call', dividend=0.0):
"""
Black-Scholes option pricing model
"""
spot = SimpleQuote(spot)
daycounter = Actual360()
risk_free_ts = FlatForward(today(), risk_free_rate, daycounter)
dividend_ts = FlatForward(today(), dividend, daycounter)
volatility_ts = BlackConstantVol(today(), NullCalendar(),
volatility, daycounter)
process = BlackScholesMertonProcess(spot, dividend_ts,
risk_free_ts, volatility_ts)
exercise_date = today() + 90
exercise = EuropeanExercise(exercise_date)
payoff = PlainVanillaPayoff(option_type, strike)
option = EuropeanOption(payoff, exercise)
engine = AnalyticEuropeanEngine(process)
option.set_pricing_engine(engine)
return option.npv
示例3: test_settings_instance_method
def test_settings_instance_method(self):
Settings.instance().evaluation_date = today()
self.assertEqual(
today(),
Settings.instance().evaluation_date
)
示例4: zero_curve
def zero_curve(ts):
days = range(10, 365*20, 30)
dtMat = [calendar.advance(today(), d, Days) for d in days]
df = np.array([ts.discount(dt) for dt in dtMat])
dtMat = [QLDateTodate(dt) for dt in dtMat]
dtToday = QLDateTodate(today())
dt = np.array([(d-dtToday).days/365.0 for d in dtMat])
zc = -np.log(df) / dt
return (dtMat, zc)
示例5: test_create_libor_index
def test_create_libor_index(self):
settings = Settings.instance()
# Market information
calendar = UnitedStates(LiborImpact)
# must be a business day
eval_date = calendar.adjust(today())
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)
term_structure = YieldTermStructure(relinkable=True)
term_structure.link_to(FlatForward(settlement_date, 0.05,
Actual365Fixed()))
index = Libor('USDLibor', Period(6, Months), settlement_days,
USDCurrency(), calendar, Actual360(),
term_structure)
default_libor = USDLibor(Period(6, Months))
for attribute in ["business_day_convention", "end_of_month",
"fixing_calendar", "joint_calendar", "tenor",
"fixing_days", "day_counter", "family_name", "name"]:
self.assertEqual(getattr(index, attribute),
getattr(default_libor, attribute))
示例6: setUp
def setUp(self):
atm_option_tenors = [Period(1, Months), Period(6, Months)] + \
[Period(i, Years) for i in [1, 5, 10, 30]]
atm_swap_tenors = [Period(1, Years), Period(5, Years), Period(10, Years),
Period(30, Years)]
m = np.array([[.1300, .1560, .1390, .1220],
[.1440, .1580, .1460, .1260],
[.1600, .1590, .1470, .1290],
[.1640, .1470, .1370, .1220],
[.1400, .1300, .1250, .1100],
[.1130, .1090, .1070, .0930]])
M = Matrix.from_ndarray(m)
calendar = UnitedStates()
self.atm_vol = SwaptionVolatilityMatrix(calendar,
Following,
atm_option_tenors,
atm_swap_tenors,
M,
Actual365Fixed())
reference_date = calendar.adjust(today())
Settings().evaluation_date = reference_date
self.term_structure = FlatForward(reference_date, 0.05, Actual365Fixed())
self.swap_index = EuriborSwapIsdaFixA(Period(10, Years),
forwarding=self.term_structure)
示例7: test_create_swap_index
def test_create_swap_index(self):
settings = Settings.instance()
# Market information
calendar = TARGET()
# must be a business day
eval_date = calendar.adjust(today())
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);
ibor_index = Libor('USD Libor', Period(6, Months), settlement_days,
USDCurrency(), calendar, Actual360())
index = SwapIndex(
'family name', Period(3, Months), 10, USDCurrency(), TARGET(),
Period(12, Months), Following, Actual360(), ibor_index)
self.assertIsNotNone(index)
示例8: test_blsprice
def test_blsprice(self):
from quantlib.settings import Settings
from quantlib.time.api import today
Settings.instance().evaluation_date = today()
call_value = blsprice(100.0, 97.0, 0.1, 0.25, 0.5)
self.assertAlmostEquals(call_value, 12.61, 2)
示例9: test_create_libor_index
def test_create_libor_index(self):
settings = Settings.instance()
# Market information
calendar = TARGET()
# must be a business day
eval_date = calendar.adjust(today())
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)
term_structure = YieldTermStructure(relinkable=True)
term_structure.link_to(FlatForward(settlement_date, 0.05,
Actual365Fixed()))
index = Libor('USD Libor', Period(6, Months), settlement_days,
USDCurrency(), calendar, Actual360(),
term_structure)
t = index.tenor
self.assertEqual(t.length, 6)
self.assertEqual(t.units, 2)
self.assertEqual('USD Libor6M Actual/360', index.name)
示例10: setUp
def setUp(self):
settlement_date = today()
settings = Settings()
settings.evaluation_date = settlement_date
daycounter = ActualActual()
self.calendar = NullCalendar()
i_rate = .1
i_div = .04
self.risk_free_ts = flat_rate(i_rate, daycounter)
self.dividend_ts = flat_rate(i_div, daycounter)
self.s0 = SimpleQuote(32.0)
# Bates model
self.v0 = 0.05
self.kappa = 5.0
self.theta = 0.05
self.sigma = 1.0e-4
self.rho = 0.0
self.Lambda = .1
self.nu = .01
self.delta = .001
示例11: test_create_swap_index
def test_create_swap_index(self):
settings = Settings.instance()
# Market information
calendar = TARGET()
# must be a business day
eval_date = calendar.adjust(today())
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)
term_structure = YieldTermStructure(relinkable=True)
term_structure.link_to(FlatForward(settlement_date, 0.05,
Actual365Fixed()))
ibor_index = Libor('USD Libor', Period(6, Months), settlement_days,
USDCurrency(), calendar, Actual360(),
term_structure)
index = SwapIndex(
'family name', Period(3, Months), 10, USDCurrency(), TARGET(),
Period(12, Months), Following, Actual360(), ibor_index)
self.assertIsNotNone(index)
示例12: _blsprice
def _blsprice(spot, strike, risk_free_rate, time, volatility,
option_type='Call', dividend=0.0, calc='price'):
"""
Black-Scholes option pricing model + greeks.
"""
_spot = SimpleQuote(spot)
daycounter = ActualActual(ISMA)
risk_free_ts = FlatForward(today(), risk_free_rate, daycounter)
dividend_ts = FlatForward(today(), dividend, daycounter)
volatility_ts = BlackConstantVol(today(), NullCalendar(),
volatility, daycounter)
process = BlackScholesMertonProcess(_spot, dividend_ts,
risk_free_ts, volatility_ts)
exercise_date = today() + Period(time * 365, Days)
exercise = EuropeanExercise(exercise_date)
payoff = PlainVanillaPayoff(option_type, strike)
option = EuropeanOption(payoff, exercise)
engine = AnalyticEuropeanEngine(process)
option.set_pricing_engine(engine)
if calc == 'price':
res = option.npv
elif calc == 'delta':
res = option.delta
elif calc == 'gamma':
res = option.gamma
elif calc == 'theta':
res = option.theta
elif calc == 'rho':
res = option.rho
elif calc == 'vega':
res = option.vega
elif calc == 'lambda':
res = option.delta * spot / option.npv
else:
raise ValueError('calc type %s is unknown' % calc)
return res
示例13: test_analytic_versus_black
def test_analytic_versus_black(self):
settlement_date = today()
self.settings.evaluation_date = settlement_date
daycounter = ActualActual()
exercise_date = settlement_date + 6 * Months
payoff = PlainVanillaPayoff(Put, 30)
exercise = EuropeanExercise(exercise_date)
risk_free_ts = flat_rate(0.1, daycounter)
dividend_ts = flat_rate(0.04, daycounter)
s0 = SimpleQuote(32.0)
v0 = 0.05
kappa = 5.0
theta = 0.05
sigma = 1.0e-4
rho = 0.0
process = HestonProcess(
risk_free_ts, dividend_ts, s0, v0, kappa, theta, sigma, rho
)
option = VanillaOption(payoff, exercise)
engine = AnalyticHestonEngine(HestonModel(process), 144)
option.set_pricing_engine(engine)
calculated = option.net_present_value
year_fraction = daycounter.year_fraction(
settlement_date, exercise_date
)
forward_price = 32 * np.exp((0.1 - 0.04) * year_fraction)
expected = blackFormula(
payoff.type, payoff.strike, forward_price,
np.sqrt(0.05 * year_fraction)
) * np.exp(-0.1 * year_fraction)
tolerance = 2.0e-7
self.assertAlmostEqual(
calculated,
expected,
delta=tolerance
)
示例14: test_creation
def test_creation(self):
settings = Settings()
# Market information
calendar = TARGET()
# must be a business day
settings.evaluation_date = calendar.adjust(today())
settlement_date = Date(18, September, 2008)
# must be a business day
settlement_date = calendar.adjust(settlement_date);
quotes = [0.0096, 0.0145, 0.0194]
tenors = [3, 6, 12]
rate_helpers = []
calendar = TARGET()
deposit_day_counter = Actual365Fixed()
convention = ModifiedFollowing
end_of_month = True
for quote, month in zip(quotes, tenors):
tenor = Period(month, Months)
fixing_days = 3
helper = DepositRateHelper(
quote, tenor, fixing_days, calendar, convention, end_of_month,
deposit_day_counter
)
rate_helpers.append(helper)
ts_day_counter = ActualActual(ISDA)
tolerance = 1.0e-15
ts = term_structure_factory(
'discount', 'loglinear', settlement_date, rate_helpers,
ts_day_counter, tolerance
)
self.assertIsNotNone(ts)
self.assertEquals( Date(18, September, 2008), ts.reference_date)
# this is not a real test ...
self.assertAlmostEquals(0.9975, ts.discount(Date(21, 12, 2008)), 4)
self.assertAlmostEquals(0.9944, ts.discount(Date(21, 4, 2009)), 4)
self.assertAlmostEquals(0.9904, ts.discount(Date(21, 9, 2009)), 4)
示例15: test_creation
def test_creation(self):
settings = Settings()
# Market information
calendar = TARGET()
# must be a business day
settings.evaluation_date = calendar.adjust(today())
settlement_date = Date(18, September, 2008)
# must be a business day
settlement_date = calendar.adjust(settlement_date);
quotes = [SimpleQuote(0.0096), SimpleQuote(0.0145), SimpleQuote(0.0194)]
tenors = [3, 6, 12]
rate_helpers = []
calendar = TARGET()
deposit_day_counter = Actual365Fixed()
convention = ModifiedFollowing
end_of_month = True
for quote, month in zip(quotes, tenors):
tenor = Period(month, Months)
fixing_days = 3
helper = DepositRateHelper(
quote, tenor, fixing_days, calendar, convention, end_of_month,
deposit_day_counter
)
rate_helpers.append(helper)
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
)
self.assertIsNotNone(ts)
self.assertEqual( Date(18, September, 2008), ts.reference_date)
# this is not a real test ...
self.assertAlmostEqual(0.9975, ts.discount(Date(21, 12, 2008)), 4)
self.assertAlmostEqual(0.9944, ts.discount(Date(21, 4, 2009)), 4)
self.assertAlmostEqual(0.9904, ts.discount(Date(21, 9, 2009)), 4)