INVESTMENT_MDURATION

Modified Macaulay duration of security paying periodic interest

Description

Calculates the modified Macaulay duration of a security that pays periodic interest based on a given expected yield.

Function signature

INVESTMENT_MDURATION(settlement: String, maturity: String, rate: Number, yield: Number, frequency: Number, basis: String = us_nasd) => Number

Parameter

Description

Settlement

The security's settlement date.

Maturity

The security's maturity or end date.

Rate

The annualized rate of interest.

Yield

The expected annual yield of the security.

Frequency

Yearly interest/coupon payments count (1, 2, or 4).

Basis

Method to use for counting days per month/year:

  • `us_nasd` (default): 30-day month, 360-day year, i.e. US (NASD).

  • `actual`: Actual number of days per month/year.

  • `actual_360`: 360 day year, actual number of days per month.

  • `actual_365`: 365 day year, actual number of days per month. This means leap years are not taken into account.

  • `european`: Like `us_nasd`, but for months that are not 30 days long, European standards are used.

Examples

date1 = "2010-01-01T13:06:15+03:00"
date2 = "2039-01-01T13:06:15+03:00"
date3 = "2009-01-30T13:06:15+03:00"
date4 = "2023-07-30T13:06:15+03:00"

Formula

Return value

INVESTMENT_MDURATION(date1, date2, 0.03, 0.12, 2, "us_nasd")

9.83962981

INVESTMENT_MDURATION(date1, date2, 0.03, 0.12, 2)

9.83962981

INVESTMENT_MDURATION(date3, date4, 0.05, 1.5, 4, "us_nasd")

0.66666939

INVESTMENT_MDURATION(date3, date4, 0.05, 1.5, 4, "actual_360")

0.81616434