IFinance.Duration

Syntax

Duration(Settlement: DateTime; Maturity: DateTime; CouponRate: Double; YieldP: Double; Frequency: Integer; [Basis: Integer = 0]): Double;

Duration(Settlement: System.DateTime; Maturity: System.DateTime; CouponRate: double; YieldP: double; Frequency: integer; Basis: integer): double;

Parameters

Settlement. The payment day on securities. Must be less than Maturity

Maturity. The security's maturity date. Must be greater than Settlement

CouponRate. The security's price per $100 face value. Must be positive

YieldP. The security's redemption price per $100 face value. Must be positive

Frequency. The annual number of coupon payments. The parameter can take the following values:

Basis. The day calculation method used. Select a value from 0 to 4:

Description

The Duration method returns Macaulay duration for supposed face value of $100.

Comments

The duration is determined as a weighted mean of present value of cash flows and is used as a measure of reaction of bond prices to change in yield.

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. 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.

Example

Add a link to the MathFin system assembly.

Sub UserProc;
Var
    r: Double;
Begin
    r := Finance.Duration(DateTime.ComposeDay(20080101), DateTime.ComposeDay(20080601), 0.280.8243);
    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: System.DateTime;
Begin
    DateTime1 := New DateTime(2008,01,01);
    DateTime2 := New DateTime(2008,06,01);
    r := Finance.Duration(DateTime1, DateTime2, 0.280.8243);
    System.Diagnostics.Debug.WriteLine(r);
End Sub;

After executing the example the console window displays the Macaulay duration equal to 0.3968006367813.

See also:

IFinance