SOFR меняет NPV и денежный поток, отличающийся от результатов BBG, с использованием Python QuantlibPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 SOFR меняет NPV и денежный поток, отличающийся от результатов BBG, с использованием Python Quantlib

Сообщение Anonymous »

Я использую python quantlib для определения цены свопа, но результаты NPV и денежного потока отличаются от результатов BBG, поскольку все входные элементы управления одинаковы, фиксированный график должен быть одинаковым, а плавающий денежный поток — нет. Я понятия не имею, что с ним не так, можете помочь выяснить, где мне следует изменить?
код Результат NPV: -28451,35 Результат NPV BBG: -28449,30
Денежный поток кода и денежные потоки BBG: введите сюда описание изображения. Введите сюда описание изображения.
Введите и BBG NPV: введите сюда описание изображения.
Данные кривой : введите сюда описание изображения
Ниже приведен мой код Python.
import pandas as pd
import QuantLib as ql

calculation_date = ql.Date(22, 7, 2024)

ql.Settings.instance().evaluationDate = calculation_date

yts = ql.RelinkableYieldTermStructureHandle()
index = ql.OvernightIndex("USD Overnight Index", 0, ql.USDCurrency(), ql.UnitedStates(ql.UnitedStates.Settlement),
ql.Actual360(), yts)

swaps = {
ql.Period("1W"): 5.34063/100,
ql.Period("2W"): 5.34045/100,
ql.Period("3W"): 5.34350/100,
ql.Period("1M"): 5.34750/100,
ql.Period("2M"): 5.34040/100,
ql.Period("3M"): 5.28600/100,
ql.Period("4M"): 5.24215/100,
ql.Period("5M"): 5.20170/100,
ql.Period("6M"): 5.14835/100,
ql.Period("7M"): 5.09080/100,
ql.Period("8M"): 5.04535/100,
ql.Period("9M"): 4.98930/100,
ql.Period("10M"): 4.93130/100,
ql.Period("11M"): 4.88620/100,
ql.Period("12M"): 4.83670/100,
ql.Period("18M"): 4.51801/100,
ql.Period("2Y"): 4.33160/100,
ql.Period("3Y"): 4.08150/100,
ql.Period("4Y"): 3.94900/100,
ql.Period("5Y"): 3.87846/100,
ql.Period("6Y"): 3.84260/100,
ql.Period("7Y"): 3.82400/100,
ql.Period("8Y"): 3.81550/100,
ql.Period("9Y"): 3.81350/100,
ql.Period("10Y"): 3.81640/100,
ql.Period("12Y"): 3.83020/100,
ql.Period("15Y"): 3.84900/100,
ql.Period("20Y"): 3.83529/100,
ql.Period("25Y"): 3.75940/100,
ql.Period("30Y"): 3.67355/100,
ql.Period("40Y"): 3.47606/100,
ql.Period("50Y"): 3.26680/100
}

tenors = list(swaps.keys())
quotes = [ql.SimpleQuote(swaps[k]) for k in tenors]
handles = [ql.QuoteHandle(quote) for quote in quotes]

rate_helpers = []

for quote, tenor in zip(handles, tenors):
helper = ql.OISRateHelper(2, tenor, quote, index)
rate_helpers.append(helper)

curve = ql.PiecewiseFlatForward(calculation_date, rate_helpers, ql.Actual360())
yts.linkTo(curve)

swap = ql.MakeOIS(ql.Period('10Y'),
index, 0.03736141,
ql.Period('0D'),
swapType=-1,
nominal=10000000,
effectiveDate=ql.Date(24, 10, 2024),
paymentLag=2)

# Set the pricing engine
engine = ql.DiscountingSwapEngine(yts)
swap.setPricingEngine(engine)

# Calculate the original NPV
npv = swap.NPV()

print(npv)

cashflows = pd.DataFrame({
'nominal': cf.nominal(),
'accrualStartDate': cf.accrualStartDate().ISO(),
'accrualEndDate': cf.accrualEndDate().ISO(),
'rate': cf.rate(),
'amount': cf.amount()
} for cf in map(ql.as_coupon, swap.leg(1)))

print(cashflows)


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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • BFXImpliedSwap и другие функции bbg в blpapi Python
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • BFXImpliedSwap и другие функции bbg в blpapi Python
    Anonymous » » в форуме Python
    0 Ответы
    6 Просмотры
    Последнее сообщение Anonymous
  • Как мне отформатировать строковое значение из пользовательского списка в денежный формат?
    Anonymous » » в форуме C#
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Как открыть денежный ящик в приложении C#?
    Anonymous » » в форуме C#
    0 Ответы
    11 Просмотры
    Последнее сообщение Anonymous
  • Шифрование C# показывает результат, отличающийся от эквивалента Java
    Anonymous » » в форуме JAVA
    0 Ответы
    20 Просмотры
    Последнее сообщение Anonymous

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