OddlYield(Settlement: DateTime; Maturity: DateTime; LastCouponDate: DateTime; Rate: Double; Price: Double; Redemption: Double; Frequency: Integer; [Basis: Integer = 0]): Double;
OddlYield(Settlement: System.DateTime; Maturity: System.DateTime; LastCouponDate: System.DateTime; Rate: double; Price: double; Redemption: double; Frequency: integer; Basis: integer): double;
Settlement. The payment day on securities. Must be greater than Maturity.
Maturity. The security's maturity date. Must be greater than LastCouponDate.
LastCouponDate. The date of the last coupon payment on securities. Must be less than Settlement.
Rate. The security's interest rate. Must be positive.
Price. The value of securities. Must be positive.
Redemption. The security's redemption value per $100 face value. Must be positive.
Frequency. The annual number of coupon payments. The parameter can take the following values:
1. Annual payments.
2. Semi-annual payments.
4. Quarterly payments.
Basis. The day calculation method used. Select a value from 0 to 4:
0. The day calculation method - American/360 days (NSAD method).
1. The day calculation method - Actual/actual.
2. The day calculation method - Actual/360 days.
3. The day calculation method - Actual/365 days.
4. The day calculation method - European 30/360 days.
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.
Add 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;
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;
After executing the example the console window displays the profit equal to 3.83%.
See also: