IFinance.Duration

Синтаксис Fore

Duration(Settlement: DateTime;

Maturity: DateTime;

CouponRate: Double;

YieldP: Double;

Frequency: Integer;

Basis: Integer): Double;

Синтаксис Fore.NET

Duration(Settlement: System.DateTime;

Maturity: System.DateTime;

CouponRate: double;

YieldP: double;

Frequency: integer;

Basis: integer): double;

Параметры

Параметры Описание Ограничения
Settlement Дата расчета за ценные бумаги. Должен быть меньше Maturity.
Maturity Срок погашения ценных бумаг. Должен быть больше Settlement.
CouponRate Цена ценных бумаг за 100 руб. номинальной стоимости. Должен быть неотрицательным.
YieldP Выкупная стоимость ценных бумаг за 100 руб. номинальной стоимости. Должен быть неотрицательным.
Frequency Количество выплат по купонам за год:
1 - для ежегодных выплат;
2 - для полугодовых выплат;
4 - для ежеквартальных выплат.
Должен принимать значения 1, 2 или 4.
Basis Используемый способ вычисления дня:
0 - Американский/360 дней (метод NSAD);
1 - Фактический/фактический;
2 - Фактический/360 дней;
3 - Фактический/365 дней;
4 - Европейский 30/360 дней.
Должен принадлежать промежутку [0,4].

Описание

Метод Duration возвращает продолжительность Маколея (Macaulay duration) для предполагаемой номинальной стоимости 100 руб.

Комментарии

Продолжительность определяется как взвешенное среднее приведенной стоимости денежных потоков и используется как мера реакции цен облигаций на изменение доходности.

Дата соглашения является датой продажи покупателю купона, например, облигации. Срок платежа представляет собой дату истечения срока действия купона. Пусть, например, облигация со сроком действия 30 лет выпущена 1 января 2008 года и была приобретена покупателем через шесть месяцев после своего выпуска. Датой выпуска будет являться 1 января 2008 года, датой расчета - 1 июля 2008, а срок погашения такой облигации - 1 января 2038 года, то есть через 30 лет после даты выпуска.

Пример Fore

Для выполнения примера добавьте ссылку на системную сборку MathFin.

Sub UserProc;
Var
    r: Double;
Begin
    r := Finance.Duration(DateTime.ComposeDay(20080101), DateTime.ComposeDay(20080601), 0.280.8243);
    Debug.WriteLine(r);
End Sub UserProc;

В результате выполнения примера в окно консоли будет выведена продолжительность Маколея (Macaulay duration), равная «0.3968006367813».

Пример Fore.NET

Необходимые требования и результат выполнения примера Fore.NET совпадают с примером Fore.

Imports Prognoz.Platform.Interop.MathFin;

Public Shared Sub Main(Params: StartParams);
Var
    r: double;
    Finance: FinanceClass = New FinanceClass();
    DateTime1, DateTime2: System.DateTime;
Begin
    DateTime1 := New DateTime(2008,01,01);
    DateTime2 := New DateTime(2008,06,01);
    r := Finance.Duration(DateTime1, DateTime2, 0.280.8243);
    System.Diagnostics.Debug.WriteLine(r);
End Sub;

См. также:

IFinance