用R語(yǔ)言用Nelson Siegel和線性插值模型對(duì)債券價(jià)格和收益率建模|附代碼數(shù)據(jù)
原文鏈接:http://tecdat.cn/?p=11758
最近我們被客戶要求撰寫關(guān)于Nelson Siegel和線性插值模型的研究報(bào)告,包括一些圖形和統(tǒng)計(jì)輸出。
保證金購(gòu)買是指投資者先從銀行或經(jīng)紀(jì)人處借得資金購(gòu)買證券,而所購(gòu)買的證券作為借入資金的抵押
債券基礎(chǔ)?
零息債券是指以貼現(xiàn)方式發(fā)行,不附息票,而于到期日時(shí)按面值一次性支付本利的債券。
債券的票面價(jià)值 債券的票面價(jià)值又稱面值,是債券票面標(biāo)明的貨幣價(jià)值,是債券發(fā)行人承諾在債券到期日償還給債券持有人的金額。
債券可以參考價(jià)格或收益率。例如,將支付100元的零息債券的價(jià)格可以是90元。但收益率將為(100?90)/90=11%,而不是10%。
債券收益率是投資于債券上每年產(chǎn)生出的收益總額與投資本金總量之間的比率。
債券可以在二級(jí)市場(chǎng)上交易(一級(jí)市場(chǎng)是債券發(fā)行過程)。如果利率增加,債券的價(jià)值就會(huì)增加,如果利率降低,債券的價(jià)值就會(huì)減少,這僅僅是因?yàn)樵搨窃诶矢淖冎耙员阋?昂貴的價(jià)格發(fā)行的。也可以做空債券。
雖然期望債券不會(huì)出現(xiàn)負(fù)利率,但也不是完全看不到。在危機(jī)時(shí)期,政府債券甚至公司債券都可以以負(fù)收益率交易(例如雀巢)。
債券定價(jià)
債券價(jià)格是通過使用票面利率和現(xiàn)金流來確定。
式中,CFt是t時(shí)的現(xiàn)金流,B(0,t)是貼現(xiàn)系數(shù)或0時(shí)價(jià)格
?
其中R(0,t)是在時(shí)間為t時(shí)在時(shí)間0的年度即期匯率。
?
B(0,t)也可以稱為零息債券的價(jià)格。
我們可以暗示零息票利率與市場(chǎng)上不同期限的債券。然后我們可以用這些利率建立一個(gè)期限結(jié)構(gòu)模型來為任何債券定價(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){
? ?#該函數(shù)根據(jù)給定的債券B(0,t)的面值,到期日,年息率和等距付款來計(jì)算其價(jià)格
? ?#如果 yearly_coupons == 0, 它只在到期時(shí)支付
? ?#如果 yearly_coupons == 1, 每年支付一次
? ?#如果 yearly_coupons == 2, 每半年支付一次 ? ?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
如果我們有合適的證券,我們也可以從息票支付債券中構(gòu)建零息票債券。
1年期純貼現(xiàn)債券在95出售。
兩年期8%的債券售價(jià)99元。
?
?
2年期純折價(jià)債券的價(jià)格為99-0.08(95)= 91.4。
復(fù)利類型
簡(jiǎn)單復(fù)利
假設(shè)利率為0.05,期限為2年。100美元的價(jià)格在到期時(shí)將是多少。
?
定期復(fù)利
如果將利息永久添加到本金投資中,那么我們的復(fù)利就是利率。假設(shè)相同的示例,但每半年復(fù)算一次。
?
年名義利率為??
連續(xù)復(fù)利
現(xiàn)在,假設(shè)復(fù)利的頻率很高,以至于在兩次加息之間的時(shí)間間隔是無(wú)限小(接近零)。然后在極限情況下
?
?
因此,以我們的示例為例,連續(xù)復(fù)利的年利率是?
給定一組零息票債券價(jià)格,我們可以計(jì)算連續(xù)收益率?
#例如,債券價(jià)格為0.987,期限為半年。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ù)并檢查收益率曲線數(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)系數(shù)矩陣顯示出收益率沒有完全相關(guān)。
?R_3MR_6MR_1YR_2YR_3YR_5YR_7YR_10YR_3M1.00000000.99833900.99400450.98375590.97447800.95461890.93995040.9230412R_6M0.99833901.00000000.99817150.98998200.98171970.96322680.94917610.9332366R_1Y0.99400450.99817151.00000000.99599370.99001950.97461740.96218950.9478956R_2Y0.98375590.98998200.99599371.00000000.99848440.98968110.98088960.9694621R_3Y0.97447800.98171970.99001950.99848441.00000000.99585830.98961850.9804575R_5Y0.95461890.96322680.97461740.98968110.99585831.00000000.99836290.9936744R_7Y0.93995040.94917610.96218950.98088960.98961850.99836291.00000000.9981232R_10Y0.92304120.93323660.94789560.96946210.98045750.99367440.99812321.0000000
點(diǎn)擊標(biāo)題查閱往期內(nèi)容
R語(yǔ)言使用隨機(jī)技術(shù)差分進(jìn)化算法優(yōu)化的Nelson-Siegel-Svensson模型
左右滑動(dòng)查看更多
01
02
03
04
債券價(jià)格和收益率
在這一部分中,我們將看到構(gòu)建債券價(jià)格和收益率的方法。
直接法
假設(shè)您得到以下債券利率。請(qǐng)記住,名義匯率是100。
?息票到期價(jià)錢債券15.01個(gè)101.0債券25.52101.5債券35.0399.0債券46.04100.0
零息債券價(jià)格(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.055R04<-0.06R03p75<-((4-3.75)*0.055+(3.75-3)*0.06)/(4-3)
R03p75
## [1] 0.05875
##或使用R函數(shù)
yield_interpolate<-approxfun(x=c(3,4),y=c(0.055,0.06))yield_interpolate(3.75)
## [1] 0.05875
三次插值
假設(shè)我們的費(fèi)率如下:?
#插值2.5年的債券
t_val<-2.5sum(abcd_vec*((2.5)^(3:0)))
## [1] 0.0534375
## [1] 0.0534375
間接方法(Nelson Siegel)
尼爾森·西格爾(Nelson Siegel)模型是模擬利率收益率曲線的一種流行方法。
?
其中θ是到期日,β0是長(zhǎng)期收益率,β1是斜率參數(shù),β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ì)
Nelson Siegel曲線估計(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
點(diǎn)擊文末?“閱讀原文”
獲取全文完整代碼數(shù)據(jù)資料。
本文選自《用R語(yǔ)言用Nelson Siegel和線性插值模型對(duì)債券價(jià)格和收益率建?!?。
點(diǎn)擊標(biāo)題查閱往期內(nèi)容
分解商業(yè)周期時(shí)間序列:線性濾波器、HP濾波器、Baxter濾波器、Beveridge Nelson分解等去趨勢(shì)法
R語(yǔ)言中的Nelson-Siegel模型在匯率預(yù)測(cè)的應(yīng)用
R語(yǔ)言用神經(jīng)網(wǎng)絡(luò)改進(jìn)Nelson-Siegel模型擬合收益率曲線分析
分解商業(yè)周期時(shí)間序列:線性濾波器、HP濾波器、Baxter濾波器、Beveridge Nelson分解等去趨勢(shì)法
用R語(yǔ)言用Nelson Siegel和線性插值模型對(duì)債券價(jià)格和收益率建模
R語(yǔ)言用神經(jīng)網(wǎng)絡(luò)改進(jìn)Nelson-Siegel模型擬合收益率曲線分析
R語(yǔ)言和QuantLib中Nelson-Siegel模型收益曲線建模分析
R語(yǔ)言使用隨機(jī)技術(shù)差分進(jìn)化算法優(yōu)化的Nelson-Siegel-Svensson模型
用R語(yǔ)言用Nelson Siegel和線性插值模型對(duì)債券價(jià)格和收益率建模R語(yǔ)言用神經(jīng)網(wǎng)絡(luò)改進(jìn)Nelson-Siegel模型擬合收益率曲線分析
R語(yǔ)言中的Nelson-Siegel模型在匯率預(yù)測(cè)的應(yīng)用
python使用LASSO回歸預(yù)測(cè)股票收益
R語(yǔ)言數(shù)據(jù)的收益率和波動(dòng)性交易
R語(yǔ)言用線性模型進(jìn)行預(yù)測(cè):加權(quán)泊松回歸,普通最小二乘,加權(quán)負(fù)二項(xiàng)式模型,多重插補(bǔ)缺失值
使用SAS,Stata,HLM,R,SPSS和Mplus的分層線性模型HLM
R語(yǔ)言用線性回歸模型預(yù)測(cè)空氣質(zhì)量臭氧數(shù)據(jù)