2015-03-05 2 views
1

Я хочу рассчитать цену облигации со скидками, известными как функция времени и фиксированный купон.Как рассчитать цену облигаций с одним именем, используя QuantLib?

Пример, который я нашел (bond.cpp) из QuantLib 1.5, выглядит довольно сложно. Я удалил облигацию с нулевой облигацией и плавающей купоной, оставив только часть расчета фиксированной купонной облигации.

Часть я не понимаю, что, как я должен определить RATE хелперов и CURVE части здания, на основе таблицы, у меня есть:

Instrument Typ | Дата погашения | Цитировать | Фактор скидок

CD     03/04/2015  0.25  0.9999 
CD     03/18/2015  0.254  0.9998 
CD     06/17/2015  0.266  0.9997 
CD     09/16/2015  0.38  0.9996 
CD     12/16/2015  0.57  0.9995 
..... 
SWAP    03/04/2019  1.33  0.94 
SWAP    03/04/2020  1.66  0.92 
SWAP    03/04/2021  1.74  0.89 

Что мне делать, чтобы построить кривую скидок в QuantLib?

ответ

2

Вы должны напрямую использовать свои коэффициенты скидок и забыть о помощниках по курсу и построить кривые.

Последние используются, когда вы хотите использовать кривую по определенной цене; но если вы уже рассчитали коэффициенты дисконтирования, вы можете просто использовать шаблон InterpolatedDiscountCurve класса и построить кривую непосредственно, как в:

#include <ql/termstructures/yield/discountcurve.hpp> 

... 

boost::shared_ptr<YieldTermStructure> discountCurve(
    new InterpolatedDiscountCurve<LogLinear>(dates, discounts, 
              dayCounter)); 

где dates является vector<Date> (которая должна включать в себя в качестве первой даты начала кривая, обычно сегодняшняя дата), discounts - это vector<double>, содержащий соответствующие коэффициенты дисконтирования (включая 1 в качестве первого) и dayCounter будет использоваться для преобразования дат во времени; Actual360() должно быть в порядке.

В приведенном выше примере используется логарифмическая линейная интерполяция; вы можете изменить его, заменив LogLinear на другой (зайдите в папку <ql/math/interpolations/> для доступных).

Смежные вопросы