Main Content

bndfutprice

Price bond future given repo rates

Description

example

[FutPrice,AccrInt] = bndfutprice(RepoRatePrice,FutSettle,Delivery,ConvFactor,CouponRate,Maturity) computes the price of a bond futures contract for one or more bonds given a repo rate, and bond properties, including the bond conversion factor. The default behavior is that the coupon reinvestment rate matches the repo rate. However, you can specify a separate reinvestment rate using optional arguments.

example

[FutPrice,AccrInt] = bndfutprice(___,Name,Value) specifies options using one or more optional name-value pair arguments in addition to the input arguments in the previous syntax.

Examples

collapse all

This example shows how to compute the price for a bond future using the following data.

bndfutprice(.064, 129, datetime(2000,9,21),datetime(2000,12,29), 1.3136, .0875, datetime(2020,8,15))
ans = 98.1516

Input Arguments

collapse all

Repo rates, specified as an numBonds-by-1 vector in decimals.

Data Types: double

Bond prices, specified as an numBonds-by-1 vector in decimals.

Data Types: double

Future settlement date, specified as an numBonds-by-1 vector using a datetime array, string array, or date character vectors.

To support existing code, bndfutprice also accepts serial date numbers as inputs, but they are not recommended.

Future delivery dates, specified as an numBonds-by-1 vector using a datetime array, string array, or date character vectors.

To support existing code, bndfutprice also accepts serial date numbers as inputs, but they are not recommended.

Bond conversion factors, specified as an numBonds-by-1 vector. For more information, see convfactor.

Data Types: double

Coupon rates, specified as an numBonds-by-1 vector of numeric decimals.

Data Types: double

Maturity dates, specified as an numBonds-by-1 vector using a datetime array, string array, or date character vectors.

To support existing code, bndfutprice also accepts serial date numbers as inputs, but they are not recommended.

Name-Value Arguments

Specify optional pairs of arguments as Name1=Value1,...,NameN=ValueN, where Name is the argument name and Value is the corresponding value. Name-value arguments must appear after other arguments, but the order of the pairs does not matter.

Before R2021a, use commas to separate each name and value, and enclose Name in quotes.

Example: [FutPrice,AccrInt] = bndfutprice(RepoRate,Price,FutSettle,Delivery,ConvFactor,CouponRate,Maturity,'Basis',5,'Face',1000,'Period',4)

Day count basis, specified as the comma-separated pair consisting of 'Basis' and a scalar integer from 0 to 13.

  • 0 = actual/actual

  • 1 = 30/360 (SIA)

  • 2 = actual/360

  • 3 = actual/365

  • 4 = 30/360 (PSA)

  • 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/365 (ISDA)

  • 13 = BUS/252

For more information, see Basis.

Data Types: double

End-of-month rule flag, specified as the comma-separated pair consisting of 'EndMonthRule' and a scalar with a nonnegative integer [0, 1].

  • 0 = Ignore rule, meaning that a payment date is always the same numerical day of the month.

  • 1 = Set rule on, meaning that a payment date is always the last actual day of the month.

Data Types: logical

Bond issue date, specified as the comma-separated pair consisting of 'IssueDate' and a scalar datetime, string, or date character vector.

To support existing code, bndfutprice also accepts serial date numbers as inputs, but they are not recommended.

Face value of the bond, specified as the comma-separated pair consisting of 'Face' and a scalar numeric. Face has no impact on key rate duration.

Data Types: double

Irregular first coupon date, specified as the comma-separated pair consisting of 'FirstCouponDate' and a scalar datetime, string, or date character vector.

To support existing code, bndfutprice also accepts serial date numbers as inputs, but they are not recommended.

When FirstCouponDate and LastCouponDate are both specified, FirstCouponDate takes precedence in determining the coupon payment structure.

Irregular last coupon date, specified as the comma-separated pair consisting of 'LastCouponDate' and a scalar datetime, string, or date character vector.

To support existing code, bndfutprice also accepts serial date numbers as inputs, but they are not recommended.

In the absence of a specified FirstCouponDate, a specified LastCouponDate determines the coupon structure of the bond. The coupon structure of a bond is truncated at the LastCouponDate, regardless of where it falls, and is followed only by the bond's maturity cash flow date.

Coupons per year, specified as the comma-separated pair consisting of 'Period' and a scalar integer. Values for Period are 0, 1, 2, 3, 4, 6, and 12.

Data Types: double

Day count basis for the reinvestment rate, specified as the comma-separated pair consisting of 'ReinvestBasis' and a scalar integer from 0 to 13.

  • 0 = actual/actual

  • 1 = 30/360 (SIA)

  • 2 = actual/360

  • 3 = actual/365

  • 4 = 30/360 (PSA)

  • 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/365 (ISDA)

  • 13 = BUS/252

For more information, see Basis.

Data Types: double

Underlying bond annual coupon, specified as the comma-separated pair consisting of 'ReinvestRate' and a scalar decimal numeric.

Data Types: double

Day count basis for repo rate, specified as the comma-separated pair consisting of 'RepoBasis' and a scalar integer from 0 to 13.

  • 0 = actual/actual

  • 1 = 30/360 (SIA)

  • 2 = actual/360

  • 3 = actual/365

  • 4 = 30/360 (PSA)

  • 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/365 (ISDA)

  • 13 = BUS/252

For more information, see Basis.

Data Types: double

Forward starting date of payments (the date from which a bond cash flow is considered), specified as the comma-separated pair consisting of 'StartDate' and a scalar datetime, string, or date character vector.

To support existing code, bndfutprice also accepts serial date numbers as inputs, but they are not recommended.

Output Arguments

collapse all

Quoted futures price, per $100 notional, returned as numBonds-by-1 vector.

Accrued interest due at delivery date, per $100 notional, returned as numBonds-by-1 vector.

References

[1] Burghardt, G., T. Belton, M. Lane, and J. Papa. The Treasury Bond Basis. McGraw-Hill, 2005.

[2] Krgin, Dragomir. Handbook of Global Fixed Income Calculations. John Wiley & Sons, 2002.

Version History

Introduced in R2009b

expand all