IFinance.MDuration

Fore Syntax

MDuration(Settlement: DateTime;

Maturity: DateTime;

CouponRate: Double;

YieldP: Double;

Frequency: Integer;

Basis: Integer): Double;

Fore.NET Syntax

MDuration(Settlement: System.DateTime;

Maturity: System.DateTime;

CouponRate: double;

YieldP: double;

Frequency: integer;

Basis: integer): double;

Parameters

Parameters Description Constraints
Settlement Securities settlement date. Must be less than Maturity.
Maturity Securities maturity date. Must be greater than Settlement.
CouponRate Annual interest rate for securities coupons. Cannot be negative.
YieldP Securities annual profit. Cannot be negative.
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.

Description

The Mduration method returns a modified Macaulay duration for securities with supposed face value of $100.

Comments

Mduration is calculated using the following formula:

To get Macaulay duration, use the IFinance.Duration method.

Fore Example

To execute the example, add a link to the MathFin system assembly.

Sub UserProc;
Var
    r: Double;
Begin
    r := Finance.Mduration(DateTime.ComposeDay(2008,01,01), DateTime.ComposeDay
(2016,01,01), 0.280.8243);
    Debug.WriteLine(r);
End Sub UserProc;

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

Fore.NET Example

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: System.DateTime;
Begin
    DateTime1 := New DateTime(2008,01,01);
    DateTime2 := New DateTime(2016,01,01);
    r := Finance.Mduration(DateTime1, DateTime2, 0.280.8243);
    System.Diagnostics.Debug.WriteLine(r);
End Sub;

See also:

IFinance