floatdiscmargin

Discount margin for floating-rate bond

Syntax

Margin = floatdiscmargin(Price,Spread,Settle,Maturity,
RateInfo,LatestFloatingRate)
Margin = floatdiscmargin(Price,Spread,Settle,Maturity,
RateInfo,LatestFloatingRate,Name,Value)

Description

Margin = floatdiscmargin(Price,Spread,Settle,Maturity,
RateInfo,LatestFloatingRate)
calculates the discount margin or zero discount margin for a floating-rate bond.

Margin = floatdiscmargin(Price,Spread,Settle,Maturity,
RateInfo,LatestFloatingRate,Name,Value)
calculates the discount margin or zero discount margin for a floating-rate bond with additional options specified by one or more Name,Value pair arguments.

Input Arguments

Price

NINST-by-1 matrix of bond prices where the discount margin is to be computed. The spread is calculated against the clean price (the function internally does not add the accrued interest to the price specified by the Price input). If the spread is required against the dirty price, you must supply the dirty price to this input.

Spread

NINST-by-1 matrix for the number of basis points over the reference rate.

Settle

Settlement date of the floating-rate bond(s). If supplied as a NINST-by-1 vector of dates, all settlement dates must be the same (only a single settlement date is supported).

Maturity

NINST-by-1 vector of dates representing the maturity date of the floating-rate bond.

RateInfo

Interest-rate information. This argument determines if the discount margin or zero discount margin is calculated. If this input is a NINST-by-2 vector, the discount margin is calculated where the:

  • First column is the stub rate between the settlement date and the first coupon rate.

  • Second column is the reference rate for the term of the floating coupons (for example, the 3-month LIBOR from the settlement date for a bond with Reset of 4).

    Note:   If this argument is an annualized zero-rate term structure created by intenvset, the zero discount margin is calculated.

LatestFloatingRate

NINST-by-1 vector representing the rate for the next floating payment set at the last reset date.

Name-Value Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is the argument name and Value is the corresponding value. Name must appear inside single quotes (' '). You can specify several name and value pair arguments in any order as Name1,Value1,...,NameN,ValueN.

'Reset'

NINST-by-1 vector representing the frequency of payments per year.

Default: 1

'Basis'

NINST-by-1 vector representing the basis used for time factor calculations:

  • 0 = actual/actual

  • 1 = 30/360 (SIA)

  • 2 = actual/360

  • 3 = actual/365

  • 4 = 30/360 (BMA)

  • 5 = 30/360 (ISDA)

  • 6 = 30/360 (European)

  • 7 = actual/365 (Japanese)

  • 8 = actual/actual (ICMA)

  • 9 = actual/360 (ICMA)

  • 10 = actual/365 (ICMA)

  • 11 = 30/360E (ICMA)

  • 12 = actual/actual (ISDA)

  • 13 = BUS/252

For more information, see basis.

Default: 0 (actual/actual)

'Principal'

NINST-by-1 of notional principal amounts or NINST-by-1 cell array where each element is a NUMDATES-by-2 cell array where the first column is dates and the second column is the associated principal amount. The date indicates the last day that the principal value is valid.

Default: 100

'EndMonthRule'

NINST-by-1 vector representing the end-of-month rule.

Default: 1 (in effect)

'AdjustCashFlowsBasis'

NINST-by-1 vector of logicals. Adjusts cash flows according to the accrual amount.

    Note:   Usually you want to set AdjustCashFlowsBasis to true, so cash flows are calculated with adjustments on accrual amounts. The default is set to false to be consistent with floatbyzero.

Default: false

'Holidays'

NHOLIDAYS-by-1 vector of MATLAB® date numbers. Holidays are used in computing business days.

Default: holidays.m used

'BusinessDayConvention'

NINST-by-1 cell array of business day convention to be used in computing payment dates. Values are:

  • actual

  • follow

  • modifiedfollow

  • previous

  • modifiedprevious

Default: actual

Output Arguments

Margin

NINST-by-1 vector of the discount margin if RateInfo is specified as a NINST-by-2 vector of stub and spot rates. NINST-by-NCURVES matrix of the zero discount margin if RateInfo is specified as an annualized zero rate term structure created by intenvset.

Examples

expand all

Compute the Zero Discount Margin Using a Yield Curve

Use floatdiscmargin to compute the discount margin and zero discount margin for a floating-rate note.

Define data for the floating-rate note.

Price = 99.99;
Spread = 50;
Settle = '20-Jan-2011';
Maturity = '15-Jan-2012';
LatestFloatingRate = 0.05;
StubRate = 0.049;
SpotRate = 0.05;
Reset = 4;
Basis = 2;

Compute the discount margin.

dMargin = floatdiscmargin(Price, Spread, Settle, Maturity, ...
[StubRate, SpotRate], LatestFloatingRate,'Reset', Reset, 'Basis', Basis, ...
'AdjustCashFlowsBasis', true)
dMargin =

   48.4810

Usually you want to set AdjustCashFlowsBasis to true, so cash flows are calculated with adjustments on accrual amounts.

Create an annualized zero-rate term structure to calculate the zero discount margin.

Rates = [0.0500;
         0.0505;
         0.0510;
         0.0520];
StartDates = ['20-Jan-2011';
              '15-Apr-2011';
              '15-Jul-2011';
              '15-Oct-2011'];
EndDates =   ['15-Apr-2011';
              '15-Jul-2011';
              '15-Oct-2011';
              '15-Jan-2012'];
ValuationDate = '20-Jan-2011';
RateSpec = intenvset('Compounding', Reset, 'Rates', Rates,...
'StartDates', StartDates, 'EndDates', EndDates,...
'ValuationDate', ValuationDate, 'Basis', Basis);

Calculate the zero discount margin using the previous yield curve.

dMargin = floatdiscmargin(Price, Spread, Settle, Maturity, ...
RateSpec, LatestFloatingRate,'Reset', Reset, 'Basis', Basis, ...
'AdjustCashFlowsBasis', true)
dMargin =

   46.0688

References

Fabozzi, Frank J., Mann, Steven V., Floating-Rate Securities, John Wiley and Sons, New York, 2000.

Fabozzi, Frank J., Mann, Steven V., Introduction to Fixed Income Analytics: Relative Value Analysis, Risk Measures and Valuation, John Wiley and Sons, New York, 2010.

O'Kane, Dominic, Sen, Saurav, Credit Spreads Explained, Lehman Brothers Fixed Income Quantitative Research, March 2004.

Was this topic helpful?