OddfYield(Settlement: DateTime;
Maturity: DateTime;
Issue: DateTime;
FirstCouponDate: DateTime;
Rate: Double;
PresentValue: Double;
Redemption: Double;
Frequency: Integer;
Basis: Integer): Double;
OddfYield(Settlement: System.DateTime;
Maturity: System.DateTime;
Issue: System.DateTime;
FirstCouponDate: System.DateTime;
Rate: double;
PresentValue: double;
Redemption: double;
Frequency: integer;
Basis: integer): double;
| Parameters | Description | Constraints |
| Settlement | Securities settlement date. | Must be greater than Issue. |
| Maturity | Securities maturity date. | Must be greater than FirstCouponDate. |
| Issue | Securities issue date. | Must be less than Settlement. |
| FirstCouponDate | Securities first coupon date. | Must be greater than Settlement. |
| Rate | Securities interest rate. | Cannot be negative. |
| PresentValue | Securities value. | Cannot be negative. |
| Redemption | Redemption price for $100 of face 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. |
May 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 OddfYield method returns profit for securities with irregular (short or long) first period.
To get a price for 100$ of nominal securities value for irregular (short or long) first period, use the IFinance.OddfPrice method.
To execute the example, add a link to the MathFin system assembly.
Sub UserProc;
Var
r: Double;
Begin
r := Finance.OddfYield(DateTime.ComposeDay(2008,11,11), DateTime.ComposeDay(2021,03,01),
DateTime.ComposeDay(2008,10,15), DateTime.ComposeDay(2009,03,01), 0.1075, 145.5, 200, 4, 3);
Debug.WriteLine(r);
End Sub UserProc;
After executing the example the console window displays the profit equal to 9.07%.
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, 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.OddfYield(DateTime1, DateTime2, DateTime3, DateTime4, 0.1075, 145.5, 200, 4, 3);
System.Diagnostics.Debug.WriteLine(r);
End Sub;
See also: