YieldF(Settlement: DateTime;
Maturity: DateTime;
Rate: Double;
Price: Double;
Redemption: Double;
Frequency: Integer;
Basis: Integer): Double;
YieldF(Settlement: System.DateTime;
Maturity: System.DateTime;
Rate: double;
Price: double;
Redemption: double;
Frequency: integer;
Basis: integer): double;
| Parameters | Description | Constraints |
| Settlement | Securities settlement date. | Must be less than Maturity. |
| Maturity | Securities maturity date. | Must be greater than Settlement. |
| Rate | Annual interest rate for securities coupons. | Cannot be negative. |
| Price | Securities price for $100 of principal value. | Must be positive. |
| Redemption | Redemption price for $100 of principal value. | Must be positive. |
| Frequency | The number of payments for coupons in a year: 1 - For annual payments. 2 - For semi-annual payments. 4 - For quarterly payments. |
Must take the values 1,2 or 4. |
| Basis | The employed method of day calculation: 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 YieldF method returns yield for securities, for which interest is paid regularly.
If only one or less coupon periods fit until the maturity date, the YieldF function is calculated, using the following formula:
Where:
A. The number of dates from the coupon start date to the settlement date (accumulated days).
DSR. The number of days from settlement date to maturity date.
E. The number of days in coupon period.
To execute the example, add a link to the MathFin system assembly.
Sub UserProc;
Var
r: Double;
Begin
r := Finance.YieldF(DateTime.ComposeDay(2008,01,01), DateTime.ComposeDay(2008,06,01), 0.15, 145, 150, 1, 0);
Debug.WriteLine(r);
End Sub UserProc;
After executing the example the console window displays the securities profitability equal to 0.1756.
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.YieldF(DateTime1, DateTime2, 0.15, 145, 150, 1, 0);
System.Diagnostics.Debug.WriteLine(r);
End Sub;
See also: