bndfutimprepo
Implied repo rates for bond future given price
Syntax
Description
computes the implied repo rate for a bond future given the price of a bond,
the bond properties, the price of the bond future, and 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 inputs.ImpRepo
= bndfutimprep(Price
,FutPrice
,FutSettle
,Delivery
,ConvFactor
,CouponRate
,Maturity
)
specifies options using one or more optional name-value pair arguments in
addition to the input arguments in the previous syntax.ImpRepo
= bndfutimprep(___,Name,Value
)
Examples
This example shows how to compute the repo rate for a bond future using the following data.
bndfutimprepo(129,98,datetime(2000,9,21),datetime(2000,12,29),1.3136,.0875,datetime(2020,8,15))
ans = 0.0584
Input Arguments
Bond prices, specified as an
numBonds
-by-1
vector
in decimals.
Data Types: double
Future prices, specified as an
numBonds
-by-1
vector.
Data Types: double
| cell
Future settlement dates, specified as an
numBonds
-by-1
vector
using a datetime array, string array, or date character
vectors.
To support existing code, bndfutimprepo
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, bndfutimprepo
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, bndfutimprepo
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: ImpRepo =
bndfutimprepo(Price,FutPrice,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
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, bndfutimprepo
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.
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, bndfutimprepo
also
accepts serial date numbers as inputs, but they are not recommended.
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, bndfutimprepo
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, bndfutimprepo
also
accepts serial date numbers as inputs, but they are not recommended.
Output Arguments
Implied repo rate, or the repo rate that would produce the price
input, returned as
numBonds
-by-1
vector.
More About
Implied repo rates are the rates that can be inferred from the pricing of certain financial instruments, particularly in the context of the repurchase agreement (repo) market.
A repo is a form of short-term borrowing, where one party sells a security to another party with the agreement to repurchase it at a later date for a higher price. The difference between the sale price and the repurchase price reflects the cost of borrowing, which is essentially the repo rate.
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 R2009bAlthough bndfutimprepo
supports serial date numbers,
datetime
values are recommended instead. The
datetime
data type provides flexible date and time
formats, storage out to nanosecond precision, and properties to account for time
zones and daylight saving time.
To convert serial date numbers or text to datetime
values, use the datetime
function. For example:
t = datetime(738427.656845093,"ConvertFrom","datenum"); y = year(t)
y = 2021
There are no plans to remove support for serial date number inputs.
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)