Title: | Methods for Fixed-Income Valuation, Risk and Return |
---|---|
Description: | Bond Pricing and Fixed-Income Valuation of Selected Securities included here serve as a quick reference of Quantitative Methods for undergraduate courses on Fixed-Income and CFA Level I Readings on Fixed-Income Valuation, Risk and Return. CFA Institute ("CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151, pp. 237-299)", 2019, ISBN: 9781119593577). Barbara S. Petitt ("Fixed Income Analysis", 2019, ISBN: 9781119628132). Frank J. Fabozzi ("Handbook of Finance: Financial Markets and Instruments", 2008, ISBN: 9780470078143). Frank J. Fabozzi ("Fixed Income Analysis", 2007, ISBN: 9780470052211). |
Authors: | MaheshP Kumar [aut, cre], MaheshP Kumar [aut], MaheshP Kumar [ctb] |
Maintainer: | MaheshP Kumar <[email protected]> |
License: | GPL-3 |
Version: | 1.0.1 |
Built: | 2024-11-16 03:03:08 UTC |
Source: | https://github.com/cran/bondAnalyst |
Calculates the accrued interest with actual-by-actual day convention.
aiActDtCon(cPmt, dt1, dt2, stDt)
aiActDtCon(cPmt, dt1, dt2, stDt)
cPmt |
A number. |
dt1 |
A character. |
dt2 |
A character. |
stDt |
A character. |
According to Adam and Smith(2019), when a bond is between coupon payment dates, its price has two parts: the first part is the flat price (PVFlat) and the other is accrued interest (AI). The sum of these two parts is the full price (PVFull), which also is called the invoice price or dirty price. The flat price, which is the full price minus the accrued interest, is also called the quoted price or clean price. The flat price usually is quoted by bond dealers. If a trade takes place, the accrued interest is added to the flat price to obtain the full price paid by the buyer and received by the seller on the settlement date. The settlement date is the date when the bond buyer makes cash payment, and the seller delivers the security. The reason for using the flat price for quotation is to avoid misleading investors about the market price trend for the bond. If the full price were to be quoted by dealers, investors would see the price rise day after day even if the yield-to-maturity did not change. That is because the amount of accrued interest increases each day. Then, after the coupon payment is made, the quoted price would drop dramatically. This is why, using the flat price for quotation avoids that misrepresentation.
So, accrued interest is the proportional share of the next coupon payment. Assume that the coupon period has (T) days between payment dates and that (t) days have gone by since the last payment. There are different conventions used in bond markets to count days. The two most common day-count conventions are actual-by-actual and 30-by-360. For the actual-by-actual method, the actual number of days is used, including weekends, holidays, and leap days. For example, a semi-annual payment bond pays interest on 15 May and 15 November of each year. The accrued interest for settlement on 27 June would be the actual number of days between 15 May and 27 June (t = 43 days) divided by the actual number of days between 15 May and 15 November (T = 184 days), times the coupon payment. If the stated coupon rate is 4.375 percent, the accrued interest is 0.511209 per 100 of par value. Day-count conventions vary from market to market. However, actual-by-actual is most common for government bonds (Adams & Smith, 2019).
Based on this, the method aiActDtCon()
is developed to compute the accrued interest with actual-by-actual day convention. So, aiActDtCon()
gives accrued interest with actual-by-actual day convention for values passed to its four arguments. Here, cPmt
is dollar value of Coupon Payment, dt1
is date of first semi-annual interest payment, dt2
is date of second semi-annual interest payment, and stDt
is Settlement Date. The output is rounded off to six decimal places. The given examples show various ways in which the arguments can be passed to aiActDtCon()
.
Input values to four arguments r
, dt1
dt2
and stDt
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
aiActDtCon(cPmt=4.375,dt1=as.Date("2019-5-15"),dt2=as.Date("2019-11-15"),stDt=as.Date("2019-6-27")) aiActDtCon(4.375, as.Date("2019-5-15"), as.Date("2019-11-15"),as.Date("2019-6-27"))
aiActDtCon(cPmt=4.375,dt1=as.Date("2019-5-15"),dt2=as.Date("2019-11-15"),stDt=as.Date("2019-6-27")) aiActDtCon(4.375, as.Date("2019-5-15"), as.Date("2019-11-15"),as.Date("2019-6-27"))
Calculates the accrued interest with 30-by-360, day convention.
aiRoundedDaysConv(cPmt, bfrStlDt, stlDt, elpsMnths, daysBtwnCpns)
aiRoundedDaysConv(cPmt, bfrStlDt, stlDt, elpsMnths, daysBtwnCpns)
cPmt |
A number. |
bfrStlDt |
A character. |
stlDt |
A character. |
elpsMnths |
A number. |
daysBtwnCpns |
A number. |
There are different conventions used in bond markets to count days for valuation purposes. The two most common day-count conventions are actual-by-actual and 30-by-360. The 30-by-360 day-count convention often is used on corporate bonds. It assumes that each month has 30 days and that a full year has 360 days. Therefore, for this method, there are assumed to be 42 days between 15 May and 27 June: 15 days between 15 May and 30 May and 27 days between 1 June and 27 June. There are assumed to be 180 days (for being used as days between two semi-annual coupon payments) in the six-month period between 15 May and 15 November. So, the accrued interest at a 4.375 percent, for a semi-annual payment corporate bond is 0.510417 per 100 of par value (Adams & Smith, 2019).
Based on this, the method aiRoundedDaysConv()
is developed to compute the accrued interest with 30-by-360 day convention. So, aiRoundedDaysConv()
gives accrued interest with 30-by-360 day convention for values passed to its five arguments. Here, cPmt
is dollar value of Coupon Payment, bfrStlDt
is date of interest payment before settlement date, stlDt
is Settlement Date, elpsMnths
denotes number of months elapsed from day of last coupon payment to the bfrStlDt
(so in this example number of months from last coupon payment to June 15, 2019), and daysBtwnCpns
denotes number of days between two coupon payments. The output is rounded off to six decimal places.
Input values to four arguments cPmt
, bfrStlDt
stlDt
and elpsMnths
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
aiRoundedDaysConv(4.375, as.Date("2019-6-15"), as.Date("2019-6-27"),1,180)
aiRoundedDaysConv(4.375, as.Date("2019-6-15"), as.Date("2019-6-27"),1,180)
Calculates annual Yield-To-Maturity (YTM) of Zero-Coupon Bond with given Price and given Maturity Value for various values of Periodicity.
annualYtmZcbForPeriodicity( maturityVal, yearsToMaturity, ZCBprice, desiredPeriodicity )
annualYtmZcbForPeriodicity( maturityVal, yearsToMaturity, ZCBprice, desiredPeriodicity )
maturityVal |
A number. |
yearsToMaturity |
A number. |
ZCBprice |
A number. |
desiredPeriodicity |
A number. |
The periodicity of the annual market discount rate for a zero-coupon bond is arbitrary because there are no coupon payments. As in the given examples, for semi-annual compounding, the annual yield-to-maturity on the five-year, zero-coupon bond priced at 80 percent 100 of par value is stated to be 4.5130 percent. This annual rate has a periodicity of two. For quarterly compounding, the annual yield-to-maturity is stated to be 4.4880 percent. This annual rate has a periodicity of four. For monthly compounding, the annual yield-to-maturity is stated to be 4.4712 percent. This annual rate has a periodicity of 12. For annual compounding, the yield-to-maturity is stated to be 4.5640 percent. This annual rate has a periodicity of one (Adams & Smith, 2019).
With regard to the given information ,annualYtmZcbForPeriodicity()
is developed to compute annual Yield-To-Maturity (YTM) of Zero-Coupon Bond with given Price and given Maturity Value for different values of Periodicity for values passed to its four arguments. Here, maturityVal
is Maturity Value of the Bond, yearsToMaturity
represents years to maturity, ZCBprice
represents price of Zero-Coupon Bond, and desiredPeriodicity
desired periodicity for which the YTM is to be computed. The output is rounded off to six decimal places.
Input values to four arguments maturityVal
, yearsToMaturity
,ZCBprice
and desiredPeriodicity
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
annualYtmZcbForPeriodicity(maturityVal=100,yearsToMaturity=5,ZCBprice=80,desiredPeriodicity=2) annualYtmZcbForPeriodicity(maturityVal=100,yearsToMaturity=5,ZCBprice=80,desiredPeriodicity=4) annualYtmZcbForPeriodicity(maturityVal=100,yearsToMaturity=5,ZCBprice=80,desiredPeriodicity=12) annualYtmZcbForPeriodicity(maturityVal=100,yearsToMaturity=5,ZCBprice=80,desiredPeriodicity=1)
annualYtmZcbForPeriodicity(maturityVal=100,yearsToMaturity=5,ZCBprice=80,desiredPeriodicity=2) annualYtmZcbForPeriodicity(maturityVal=100,yearsToMaturity=5,ZCBprice=80,desiredPeriodicity=4) annualYtmZcbForPeriodicity(maturityVal=100,yearsToMaturity=5,ZCBprice=80,desiredPeriodicity=12) annualYtmZcbForPeriodicity(maturityVal=100,yearsToMaturity=5,ZCBprice=80,desiredPeriodicity=1)
Calculates the Approximated Macaulay duration using the Approximate Modified Duration and Yield-To-Maturity.
approxMacDurationUsingApprModifDuration(approxModifDuration, periodicYtm)
approxMacDurationUsingApprModifDuration(approxModifDuration, periodicYtm)
approxModifDuration |
A number. |
periodicYtm |
A number. |
According to information provided by Adams and Smith (2019), the method approxMacDurationUsingApprModifDuration()
is developed to calculate the Approximated Macaulay duration using the Approximate Modified Duration and Yield-To-Maturity.
Input values to two arguments approxModifDuration
and periodicYtm
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Understanding Fixed‑Income Risk and Return. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 237-299). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
approxMacDurationUsingApprModifDuration(approxModifDuration=13.466,periodicYtm=0.0257)
approxMacDurationUsingApprModifDuration(approxModifDuration=13.466,periodicYtm=0.0257)
Calculates the Approximate Modified Duration.
approxModifDuration(pvBase, pvPlus, pvMinus, percentChangeYtm)
approxModifDuration(pvBase, pvPlus, pvMinus, percentChangeYtm)
pvBase |
A number. |
pvPlus |
A number. |
pvMinus |
A number. |
percentChangeYtm |
A number. |
According to information provided by Adams and Smith (2019), the method approxModifDuration()
is developed to calculate the Approximate Modified Duration.
Input values to four arguments pvBase
,pvPlus
,pvMinus
and percentChangeYtm
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Understanding Fixed‑Income Risk and Return. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 237-299). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
approxModifDuration(pvBase=99.956780,pvPlus=100.631781,pvMinus=101.250227,percentChangeYtm=0.0005) approxModifDuration (pvBase=42.223649,pvPlus=42.100694,pvMinus=42.346969,percentChangeYtm=0.0001)
approxModifDuration(pvBase=99.956780,pvPlus=100.631781,pvMinus=101.250227,percentChangeYtm=0.0005) approxModifDuration (pvBase=42.223649,pvPlus=42.100694,pvMinus=42.346969,percentChangeYtm=0.0001)
Calculates the Price of Bond making Deficient Coupon Payments.
bondPriceDefCoupon(parValue, couponDeficiency, times, r)
bondPriceDefCoupon(parValue, couponDeficiency, times, r)
parValue |
A number. |
couponDeficiency |
A vector. |
times |
A vector. |
r |
A number. |
When the coupon rate is less than the market discount rate, the bond is priced at a discount below par value. This is so because the price of a fixed-rate bond, relative to par value, depends on the relationship of the coupon rate to the market discount rate. For this reason, when the coupon rate is less than the market discount rate, the bond is priced at a discount below par value (Adams & Smith, 2019). If a bond pays coupons at 3 percent, whereas the the market discount rate is 5 percent, then this bond has coupon deficiency of 2 percent. So for computing the price of a bond with Coupon Deficiency, present Value of the deficient Coupon Payments is computed and then is deducted from the Par Value of the bond. Of course such bond gets priced at a discount and trades below the par value for paying coupon rate less than that of market discount rate. Suppose present value of Deficient Coupon Payments comes out to be -8.425 then of the price this bond will be 91.575 (= 100 – 8.425).
In view of this, the method bondPriceDefCoupon()
is developed to compute the Price of Bond making Deficient Coupon Payments. So, bondPriceDefCoupon()
gives the Price of Bond making Deficient Coupon Payments for values passed to its four arguments. Here parValue
represent the Maturity Value, couponDeficiency
is the vector that has dollar values of Deficient Coupon Payments for periods till maturity, times
is a vector of number of years ranging from 1 to any specified number of years till maturity, and r
is Market Discount Rate or Required Rate of return. The output is rounded off to three decimal places.
Input values to four arguments parValue
, couponDeficiency
, times
and r
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
bondPriceDefCoupon(parValue=100,couponDeficiency=c(-2,-2,-2,-2,-2), times=c(1,2,3,4,5), r= 0.06) bondPriceDefCoupon(parValue=100,couponDeficiency=c(-2,-2,-2,-2,-2), times=c(1:5), r= 0.06) bondPriceDefCoupon(parValue=100,couponDeficiency=c(rep(-2,5)), times=c(1:5), r= 0.06) bondPriceDefCoupon(100,c(rep(-2,5)), c(1:5), 0.06)
bondPriceDefCoupon(parValue=100,couponDeficiency=c(-2,-2,-2,-2,-2), times=c(1,2,3,4,5), r= 0.06) bondPriceDefCoupon(parValue=100,couponDeficiency=c(-2,-2,-2,-2,-2), times=c(1:5), r= 0.06) bondPriceDefCoupon(parValue=100,couponDeficiency=c(rep(-2,5)), times=c(1:5), r= 0.06) bondPriceDefCoupon(100,c(rep(-2,5)), c(1:5), 0.06)
Calculates the Price of Bond making Excess Coupon Payments.
bondPriceExcessCoupon(couponExcess, times, r)
bondPriceExcessCoupon(couponExcess, times, r)
couponExcess |
A vector. |
times |
A vector. |
r |
A number. |
For Example, if the present value of excess is +7.260, discounted using the required yield per period, then the price of the bond is 107.260 (= 100 + 7.260)(Adams & Smith, 2019).
Based on the information presented, the method bondPriceExcessCoupon()
is developed to compute the Price of Bond making excess Coupon Payments. So, bondPriceExcessCoupon()
gives the Price of Bond making excess Coupon Payments for values passed to its three arguments. Here, couponExcess
represents the dollar value of excess coupon payments, times
is a vector of number of years ranging from 1 to any specified number of years till maturity, and r
is Market Discount Rate or Required Rate of return. The output is rounded off to three decimal places. The given examples show various ways in which the arguments can be passed to bondPriceExcessCoupon()
.
Input values to three arguments couponExcess
, times
and r
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577 bondPriceExcessCoupon(couponExcess=c(2,2,2,2), times=c(1,2,3,4), r= 0.04) bondPriceExcessCoupon(couponExcess=c(2,2,2,2), times=c(1:4), r= 0.04) bondPriceExcessCoupon(couponExcess=c(rep(2,4)), times=c(1:4), r= 0.04) bondPriceExcessCoupon(c(rep(2,4)), c(1:4), 0.04)
Calculates Present Value or the Price of the Bond paying Annual Coupons.
bondPriceYearlyCoupons(couponPmt, times, bondMaturityVal, n, r)
bondPriceYearlyCoupons(couponPmt, times, bondMaturityVal, n, r)
couponPmt |
A vector. |
times |
A vector. |
bondMaturityVal |
A number. |
n |
A number. |
r |
A number. |
As mentioned by Adams and Smith (2019), on a traditional (option-free) fixed-rate bond, the promised future cash flows consist of two things: one is a coupon interest payment and another is repayment of the full principal at maturity. The coupon payments are on regularly scheduled dates, for example, an annual payment bond might pay interest on 15 June of each year for five years. The final coupon typically is paid together with the full principal on the maturity date. So, the price of the bond is the present value of the remaining cash flows discounted at the Market Discount Rate. The market discount rate is the rate of return required by investors given the risk of the investment in the bond. It is also called the required yield, or the required rate of return. For example, suppose the coupon rate on a bond is 4 percent and the payment is made once a year. If the time-to-maturity is five years and the market discount rate is 6 percent, the price of the bond is 91.575 per 100 of par value. The par value is the amount of principal on the bond. The price of the bond is the sum of the present values of the five coupon payments and maturity value. The price per 100 of par value may be interpreted as the percentage of par value. If the par value is USD100,000, the coupon payments are USD4,000 each year and the price of the bond is USD91,575. Its price is 91.575 percent of par value.
Based on the information given, the method bondPriceYearlyCoupons()
is developed to compute the price of the bond which is present value or discounted value of the coupon payments promised by the issuer and the Par Value of the Bond. So, bondPriceYearlyCoupons()
gives Price of the bond for values passed to its five arguments. Here couponPmt
is the vector that has dollar values of Coupon Payments for periods till maturity, times
is a vector of number of years ranging from 1 to any specified number of years till maturity, bondMaturityVal
is amount of Par Value or Maturity Value of the Bond, n
represents number of years till maturity and r
is Market Discount Rate or Required Rate of return. The output is rounded off to three decimal places.
Input values to five arguments couponPmt
, times
, bondMaturityVal
,n
and r
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
bondPriceYearlyCoupons(couponPmt=c(4,4,4,4,4), times=c(1,2,3,4,5),bondMaturityVal=100,n=5,r=0.06) bondPriceYearlyCoupons(couponPmt=c(4,4,4,4,4), times=c(1:5),bondMaturityVal=100,n=5,r=0.06) bondPriceYearlyCoupons(couponPmt=c(rep(4,5)), times=c(1:5), bondMaturityVal=100,n=5,r=0.06) bondPriceYearlyCoupons(c(rep(4,5)), c(1:5), 100,5,0.06)
bondPriceYearlyCoupons(couponPmt=c(4,4,4,4,4), times=c(1,2,3,4,5),bondMaturityVal=100,n=5,r=0.06) bondPriceYearlyCoupons(couponPmt=c(4,4,4,4,4), times=c(1:5),bondMaturityVal=100,n=5,r=0.06) bondPriceYearlyCoupons(couponPmt=c(rep(4,5)), times=c(1:5), bondMaturityVal=100,n=5,r=0.06) bondPriceYearlyCoupons(c(rep(4,5)), c(1:5), 100,5,0.06)
Calculates estimated change in the Full Price of the Bond (in currency units) for a given Money Duration and a given change in the Yield-To-Maturity.
changePvFullBondPrice(moneyDuration, changeYtm)
changePvFullBondPrice(moneyDuration, changeYtm)
moneyDuration |
A number. |
changeYtm |
A number. |
According to information provided by Adams and Smith (2019), the method changePvFullBondPrice()
is developed to compute estimated change in the Full Price of the Bond (in currency units) for a given Money Duration and a given Change in the Yield-To-Maturity.
Input values to two arguments moneyDuration
and changeYtm
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Understanding Fixed‑Income Risk and Return. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 237-299). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
changePvFullBondPrice(moneyDuration=542.3638,changeYtm=0.01) changePvFullBondPrice(moneyDuration=542.3638,changeYtm=-0.01)
changePvFullBondPrice(moneyDuration=542.3638,changeYtm=0.01) changePvFullBondPrice(moneyDuration=542.3638,changeYtm=-0.01)
Calculates Add-on Rate (AOR) of Money Market Instruments.
computingAORMoneyMarketInstr(pvMmi, fvMmi, daysToMaturity, daysInYear)
computingAORMoneyMarketInstr(pvMmi, fvMmi, daysToMaturity, daysInYear)
pvMmi |
A number. |
fvMmi |
A number. |
daysToMaturity |
A number. |
daysInYear |
A number. |
According to Adams and Smith (2019), bond yields-to-maturity are annualized and compounded. Yield measures in the money market are annualized but not compounded. Instead, the rate of return on a money market instrument is stated on a simple interest basis. In general, quoted money market rates are either discount rates or add-on rates. Although market conventions vary around the world, commercial paper, Treasury bills (a US government security issued with a maturity of one year or less), and bankers’
acceptances are often quoted on a discount rate basis. Bank certificates of deposit (repos) and indexes, such as Libor and Euribor, are quoted on an add-on rate basis.
In light of the available information, the method computingAORMoneyMarketInstr()
is developed to compute Add-on Rate (AOR) of Money Market Instruments for the values passed to its four arguments. Here, pvMmi
is present value of the Money Market Instrument, fvMmi
is future value of the Money Market Instrument (that is sale price and not the redemption amount), daysToMaturity
is number of days till the maturity, and daysInYear
is taken to be 365. For example, an output value of 0.04934 means that the rate of return, stated on a 365-day add-on rate basis, is 4.934 percent.
Input values to four arguments pvMmi
,fvMmi
, daysToMaturity
and daysInYear
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
computingAORMoneyMarketInstr(pvMmi=10000000,fvMmi=10060829,daysToMaturity=45,daysInYear=365)
computingAORMoneyMarketInstr(pvMmi=10000000,fvMmi=10060829,daysToMaturity=45,daysInYear=365)
Calculates Price Value of a Basis Point (PVBP) for the Bond.
computingBondPVBP(pvPlus, pvMinus)
computingBondPVBP(pvPlus, pvMinus)
pvPlus |
A number. |
pvMinus |
A number. |
According to information provided by Adams and Smith (2019), the method computingBondPVBP()
is developed to compute Price Value of a Basis Point (PVBP) for the Bond.
Input values to two arguments pvPlus
and pvMinus
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Understanding Fixed‑Income Risk and Return. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 237-299). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
computingBondPVBP(pvPlus=100.594327,pvMinus=100.765123)
computingBondPVBP(pvPlus=100.594327,pvMinus=100.765123)
Calculates the Yield-To-Maturity (value up to five decimal places) of the Bond paying Annual Coupons.
computingBondYtmRateFiveDecimalPlaces(couponPmt, mv, bondPv, period)
computingBondYtmRateFiveDecimalPlaces(couponPmt, mv, bondPv, period)
couponPmt |
A number. |
mv |
A number. |
bondPv |
A number. |
period |
A number. |
According to Adams and Smith (2019), the yield-to-maturity is the rate of return on the bond to an investor given three critical assumptions: 1. The investor holds the bond to maturity.2. The issuer makes all the coupon and principal payments in the full amount on the scheduled dates. Therefore, the yield-to-maturity is the promised yield—the yield assuming the issuer does not default on any of the payments.3. The investor can reinvest coupon payments at that same yield. This is a characteristic of an internal rate of return.
In view of this, the method computingBondYtmRateFiveDecimalPlaces()
computes the YTM of a Bond. So, computingBondYtmRateFiveDecimalPlaces()
gives the YTM for values passed to its four arguments. Here, couponPmt
represents the dollar value of Coupon Payment, mv
is Maturity Value, bondPv
is present value of the bond, and period
is number of years. The output is rounded off to five decimal places.
Input values to four arguments couponPmt
, mv
, bondPv
, and period
.
MaheshP Kumar, Clare Matuka
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
computingBondYtmRateFiveDecimalPlaces (couponPmt=5, mv=100, bondPv=105, period =4) computingBondYtmRateFiveDecimalPlaces (5,100,105,4) computingBondYtmRateFiveDecimalPlaces (1.25,100,98.175677,6) computingBondYtmRateFiveDecimalPlaces (3.5,100,103.75,4) computingBondYtmRateFiveDecimalPlaces (2.25,100,96.50,6) computingBondYtmRateFiveDecimalPlaces (5,100,102.96,3) computingBondYtmRateFiveDecimalPlaces (8,100,90.393,3) computingBondYtmRateFiveDecimalPlaces (couponPmt=5.5, mv=100, bondPv=107.50, period=3) computingBondYtmRateFiveDecimalPlaces (couponPmt=4.5, mv=100, bondPv=104.75, period=5) computingBondYtmRateFiveDecimalPlaces (couponPmt=6, mv=100, bondPv=100.125, period=2) computingBondYtmRateFiveDecimalPlaces (couponPmt=4, mv=100, bondPv=100.750, period=2)
computingBondYtmRateFiveDecimalPlaces (couponPmt=5, mv=100, bondPv=105, period =4) computingBondYtmRateFiveDecimalPlaces (5,100,105,4) computingBondYtmRateFiveDecimalPlaces (1.25,100,98.175677,6) computingBondYtmRateFiveDecimalPlaces (3.5,100,103.75,4) computingBondYtmRateFiveDecimalPlaces (2.25,100,96.50,6) computingBondYtmRateFiveDecimalPlaces (5,100,102.96,3) computingBondYtmRateFiveDecimalPlaces (8,100,90.393,3) computingBondYtmRateFiveDecimalPlaces (couponPmt=5.5, mv=100, bondPv=107.50, period=3) computingBondYtmRateFiveDecimalPlaces (couponPmt=4.5, mv=100, bondPv=104.75, period=5) computingBondYtmRateFiveDecimalPlaces (couponPmt=6, mv=100, bondPv=100.125, period=2) computingBondYtmRateFiveDecimalPlaces (couponPmt=4, mv=100, bondPv=100.750, period=2)
Calculates the Yield-To-Maturity (value up to six decimal places) of the Bond paying Annual Coupons.
computingBondYtmRateSixDecimalPlaces(couponPmt, mv, bondPv, period)
computingBondYtmRateSixDecimalPlaces(couponPmt, mv, bondPv, period)
couponPmt |
A number. |
mv |
A number. |
bondPv |
A number. |
period |
A number. |
According to Adams and Smith (2019), the yield-to-maturity is the rate of return on the bond to an investor given three critical assumptions:
The investor holds the bond to maturity.
The issuer makes all the coupon and principal payments in the full amount on the scheduled dates. Therefore, the yield-to-maturity is the promised yield which is the yield assuming the issuer does not default on any of the payments.
The investor can reinvest coupon payments at that same yield. This is a characteristic of an internal rate of return.
In view of this, the method computingBondYtmRateSixDecimalPlaces()
computes the YTM of a Bond. So, computingBondYtmRateSixDecimalPlaces()
gives the YTM for values passed to its four arguments. Here, couponPmt
represents the dollar value of Coupon Payment, mv
is Maturity Value, bondPv
is present value of the bond, and period
is number of years. The output is rounded off to six decimal places.
Input values to four arguments couponPmt
, mv
, bondPv
, and period
.
MaheshP Kumar, Clare Matuka
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
computingBondYtmRateSixDecimalPlaces (couponPmt=5, mv=100, bondPv=105, period=4) computingBondYtmRateSixDecimalPlaces (5,100,105,4) computingBondYtmRateSixDecimalPlaces (1.25,100,98.175677,6) computingBondYtmRateSixDecimalPlaces (3.5,100,103.75,4) computingBondYtmRateSixDecimalPlaces (2.25,100,96.50,6) computingBondYtmRateSixDecimalPlaces (5,100,102.96,3) computingBondYtmRateSixDecimalPlaces (8,100,90.393,3) computingBondYtmRateSixDecimalPlaces (couponPmt=5.5, mv=100, bondPv=107.50, period=3) computingBondYtmRateSixDecimalPlaces (couponPmt=4.5, mv=100, bondPv=104.75, period=5)
computingBondYtmRateSixDecimalPlaces (couponPmt=5, mv=100, bondPv=105, period=4) computingBondYtmRateSixDecimalPlaces (5,100,105,4) computingBondYtmRateSixDecimalPlaces (1.25,100,98.175677,6) computingBondYtmRateSixDecimalPlaces (3.5,100,103.75,4) computingBondYtmRateSixDecimalPlaces (2.25,100,96.50,6) computingBondYtmRateSixDecimalPlaces (5,100,102.96,3) computingBondYtmRateSixDecimalPlaces (8,100,90.393,3) computingBondYtmRateSixDecimalPlaces (couponPmt=5.5, mv=100, bondPv=107.50, period=3) computingBondYtmRateSixDecimalPlaces (couponPmt=4.5, mv=100, bondPv=104.75, period=5)
Calculates the G-Spread which is the spread between the yields-to-maturity on the corporate bond and that of government bond having the same maturity.
computingGspread(ytmCorpBond, ytmBenchGovtBond)
computingGspread(ytmCorpBond, ytmBenchGovtBond)
ytmCorpBond |
A number. |
ytmBenchGovtBond |
A number. |
According to information provided by Adams and Smith (2019), the method computingGspread()
is developed to calculate G-Spread for given values of yields-to-maturity on the corporate bond and that of government bond having the same maturity. Here, ytmCorpBond
stands for yields-to-maturity on the corporate bond and ytmBenchGovtBond
denotes yields-to-maturity on government bond with the same maturity. An output with the value 0.02327 means G-Spread of 232.7 bps.
Input values to two arguments ytmCorpBond
and ytmBenchGovtBond
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
computingGspread(ytmCorpBond=0.05932, ytmBenchGovtBond=0.03605)
computingGspread(ytmCorpBond=0.05932, ytmBenchGovtBond=0.03605)
Calculates Par Rate using the given Spot Rates.
computingParRate(spotRates, times, mv, pv, n)
computingParRate(spotRates, times, mv, pv, n)
spotRates |
A vector. |
times |
A vector. |
mv |
A number. |
pv |
A number. |
n |
A number. |
As explained by Adams and Smith (2019), suppose the spot rates on government bonds are 5.263 percent for one year, 5.616 percent for two years, 6.359 percent for three years, and 7.008 percent for four years. These are effective annual rates. Based on these rated, the one-year par rate is 5.263 percent,the two-year par rate is 5.606 percent,and three-year and four-year par rates are 6.306 percent and 6.899 percent, respectively.
In light of the information given, the method computingParRate()
is developed to calculate Par Rate using the given Spot Rates. So, computingParRate()
gives Par Rate for values passed to its five arguments. Here, spotRates
is vector of the given spot rates, times
is a vector of number of years ranging from 1 to any specified number of years, mv
is the Maturity Value (Future Value) is taken as 100, pv
is the Present Value or the Price is also taken as 100 to signify the fact that bond is trading at par of the Future Value, and n
is the number of years. The output is rounded off to three decimal places. For example, an output value of 6.899 means that the a rate of 6.899 percent will cause the bond to trade at par to its Maturity Value. In other words, par rate causes the market price of bond to be at par of its face value.
Input values to five arguments spotRates
, times
,mv
,pv
and n
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
computingParRate(spotRates=c(0.05263),times=c(1),mv=100,pv=100,n=1) computingParRate(spotRates=c(0.05263,0.05616),times=c(1,2),mv=100,pv=100,n=2) computingParRate(spotRates=c(0.05263,0.05616,0.06359),times=c(1,2,3), mv=100,pv=100,n=3) computingParRate(spotRates=c(0.05263,0.05616,0.06359,0.07008),times=c(1,2,3,4),mv=100,pv=100,n=4) computingParRate(spotRates=c(0.10,0.12,0.13,0.14,0.19),times=c(1,2,3,4,5),mv=100,pv=100,n=5)
computingParRate(spotRates=c(0.05263),times=c(1),mv=100,pv=100,n=1) computingParRate(spotRates=c(0.05263,0.05616),times=c(1,2),mv=100,pv=100,n=2) computingParRate(spotRates=c(0.05263,0.05616,0.06359),times=c(1,2,3), mv=100,pv=100,n=3) computingParRate(spotRates=c(0.05263,0.05616,0.06359,0.07008),times=c(1,2,3,4),mv=100,pv=100,n=4) computingParRate(spotRates=c(0.10,0.12,0.13,0.14,0.19),times=c(1,2,3,4,5),mv=100,pv=100,n=5)
Calculates Discount Rate of Money Market Instrument.
computingQuotedDiscRateMMI(pvMmi, fvMmi, daysToMaturity, daysInYear)
computingQuotedDiscRateMMI(pvMmi, fvMmi, daysToMaturity, daysInYear)
pvMmi |
A number. |
fvMmi |
A number. |
daysToMaturity |
A number. |
daysInYear |
A number. |
It is important to understand that discount rate has a unique meaning in the money market. In general, discount rate means interest rate used to calculate a present value such as market discount rate. In the money market however, discount rate is a specific type of quoted rate (Adams & Smith, 2019).
Based on the given information, the method computingQuotedDiscRateMMIr()
is developed to compute Discount Rate of Money Market Instrument for the values passed to its four arguments. Here, pvMmi
is present value of the Money Market Instrument, fvMmi
is future value of the Money Market Instrument (that is sale price and not the redemption amount), daysToMaturity
is number of days till the maturity, and daysInYear
is taken to be 360. For example, an output value of 0.0225 represents a quoted discount rate of 2.25 percent for an assumed 360-day year.
Input values to four arguments pvMmi
,fvMmi
, daysToMaturity
and daysInYear
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
computingQuotedDiscRateMMI(pvMmi=9943125,fvMmi=10000000,daysToMaturity=91,daysInYear=360)
computingQuotedDiscRateMMI(pvMmi=9943125,fvMmi=10000000,daysToMaturity=91,daysInYear=360)
Calculates Yield-To-Call (YTC).
computingYTC(couponPmt, callableVal, bondPv, maturityYears, ytcYears)
computingYTC(couponPmt, callableVal, bondPv, maturityYears, ytcYears)
couponPmt |
A number. |
callableVal |
A number. |
bondPv |
A number. |
maturityYears |
A number. |
ytcYears |
A number. |
If a fixed-rate bond contains an embedded option, other yield measures are used. An embedded option is part of the security and cannot be removed and sold separately. For example, a callable bond contains an embedded call option that gives the issuer the right to buy the bond back from the investor at specified prices on pre-determined dates. The preset dates usually coincide with coupon payment dates after a call protection period. A call protection period is the time during which the issuer of the bond is not allowed to exercise the call option. Suppose that a seven-year, 8 percent annual coupon payment bond is first callable in four years. That gives the investor four years of protection against the bond being called. After the call protection period, the issuer might exercise the call option if interest rates decrease, or if the issuer’s credit quality improves. Those circumstances allow the issuer to refinance the debt at a lower cost of funds. The pre-set prices that the issuer pays if the bond is called often are at a premium above par. For example, the call schedule for this bond might be that it is first callable at 102 (per 100 of par value) on the coupon payment date in four years, callable at 101 in five years, and at par value on coupon payment dates thereafter.The yield-to-maturity on this seven-year, 8 percent callable bond is just one of several traditional yield measures for the investment. Others are yield-to-first-call, yield-to-second call, and so on. If the current price for the bond is 105 per 100 of par value, the yield-to-first call in four years is 6.975 percent (Adams & Smith, 2019).
In light of the information given, the method computingYTC()
is developed to compute the bond's Yield-To-Call (YTC) for the values passed to its five arguments. Here, couponPmt
is dollar value of the coupon payment, callableVal
is dollar of at which the bond will be called at, bondPv
represents present value or price of the bond, maturityYears
is number of years to Maturity, and ytcYears
is number of years to call.
Input values to five arguments couponPmt
,callableVal
, bondPv
, maturityYears
, and ytcYears
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
computingYTC (couponPmt=8,callableVal=102,bondPv=105,maturityYears=7,ytcYears=4) computingYTC (couponPmt=8,callableVal=101,bondPv=105,maturityYears=7,ytcYears=5) computingYTC (couponPmt=8,callableVal=100,bondPv=105,maturityYears=7,ytcYears=6) computingYTC (couponPmt=8,callableVal=100,bondPv=105,maturityYears=7,ytcYears=7)
computingYTC (couponPmt=8,callableVal=102,bondPv=105,maturityYears=7,ytcYears=4) computingYTC (couponPmt=8,callableVal=101,bondPv=105,maturityYears=7,ytcYears=5) computingYTC (couponPmt=8,callableVal=100,bondPv=105,maturityYears=7,ytcYears=6) computingYTC (couponPmt=8,callableVal=100,bondPv=105,maturityYears=7,ytcYears=7)
Calculates Z-Spread.
computingZspread(coupons, mv, bondPv, n, spots)
computingZspread(coupons, mv, bondPv, n, spots)
coupons |
A number. |
mv |
A number. |
bondPv |
A number. |
n |
A number. |
spots |
A vector. |
In fixed-income security analysis, it is important to understand why bond prices and yields-to-maturity change. In this context, it is useful to separate a yield-to-maturity into two components: the benchmark and the spread. The benchmark yield for a fixed-income security with a given time-to-maturity is the base rate which is often a government bond yield. The spread is the difference between the yield-to-maturity and the benchmark. So a Z-spread (zero-volatility spread) is based on the all benchmark spot rates taken from the spot curve. It is the constant spread that is added to each spot rate such that the present value of the cash flows matches the price of the bond (Adams & Smith, 2019).
According to information provided by Adams and Smith (2019), the method computingZspread()
is developed to calculate Z-Spread based on the entire benchmark spot curve. Here, coupons
stands for dollar value of the Coupon Payment, mv
is maturity value of the bond, bondPv
is present value or price of the bond, n
is number of years, and spots
is vector of spot rates taken from the spots curve. An output with the value 0.0234 means Z-Spread of 234 bps.
Input values to five arguments coupons
,mv
,bondPv
, n
and spots
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
computingZspread(coupons=5,mv=100, bondPv=92.38,n=3,spots=c(0.0486,0.0495,0.0565)) computingZspread(coupons=50,mv=1000,bondPv=923.8,n=3,spots=c(0.0486,0.0495,0.0565)) computingZspread(coupons= 6,mv=100,bondPv=100.75,n=2,spots=c(0.021,0.03635))
computingZspread(coupons=5,mv=100, bondPv=92.38,n=3,spots=c(0.0486,0.0495,0.0565)) computingZspread(coupons=50,mv=1000,bondPv=923.8,n=3,spots=c(0.0486,0.0495,0.0565)) computingZspread(coupons= 6,mv=100,bondPv=100.75,n=2,spots=c(0.021,0.03635))
Converting an Annual Percentage Rate (APR) from a periodicity of 2 to another periodicity of 4, 12, or 1.
convertAPRtoDifferentPeriodcity(givenAPR, givenPeriodicity, desiredPeriodicity)
convertAPRtoDifferentPeriodcity(givenAPR, givenPeriodicity, desiredPeriodicity)
givenAPR |
A number. |
givenPeriodicity |
A number. |
desiredPeriodicity |
A number. |
There are many ways to measure the rate of return on a fixed-rate bond investment. In general, an annualized and compounded yield on a fixed-rate bond depends on the assumed number of periods in the year which is called the periodicity of the annual rate. Typically, the periodicity matches the frequency of coupon payments. A bond that pays semi-annual coupons has a stated annual yield-to-maturity for a periodicity of two—the rate per semi-annual period times two A bond that pays quarterly coupons has a stated annual yield for a periodicity of four—the rate per quarter times four. It is always important to know the periodicity of a stated annual rate. The most common periodicity for USD-denominated bond yields is two because most bonds in the USD market make semi-annual coupon payments. An annual rate having a periodicity of two is known as a semi-annual Bond Basis Yield (BBY), or semi-annual Bond Equivalent Yield (BEY). An important tool used in fixed-income analysis is to convert an annual yield from one periodicity to another. These are called periodicity, or compounding, conversions. To compare this bond with others, an analyst converts this annualized yield-to-maturity to quarterly and monthly compounding (Adams & Smith, 2019).
The method convertAPRtoDifferentPeriodcity()
is developed convert an Annual Percentage Rate (APR) from a given periodicity of say m = 2 to another desired periodicity say of n = 4 or n = 12 or n=1.
For Example, it converts 4.96 percent from a periodicity of two to a periodicity of four or converts 4.93 percent from a periodicity of four to a periodicity of two or converts 4.96 percent from a periodicity of two to a periodicity of one and so, on.
So, convertAPRtoDifferentPeriodcity()
gives Annual Percentage Rate of the desired periodicity for values passed to its three arguments. Here, givenAPR
represents given Annual Percentage Rate, givenPeriodicity
represents given periodicity, and desiredPeriodicity
desired periodicity for which the Annual Percentage Return is to be computed. The output is rounded off to four decimal places.
Input values to three arguments givenAPR
, givenPeriodicity
and desiredPeriodicity
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
convertAPRtoDifferentPeriodcity(givenAPR=0.0496,givenPeriodicity=2,desiredPeriodicity=4) convertAPRtoDifferentPeriodcity(givenAPR=0.0493,givenPeriodicity=4,desiredPeriodicity=2) convertAPRtoDifferentPeriodcity(givenAPR=0.0496,givenPeriodicity=2,desiredPeriodicity=1) convertAPRtoDifferentPeriodcity(givenAPR=0.1063,givenPeriodicity=2,desiredPeriodicity=4) convertAPRtoDifferentPeriodcity(givenAPR=0.1049,givenPeriodicity=4,desiredPeriodicity=2) convertAPRtoDifferentPeriodcity(givenAPR=0.1063,givenPeriodicity=2,desiredPeriodicity=1)
convertAPRtoDifferentPeriodcity(givenAPR=0.0496,givenPeriodicity=2,desiredPeriodicity=4) convertAPRtoDifferentPeriodcity(givenAPR=0.0493,givenPeriodicity=4,desiredPeriodicity=2) convertAPRtoDifferentPeriodcity(givenAPR=0.0496,givenPeriodicity=2,desiredPeriodicity=1) convertAPRtoDifferentPeriodcity(givenAPR=0.1063,givenPeriodicity=2,desiredPeriodicity=4) convertAPRtoDifferentPeriodcity(givenAPR=0.1049,givenPeriodicity=4,desiredPeriodicity=2) convertAPRtoDifferentPeriodcity(givenAPR=0.1063,givenPeriodicity=2,desiredPeriodicity=1)
Calculates Discount Margin of a Floating-Rate Note (FRN).
discMarginFRN(index, estRtrn, mvFRN, priceFRN, maturityYears, periodicity)
discMarginFRN(index, estRtrn, mvFRN, priceFRN, maturityYears, periodicity)
index |
A number. |
estRtrn |
A number. |
mvFRN |
A number. |
priceFRN |
A number. |
maturityYears |
A number. |
periodicity |
A number. |
According to information provided by Adams and Smith (2019), the method discMarginFRN()
is developed to compute Discount Margin of a Floating-Rate Note (FRN) for the values passed to its six arguments. Here, index
is reference rate, stated as an annual percentage rate,estRtrn
is a vector of estimated returns on FRN (this does not include repayment of the principal), mvFRN
represents Maturity Value, priceFRN
price of FRN, maturityYears
is number of years to Maturity, and periodicity
is periodicity of interest payments. The given examples show various ways in which the arguments can be passed to discMarginFRN()
.
Input values to six arguments index
,estRtrn
, mvFRN
, priceFRN
, maturityYears
, and periodicity
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
discMarginFRN(index=0.0200,estRtrn=0.8125,mvFRN=100,priceFRN=98,maturityYears=4,periodicity=4) discMarginFRN(0.0200,0.8125, 100, 98, 4, 4)
discMarginFRN(index=0.0200,estRtrn=0.8125,mvFRN=100,priceFRN=98,maturityYears=4,periodicity=4) discMarginFRN(0.0200,0.8125, 100, 98, 4, 4)
Calculates Discounted Value of Coupon Payments of the Bond using Market Discount Rate or the Required Rate of Return.
disCouponPmtsBond(couponPmt, times, r)
disCouponPmtsBond(couponPmt, times, r)
couponPmt |
A vector. |
times |
A vector. |
r |
A number. |
Bonds are a type of financial instrument in which the issuer under the contractual obligation agrees to pay the interest on the money borrowed from the investor and repay the amount borrowed through the issued bond. Bonds are also known as fixed-income securities because there is a contractual obligation for the issuer to pay interest at the specified Coupon Rate. This Coupon Rate is also called the nominal rate or the contract rate. Although Coupon is specified as a percentage; however, it is the dollar value of the Coupon Payment that is computed by multiplying the coupon rate with the par value of the debt instrument. For example, the interest payment for a debt instrument with a 5 percent coupon rate and a par value of $1,000 is $50 (5 percent times $1,000). The frequency of interest payments varies by the type of debt instrument. In the United States, the usual practice for bonds is for the issuer to pay the coupon interest in two semi-annual installments. Mortgage-backed securities and asset-backed securities typically pay interest monthly. For bonds issued in some markets outside the United States,Coupon Payments are made only once per year. Loan interest payments can be customized in any manner (Fabozzi, 2008).
As further described by Adams and Smith (2019), an investor in a fixed-Rate bond receives the promised coupon that is the main source of return. Coupon Payments are based on the coupon rate and discounting is done at the market discount rate, required yield, or required rate of return.
Based on this, the method disCouponPmtsBond()
is developed to compute the present value or discounted value of the coupon payments promised by the issuer. So, disCouponPmtsBond()
gives the discounted value of Coupon Payments to be received by the Investor till the maturity of the bond for values passed to its three arguments. Here couponPmt
is the vector that has dollar values of Coupon Payments for periods till maturity, times
is a vector of number of years ranging from 1 to any specified number of years till maturity and r
is Market Discount Rate or Required Rate of return. The output is rounded off to three decimal places.
Input values to three arguments couponPmt
, times
and r
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
Fabozzi,F.J. (2008). Handbook of Finance: Financial Markets and Instruments. John Wiley & Sons, Incorporated. ISBN 9780470078143.
disCouponPmtsBond(couponPmt=c(4,4,4,4,4), times=c(1,2,3,4,5), r=0.06) disCouponPmtsBond(couponPmt=c(4,4,4,4,4), times=c(1:5), r=0.06) disCouponPmtsBond(couponPmt=c(rep(4,5)), times=c(1:5), r=0.06) disCouponPmtsBond(c(rep(4,5)), c(1:5),0.06)
disCouponPmtsBond(couponPmt=c(4,4,4,4,4), times=c(1,2,3,4,5), r=0.06) disCouponPmtsBond(couponPmt=c(4,4,4,4,4), times=c(1:5), r=0.06) disCouponPmtsBond(couponPmt=c(rep(4,5)), times=c(1:5), r=0.06) disCouponPmtsBond(c(rep(4,5)), c(1:5),0.06)
Calculates the Discounted Value of the the Par Value of the Bond or the amount to be paid at the maturity of the Bond using the Market Discount Rate.
disMaturityValBond(bondMaturityVal, n, r)
disMaturityValBond(bondMaturityVal, n, r)
bondMaturityVal |
A number. |
n |
A number. |
r |
A number. |
The par value of a bond is the amount that the issuer agrees to repay the holder of the debt instrument by the maturity date. This amount is also referred to as the principal amount, face value, or maturity value. Bonds can have any par value. Because debt instruments can have a different par value, the practice is to quote the price of a debt instrument as a percentage of its par value. A value of 100 means 100% of par value. So, for example, if a debt instrument has a par value of $1,000 and is selling for $900, it would be said to be selling at 90. If a debt instrument with a par value of 5,000 is selling for $5,500, it is said to be selling for 110 (Fabozzi, 2008).
Based on this, the method disMaturityValBond()
is developed to compute the present value or discounted value of the Par Value of the Bond. So, disMaturityValBond()
gives the discounted value of Par Value, Face Value, Maturity Value, or Principal amount for values passed to its three arguments. Here bondMaturityVal
is amount of Par Value or Maturity Value of the Bond, n
represents number of years till maturity and r
is Market Discount Rate or Required Rate of return. The output is rounded off to three decimal places.
Input values to three arguments bondMaturityVal
, n
and r
.
MaheshP Kumar, [email protected]
Fabozzi,F.J. (2008). Handbook of Finance: Financial Markets and Instruments. John Wiley & Sons, Incorporated. ISBN 9780470078143.
disMaturityValBond (bondMaturityVal=100,n=5,r=0.06) disMaturityValBond (100,5,0.06)
disMaturityValBond (bondMaturityVal=100,n=5,r=0.06) disMaturityValBond (100,5,0.06)
Calculates Effective Annual Rate (EAR) of a Zero-Coupon Bond for various values of Periodicity.
earZcbVariousPeriodicity( maturityVal, yearsToMaturity, ZCBprice, desiredPeriodicity )
earZcbVariousPeriodicity( maturityVal, yearsToMaturity, ZCBprice, desiredPeriodicity )
maturityVal |
A number. |
yearsToMaturity |
A number. |
ZCBprice |
A number. |
desiredPeriodicity |
A number. |
This method, earZcbVariousPeriodicity()
is developed to compute an Effective Annual Rate (EAR) of a Zero-Coupon Bond for various values of Periodicity, for the values passed to its four arguments. Here, maturityVal
is Maturity Value of the Bond, yearsToMaturity
represents years to maturity, ZCBprice
represents price of Zero-Coupon Bond, and desiredPeriodicity
desired periodicity for which the Effective Annual Rate is to be computed. The output is rounded off to six decimal places.
Input values to four arguments maturityVal
, yearsToMaturity
,ZCBprice
and desiredPeriodicity
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
earZcbVariousPeriodicity(maturityVal=100, yearsToMaturity=5, ZCBprice=80, desiredPeriodicity=1) earZcbVariousPeriodicity(maturityVal=100, yearsToMaturity=5, ZCBprice=80, desiredPeriodicity=12) earZcbVariousPeriodicity(maturityVal=100, yearsToMaturity=5, ZCBprice=80, desiredPeriodicity=4) earZcbVariousPeriodicity(maturityVal=100, yearsToMaturity=5, ZCBprice=80, desiredPeriodicity=2)
earZcbVariousPeriodicity(maturityVal=100, yearsToMaturity=5, ZCBprice=80, desiredPeriodicity=1) earZcbVariousPeriodicity(maturityVal=100, yearsToMaturity=5, ZCBprice=80, desiredPeriodicity=12) earZcbVariousPeriodicity(maturityVal=100, yearsToMaturity=5, ZCBprice=80, desiredPeriodicity=4) earZcbVariousPeriodicity(maturityVal=100, yearsToMaturity=5, ZCBprice=80, desiredPeriodicity=2)
Calculates the Effective Duration statistic of a Callable Bond.
effDurtnCallableBond(pvBase, pvPlus, pvMinus, perChangeBenchYtm)
effDurtnCallableBond(pvBase, pvPlus, pvMinus, perChangeBenchYtm)
pvBase |
A number. |
pvPlus |
A number. |
pvMinus |
A number. |
perChangeBenchYtm |
A number. |
According to information provided by Adams and Smith (2019), the method effDurtnCallableBond()
is developed to calculate the Effective Duration statistic of a Callable Bond.
Input values to four arguments pvBase
,pvPlus
,pvMinus
and perChangeBenchYtm
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Understanding Fixed‑Income Risk and Return. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 237-299). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
effDurtnCallableBond(pvBase=101.060489,pvPlus=99.050120,pvMinus=102.890738,perChangeBenchYtm=0.0025)
effDurtnCallableBond(pvBase=101.060489,pvPlus=99.050120,pvMinus=102.890738,perChangeBenchYtm=0.0025)
Calculates the percentage change in Full Price of the Bond for a given a change in its Yield-To-Maturity and Modified Duration statistic.
estimatedPercentChangePVFullPrice(annualModifDuration, changeInAnnualYtm)
estimatedPercentChangePVFullPrice(annualModifDuration, changeInAnnualYtm)
annualModifDuration |
A number. |
changeInAnnualYtm |
A number. |
According to information provided by Adams and Smith (2019), the method estimatedPercentChangePVFullPrice()
is developed to calculate the percentage change in Full Price of the Bond for a given a change in its Yield-To-Maturity and Modified Duration statistic.
Input values to two arguments annualModifDuration
and changeInAnnualYtm
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Understanding Fixed‑Income Risk and Return. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 237-299). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
estimatedPercentChangePVFullPrice(annualModifDuration=6.126829,changeInAnnualYtm=0.01) estimatedPercentChangePVFullPrice(annualModifDuration=6.3432,changeInAnnualYtm=-0.01)
estimatedPercentChangePVFullPrice(annualModifDuration=6.126829,changeInAnnualYtm=0.01) estimatedPercentChangePVFullPrice(annualModifDuration=6.3432,changeInAnnualYtm=-0.01)
Calculates desired extra compensation (in terms of bps) for a risky Bond as compared Annual Percentage Rate(APR) of a comparable Bond.
extraCompensationForHigherRisk(APRofRiskyBond, APRofComparableBond)
extraCompensationForHigherRisk(APRofRiskyBond, APRofComparableBond)
APRofRiskyBond |
A number. |
APRofComparableBond |
A number. |
The additional compensation for the greater risk in Bond B is 20.9 bps (0.10839 – 0.10630 = 0.00209) when the yields are stated on a semi-annual bond basis. The additional compensation is 20.4 bps (0.10696 – 0.10492 = 0.00204) when both are annualized for quarterly compounding (Adams & Smith, 2019).
In light of the information given, extraCompensationForHigherRisk()
desired extra compensation for a risky Bond as compared Annual Percentage Rate (APR) of a comparable Bond for values passed to its two arguments. Here, APRofRiskyBond
is given Annual Percentage Rate of risky bond, and APRofComparableBond
is given Annual Percentage Rate of comparable Bond. The output of 20.9 means 20.9 bps.
Input values to two arguments APRofRiskyBond
and APRofComparableBond
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
extraCompensationForHigherRisk(APRofRiskyBond=0.10839,APRofComparableBond=0.10630)
extraCompensationForHigherRisk(APRofRiskyBond=0.10839,APRofComparableBond=0.10630)
Calculates Yearly Forward Rates using the given Spot Rates.
forwards(spots, yrsFRbegins, yrsFRapplies, t, n)
forwards(spots, yrsFRbegins, yrsFRapplies, t, n)
spots |
A vector. |
yrsFRbegins |
A number. |
yrsFRapplies |
A number. |
t |
A vector. |
n |
A number. |
According to information provided by Frank J. Fabozzi (2008), the method forwards()
is developed to calculate Forward Rates using the given Spot Rates. Here, spots
is vector of given spot rates, yrsFRbegins
is year in which Forward Rate begins (for example, a value of 1 would mean 1 year from now, and value of 2 would means two years from now), yrsFRapplies
means number of years for which the Forward Rate Applies (for example, a value for 1 means for 1 year and yrsFRapplies
value of 4 means for four years). So, yrsFRbegins=2
and yrsFRapplies=1
means computing implied Forward Rate of 2 years from now, for 1 year. This is also called as 1 year forward rate 2 years into future. Lastly, t
is a vector of number of years ranging from 1 to any specified number of years for which the Spot Rates are available, and n
is number of years under consideration.
For understanding the value of output, it is to be noted that in the first example, an output value of 0.1404 means 1 year from now, for 1 year the implied forward rate works out to be 14.04 percent. In the second example, an output value of 0.2124 means 2 years from now for 1 year the implied forward rate works out to be 21.24 percent (this is also called as 1 year forward rate, 2 years into future).In the third example, an output value of 0.2748 means 3 years from now for 1 year the implied forward rate works out to be 27.48 percent (this is also called as 1 year forward rate, 3 years into future).
Input values to five arguments spots
,yrsFRbegins
,yrsFRapplies
, t
and n
.
MaheshP Kumar, [email protected]
Fabozzi, F. J. (2008). Handbook of Finance: Financial Markets and Instruments. John Wiley & Sons.
forwards(spots=c(0.10,0.12,0.15,0.18,0.20,0.22,0.24,0.30),yrsFRbegins=1,yrsFRapplies=1,t=c(1:8),n=8) forwards(spots=c(0.10,0.12,0.15,0.18,0.20,0.22,0.24,0.30),yrsFRbegins=2,yrsFRapplies=1,t=c(1:8),n=8) forwards(spots=c(0.10,0.12,0.15,0.18,0.20,0.22,0.24,0.30),yrsFRbegins=3,yrsFRapplies=1,t=c(1:8),n=8) forwards(spots=c(0.10,0.12,0.15,0.18,0.20,0.22,0.24,0.30),yrsFRbegins=4,yrsFRapplies=1,t=c(1:8),n=8) forwards(spots=c(0.10,0.12,0.15,0.18,0.20,0.22,0.24,0.30),yrsFRbegins=5,yrsFRapplies=1,t=c(1:8),n=8) forwards(spots=c(0.10,0.12,0.15,0.18,0.20,0.22,0.24,0.30),yrsFRbegins=6,yrsFRapplies=1,t=c(1:8),n=8) forwards(spots=c(0.10,0.12,0.15,0.18,0.20,0.22,0.24,0.30),yrsFRbegins=1,yrsFRapplies=4,t=c(1:8),n=8) forwards(spots=c(0.10,0.12,0.15,0.18,0.20,0.22,0.24,0.30),yrsFRbegins=3,yrsFRapplies=4,t=c(1:8),n=8) forwards(spots=c(0.10,0.12,0.15,0.18,0.20,0.22,0.24,0.30),yrsFRbegins=5,yrsFRapplies=2,t=c(1:8),n=8)
forwards(spots=c(0.10,0.12,0.15,0.18,0.20,0.22,0.24,0.30),yrsFRbegins=1,yrsFRapplies=1,t=c(1:8),n=8) forwards(spots=c(0.10,0.12,0.15,0.18,0.20,0.22,0.24,0.30),yrsFRbegins=2,yrsFRapplies=1,t=c(1:8),n=8) forwards(spots=c(0.10,0.12,0.15,0.18,0.20,0.22,0.24,0.30),yrsFRbegins=3,yrsFRapplies=1,t=c(1:8),n=8) forwards(spots=c(0.10,0.12,0.15,0.18,0.20,0.22,0.24,0.30),yrsFRbegins=4,yrsFRapplies=1,t=c(1:8),n=8) forwards(spots=c(0.10,0.12,0.15,0.18,0.20,0.22,0.24,0.30),yrsFRbegins=5,yrsFRapplies=1,t=c(1:8),n=8) forwards(spots=c(0.10,0.12,0.15,0.18,0.20,0.22,0.24,0.30),yrsFRbegins=6,yrsFRapplies=1,t=c(1:8),n=8) forwards(spots=c(0.10,0.12,0.15,0.18,0.20,0.22,0.24,0.30),yrsFRbegins=1,yrsFRapplies=4,t=c(1:8),n=8) forwards(spots=c(0.10,0.12,0.15,0.18,0.20,0.22,0.24,0.30),yrsFRbegins=3,yrsFRapplies=4,t=c(1:8),n=8) forwards(spots=c(0.10,0.12,0.15,0.18,0.20,0.22,0.24,0.30),yrsFRbegins=5,yrsFRapplies=2,t=c(1:8),n=8)
Calculates Bond Price using the Forward Rate Input.
frPricing(cpns, fri, mv, n)
frPricing(cpns, fri, mv, n)
cpns |
A vector. |
fri |
A vector. |
mv |
A number. |
n |
A number. |
According to information provided by Adams and Smith (2019), the method frPricing()
is developed to compute the Bond Price using the Forward Rate Input. If 0y1y is 1.88 percent, 1y1y is 2.77 percent and 2y1y is 3.54 percent then the bond price works out to be 102.965 dollars. Here, cpns
is vector of coupon Payments for three years,fri
is a vector of that contains three values that serve as forward rate input factor,mv
is maturity Value, and n
is number of years that is 3 years.
Input values to four arguments cpns
,fri
, mv
and n
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
frPricing(cpns=c(3.75,3.75,3.75),fri=c((1.0188),(1.0188*1.0277),(1.0188*1.0277*1.0354)),mv=100,n=3)
frPricing(cpns=c(3.75,3.75,3.75),fri=c((1.0188),(1.0188*1.0277),(1.0188*1.0277*1.0354)),mv=100,n=3)
Calculates Future Value of Money Market Instruments using the given Discount Rate.
fvMmiUsingQuotedDiscRate(pvMmi, daysToMaturity, daysInYear, mmQuotedDiscRate)
fvMmiUsingQuotedDiscRate(pvMmi, daysToMaturity, daysInYear, mmQuotedDiscRate)
pvMmi |
A number. |
daysToMaturity |
A number. |
daysInYear |
A number. |
mmQuotedDiscRate |
A number. |
According to information provided by Adams and Smith (2019), the method fvMmiUsingQuotedDiscRate()
is developed to calculate Future Value of Money Market Instruments using the given Discount Rate for the values passed to its four arguments. Here, pvMmi
is present value of the Money Market Instrument, daysToMaturity
is number of days till the maturity, daysInYear
is taken to be 360, and mmQuotedDiscRate
is Money Market Quoted Discount Rate. For example, an output value of 10,000,000 dollars denotes the value of redemption amount to be paid at maturity for a Money Market Instrument that had the present value of 9,943,125 dollars.
Input values to four arguments pvMmi
, daysToMaturity
,daysInYear
and mmQuotedDiscRate
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
fvMmiUsingQuotedDiscRate(pvMmi=9943125,daysToMaturity=91,daysInYear=360,mmQuotedDiscRate=0.0225)
fvMmiUsingQuotedDiscRate(pvMmi=9943125,daysToMaturity=91,daysInYear=360,mmQuotedDiscRate=0.0225)
Calculates Future Value of Money Market Instrument using Add-on Rate (AOR)
fvMoneyMarketInstrUsingAOR(pvMmi, daysToMaturity, daysInYear, AOR)
fvMoneyMarketInstrUsingAOR(pvMmi, daysToMaturity, daysInYear, AOR)
pvMmi |
A number. |
daysToMaturity |
A number. |
daysInYear |
A number. |
AOR |
A number. |
As explained by Adams and Smith (2019), suppose that a Canadian pension fund buys a 180-day bankers'
acceptance (BA) with a quoted add-on rate of 4.38 percent for a 365-day year. If the initial principal amount is 10 million dollars, the redemption amount due at maturity is found is 10,216,000 dollars which is calculated as the principal of 10 million dollars plus interest of 216,000 dollars. The interest is calculated as the principal times the fraction of the year times the annual add-on rate. It is added to the principal to determine the redemption amount.
In light of the available information, the method fvMoneyMarketInstrUsingAOR()
is developed to compute the Future Value of Money Market Instrument using Add-on Rate (AOR) for the values passed to its four arguments. Here, pvMmi
is present value of the Money Market Instrument, daysToMaturity
is number of days till the maturity, daysInYear
is taken to be 365, and AOR
is Add-on Rate.
Input values to four arguments pvMmi
,daysToMaturity
, daysInYear
and AOR
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
fvMoneyMarketInstrUsingAOR(pvMmi=10000000,daysToMaturity=180,daysInYear=365,AOR=0.0438)
fvMoneyMarketInstrUsingAOR(pvMmi=10000000,daysToMaturity=180,daysInYear=365,AOR=0.0438)
Calculates Macaulay Duration of a traditional Fixed-Rate Bond.
macDuration(n, ytm, coupon, maturityVal, daysCpnToSettle, daysCouponPeriod)
macDuration(n, ytm, coupon, maturityVal, daysCpnToSettle, daysCouponPeriod)
n |
A number. |
ytm |
A number. |
coupon |
A number. |
maturityVal |
A number. |
daysCpnToSettle |
A number. |
daysCouponPeriod |
A number |
According to Adams and Smith (2019),the duration of a bond measures the sensitivity of the bond'
s full price (including accrued interest) to changes in bond'
s yield-to-maturity or, more generally, to changes in benchmark interest rates. Duration estimates changes in the bond price assuming that variables other than the yield-to-maturity or benchmark rates are held constant. Most importantly, the time-to-maturity is unchanged. Therefore, duration measures the instantaneous (or, at least, same-day) change in the bond price. The accrued interest is the same, so it is the flat price that goes up or down when the full price changes. Duration is a useful measure because it represents the approximate amount of time a bond would have to be held for the market discount rate at purchase to be realized if/when there is a single change in interest rate. If the bond is held for the duration period, an increase from reinvesting coupons is offset by a decrease in price if interest rates increase and a decrease from reinvesting coupons is offset by an increase in price if interest rates decrease.
Macaulay duration is named after Frederick Macaulay, the Canadian economist who first wrote about this measure in a book published in 1938. This method calculates the Macaulay duration of a traditional fixed-rate bond (Adams & Smith, 2019).
Here, n
is number of periods, ytm
is yield-to-maturity, coupon
is dollar value of the coupon payment,maturityVal
is maturity Value,daysCpnToSettle
is the number of days from the last coupon payment to the settlement date, and daysCouponPeriod
is the number of days in the coupon period.
Input values to six arguments n
, ytm
, coupon
, maturityVal
, daysCpnToSettle
and daysCouponPeriod
.
MaheshP Kumar, Clare Matuka
Adams,J.F. & Smith,D.J.(2019). Understanding Fixed‑Income Risk and Return. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 237-299). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
macDuration(n=10,ytm=0.104,coupon=8,maturityVal=100,daysCpnToSettle=0, daysCouponPeriod=0) macDuration(n=8*2,ytm=0.06/2,coupon=3,maturityVal=100,daysCpnToSettle=57,daysCouponPeriod=180)
macDuration(n=10,ytm=0.104,coupon=8,maturityVal=100,daysCpnToSettle=0, daysCouponPeriod=0) macDuration(n=8*2,ytm=0.06/2,coupon=3,maturityVal=100,daysCpnToSettle=57,daysCouponPeriod=180)
#'Calculates Macaulay Duration using the Coupon Rate and Yield-To-Maturity.
macDurationOnCouponRate(couponRate, n, ytm, tT)
macDurationOnCouponRate(couponRate, n, ytm, tT)
couponRate |
A number. |
n |
A number. |
ytm |
A number. |
tT |
A number. |
According to information provided by Adams and Smith (2019), the method macDurationOnCouponRate()
is developed to calculate Macaulay Duration using the Coupon Rate and Yield-To-Maturity.
Here, couponRate
is Coupon Rate (for example, 0.03 means a coupon rate of 3 percent), n
is number of periods, ytm
is yield-to-maturity, and tT
is fraction that has the number of days from the last coupon payment to the settlement date in the numerator and the number of days in the coupon period in the denominator.
Input values to four arguments couponRate
, n
, ytm
and tT
.
MaheshP Kumar, Clare Matuka
Adams,J.F. & Smith,D.J.(2019). Understanding Fixed‑Income Risk and Return. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 237-299). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
macDurationOnCouponRate(couponRate=0.03,n=8*2,ytm=0.06/2, tT=57/180) macDurationOnCouponRate(couponRate=0.08,n=10, ytm=0.104, tT=0)
macDurationOnCouponRate(couponRate=0.03,n=8*2,ytm=0.06/2, tT=57/180) macDurationOnCouponRate(couponRate=0.08,n=10, ytm=0.104, tT=0)
Calculates Macaulay Duration using the Full Price of the Bond and Yield-To-Maturity.
macDurationOnFP(fp, n, ytm, cpn, mv, daysCpnToSettle, daysCouponPeriod)
macDurationOnFP(fp, n, ytm, cpn, mv, daysCpnToSettle, daysCouponPeriod)
fp |
A number. |
n |
A number. |
ytm |
A number. |
cpn |
A number. |
mv |
A number. |
daysCpnToSettle |
A number. |
daysCouponPeriod |
A number |
According to information provided by Adams and Smith (2019), the method macDurationOnFP()
is developed to calculate Macaulay Duration using the Full Price of the Bond and Yield-To-Maturity.
Here, fp
is Full Price of the bond, n
is number of periods, ytm
is yield-to-maturity, coupon
is dollar value of the coupon payment, maturityVal
is maturity Value, daysCpnToSettle
is the number of days from the last coupon payment to the settlement date, and daysCouponPeriod
is the number of days in the coupon period.
Input values to seven arguments fp
, n
, ytm
, cpn
, mv
, daysCpnToSettle
and daysCouponPeriod
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Understanding Fixed‑Income Risk and Return. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 237-299). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
macDurationOnFP(fp=100.9404,n=8*2,ytm=0.06/2,cpn=3,mv=100,daysCpnToSettle=57,daysCouponPeriod=180) macDurationOnFP(fp=85.5031,n=10, ytm=0.104, cpn=8, mv=100,daysCpnToSettle=0,daysCouponPeriod=0)
macDurationOnFP(fp=100.9404,n=8*2,ytm=0.06/2,cpn=3,mv=100,daysCpnToSettle=57,daysCouponPeriod=180) macDurationOnFP(fp=85.5031,n=10, ytm=0.104, cpn=8, mv=100,daysCpnToSettle=0,daysCouponPeriod=0)
Calculate Present Value or the Price of illiquid Bond using Matrix Method.
matrixMethod(couponPmt, times, maturityVal, n, r1, r2)
matrixMethod(couponPmt, times, maturityVal, n, r1, r2)
couponPmt |
A vector. |
times |
A vector. |
maturityVal |
A number. |
n |
A number. |
r1 |
A number. |
r2 |
A number |
Some fixed-rate bonds are not actively traded. Therefore, there is no market price available to calculate the rate of return required by investors. The same problem occurs for bonds that are not yet issued. In these situations, it is common to estimate the market discount rate and price based on the quoted or flat prices of more frequently traded comparable bonds. These comparable bonds have similar times-to-maturity, coupon rates, and credit quality. This estimation process is called matrix pricing. Matrix pricing also is used in underwriting new bonds to get an estimate of the required yield spread over the benchmark rate. The benchmark rate typically is the yield-to-maturity on a government bond having the same, or close to the same, time-to-maturity (Adams & Smith, 2019).
Based on the information provided, matrixMethod()
is developed to compute the Price of Bond using Matrix Method. So, matrixMethod()
gives the Price of Bond using returns of two frequently traded comparable bonds for values passed to its six arguments. Here, couponPmt
represents the dollar values of all the coupon payments, times
is a vector of number of years ranging from 1 to any specified number of years till maturity, maturityVal
is Maturity Value, n
is number of years till maturity, r1
return on first comparable bond, and r2
is return on second comparable bond. The function computes simple average of the returns of two comparable bonds with r=(r1+r2)/2
, that is being used for Bond pricing. The output is rounded off to three decimal places.
Input values to six arguments couponPmt
,times
, maturityVal
,n
, r1
and r2
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
matrixMethod(couponPmt=c(4.5,4.5,4.5,4.5),times=c(1:4),maturityVal=100,n=4,r1=0.02856,r2=0.03449)
matrixMethod(couponPmt=c(4.5,4.5,4.5,4.5),times=c(1:4),maturityVal=100,n=4,r1=0.02856,r2=0.03449)
Calculates Modified Duration statistic of a traditional Fixed-Rate Bond.
modifDuration(n, ytm, coupon, maturityVal, daysCpnToSettle, daysCouponPeriod)
modifDuration(n, ytm, coupon, maturityVal, daysCpnToSettle, daysCouponPeriod)
n |
A number. |
ytm |
A number. |
coupon |
A number. |
maturityVal |
A number. |
daysCpnToSettle |
A number. |
daysCouponPeriod |
A number |
According to information provided by Adams and Smith (2019), the method modifDuration()
is developed to calculate Modified Duration statistic of a traditional Fixed-Rate Bond.
Here, n
is number of periods, ytm
is yield-to-maturity, coupon
is dollar value of the coupon payment, maturityVal
is maturity Value, daysCpnToSettle
is the number of days from the last coupon payment to the settlement date, and daysCouponPeriod
is the number of days in the coupon period.
Input values to six arguments n
, ytm
, coupon
, maturityVal
, daysCpnToSettle
and daysCouponPeriod
.
MaheshP Kumar, Clare Matuka
Adams,J.F. & Smith,D.J.(2019). Understanding Fixed‑Income Risk and Return. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 237-299). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
modifDuration(n=10, ytm=0.104, coupon=8, maturityVal=100, daysCpnToSettle=0, daysCouponPeriod=0) modifDuration(n=8*2,ytm=0.06/2,coupon=3,maturityVal=100,daysCpnToSettle=57,daysCouponPeriod=180)
modifDuration(n=10, ytm=0.104, coupon=8, maturityVal=100, daysCpnToSettle=0, daysCouponPeriod=0) modifDuration(n=8*2,ytm=0.06/2,coupon=3,maturityVal=100,daysCpnToSettle=57,daysCouponPeriod=180)
Calculates Modified Duration using the Macaulay Duration and Yield-To-Maturity.
modifDurationUsingMacDuration(macDuration, ytm)
modifDurationUsingMacDuration(macDuration, ytm)
macDuration |
A number. |
ytm |
A number. |
According to information provided by Adams and Smith (2019), the method modifDurationUsingMacDuration()
is developed to calculate Modified Duration using the Macaulay Duration and Yield-To-Maturity.
Input values to two arguments macDuration
and ytm
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Understanding Fixed‑Income Risk and Return. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 237-299). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
modifDurationUsingMacDuration(macDuration=12.6213,ytm=0.06/2) modifDurationUsingMacDuration(macDuration=7.0029,ytm=0.104)
modifDurationUsingMacDuration(macDuration=12.6213,ytm=0.06/2) modifDurationUsingMacDuration(macDuration=7.0029,ytm=0.104)
Calculates Money Duration of a Bond.
moneyDuration(macDuration, ytm, pvFullBondPrice)
moneyDuration(macDuration, ytm, pvFullBondPrice)
macDuration |
A number. |
ytm |
A number. |
pvFullBondPrice |
A number. |
According to information provided by Adams and Smith (2019), the method moneyDuration()
is developed to calculate Money Duration of a Bond.
Input values to three arguments macDuration
,ytm
and pvFullBondPrice
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Understanding Fixed‑Income Risk and Return. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 237-299). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
moneyDuration(macDuration=7.0029,ytm=0.104,pvFullBondPrice=85.5031)
moneyDuration(macDuration=7.0029,ytm=0.104,pvFullBondPrice=85.5031)
Calculates periodic discount rate of a Floating-Rate Note (FRN).
periodicDiscRateFRN(estRtrn, mvFRN, priceFRN, maturityYears, periodicity)
periodicDiscRateFRN(estRtrn, mvFRN, priceFRN, maturityYears, periodicity)
estRtrn |
A number. |
mvFRN |
A number. |
priceFRN |
A number. |
maturityYears |
A number. |
periodicity |
A number. |
The method periodicDiscRateFRN
is developed to compute periodic discount rate of a Floating-Rate Note (FRN) for the values passed to its five arguments. Here, estRtrn
is a vector of estimated returns on FRN (this does not include repayment of the principal), mvFRN
represents Maturity Value, priceFRN
price of FRN, maturityYears
is number of years to Maturity, and periodicity
is periodicity of interest payments. The given examples show various ways in which the arguments can be passed to periodicDiscRateFRN()
.
Input values to five arguments estRtrn
,mvFRN
, priceFRN
, maturityYears
, and periodicity
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
periodicDiscRateFRN(estRtrn=0.8125,mvFRN=100,priceFRN=98,maturityYears=4,periodicity=4) periodicDiscRateFRN(0.8125, 100, 98, 4, 4)
periodicDiscRateFRN(estRtrn=0.8125,mvFRN=100,priceFRN=98,maturityYears=4,periodicity=4) periodicDiscRateFRN(0.8125, 100, 98, 4, 4)
Calculates Price of Commercial Paper.
pricingCommercialPaper( maturityVal, daysToMaturity, daysInYear, mmQuotedDiscRate )
pricingCommercialPaper( maturityVal, daysToMaturity, daysInYear, mmQuotedDiscRate )
maturityVal |
A number. |
daysToMaturity |
A number. |
daysInYear |
A number. |
mmQuotedDiscRate |
A number. |
According to information provided by Adams and Smith (2019), the method pricingCommercialPaper()
is developed to calculate the price of Commercial Paper for the values passed to its four arguments. Here, maturityVal
is maturity value of the Commercial Paper, daysToMaturity
is number of days till the maturity, daysInYear
is taken to be 360, and mmQuotedDiscRate
is money market quoted Discount Rate. For example, an output value of 98.56 means that the price of the commercial paper is 98.56 dollars per 100 dollars of face value.
Input values to four arguments maturityVal
, daysToMaturity
, daysInYear
and mmQuotedDiscRate
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
pricingCommercialPaper(maturityVal=100,daysToMaturity=90,daysInYear=360,mmQuotedDiscRate=0.0576)
pricingCommercialPaper(maturityVal=100,daysToMaturity=90,daysInYear=360,mmQuotedDiscRate=0.0576)
Calculates Price of a Floating-Rate Note (FRN).
pricingFRN(estRtrn, t, mv, maturityPeriod, estDisc)
pricingFRN(estRtrn, t, mv, maturityPeriod, estDisc)
estRtrn |
A vector. |
t |
A vector. |
mv |
A number. |
maturityPeriod |
A number. |
estDisc |
A number. |
Floating-rate notes are very different from a fixed-rate bond. The interest payments on a floating rate note, which often is called a floater or an FRN, are not fixed. Instead, they vary from period to period depending on the current level of a reference interest rate. The interest payments could go up or down; that is why they “
float."
In principle, a floater has a stable price even in a period of volatile interest rates. With a traditional fixed-income security, interest rate volatility affects the price because the future cash flows are constant. With a floating rate note, interest rate volatility affects future interest payments. The valuation of a floating rate note needs a pricing model. Suppose that the yield spread required by investors is 40 bps over the reference rate, DM = 0.0040. The assumed discount rate per period is 0.825 percent. For N = 4, the FRN is priced at 100.196 per 100 of par value. This floater is priced at a premium above par value because the quoted margin is greater than the discount margin (Adams & Smith, 2019).
Based on the information provided, the method pricingFRN()
is developed to compute Price of a Floating-Rate Note (FRN) for the values passed to its five arguments. Here, estRtrn
is a vector of estimated returns on FRN (this does not include repayment of the principal), t
is a vector of number of years ranging from 1 to any specified number of periods, mv
represents Maturity Value, maturityPeriod
is number of evenly spaced periods to maturity, and estDisc
is assumed discount rate per period. The given examples show various ways in which the arguments can be passed to pricingFRN()
.
Input values to five arguments estRtrn
,t
, mv
, maturityPeriod
, and estDisc
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
pricingFRN(estRtrn=c(0.875,0.875,0.875,0.875),t=c(1,2,3,4),mv=100,maturityPeriod=4,estDisc=0.00825) pricingFRN(estRtrn=c(0.875,0.875,0.875,0.875),t=c(1:4),mv=100,maturityPeriod=4,estDisc=0.00825) pricingFRN(estRtrn=c(rep(0.875,4)), t=c(1:4),mv=100,maturityPeriod=4,estDisc=0.00825) pricingFRN(c(rep(0.875,4)), c(1:4),100,4,0.00825)
pricingFRN(estRtrn=c(0.875,0.875,0.875,0.875),t=c(1,2,3,4),mv=100,maturityPeriod=4,estDisc=0.00825) pricingFRN(estRtrn=c(0.875,0.875,0.875,0.875),t=c(1:4),mv=100,maturityPeriod=4,estDisc=0.00825) pricingFRN(estRtrn=c(rep(0.875,4)), t=c(1:4),mv=100,maturityPeriod=4,estDisc=0.00825) pricingFRN(c(rep(0.875,4)), c(1:4),100,4,0.00825)
Calculates Price of Money Market Instruments using Add-on Rate (AOR)
pricingMoneyMarketInstrUsingAOR(maturityVal, daysToMaturity, daysInYear, AOR)
pricingMoneyMarketInstrUsingAOR(maturityVal, daysToMaturity, daysInYear, AOR)
maturityVal |
A number. |
daysToMaturity |
A number. |
daysInYear |
A number. |
AOR |
A number. |
Money market instruments are short-term debt securities. They range in time-to-maturity from overnight sale and repurchase agreements (repos) to one-year bank certificates of deposit. Money market instruments also include commercial paper, bankers'
acceptances, and time deposits based on such indexes as Libor or Euribor. Money market mutual funds are a major investor in such securities. These mutual funds can invest only in certain eligible money market securities. Bank certificates of deposit, repos, and such indexes as Libor and Euribor are quoted on an add-on rate basis (Adams & Smith, 2019).
In light of the information given, the method pricingMoneyMarketInstrUsingAOR()
is developed to compute the Price of Money Market Instruments using Add-on Rate (AOR) for the values passed to its four arguments. Here maturityVal
is maturity value of the Money Market Instrument, daysToMaturity
is number of days till the maturity, and daysInYear
is taken to be 365, and AOR
is Add-on Rate.
Input values to four arguments maturityVal
,daysToMaturity
, daysInYear
and AOR
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
pricingMoneyMarketInstrUsingAOR(maturityVal=10216000,daysToMaturity=180,daysInYear=365,AOR=0.0438) pricingMoneyMarketInstrUsingAOR(maturityVal=10216000,daysToMaturity=135,daysInYear=365,AOR=0.0417)
pricingMoneyMarketInstrUsingAOR(maturityVal=10216000,daysToMaturity=180,daysInYear=365,AOR=0.0438) pricingMoneyMarketInstrUsingAOR(maturityVal=10216000,daysToMaturity=135,daysInYear=365,AOR=0.0417)
Calculates Present Value or the Price of the Bond paying Quarterly Coupons.
pricingQtrlyCpnBond(qCoupons, times, mv, n, r)
pricingQtrlyCpnBond(qCoupons, times, mv, n, r)
qCoupons |
A vector. |
times |
A vector. |
mv |
A number. |
n |
A number. |
r |
A number. |
The method pricingQtrlyCpnBond()
is developed to compute the Price of Bond making quarterly Coupon Payments. So, pricingQtrlyCpnBond()
gives the Price of Bond making quarterly Coupon Payments for values passed to its five arguments. Here, qCoupons
represents the dollar values of all the quarterly coupon payments till maturity, times
is a vector of number of years ranging from 1 to any specified number of quarterly periods till maturity, that is from 1 to times(n * 4), mv
is Maturity Value, n
is number of years till maturity, and r
is annual Market Discount Rate or Required Rate of return. The output is rounded off to two decimal places. The given examples show various ways in which the arguments can be passed to pricingQtrlyCpnBond()
.
Input values to five arguments qCoupons
, times
, mv
,n
and r
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
pricingQtrlyCpnBond(qCoupons=c(2,2,2,2,2,2,2,2), times=c(1,2,3,4,5,6,7,8) ,mv=100,n=2,r=0.06) pricingQtrlyCpnBond(qCoupons=c(2,2,2,2,2,2,2,2), times=c(1:8) ,mv=100,n=2,r=0.06) pricingQtrlyCpnBond(qCoupons=c(rep(2,8)), times=c(1:8) ,mv=100,n=2,r=0.06) pricingQtrlyCpnBond(c(rep(2,8)), c(1:8) ,100,2,0.06)
pricingQtrlyCpnBond(qCoupons=c(2,2,2,2,2,2,2,2), times=c(1,2,3,4,5,6,7,8) ,mv=100,n=2,r=0.06) pricingQtrlyCpnBond(qCoupons=c(2,2,2,2,2,2,2,2), times=c(1:8) ,mv=100,n=2,r=0.06) pricingQtrlyCpnBond(qCoupons=c(rep(2,8)), times=c(1:8) ,mv=100,n=2,r=0.06) pricingQtrlyCpnBond(c(rep(2,8)), c(1:8) ,100,2,0.06)
Calculates Present Value or the Price of the Bond paying semi-annual Coupons.
pricingSaCpnBond(saCoupons, times, maturityVal, n, r)
pricingSaCpnBond(saCoupons, times, maturityVal, n, r)
saCoupons |
A vector. |
times |
A vector. |
maturityVal |
A number. |
n |
A number. |
r |
A number. |
The method pricingSaCpnBond()
is developed to compute the Price of Bond making semi-annual Coupon Payments. So, pricingSaCpnBond()
gives the Price of Bond making semi-annual Coupon Payments for values passed to its five arguments. Here, saCoupons
represents the dollar values of all the semi-annual coupon payments till maturity, times
is a vector of number of years ranging from 1 to any specified number of semi-annual periods till maturity, that is from 1 to times (n * 2), maturityVal
is Maturity Value, n
is number of years till maturity, and r
is annual Market Discount Rate or Required Rate of return. The output is rounded off to two decimal places. The given examples show various ways in which the arguments can be passed to pricingSaCpnBond()
.
Input values to five arguments saCoupons
, times
, maturityVal
,n
and r
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
pricingSaCpnBond(saCoupons=c(4,4,4,4,4,4), times=c(1,2,3,4,5,6) ,maturityVal=100,n=3,r=0.07) pricingSaCpnBond(saCoupons=c(4,4,4,4,4,4), times=c(1:6) ,maturityVal=100,n=6,r=0.06) pricingSaCpnBond(saCoupons=c(rep(4,6)), times=c(1:6) ,maturityVal=100,n=6,r=0.06) pricingSaCpnBond(c(rep(4,6)), c(1:6) ,100,6,0.06)
pricingSaCpnBond(saCoupons=c(4,4,4,4,4,4), times=c(1,2,3,4,5,6) ,maturityVal=100,n=3,r=0.07) pricingSaCpnBond(saCoupons=c(4,4,4,4,4,4), times=c(1:6) ,maturityVal=100,n=6,r=0.06) pricingSaCpnBond(saCoupons=c(rep(4,6)), times=c(1:6) ,maturityVal=100,n=6,r=0.06) pricingSaCpnBond(c(rep(4,6)), c(1:6) ,100,6,0.06)
Calculates Price of a Treasury bill (T-bill).
pricingTbill(maturityVal, daysToMaturity, daysInYear, mmQuotedDiscRate)
pricingTbill(maturityVal, daysToMaturity, daysInYear, mmQuotedDiscRate)
maturityVal |
A number. |
daysToMaturity |
A number. |
daysInYear |
A number. |
mmQuotedDiscRate |
A number. |
As explained by Adams and Smith (2019), suppose that a 91-day Treasury bill (T-bill) with a face value of USD 10 million is quoted at a discount rate of 2.25 percent for an assumed 360-day year. Here, the maturity Value is 10,000,000 (that stand for 10 million US dollars), days to Maturity are 91, days in a year are taken as 360, and money market quoted discount rate is 0.0225. When these values are passed to the method , pricingTbill
, the price of the T-bill works out to be 9,943,125 US dollars. In light of the information given, the method pricingTbill
is developed to compute the Price of a Treasury bill (T-bill) for the values passed to its four arguments. Here, maturityVal
is face value of the T-Bill, daysToMaturity
is number of days till the maturity, daysInYear
are taken to be 360, and mmQuotedDiscRate
is money market quoted Discount Rate.
Input values to four arguments maturityVal
,daysToMaturity
, daysInYear
, and mmQuotedDiscRate
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
pricingTbill(maturityVal=10000000,daysToMaturity=91,daysInYear=360,mmQuotedDiscRate=0.0225)
pricingTbill(maturityVal=10000000,daysToMaturity=91,daysInYear=360,mmQuotedDiscRate=0.0225)
Calculates Bond Price using given values of G-Spread and yield-to-maturity for the government benchmark bond.
pricingWithGspread(coupons, t, mv, n, ytmBenchGovtBond, Gspread)
pricingWithGspread(coupons, t, mv, n, ytmBenchGovtBond, Gspread)
coupons |
A vector. |
t |
A vector. |
mv |
A number. |
n |
A number. |
ytmBenchGovtBond |
A number. |
Gspread |
A number. |
According to information provided by Adams and Smith (2019), the method pricingWithGspread
is developed to compute Bond Price using the given values of G-Spread and the yield-to-maturity for the government benchmark bond. Here, coupons
is vector of Coupon Payments,t
is a vector of number of years ranging from 1 to any specified number of years under consideration, mv
is maturity value of the bond, n
is number of years, ytmBenchGovtBond
is the yield-to-maturity for the government benchmark bond, and Gspread
is given value of G-spread.
Input values to six arguments coupons
,t
, mv
,n
, ytmBenchGovtBond
, and Gspread
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
pricingWithGspread(coupons=c(6,6), t=c(1,2),mv=100,n=2,ytmBenchGovtBond=0.03605, Gspread=0.02327) pricingWithGspread(coupons=c(5,5,5),t=c(1,2,3),mv=100,n=3,ytmBenchGovtBond=0.01913,Gspread=0.0285) pricingWithGspread(coupons=c(60,60),t=c(1,2),mv=1000,n=2,ytmBenchGovtBond=0.03605,Gspread=0.02327)
pricingWithGspread(coupons=c(6,6), t=c(1,2),mv=100,n=2,ytmBenchGovtBond=0.03605, Gspread=0.02327) pricingWithGspread(coupons=c(5,5,5),t=c(1,2,3),mv=100,n=3,ytmBenchGovtBond=0.01913,Gspread=0.0285) pricingWithGspread(coupons=c(60,60),t=c(1,2),mv=1000,n=2,ytmBenchGovtBond=0.03605,Gspread=0.02327)
Calculate Present Value or the Price of the Bond using Spot Rates.
pricingWithSpots(coupons, spots, times, mv, n)
pricingWithSpots(coupons, spots, times, mv, n)
coupons |
A vector. |
spots |
A vector. |
times |
A vector. |
mv |
A number. |
n |
A number. |
When a fixed-rate bond is priced using the market discount rate, the same discount rate is used for each cash flow. A more fundamental approach to calculate the price of a bond is to use a sequence of market discount rates that correspond to the cash flow dates. These market discount rates are called spot rates. Spot rates are yields-to-maturity on zero-coupon bonds maturing at the date of each cash flow. Sometimes, these are called zero rates (Adams & Smith, 2019).
Based on the information provided, the method pricingWithSpots()
is developed to compute the Price of Bond using the Spot Rates. So, pricingWithSpots()
gives the Price of Bond using Spots for values passed to its five arguments. Here, coupons
represent the dollar values of all the coupon payments, spots
is a vector of spot rates, times
is a vector of number of years ranging from 1 to any specified number of years till maturity, mv
is Maturity Value, and n
is number of years till maturity. The output is rounded off to two decimal places. The given examples show various ways in which the arguments can be passed to pricingWithSpots()
.
Suppose that the one-year spot rate is 2 percent, the two-year spot rate is 3 percent, and the three-year spot rate is 4 percent. Then, the price of a three-year bond that makes a 5 percent annual coupon payment is 102.960.
Input values to five arguments coupons
, spots
,times
, mv
, and n
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
pricingWithSpots(coupons=c(5,5,5), spots=c(0.02,0.03,0.04), times=c(1,2,3),mv=100,n=3) pricingWithSpots(coupons=c(5,5,5), spots=c(0.02,0.03,0.04), times=c(1:3),mv=100,n=3) pricingWithSpots(coupons=c(rep(5,3)), spots=c(0.02,0.03,0.04), times=c(1:3),mv=100,n=3) pricingWithSpots(c(rep(5,3)), c(0.02,0.03,0.04), c(1:3),100,3) pricingWithSpots(coupons=c(rep(10,2)), spots=c(0.01,0.02), times=c(1:2),mv=100,n=2)
pricingWithSpots(coupons=c(5,5,5), spots=c(0.02,0.03,0.04), times=c(1,2,3),mv=100,n=3) pricingWithSpots(coupons=c(5,5,5), spots=c(0.02,0.03,0.04), times=c(1:3),mv=100,n=3) pricingWithSpots(coupons=c(rep(5,3)), spots=c(0.02,0.03,0.04), times=c(1:3),mv=100,n=3) pricingWithSpots(c(rep(5,3)), c(0.02,0.03,0.04), c(1:3),100,3) pricingWithSpots(coupons=c(rep(10,2)), spots=c(0.01,0.02), times=c(1:2),mv=100,n=2)
Calculate Present Value or the Price of the Bond using two different Sequences of Spot Rates.
pricingWithSptSeq(cpns, sp, t, mv, n)
pricingWithSptSeq(cpns, sp, t, mv, n)
cpns |
A vector. |
sp |
A vector. |
t |
A vector. |
mv |
A number. |
n |
A number. |
The method pricingWithSptSeq()
is developed to compute the Price of Bond using Sequences of the Spot Rates. So, pricingWithSptSeq()
gives the Price of Bond using two different series or sequences of Spot Rates for values passed to its five arguments. Here cpns
represents the dollar values of all the coupon payments,sp
is a vector of spot rates, t
is a vector of number of years ranging from 1 to any specified number of years till maturity, mv
is Maturity Value, and n
is number of years till maturity. The output is rounded off to three decimal places. The given examples show various ways in which the arguments can be passed to pricingWithSptSeq()
.
Input values to five arguments cpns
, sp
,t
, mv
, and n
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
pricingWithSptSeq (cpns=c(3,3,3,3), sp=c(0.0408,0.0401,0.0370,0.0350), t=c(1,2,3,4),mv=100,n=4) pricingWithSptSeq (cpns=c(3,3,3,3), sp=c(0.0039,0.0140,0.0250,0.0360), t=c(1,2,3,4),mv=100,n=4) pricingWithSptSeq (c(3,3,3,3), c(0.0408,0.0401,0.0370,0.0350), c(1,2,3,4),100,4) pricingWithSptSeq (c(3,3,3,3), c(0.0039,0.0140,0.0250,0.0360), c(1,2,3,4),100,4) pricingWithSptSeq (cpns=c(3,3,3,3), sp=c(0.0408,0.0401,0.0370,0.0350), t=c(1:4),mv=100,n=4) pricingWithSptSeq (cpns=c(3,3,3,3), sp=c(0.0039,0.0140,0.0250,0.0360), t=c(1:4),mv=100,n=4) pricingWithSptSeq (c(3,3,3,3), c(0.0408,0.0401,0.0370,0.0350), c(1:4),100,4) pricingWithSptSeq (c(3,3,3,3), c(0.0039,0.0140,0.0250,0.0360), c(1:4),100,4) pricingWithSptSeq (cpns=c(rep(3,4)), sp=c(0.0408,0.0401,0.0370,0.0350), t=c(1:4),mv=100,n=4) pricingWithSptSeq (cpns=c(rep(3,4)), sp=c(0.0039,0.0140,0.0250,0.0360), t=c(1:4),mv=100,n=4) pricingWithSptSeq (c(rep(3,4)), c(0.0408,0.0401,0.0370,0.0350), c(1:4),100,4) pricingWithSptSeq (c(rep(3,4)), c(0.0039,0.0140,0.0250,0.0360), c(1:4),100,4)
pricingWithSptSeq (cpns=c(3,3,3,3), sp=c(0.0408,0.0401,0.0370,0.0350), t=c(1,2,3,4),mv=100,n=4) pricingWithSptSeq (cpns=c(3,3,3,3), sp=c(0.0039,0.0140,0.0250,0.0360), t=c(1,2,3,4),mv=100,n=4) pricingWithSptSeq (c(3,3,3,3), c(0.0408,0.0401,0.0370,0.0350), c(1,2,3,4),100,4) pricingWithSptSeq (c(3,3,3,3), c(0.0039,0.0140,0.0250,0.0360), c(1,2,3,4),100,4) pricingWithSptSeq (cpns=c(3,3,3,3), sp=c(0.0408,0.0401,0.0370,0.0350), t=c(1:4),mv=100,n=4) pricingWithSptSeq (cpns=c(3,3,3,3), sp=c(0.0039,0.0140,0.0250,0.0360), t=c(1:4),mv=100,n=4) pricingWithSptSeq (c(3,3,3,3), c(0.0408,0.0401,0.0370,0.0350), c(1:4),100,4) pricingWithSptSeq (c(3,3,3,3), c(0.0039,0.0140,0.0250,0.0360), c(1:4),100,4) pricingWithSptSeq (cpns=c(rep(3,4)), sp=c(0.0408,0.0401,0.0370,0.0350), t=c(1:4),mv=100,n=4) pricingWithSptSeq (cpns=c(rep(3,4)), sp=c(0.0039,0.0140,0.0250,0.0360), t=c(1:4),mv=100,n=4) pricingWithSptSeq (c(rep(3,4)), c(0.0408,0.0401,0.0370,0.0350), c(1:4),100,4) pricingWithSptSeq (c(rep(3,4)), c(0.0039,0.0140,0.0250,0.0360), c(1:4),100,4)
Calculates Bond Price using the given value of a Z-Spread and spot rates taken from the spots curve.
pricingWithZspread(cpns, spots, t, mv, n, zSprd)
pricingWithZspread(cpns, spots, t, mv, n, zSprd)
cpns |
A vector. |
spots |
A vector. |
t |
A vector. |
mv |
A number. |
n |
A number. |
zSprd |
A number. |
According to information provided by Adams and Smith (2019), the method pricingWithZspread()
is developed to compute Bond Price using the given value of a Z-Spread and spot rates taken from the spots curve. Here, cpns
is vector of Coupon Payments, spots
is a vector of spot rates taken from the spots curve, t
is a vector of number of years ranging from 1 to any specified number of years under consideration, mv
is maturity value of the bond, n
is number of years for which spots are available, and zSprd
is given value of a Z-spread.
Input values to six arguments cpns
, spots
,t
,mv
, n
and zSprd
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
pricingWithZspread(cpns=c(6,6),spots=c(0.0210,0.03635),t=c(1,2),mv=100,n=2,zSprd=0.023422) pricingWithZspread(cpns=c(5,5,5),spots=c(0.0486,0.0495,0.0565),t=c(1,2,3),mv=100,n=3,zSprd=0.0234) pricingWithZspread(cpns=c(rep(5,3)),spots=c(0.0486,0.0495,0.0565),t=c(1:3),mv=100,n=3,zSprd=0.0234) pricingWithZspread(c(rep(5,3)),c(0.0486,0.0495,0.0565), c(1:3),100,3, zSprd=0.0234)
pricingWithZspread(cpns=c(6,6),spots=c(0.0210,0.03635),t=c(1,2),mv=100,n=2,zSprd=0.023422) pricingWithZspread(cpns=c(5,5,5),spots=c(0.0486,0.0495,0.0565),t=c(1,2,3),mv=100,n=3,zSprd=0.0234) pricingWithZspread(cpns=c(rep(5,3)),spots=c(0.0486,0.0495,0.0565),t=c(1:3),mv=100,n=3,zSprd=0.0234) pricingWithZspread(c(rep(5,3)),c(0.0486,0.0495,0.0565), c(1:3),100,3, zSprd=0.0234)
Calculates the Price of a Zero-Coupon Bond.
pricingZeroCouponBond(maturityVal, n, r)
pricingZeroCouponBond(maturityVal, n, r)
maturityVal |
A number. |
n |
A number. |
r |
A number. |
The method pricingZeroCouponBond()
is developed to compute the Price of a Zero-Coupon Bond. So, pricingZeroCouponBond()
gives the Price of a Zero-Coupon Bond for values passed to its three arguments. Here, maturityVal
represents the Maturity Value of the Bond, n
is number of years till maturity, and r
is Market Discount Rate or Required Rate of return. The output is rounded off to three decimal places. The given examples show various ways in which the arguments can be passed to pricingZeroCouponBond()
for two different bonds.
Input values to three arguments maturityVal
, n
and r
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
pricingZeroCouponBond(maturityVal=100, n=10, r=0.02) pricingZeroCouponBond(100, 10, 0.02) pricingZeroCouponBond(100, 60, 0.02527) pricingZeroCouponBond(maturityVal=100, n=60, r=0.02527)
pricingZeroCouponBond(maturityVal=100, n=10, r=0.02) pricingZeroCouponBond(100, 10, 0.02) pricingZeroCouponBond(100, 60, 0.02527) pricingZeroCouponBond(maturityVal=100, n=60, r=0.02527)
Calculates the Present Value of the Deficiency as result of lower Coupon Payments as compared that of the Market.
pvCouponDeficiency(couponDeficiency, times, r)
pvCouponDeficiency(couponDeficiency, times, r)
couponDeficiency |
A vector. |
times |
A vector. |
r |
A number. |
Price of a fixed-rate bond, relative to par value, depends on the relationship of the coupon rate to the market discount rate. When the coupon rate is less than the market discount rate, the bond is priced at a discount below par value. Coupon rate indicates the amount the issuer promises to pay the bondholders each year in interest. The market discount rate reflects the amount investors need to receive in interest each year in order to pay full par value for the bond (Adams & Smith, 2019). If a bond pays coupons at 4 percent, whereas the the market discount rate is 6 percent then this bond has coupon deficiency of 2 percent. So a deficiency of 2 percent also means a deficient coupon payment of 2 dollars (entered -2) for a par value of 100 dollars.
In light of this, the method pvCouponDeficiency()
is developed to compute the present value of the Coupon Deficiency. So, pvCouponDeficiency()
gives the discounted value of Deficient Coupon Payments for values passed to its three arguments. Here, couponDeficiency
is the vector that has dollar values of Deficient Coupon Payments for periods till maturity, times
is a vector of number of years ranging from 1 to any specified number of years till maturity, and r
is Market Discount Rate or Required Rate of return. The output is rounded off to three decimal places.
Input values to three arguments couponDeficiency
, times
and r
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
pvCouponDeficiency(couponDeficiency=c(-2,-2,-2,-2,-2), times=c(1,2,3,4,5), r= 0.06) pvCouponDeficiency(couponDeficiency=c(-2,-2,-2,-2,-2), times=c(1:5), r= 0.06) pvCouponDeficiency(couponDeficiency=c(rep(-2,5)), times=c(1:5), r= 0.06) pvCouponDeficiency(c(rep(-2,5)), c(1:5), 0.06)
pvCouponDeficiency(couponDeficiency=c(-2,-2,-2,-2,-2), times=c(1,2,3,4,5), r= 0.06) pvCouponDeficiency(couponDeficiency=c(-2,-2,-2,-2,-2), times=c(1:5), r= 0.06) pvCouponDeficiency(couponDeficiency=c(rep(-2,5)), times=c(1:5), r= 0.06) pvCouponDeficiency(c(rep(-2,5)), c(1:5), 0.06)
Calculates the Present Value of the Excess Coupon Payment resulting due to higher Coupon Rate as compared the Market Discount Rate.
pvExcessCoupon(couponExcess, times, r)
pvExcessCoupon(couponExcess, times, r)
couponExcess |
A vector. |
times |
A vector. |
r |
A number. |
For Example, a Bond is trading at a premium because the coupon rate per period (6 percent) is greater than the market discount rate per period (4 percent). The excess per period is the coupon rate minus market discount rate, times the par value: (0.06 – 0.04) × 100 = +2. The present value of excess is +7.260, discounted using the required yield per period (Adams & Smith, 2019).
Based on this, the method pvExcessCoupon()
is developed to compute the present value of excess Coupon Payments. So, pvExcessCoupon()
gives the present value of excess Coupon Payments for values passed to its three arguments. Here, couponExcess
represent the dollar value of excess coupon payment, times
is a vector of number of years ranging from 1 to any specified number of years till maturity, and r
is Market Discount Rate or Required Rate of return. The output is rounded off to three decimal places. The given examples show various ways in which the arguments can be passed to pvExcessCoupon()
.
Input values to three arguments couponExcess
, times
and r
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
pvExcessCoupon(couponExcess=c(2,2,2,2), times=c(1,2,3,4), r= 0.04) pvExcessCoupon(couponExcess=c(2,2,2,2), times=c(1:4), r= 0.04) pvExcessCoupon(couponExcess=c(rep(2,4)), times=c(1:4), r= 0.04) pvExcessCoupon(c(rep(2,4)), c(1:4), 0.04)
pvExcessCoupon(couponExcess=c(2,2,2,2), times=c(1,2,3,4), r= 0.04) pvExcessCoupon(couponExcess=c(2,2,2,2), times=c(1:4), r= 0.04) pvExcessCoupon(couponExcess=c(rep(2,4)), times=c(1:4), r= 0.04) pvExcessCoupon(c(rep(2,4)), c(1:4), 0.04)
Calculates Present Value of the Full Price of the Bond including Accrued Interest.
pvFullPrice(n, ytm, coupon, maturityVal, daysCpnToSettle, daysCouponPeriod)
pvFullPrice(n, ytm, coupon, maturityVal, daysCpnToSettle, daysCouponPeriod)
n |
A number. |
ytm |
A number. |
coupon |
A number. |
maturityVal |
A number. |
daysCpnToSettle |
A number. |
daysCouponPeriod |
A number |
According to information provided by Adams and Smith (2019), the method pvFullPrice()
is developed to calculate the Present Value of the Full Price of the Bond including Accrued Interest. Full Price of the Bond is the present value of the coupon interest and principal payments with each cash flow discounted by Yield-To-Maturity rate. Here, n
is number of periods, ytm
is yield-to-maturity, coupon
is dollar value of the coupon payment, maturityVal
is maturity Value, daysCpnToSettle
is the number of days from the last coupon payment to the settlement date, and daysCouponPeriod
is the number of days in the coupon period.
Input values to six arguments n
, ytm
, coupon
, maturityVal
, daysCpnToSettle
, and daysCouponPeriod
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Understanding Fixed‑Income Risk and Return. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 237-299). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
pvFullPrice(n=8*2,ytm=0.06/2,coupon=3,maturityVal=100,daysCpnToSettle=57,daysCouponPeriod=180) pvFullPrice(n=10,ytm=0.104,coupon=8,maturityVal=100,daysCpnToSettle=0,daysCouponPeriod=0)
pvFullPrice(n=8*2,ytm=0.06/2,coupon=3,maturityVal=100,daysCpnToSettle=57,daysCouponPeriod=180) pvFullPrice(n=10,ytm=0.104,coupon=8,maturityVal=100,daysCpnToSettle=0,daysCouponPeriod=0)
Calculates estimated Return on Floating-Rate Note (FRN) for a given Index, Quoted Margin, Maturity Value, and Periodicity.
returnIncomeFRN(index, qtdMargin, maturityVal, periodicity)
returnIncomeFRN(index, qtdMargin, maturityVal, periodicity)
index |
A number. |
qtdMargin |
A number. |
maturityVal |
A number. |
periodicity |
A number. |
Floating-rate notes are very different from a fixed-rate bond. The interest payments on a floating-rate note, which often is called a floater or an FRN, are not fixed. Instead, they vary from period to period depending on the current level of a reference interest rate. The interest payments can't go up or down; that is why they “
float."
The intent of an Floating-Rate Note (FRN) is to offer the investor a security that has less market price risk than a fixed-rate bond when market interest rates fluctuate. On these floaters, a specified yield spread is added to, or subtracted from, the reference rate. For example, the floater might reset its interest rate quarterly at three-month Libor plus 0.50 percent. This specified yield spread over the reference rate is called the quoted margin on the FRN. The role of the quoted margin is to compensate the investor for the difference in the credit risk of the issuer and that implied by the reference rate. For example, a company with a stronger credit rating than that of the banks included in Libor may be able to obtain a “sub-Libor” cost of borrowed funds, which results in a negative quoted margin. An AAA-rated company might be able to issue an FRN that pays three-month Libor minus 0.25 percent (Adams & Smith, 2019).
Based on the information provided, the method returnIncomeFRN()
is developed to compute estimated Return on Floating-Rate Note (FRN) for the values passed to its four arguments. Here, index
is reference rate, stated as an annual percentage rate, qtdMargin
represents quoted Margin, maturityVal
represents Maturity Value, and periodicity
represents periodicity of the floating-rate note that is the number of payment periods per year.
Input values to four arguments index
, qtdMargin
,maturityVal
and periodicity
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
returnIncomeFRN(index=0.0125,qtdMargin=0.0050,maturityVal=100,periodicity=2)
returnIncomeFRN(index=0.0125,qtdMargin=0.0050,maturityVal=100,periodicity=2)
Calculates Semi-Annual Forward Rates using the given Spot Rates.
saForwards(spots, BGN, APLY, times, n)
saForwards(spots, BGN, APLY, times, n)
spots |
A vector. |
BGN |
A number. |
APLY |
A number. |
times |
A vector. |
n |
A number. |
According to information provided by Frank J. Fabozzi (2008), the method saForwards()
is developed to calculate Semi-Annual Forward Rates using the given Spot Rates. Here, spots
is vector of given 1-period (6-month) spot rates, BGN
is six monthly period in which Forward Rate begins (for example a value of 1 would mean 1-period from now (that is six-months from now) and value of 2 would means two six-monthly periods from now (or 1 years into future) and so on), and APLY
means number of six-monthly periods for which the Forward Rate Applies (for example, a value for 1 means for six-months and APLY value of 4 means for two years so, BGN=2 and APLY=1 means computing implied Forward Rate of 1 year from now for six-months; this is also called a six-months forward rate from one year into future), t
is a vector of number of six-month periods ranging from 1 to any specified number of six-month periods for which the Spot Rates are available, and n
is number of six-month periods under consideration.
Input values to five arguments spots
,BGN
,APLY
, times
and n
.
MaheshP Kumar, [email protected]
Fabozzi, F. J. (2008). Handbook of Finance: Financial Markets and Instruments. John Wiley & Sons.
saForwards(spots=c(0.05,0.054,0.058,0.064,0.070,0.072,0.074,0.078),BGN=1,APLY=1,t=c(1:8),n=8) saForwards(spots=c(0.05,0.054,0.058,0.064,0.070,0.072,0.074,0.078),BGN=2,APLY=1,t=c(1:8),n=8) saForwards(spots=c(0.05,0.054,0.058,0.064,0.070,0.072,0.074,0.078),BGN=6,APLY=1,t=c(1:8),n=8) saForwards(spots=c(0.05,0.054,0.058,0.064,0.070,0.072,0.074,0.078),BGN=2,APLY=4,t=c(1:8),n=8) saForwards(spots=c(0.05,0.054,0.058,0.064,0.070,0.072,0.074,0.078),BGN=4,APLY=2,t=c(1:8),n=8)
saForwards(spots=c(0.05,0.054,0.058,0.064,0.070,0.072,0.074,0.078),BGN=1,APLY=1,t=c(1:8),n=8) saForwards(spots=c(0.05,0.054,0.058,0.064,0.070,0.072,0.074,0.078),BGN=2,APLY=1,t=c(1:8),n=8) saForwards(spots=c(0.05,0.054,0.058,0.064,0.070,0.072,0.074,0.078),BGN=6,APLY=1,t=c(1:8),n=8) saForwards(spots=c(0.05,0.054,0.058,0.064,0.070,0.072,0.074,0.078),BGN=2,APLY=4,t=c(1:8),n=8) saForwards(spots=c(0.05,0.054,0.058,0.064,0.070,0.072,0.074,0.078),BGN=4,APLY=2,t=c(1:8),n=8)
Calculates the Yield-To-Maturity(YTM) of a Zero-Coupon Bond.
ytmZeroCouponBond(maturityVal, n, price)
ytmZeroCouponBond(maturityVal, n, price)
maturityVal |
A number. |
n |
A number. |
price |
A number. |
The method ytmZeroCouponBond()
is developed to compute the Yield-To-Maturity a Zero-Coupon Bond. So, ytmZeroCouponBond()
gives the Price of a Zero-Coupon Bond for values passed to its three arguments. Here, maturityVal
represents the Maturity Value of the Bond, n
is number of years till maturity, and price
is Market Price of Zero-Coupon Bond. The output is rounded off to three decimal places. The given examples show various ways in which the arguments can be passed to ytmZeroCouponBond()
.
Input values to three arguments maturityVal
, n
and price
.
MaheshP Kumar, [email protected]
Adams,J.F. & Smith,D.J.(2019). Introduction to fixed-income valuation. In CFA Program Curriculum 2020 Level I Volumes 1-6. (Vol. 5, pp. 107-151). Wiley Professional Development (P&T). ISBN 9781119593577, https://bookshelf.vitalsource.com/books/9781119593577
ytmZeroCouponBond(maturityVal=100, n=60, price=22.375) ytmZeroCouponBond(100, 60, 22.375)
ytmZeroCouponBond(maturityVal=100, n=60, price=22.375) ytmZeroCouponBond(100, 60, 22.375)