Documentation Center

  • Trials
  • Product Updates

floatmargin

Margin measures for floating-rate bond

Syntax

[Margin,AdjPrice] = floatmargin(Price,Spread,Settle,
Maturity)
[Margin,AdjPrice] = floatmargin(Price,Spread,Settle,
Maturity,Name,Value)

Description

[Margin,AdjPrice] = floatmargin(Price,Spread,Settle,
Maturity)
calculates margin measures for a floating-rate bond.

[Margin,AdjPrice] = floatmargin(Price,Spread,Settle,
Maturity,Name,Value)
calculates margin measures for a floating-rate bond with additional options specified by one or more Name,Value pair arguments.

Use floatmargin to calculate the following types of margin measures for a floating-rate bond:

  • Spread for life

  • Adjusted simple margin

  • Adjusted total margin

To calculate the discount margin or zero discount margin, see floatdiscmargin.

Input Arguments

Price

NINST-by-1 matrix of bond prices where spreads are to be computed.

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.

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.

'SpreadType'

The type of spread to calculate. Values are:

  • spreadforlife

  • adjustedsimple

  • adjustedtotal

Only single SpreadType values are supported.

If the SpreadType is spreadforlife (default), then the Name-Value arguments LatestFloatingRate and RateInfo are not used. If the SpreadType is adjustedsimple or adjustedtotal, then the Name-Value arguments LatestFloatingRate and RateInfo must be specified.

Default: spreadforlife

'LatestFloatingRate'

NINST-by-1 vector representing the rate for the next floating payment set at the last reset date. This rate must be specified for SpreadType of adjustedsimple and adjustedtotal.

'RateInfo'

NINST-by-2 vector representing the interest-rate information 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 settlement date for a bond with Reset of 4).

    Note:   The RateInfo must be specified for SpreadType of adjustedsimple and adjustedtotal.

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

Default: 100

'EndMonthRule'

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

Default: 1 (in effect)

'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 conventions to be used in computing payment dates. Values are:

  • actual

  • follow

  • modifiedfollow

  • previous

  • modifiedprevious

Default: actual

Output Arguments

Margin

NINST-by-1 vector of spreads for the floating-rate bond.

AdjPrice

NINST-by-1 vector of the adjusted price used to calculate spreads for SpreadType of adjustedsimple and adjustedtotal.

Examples

expand all

Compute Margin Measures for a Floating-Rate Bond

Use floatmargin to compute margin measures for spreadforlife, adjustedsimple, and adjustedtotal 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;

Calculate spreadforlife.

Margin = floatmargin(Price, Spread, Settle, Maturity, 'Reset', ...
Reset, 'Basis', Basis)
Margin =

   51.0051

Calculate adjustedsimple margin.

[Margin, AdjPrice] = floatmargin(Price, Spread, Settle, Maturity, ...
'SpreadType', 'adjustedsimple', 'RateInfo', [StubRate, SpotRate], ...
'LatestFloatingRate', LatestFloatingRate, 'Reset', Reset, 'Basis', Basis)
Margin =

   53.2830


AdjPrice =

   99.9673

Calculate adjustedtotal margin.

[Margin, AdjPrice] = floatmargin(Price, Spread, Settle, Maturity, ...
'SpreadType', 'adjustedtotal', 'RateInfo', [StubRate, SpotRate], ...
'LatestFloatingRate', LatestFloatingRate, 'Reset', Reset, 'Basis', Basis)
Margin =

   53.4463


AdjPrice =

   99.9673

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.

See Also

| |

Was this topic helpful?