OddlYield(Settlement: DateTime;
Maturity: DateTime;
LastCouponDate: DateTime;
Rate: Double;
Price: Double;
Redemption: Double;
Frequency: Integer;
Basis: Integer): Double;
OddlYield(Settlement: System.DateTime;
Maturity: System.DateTime;
LastCouponDate: System.DateTime;
Rate: double;
Price: double;
Redemption: double;
Frequency: integer;
Basis: integer): double;
| Parameters | Description | Constraints |
| Settlement | Securities settlement date. | Must be greater than LastCouponDate. |
| Maturity | Securities maturity date. | Must be greater than Settlement. |
| LastCouponDate | Securities last coupon date. | Must be less than Settlement. |
| Rate | Securities interest rate. | Cannot be negative. |
| Price | Securities value. | Cannot be negative. |
| 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 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 OddfYield method returns profit for securities with irregular (short or long) last period.
OddlYield is calculated using the following formula:
Where:
Aj. The number of accumulated days for the j-th or last quasi coupon period in an irregular period, counted forward from the date of the last payment before maturity.
DCj. The number of days, counted for the j-th or last quasi coupon period, divided by the length of the actual coupon period.
NC. The number of quasi coupon periods, which fits in an irregular period. If this number is fractional, it is rounded up to the next integer.
NLj. Normal length in days of the full j-th or last quasi coupon period in an irregular period.
To execute the example, add a link to the MathFin system assembly.
Sub UserProc;
Var
r: Double;
Begin
r := Finance.OddlYield(DateTime.ComposeDay(2008,04,20), DateTime.ComposeDay(2008,06,15),
DateTime.ComposeDay(2007,12,24), 0.0275, 101.82, 102, 4, 3);
Debug.WriteLine(r);
End Sub UserProc;
After executing the example the console window displays the profit equal to 3.83%.
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: System.DateTime;
Begin
DateTime1 := New DateTime(2008,04,20);
DateTime2 := New DateTime(2008,06,15);
DateTime3 := New DateTime(2007,12,24);
r := Finance.OddlYield(DateTime1, DateTime2, DateTime3, 0.0275, 101.82, 102, 4, 3);
System.Diagnostics.Debug.WriteLine(r);
End Sub;
See also: