IFinance.OddfPrice

Синтаксис Fore

OddfPrice(Settlement: DateTime;

Maturity: DateTime;

Issue: DateTime;

FirstCouponDate: DateTime;

Rate: Double;

YieldP: Double;

Redemption: Double;

Frequency; Integer;

Basis; Integer): Double;

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

OddfPrice(Settlement: System.DateTime;

Maturity: System.DateTime;

Issue: System.DateTime;

FirstCouponDate: System.DateTime;

Rate: double;

YieldP: double;

Redemption: double;

Frequency; integer;

Basis; integer): double;

Параметры

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

Описание

Метод OddfPrice возвращает цену за 100 рублей номинальной стоимости ценных бумаг для нерегулярного (короткого или длинного) первого периода.

Комментарии

OddfPrice вычисляется следующим образом.

Нерегулярный короткий первый купон:

Где:

A - количество дней от начала периода купона до даты расчета (накопленные дни);

DSC - количество дней от даты расчета до даты следующего купона;

DFC - количество дней от начала нерегулярного купона до даты первого купона;

E - количество дней в периоде купона;

N - количество оплачиваемых купонов между датой расчета и датой погашения. Если это число является дробным, то оно округляется с избытком до ближайшего целого.

Нерегулярный длинный первый купон:

Где:

Aj. Количество дней от начала j-го или последнего квазикупонного периода в нерегулярном периоде;

DCj. Количество дней от указанной даты (или даты выпуска) до первого квазикупона (j = 1) или количество дней в квазикупоне (j = 2,…, j = NC);

DSC. Количество дней от даты расчета до даты следующего купона;

E. Количество дней в периоде купона;

N. Количество оплачиваемых купонов от даты первого фактического купона до даты погашения. (Если это число является дробным, то оно округляется с избытком до ближайшего целого;

NC. Количество периодов квазикупонов, укладывающихся в нерегулярный период. Если это число является дробным, то оно округляется с избытком до ближайшего целого;

NLj. Нормальная продолжительность в днях полного j-го или последнего квазикупонного периода в нерегулярном периоде;

Nq. Количество полных периодов квазикупонов от даты расчета до первого купона.

Пример Fore

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

Sub UserProc;
Var
    r: Double;
Begin
    r := Finance.OddfPrice(DateTime.ComposeDay(2008,11,11), DateTime.ComposeDay(2021,03,01),
        DateTime.ComposeDay(2008,10,15), DateTime.ComposeDay(2009,03,01), 0.12750.102520043);

    Debug.WriteLine(r);
End Sub UserProc;

В результате выполнения примера в окно консоли будет выведена цена, равная «146.115».

Пример 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, DateTime3, DateTime4: System.DateTime;
Begin
    DateTime1 := New DateTime(2008,11,11);
    DateTime2 := New DateTime(2021,03,01);
    DateTime3 := New DateTime(2008,10,15);
    DateTime4 := New DateTime(2009,03,01);
    r := Finance.OddfPrice(DateTime1, DateTime2, DateTime3, DateTime4, 0.12750.102520043);
    System.Diagnostics.Debug.WriteLine(r);
End Sub;

См. также:

IFinance