原文鏈接:http:///?p=11758 債券基礎(chǔ)
定價(jià)債券債券價(jià)格是通過使用票面利率和現(xiàn)金流量確定債券的現(xiàn)值來確定的,。 其中CFt是時(shí)間tt的現(xiàn)金流量,B(0,,t)是美元的折扣率或時(shí)間00的價(jià)格,。 其中R(0,,t)是在時(shí)間為tt時(shí)在時(shí)間00的年度即期匯率,。我們可以重新安排 B(0,t)也可以稱為零息債券的價(jià)格,。大多數(shù)債券不是零息債券,,但是有可能使用零息債券構(gòu)造幾乎所有支付結(jié)構(gòu),。 我們可以暗示與市場(chǎng)債券不同期限的零息票利率。然后,,我們可以使用這些利率建立期限結(jié)構(gòu)模型來對(duì)任何債券定價(jià)。嚴(yán)格違反期限結(jié)構(gòu)可能是買賣機(jī)會(huì),,也可能是套利機(jī)會(huì)。
calculate_bond_price<-function(face_value=1000,coupon_rate=0.05,maturity=1,yearly_coupons=0){ #This function calculates the price of the bond B(0,t) given #its face value, maturity, annual coupon rate and equidistant payment #if yearly_coupons == 0, it only pays out at the maturity #if yearly_coupons == 1, it pays out annually #if yearly_coupons == 2, it pays out semiannually if(yearly_coupons==0){ face_value/((1+coupon_rate)^maturity) }else{ face_value/((1+coupon_rate/yearly_coupons)^(yearly_coupons*maturity)) }
} calculate_bond_price() ## [1] 952.381
如果我們有適當(dāng)?shù)淖C券,,我們也可以從付息債券中構(gòu)造零息債券,。從講義中假設(shè)我們有兩個(gè)紐帶。
2年期純折價(jià)債券的價(jià)格為99-0.08(95)= 91.499-0.08(95)= 91.4(通過買入兩年期債券多頭和買入一年期債券空頭0.08個(gè)單位(以抵消第一個(gè)債券的收益)年優(yōu)惠券)。 復(fù)利類型簡(jiǎn)單復(fù)合這是僅應(yīng)用一次利率的方法,。假設(shè)利率為0.05,,期限為2年。100美元的價(jià)格在到期時(shí)將是多少,。 定期復(fù)利如果將利息永久添加到本金投資中,,那么我們的復(fù)利就是利率。假設(shè)相同的示例,,但每半年復(fù)算一次,。 產(chǎn)生的年名義利率為 。 連續(xù)復(fù)利現(xiàn)在,,假設(shè)復(fù)利的頻率很高,,以至于在兩次加息之間的時(shí)間間隔是無限的(接近零)。然后在極限情況下 看起來很熟悉,? 因此,,以我們的示例為例,連續(xù)復(fù)利的年利率是 給定一組零息票債券價(jià)格,,我們可以計(jì)算連續(xù)收益率
#Example bond price is 0.987 and maturity is half a year. calculate_yield(0.987,0.5) ## [1] 0.02617048
遠(yuǎn)期匯率假設(shè)有兩個(gè)到期日不同的債券 可以重新排列成
imply_forward_rate<-function(R0t1=0.04,R0t2=0.045,t1=1,t2=2){
((1+R0t2)^t2/(1+R0t1)^t1)^(1/(t2-t1)) -1
} imply_forward_rate() ## [1] 0.05002404
到期日的相關(guān)性利率不僅隨著到期日變化,,而且隨著時(shí)間變化。我們還將調(diào)用某些數(shù)據(jù)和計(jì)算,。 讓我們加載庫(kù)并檢查美聯(lián)儲(chǔ)收益率曲線數(shù)據(jù),。
## R_3M R_6M R_1Y R_2Y R_3Y R_5Y R_7Y R_10Y ## 1981-12-31 12.92 13.90 14.32 14.57 14.64 14.65 14.67 14.59 ## 1982-01-31 14.28 14.81 14.73 14.82 14.73 14.54 14.46 14.43 ## 1982-02-28 13.31 13.83 13.95 14.19 14.13 13.98 13.93 13.86 ## 1982-03-31 13.34 13.87 13.98 14.20 14.18 14.00 13.94 13.87 ## 1982-04-30 12.71 13.13 13.34 13.78 13.77 13.75 13.74 13.62 ## 1982-05-31 13.08 13.76 14.07 14.47 14.48 14.43 14.47 14.30
相關(guān)矩陣顯示出收益率沒有完全相關(guān),因此時(shí)間形狀會(huì)發(fā)生變化,。
債券價(jià)格和收益率在這一部分中,,我們將看到提取和構(gòu)建債券價(jià)格和收益率的方法。 直接法假設(shè)您得到以下債券利率,。請(qǐng)記住,名義匯率是100,。
零息債券價(jià)格(B(0,,t)B(0,,t) 然后我們得到
get_zero_coupon() # $B0t # [1] 0.9619048 0.9119386 0.8536265 0.7890111 # # $R0t # [1] 0.03960396 0.04717001 0.05417012 0.06103379
線性插值
R03<-0.055 R04<-0.06
R03p75<-((4-3.75)*0.055+(3.75-3)*0.06)/(4-3) R03p75 # [1] 0.05875 #Or use the R function yield_interpolate<-approxfun(x=c(3,4),y=c(0.055,0.06)) yield_interpolate(3.75) # [1] 0.05875
三次插值假設(shè)我們的費(fèi)率如下:
#Interpolate for a bond of 2.5 years t_val<-2.5 sum(abcd_vec*((2.5)^(3:0))) ## [1] 0.0534375 ## [1] 0.0534375
間接方法(Nelson Siegel)代替引導(dǎo)技術(shù),我們將使用模型,。尼爾森·西格爾(Nelson Siegel)模型是模擬利率收益率曲線的一種流行方法,。 其中θ是到期日,β0是級(jí)別參數(shù)(長(zhǎng)期收益率),,β1是斜率參數(shù)(長(zhǎng)期/短期擴(kuò)展),,β2是曲率參數(shù),τ是比例參數(shù),。
ns_data <- data.frame(maturity=1:30) %>% mutate(ns_yield=nelson_siegel_calculate(theta=maturity,tau=3.3,beta0=0.07,beta1=-0.02,beta2=0.01))
head(ns_data) # maturity ns_yield # 1 1 0.05398726 # 2 2 0.05704572 # 3 3 0.05940289 # 4 4 0.06122926 # 5 5 0.06265277 # 6 6 0.06376956 ggplot(data=ns_data, aes(x=maturity,y=ns_yield)) + geom_point() + geom_line()
可以使用參數(shù)來更好地估計(jì)收益曲線,。 Nelson Siegel參數(shù)的估計(jì)
## beta_0 beta_1 beta_2 lambda ## 1981-12-31 14.70711 -5.3917409 3.269125 0.5123605 ## 1982-01-31 14.35240 -0.7602066 2.834508 0.1887807 ## 1982-02-28 13.74481 -0.9247232 2.681840 0.1236869
注意:我們將lambda稱為tau(ττ)(形狀參數(shù)),。 Beta靈敏度考慮提供Fi未來現(xiàn)金流的債券價(jià)格 ,。因此,帶有beta參數(shù)的價(jià)格變化如下,。
nelson_siegel_sensitivities(coupon_rate=0.05,maturity=2) # Beta0 Beta1 Beta2 # -192.51332 -141.08199 -41.27936 nelson_siegel_sensitivities(coupon_rate=0.05,maturity=7) # Beta0 Beta1 Beta2 # -545.4198 -224.7767 -156.7335 nelson_siegel_sensitivities(coupon_rate=0.05,maturity=15) # Beta0 Beta1 Beta2 # -812.6079 -207.1989 -173.0285
|
|