Quantlib Python Python Ploing Sceent отрицательное время даноPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Quantlib Python Python Ploing Sceent отрицательное время дано

Сообщение Anonymous »

Я хочу оценить облигацию с плавающей ставкой в ​​Quantlib в Python. У меня есть нулевая кривая с датами и Zero-Rates OIS, и у меня есть кривая с нулевым уровнем Euribor 3M, которые фиксируются каждый месяц. Мне нужны оба эти кривые для поплавки. Моя справочная дата, например, 2019-11-25, и я хотел бы оценить связь в тот день. Допустим, моя кривая Euribor 3M начинается с 2020-02-27, затем я получу ошибку, что для 2019-08-26 для 2019-08-26 необходимо дополнительное исправление, что имеет смысл. Однако, когда я добавлю это исправление, я получу ошибку «отрицательное время». Таким образом, есть ли у кого -нибудь пример оценки облигации с плавающей ставкой, используя кривую фиксации (любая кривая вида ibor) и дисконтирование/нулевой балл, где дата оценки находится между двумя датами фиксации?

Код: Выделить всё

import Quantlib as ql
import numpy as np

dates_ois = [ql.Date(25,11,2019), ...]
rates_ois = [-0.0045, ...]
dates_3M = [ql.Date(27,2,2020), ...]
rates_3M = [-0.004, ...]

reference_date = ql.Date(25,11,2019)

calender=ql.TARGET()
dcc_ois = ql.Acutal360()
dcc_3M = ql.Actual360()
interpolation = ql.Linear()
compounding = ql.Compounded
frequency = ql.Annual

curve_ois = ql.ZeroCurve(dates_ois, rates_ois, dcc_ois, calendar,
interpolation, compunding, frequency)
curve_ois_handle = ql.YieldTermStructureHandle(curve_ois)
curve_3M = q.ZeroCurve(dates_3M, rates3M, dcc_3M, calendar,
interpolation, compounding, frequency)
curve_3M_handle = ql.YieldTermStructureHandle(curve_3M)

nominal = 100
issue_date = ql.Date(28,5,2019)
maturity = ql.Date(5,1,2027)
tenor = ql.Period('3M')
end_of_month = False

schedule = ql.Schedule(issue_date, maturity, tenor, calendar,
ql.ModifiedFollowing, ql.ModifiedFollowing,
ql.DateGeneration.Forward, end_of_month)
settlement_days = 0
euribor3M = ql.Euribor3M(curve_3M_handle)
dcc_bond = ql.Actual360()

floater = ql.FloatingRateBond(settlement_days, nominal, schedule,
euribor3M, dcc_bond)
pricing_engine = ql.DiscoundingBondEngine(curve_ois_handle)
floater.setPricingEngine(pricing_engine)
print(floater.NPV())
< /code>
Для этого кода я получаю сообщение об ошибке "Пропавшая euribor3m Actual /360 исправление на 26 августа 2019 года".
Это имеет смысл, так как я хочу оценить цену в ноябре. 25 -е, 2019, но следующее исправление состоится 26 ноября 2019 года и действует до 27 февраля 2020 года, что является первой датой на моей кривой Euribor. Однако, когда я делаю < /p>
fixing_date = ql.Date(26,8,2019)
fixing_value = -0.004
euribor3M.addFixing(dixing_date, fixing_value)
Я получаю сообщение об ошибке «Новое время (-0.252778)."

Подробнее здесь: https://stackoverflow.com/questions/794 ... time-given
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»