IFinance.Disc

Fore Syntax

Disc(Settlement: DateTime;

Maturity: DateTime;

NominalCost: Double;

Redemption: Double;

Basis: Integer): Double;

Fore.NET Syntax

Disc(Settlement: System.DateTime;

Maturity: System.DateTime;

NominalCost: 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.
NominalCost 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 Disc method returns discount rate for 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. For example, 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.

Disc 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.
Disc(DateTime.ComposeDay(2008,01,01), DateTime.ComposeDay(2008,06,01), 501000);
    Debug.WriteLine(r);
End Sub UserProc;

After executing the example the console window displays the discounting rate equal to -2.4.

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,01,01);
    DateTime2 := New DateTime(2008,06,01);
    r := Finance.Disc(DateTime1, DateTime2, 501000);
    System.Diagnostics.Debug.WriteLine(r);
End Sub;

See also:

IFinance