OddlPrice(Settlement: DateTime;
Maturity: DateTime;
LastCouponDate: DateTime;
Rate: Double;
YieldP: Double;
Redemption: Double;
Frequency: Integer;
Basis; Ingteger): Double;
OddlPrice(Settlement: System.DateTime;
Maturity: System.DateTime;
LastCouponDate: System.DateTime;
Rate: double;
YieldP: double;
Redemption: double;
Frequency: integer;
Basis; ingteger): 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. |
| YieldP | Securities annual profit. | 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. |
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 OddlPrice method returns the price for 100 rubles of the face value for an irregular (short or long) last coupon period.
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. 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.
To execute the example, add a link to the MathFin system assembly.
Sub UserProc;
Var
r: Double;
Begin
r := Finance.OddlPrice(DateTime.ComposeDay(2008,02,07), DateTime.ComposeDay(2008,06,15),
DateTime.ComposeDay(2007,10,15), 0.1275, 0.1025, 200, 4, 3);
Debug.WriteLine(r);
End Sub UserProc;
After executing the example the console window displays the price equal to 197.2097.
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,02,07);
DateTime2 := New DateTime(2008,06,15);
DateTime3 := New DateTime(2007,10,15);
r := Finance.OddlPrice(DateTime1, DateTime2, DateTime3, 0.1275, 0.1025, 200, 4, 3);
System.Diagnostics.Debug.WriteLine(r);
End Sub;
See also: