Disc(Settlement: DateTime;
Maturity: DateTime;
NominalCost: Double;
Redemption: Double;
Basis: Integer): Double;
Disc(Settlement: System.DateTime;
Maturity: System.DateTime;
NominalCost: double;
Redemption: double;
Basis: integer): double;
| 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. |
The Disc method returns discount rate for securities.
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:
B. The number of days in a year (depends on the selected Basis argument value).
DSM. The number of days between the Settlement and Maturity dates.
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), 50, 100, 0);
Debug.WriteLine(r);
End Sub UserProc;
After executing the example the console window displays the discounting rate equal to -2.4.
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, 50, 100, 0);
System.Diagnostics.Debug.WriteLine(r);
End Sub;
See also: