IFinance.RedemptionYield

Синтаксис Fore

RedemptionYield(

Price: Double;

AccumulateIncome: Double;

CouponsDates: Array;

Coupons: Array;

PaymentsDates: Array;

Payments: Array;

Settlement: DateTime): Double;

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

RedemptionYield(

Price: double;

AccumulateIncome: double;

CouponsDates: System.Array;

Coupons: System.Array;

PaymentsDates: System.Array;

Payments: System.Array;

Settlement: System.DataTime): double;

Параметры

Параметры Описание Ограничения
Price Цена облигации. Должен быть положительным.
AccumulateIncome Накопленный купонный доход. Должен быть неотрицательным.
CouponsDates Массив с датами выплат по купону. Необходимо использовать массив типа DateTime.
Coupons Массив с размерами купонов. Необходимо использовать массив типа Double.
PaymentsDates Массив с датами выплат номинальной стоимости. Необходимо использовать массив типа DateTime.
Payments Массив с размерами выплат номинальной стоимости. Необходимо использовать массив типа Double.
Settlement Дата, на которую производится расчет. Должен быть меньше каждого элемента массивов CouponsDates и PaymentsDates.

Описание

Метод RedemptionYield возвращает эффективную доходность к погашению.

Комментарии

Эффективная доходность вычисляется на основе решения следующего равенства:

Где:

Равенство решается относительно переменной Y, которая является искомой величиной.

Размерность массива CouponsDates должна соответствовать размерности массива Coupons.

Размерность массива PaymentsDates должна соответствовать размерности массива Payments.

Пример Fore

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

Sub UserProc;
Var
    Price, AccumulateIncome, Result: Double;
    CouponsDates: Array[5Of DateTime;
    Coupons: Array[5Of Double;
    PaymentsDates: Array[2Of DateTime;
    Payments: Array[2Of Double;
    Settlement: DateTime;
Begin
    // Цена облигации
    Price := 1150;
    // Накопленный доход по купонам
    AccumulateIncome := 40;
    // Массив с датами выплат по купону
    CouponsDates[0] := DateTime.ComposeDay(200611);
    CouponsDates[1] := DateTime.ComposeDay(200641);
    CouponsDates[2] := DateTime.ComposeDay(200671);
    CouponsDates[3] := DateTime.ComposeDay(2006101);
    CouponsDates[4] := DateTime.ComposeDay(200711);
    // Массив с размерами купонов
    Coupons[0] := 80;
    Coupons[1] := 80;
    Coupons[2] := 80;
    Coupons[3] := 80;
    Coupons[4] := 80;
    // Массив с датами выплат номинальной стоимости
    PaymentsDates[0] := DateTime.ComposeDay(200711);
    PaymentsDates[1] := DateTime.ComposeDay(200741);
    // Массив с размерами выплат номинальной стоимости
    Payments[0] := 500;
    Payments[1] := 500;
    Settlement := DateTime.ComposeDay(20051115); // Дата, на которую производится расчет
    // Строка результата метода
    Result := Finace.RedemptionYield(Price, AccumulateIncome, CouponsDates, Coupons, PaymentsDates, Payments, Settlement);
    debug.WriteLine(Result); // Вывод результата в окно консоли
    debug.WriteLine(Finance.ErrorMsg);
End Sub UserProc;

В результате выполнения примера в окно консоли будет выведена эффективная доходность, равная 16,51%.

Пример Fore.NET

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

Imports Prognoz.Platform.Interop.MathFin;

Public Shared Sub Main(Params: StartParams);
Var
    Price, AccumulateIncome, Result: Double;
    CouponsDates: Array[5Of DateTime;
    Coupons: Array[2Of Double;
    PaymentsDates: Array[5Of DateTime;
    Payments: Array[2Of Double;
    Settlement: DateTime;
    IFinance: Prognoz.Platform.Interop.MathFin.IFinance;
Begin
    // Цена облигации
    Price := 1150;
    // Накопленный доход по купонам
    AccumulateIncome := 40;
    // Массив с датами выплат по купону
    CouponsDates[0] := DateTime.Parse("1.1.2006");
    CouponsDates[1] := DateTime.Parse("4.1.2006");
    CouponsDates[2] := DateTime.Parse("7.1.2006");
    CouponsDates[3] := DateTime.Parse("10.1.2006");
    CouponsDates[4] := DateTime.Parse("1.1.2007");
    // Массив с размерами купонов
    Coupons[0] := 80;
    Coupons[1] := 80;
    Coupons[2] := 80;
    Coupons[3] := 80;
    Coupons[4] := 80;
    // Массив с датами выплат номинальной стоимости
    PaymentsDates[0] := DateTime.Parse("1.1.2007");
    PaymentsDates[1] := DateTime.Parse("4.1.2007");
    // Массив с размерами выплат номинальной стоимости
    Payments[0] := 500;
    Payments[1] := 500;
    Settlement := DateTime.Parse("11.15.2005"); // Дата, на которую производится расчет
    Result := IFinance.RedemptionYield(Price, AccumulateIncome, CouponsDates, Coupons, PaymentsDates, Payments, Settlement); // Строка результата метода
    System.Diagnostics.Debug.WriteLine(Result); // Вывод результата в окно консоли
    System.Diagnostics.Debug.WriteLine(Finance.ErrorMsg);
End Sub;

См. также:

IFinance