Finance
CleanPrice
calculate the clean price of a bond
Calling Sequence
Parameters
Options
Description
Examples
Compatibility
CleanPrice(bond, yield, compounding, opts)
bond
-
fixed or floating rate bond data structure; bond
yield
non-negative constant; desired yield
compounding
Simple, Continuous, Compounded, or SimpleThenCompounded; the underlying compounding type
opts
equations of the form option = value where option is evaluationdate; specify options for the CleanPrice command
evaluationdate = a string containing a date specification in a format recognized by ParseDate or a Date data structure -- This option specifies the evaluation date. By default this is set to the global evaluation date (see EvaluationDate).
The CleanPrice command computes the clean price of a bond, given its yield. Clean price does not include any accrued interest that has accumulated since the last coupon payment.
The parameter bond is either a fixed coupon bond or floating rate bond. The parameter yield is the desired yield.
with(Finance):
SetEvaluationDate("November 25, 2006"):
EvaluationDate();
November 25, 2006
Settings([daycounter = Historical, settlementdays = 0, businessdayconvention = Unadjusted, compounding = Continuous]);
daycounter=Historical,settlementdays=0,businessdayconvention=Unadjusted,compounding=Continuous
Consider a zero-coupon bond with a face value of 100 maturing in one year.
bond1 := ZeroCouponBond(100, 5, Years):
price1 := CleanPrice(bond1, 0.05, Compounded);
price1≔78.35261665
100*DiscountFactor(0.05, 5, compounding = Annual);
78.35261665
100*(1/1.05)^5;
yield1 := YieldFromCleanPrice(bond1, price1);
yield1≔0.04879016417
EquivalentRate(yield1, Continuous, Annual);
0.05000000000
yield1 := YieldFromCleanPrice(bond1, price1, Compounded);
yield1≔0.05000000006
Consider a 3-year bond with a face value of 100 that pays a fixed coupon of 3 percent issued on March 15, 2005.
Settings(daycounter = Thirty360European):
Settings(daycounter);
Thirty360European
principal2 := 100:
coupon2 := 0.03:
rate2 := 0.05:
bond2 := FixedCouponBond(principal2, 3, Years, coupon2, issuedate = "March 17, 2005"):
Calculate the bond's clean price given its yield and vice-versa.
yield2 := YieldFromCleanPrice(bond2, 100, Compounded);
yield2≔0.02992505925
cleanprice2 := CleanPrice(bond2, yield2, Compounded);
cleanprice2≔100.0000000
YieldFromCleanPrice(bond2, cleanprice2);
0.02948604163
CleanPrice(bond2, rate2);
97.35137029
dirtyprice2 := DirtyPrice(bond2, rate2);
dirtyprice2≔99.41803696
YieldFromDirtyPrice(bond2, dirtyprice2);
0.05000000002
Consider the same bond but with semi-annual coupons.
bond3 := FixedCouponBond(principal2, 3, Years, coupon2, issuedate = "March 17, 2005", frequency = Semiannual):
yield3 := YieldFromCleanPrice(bond3, 100, Compounded);
yield3≔0.02997946101
cleanprice3 := CleanPrice(bond3, yield3, Compounded);
cleanprice3≔100.0000000
YieldFromCleanPrice(bond3, cleanprice3);
0.02975698958
CleanPrice(bond3, rate2);
97.41008628
dirtyprice3 := DirtyPrice(bond3, rate2);
dirtyprice3≔97.97675295
YieldFromDirtyPrice(bond3, dirtyprice3);
Note that since the bond has semi-annual coupons, the Compounded yield is based on semi-annual compounding.
dirtyprice3 := DirtyPrice(bond3, rate2, Compounded);
dirtyprice3≔98.05440635
cashflows3 := CashFlows(bond3);
cashflows3≔1.500000000 on 'March 17, 2007',1.500000000 on 'September 17, 2007',1.500000000 on 'March 17, 2008',100. on 'March 17, 2008'
add(t[amount]*DiscountFactor(rate2, t[date], compounding = Semiannual), t in cashflows3);
98.05440635
The Finance[CleanPrice] command was introduced in Maple 15.
For more information on Maple 15 changes, see Updates in Maple 15.
See Also
Finance[AccruedInterest]
Finance[DayCounter]
Finance[DirtyPrice]
Finance[EvaluationDate]
Finance[FixedCouponBond]
Finance[FloatingRateBond]
Finance[FormatDate]
Finance[ParseDate]
Finance[Settings]
Finance[YearFraction]
Finance[YieldFromCleanPrice]
Finance[YieldFromDirtyPrice]
Finance[ZeroCouponBond]
Download Help Document
What kind of issue would you like to report? (Optional)