IFinance.YieldDisc

Fore Syntax

YieldDisc(Settlement: DateTime;

Maturity: DateTime;

Price: Double;

Redemption: Double;

Basis: Integer): Double;

Fore.NET Syntax

YieldDisc(Settlement: System.DateTime;

Maturity: System.DateTime;

Price: double;

Redemption: double;

Basis: integer): double;

Parameters

Parameters Description Constraints
Settlement Securities settlement date. Must be less than Maturity.
Maturity Securities maturity date. Must be greater than Settlement.
Price Securities price for $100 of face value. Must be positive.
Redemption Redemption price for $100 of face value. Must be positive.
Basis The method of day calculation in use:
0 - American/360 days (NSAD method).
1 - Factual/factual.
2 - Factual/360days.
3 - Factual/365 days.
4 - European 30/360 days.
Must be in the [0,4] interval.

Description

The YieldDisc method returns annual profit for discounted securities.

Comments

The agreement date is the date of selling a coupon, for example, a bond, to the buyer. The payment date is the coupon expiry date. Consider a bond with duration of 30 years was issued on Jan 1 2008 and was acquired by a buyer in 6 months after the issue date. The issue date is Jan 1 2008, the settlement date - July 1 2008, and the maturity date is Jan 1 2038, that is 30 years after the issue date.

YieldDisc is calculated using the following formula:

Where:

Fore Example

To execute the example, add a link to the MathFin system assembly.

Sub UserProc;
Var
    r: Double;
Begin
    r := Finance.
YieldDisc(DateTime.ComposeDay(2008,02,16), DateTime.ComposeDay(2008,03,01), 99.7951002);
    Debug.WriteLine(r);
End Sub UserProc;

After executing the example the console window displays the annual profit equal to 0.0528.

Fore.NET Example

The requirements and result of the Fore.NET example execution match with those in the Fore example.

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,02,16);
    DateTime2 := New DateTime(2008,03,01);
    r := Finance.YieldDisc(DateTime1, DateTime2, 99.7951002);
    System.Diagnostics.Debug.WriteLine(r);
End Sub;

See also:

IFinance