楊偉杰



摘要:債券投資最近幾年慢慢引入個(gè)體投資者的視線之中。隨著中國(guó)剛性兌付制度取消,債券投資的違約組合管理變得至關(guān)重要。而個(gè)體投資者因?yàn)閭顿Y專業(yè)要求而占有整體的少部分。本文通過使用python計(jì)算機(jī)語(yǔ)言作為工具,提供持有到期收益率,考利久期,以及風(fēng)險(xiǎn)指標(biāo)VaR(在險(xiǎn)價(jià)值)的計(jì)算方法。為投資者提供債券分析的簡(jiǎn)便方法。
關(guān)鍵詞:債券YTM? 麥考利久期? VaR? Python
一、持有到期收益率,麥考利久期及在險(xiǎn)價(jià)值
目前,債券投資主要以機(jī)構(gòu)投資者為主,個(gè)體投資者屬于少數(shù)前提,主要是由于債券投資對(duì)于專業(yè)知識(shí)的要求比較高,其收益率的計(jì)算,久期管理,VaR計(jì)算對(duì)個(gè)體投資者要求較高,其實(shí)通過python的數(shù)據(jù)處理可以處理流動(dòng)性較高的債券收益率,久期和VaR的計(jì)算。首先在通過python實(shí)現(xiàn)上述計(jì)算,需要了解債券的一些基本要素,分別是:債券面值,附息利率,附息頻次,債券存續(xù)時(shí)長(zhǎng),債券現(xiàn)值,發(fā)行主體。本文主要關(guān)注前五個(gè)要素。其中假設(shè)債券持有到期,其持有到期收益率并不是附息利率,需要通過上述五個(gè)要素進(jìn)行計(jì)算才能知道投資者的回報(bào)率。而債券的現(xiàn)值(即債券的每日收盤價(jià))在不斷變化,因此其收益率也在不斷變化。針對(duì)折價(jià),溢價(jià),平價(jià)發(fā)行的債券其收益率變化也會(huì)不同。通過python則可以完成持有到期收益率(YTM)的計(jì)算。為投資者選擇債券提供一些指導(dǎo)。
在完成債券的YTM計(jì)算后,則可以繼續(xù)計(jì)算麥考利久期。麥考利久期是債券投資中的重要工具,它的數(shù)值可以反映投資者的債券投資現(xiàn)金流平均的回流時(shí)間;其次久期很好的反映了債券價(jià)格對(duì)應(yīng)利率變化的敏感度,并且通過債券的久期的管理可以對(duì)債券組合的杠桿進(jìn)行很好的管理。在本文中,可以通過python很快的進(jìn)行麥考利久期的計(jì)算,從而方便投資者進(jìn)行債券投資的進(jìn)一步分析以及債券池的管理和存續(xù)。
最后,VaR指標(biāo)的全稱為Value at Risk(在險(xiǎn)價(jià)值),由摩根大通提出,是指在一定的時(shí)間內(nèi),一定的置信度下,投資者最大的期望損失。本文利用python通過歷史模擬法一步得出不同置信度下的VaR,幫助投資者更好的進(jìn)行債券投資組合的管理。對(duì)于風(fēng)險(xiǎn)超過投資者能力的債券及時(shí)止損,達(dá)到初步控制風(fēng)險(xiǎn)的作用。
二、 Python在本項(xiàng)目中的作用及項(xiàng)目邏輯
首先第一部分,在YTM計(jì)算部分,python通過datatime模塊進(jìn)行附息日和債券現(xiàn)值日期 差的確定,從而確定每筆附息日的折現(xiàn)時(shí)長(zhǎng);其次利用循環(huán)語(yǔ)句根據(jù)選定時(shí)間內(nèi)的債券收盤價(jià),通過公式運(yùn)算求得YTM。
其次,在得到利率曲線后,通過python中的基礎(chǔ)運(yùn)算,寫出久期公式,并通過dataframe的形式導(dǎo)入源數(shù)據(jù),按照次序循環(huán)帶入公式,得到債券在不同收盤日的麥考利久期。
最后直接利用python的quantile函數(shù)和繪圖模塊得到不同置信度下的VaR。至此完成整個(gè)項(xiàng)目,得到Y(jié)TM,麥考利久期和VaR三個(gè)數(shù)據(jù)。
三、債券選擇:債券持有到期計(jì)算——基于python- dataframe、datatime模塊
在債券市場(chǎng)中,以流動(dòng)性較好的債券為例,其債券價(jià)格在不斷的變化,而債券的附息利率并不等于其真實(shí)收益率。以債券代碼:113526(聯(lián)泰轉(zhuǎn)債)為例,通過python對(duì)債券數(shù)據(jù)的爬取,并進(jìn)行計(jì)算,可以獲得該債券在每天收盤時(shí)的持有到期收益率。
首先通過python獲取該債券的源數(shù)據(jù)的csv文件,通過python以dataframe的形式讀取該文件。其中該數(shù)組的第一列為日期。債券的持有到期收益率公式如下:
該債券的存續(xù)日期為6年,面值100,并且每年的附息利率不相等。其中pv作為每日的收盤價(jià)進(jìn)行變化從而影響YTM的變化。計(jì)算YTM之前,先要確定附息日距離當(dāng)日收盤日的天數(shù)差距(以年化記錄)從而確定所有分母的冪。
通過下面的代碼,可以確定債券在每年的附息日點(diǎn)和當(dāng)前債券現(xiàn)值的收盤日之間的天數(shù)差值,求得天數(shù)差值后,通過append函數(shù)添加到列表中,保存起來。在編寫公式時(shí),將所求的天數(shù)差進(jìn)行年化(除以365天),然后帶入公式,使用Sympy函數(shù)來求解高次方程,即可得到每個(gè)交易日下的持有到期收益率的具體數(shù)值。
在得到數(shù)據(jù)后,通過使用matplotlib繪圖函數(shù)來探索YTM的圖像便于分析。從下圖中我們可以看到,債券的持有到期收益率在3.5%附近。債券的持有收益率之所以維持在較低水平,是因?yàn)樵搨强赊D(zhuǎn)債,債券持有者具有在未來時(shí)刻將債券按照一定比例轉(zhuǎn)化成股票的權(quán)利。該權(quán)利歸屬于投資者,因此債券發(fā)行方通過降低債券的收益率來彌補(bǔ)投資者獲得的相對(duì)優(yōu)勢(shì)。如果移除債轉(zhuǎn)股的特性,這只債券的收益率將會(huì)出現(xiàn)進(jìn)一步的上升,因?yàn)閭D(zhuǎn)股特性對(duì)債券持有者有利,作為移除該權(quán)利需要對(duì)投資者進(jìn)行溢價(jià)補(bǔ)償。
其次,觀察該債券的持有期收益率的走勢(shì),可以發(fā)現(xiàn)是逐步下降的(橫坐標(biāo)軸時(shí)間線降序排列),主要是因?yàn)槠鋫瘍r(jià)格從截取時(shí)間段的初始值102元上升到了138.38元(結(jié)束值)。從上述的公式中我們可以發(fā)現(xiàn)債券的價(jià)格和持有到期收益率呈負(fù)向關(guān)系。因此實(shí)際計(jì)算得出的數(shù)值和理論公式中的數(shù)值是趨于一致的。
四、債券存續(xù)管理:麥考利久期計(jì)算——基于python函數(shù)計(jì)算模塊
在獲得債券的YTM后,我們需要建立債券現(xiàn)值與利率之間的聯(lián)系。麥考利久期能夠很好反應(yīng)兩者變化的敏感度。首先先給出麥考利久期的計(jì)算公式:
觀察公式我們發(fā)現(xiàn)分子部分是債券價(jià)格變動(dòng)的百分比,分母部分是利率變動(dòng)的百分比。通過公式可以大致理解其意義:債券價(jià)格對(duì)利率變動(dòng)的敏感度。麥考利久期越大,說明越敏感,利率變動(dòng)會(huì)引起債券價(jià)格變動(dòng)幅度更大。在這里,使用python的循環(huán)語(yǔ)句我們可以快速的計(jì)算出麥考利久期,并且在處理數(shù)據(jù)時(shí)要注意一些極端異常值及時(shí)剔除,以免影響判斷。
并且利用matplotlib的繪圖功能,同樣可以對(duì)麥考利久期的變化進(jìn)行直觀的分析。總體來說,債券的麥考利久期越大,說明現(xiàn)金流的平均回流時(shí)間越慢。由于其每日的收盤價(jià)格并不是完全由市場(chǎng)利率來決定,市場(chǎng)參與者的買賣行為也會(huì)應(yīng)該債券的現(xiàn)值,并且麥考利久期假設(shè)利率平行移動(dòng),但是很顯然,真實(shí)市場(chǎng)上的投資利率并非平行移動(dòng)。因此從圖中可以觀察出這只債券的麥考利久期波動(dòng)變化十分劇烈,主要是由于其分子——債券價(jià)格的劇烈變化導(dǎo)致了其久期的劇烈變化。在以久期作為債券池管理手段時(shí),針對(duì)波動(dòng)比較劇烈的債券,我們可以觀察久期的分布情況,平均數(shù),眾數(shù)等方式來獲得更加有用的麥考利久期方面的信息。
除去麥考利久期之外,還有修正久期,美元久期,關(guān)鍵利率等其他種類的久期也可以使用python進(jìn)行編寫來進(jìn)行進(jìn)一步的數(shù)據(jù)處理。在這里只介紹麥考利久期。
五、風(fēng)險(xiǎn)管理:在險(xiǎn)價(jià)值計(jì)算——基于python-quantiles函數(shù)及matplotlib模塊
在完成債券的久期管理及計(jì)算之后,最后一步也至關(guān)重要,使用VaR進(jìn)行債券的風(fēng)險(xiǎn)管理。本文采用簡(jiǎn)單的歷史模擬法,即對(duì)歷史數(shù)據(jù)進(jìn)行排序,通過不同置信度下進(jìn)行切割,得到投資者在某個(gè)時(shí)間段內(nèi)某個(gè)置信度下的期望損失。為投資者提供止損的指導(dǎo)。
在python中,主要使用quantiles內(nèi)置函數(shù)計(jì)算VaR,再通過matplotlib模塊來直觀繪制VaR圖像,幫助投資者做出合適的決策。
上圖代表的是這只債券在歷史模擬法下的在先價(jià)值,圖中的黑色虛線代表的是在95%的置信度下的VaR。投資者在給定時(shí)間段內(nèi)的95%置信度下的期望損失。當(dāng)投資者的實(shí)際損失逐步逼近黑線甚至超過黑線時(shí),需要提升警覺,甚至準(zhǔn)備賣出債券以止損。當(dāng)投資者的投資損失未靠近或觸及黑線時(shí),則說明該債券在投資者定義的風(fēng)險(xiǎn)承受能力下處于安全地帶,可以繼續(xù)持有。對(duì)于不同投資者對(duì)風(fēng)險(xiǎn)的態(tài)度,還可以設(shè)置99%,90%,99.99%等不同置信度,使得結(jié)果更加嚴(yán)格,提高風(fēng)險(xiǎn)控制的門閥。本文主要以歷史模擬法得到該債券的在險(xiǎn)價(jià)值。歷史模擬沒有分布假設(shè),在數(shù)據(jù)量大時(shí)精度會(huì)提升。若數(shù)據(jù)量較小時(shí)可以使用參數(shù)法或者蒙特卡洛模擬等發(fā)放來繪制VaR曲線。
但是VaR也有不足的地方,VaR作為譜風(fēng)險(xiǎn)的一種特殊性,在95%的分位點(diǎn)賦予了100%的權(quán)重,其實(shí)并沒有考慮尾部的極端風(fēng)險(xiǎn)。從上圖中我們可以看,黑色虛線的左側(cè)部分其實(shí)出現(xiàn)了一個(gè)很小的高峰,而VaR并不能反映該風(fēng)險(xiǎn)。因此,若投資者更加關(guān)注尾端風(fēng)險(xiǎn),可以使用Expected Shorfall(損失期望值)來更好的反應(yīng)尾部的極端風(fēng)險(xiǎn)。
六、總結(jié)
對(duì)于投資者而言,債券投資和股票投資占據(jù)了金融市場(chǎng)上的大部分份額。而無(wú)論是投資標(biāo)的的選擇,還是標(biāo)的存續(xù)期管理,兩者所要求的專業(yè)知識(shí)和技能是不同的。就債券而言,在選擇初始標(biāo)的時(shí),需要關(guān)注債券的持有到期收益率,麥考利久期,債券的評(píng)級(jí),發(fā)行主體,附息利率等等作為選擇標(biāo)的的信息指標(biāo),其中發(fā)行主體和評(píng)級(jí)十分重要,主要是因?yàn)閭嬖谶`約的可能性。其次,若投資者持有多個(gè)債券時(shí),針對(duì)整個(gè)債券池的管理和股票池的管理方式也不太相同。債券組合中久期管理和VaR管理顯得尤為重要。債券組合的市值變動(dòng)往往表現(xiàn)出對(duì)利率的負(fù)相關(guān)性,通過久期可以很好的衡量?jī)烧叩拿舾卸龋敉顿Y者更加追求精度,則可以使用凸度來進(jìn)行債券價(jià)值變動(dòng)的更好擬合。總體來說,上述提到的指標(biāo)和管理方法可以使用python作為工具進(jìn)行計(jì)算來提升效率,縮短指標(biāo)的計(jì)算時(shí)間,從而能夠?yàn)橥顿Y者及時(shí)提供持有標(biāo)的的綜合情況,便于投資者做出投資決策。
參考文獻(xiàn):
[1]拉爾夫·吳.收益率曲線、久期與套息收益. 金融市場(chǎng)研究,2017(08):11-21.
[2]Homaifar,Michello.A generalized algorithm for duration and convexity of option embedded bonds. Applied Economics Letters,2019:835-842.
[3]王禹辰.基于VaR的可轉(zhuǎn)換債券市場(chǎng)風(fēng)險(xiǎn)的度量.時(shí)代金融,2017(03):251-258.
[4]敬志勇,王周偉.信用評(píng)級(jí)、債券久期與投資者判斷分歧.金融經(jīng)濟(jì)學(xué)研究.2014(06):29-38.
作者單位:上海大學(xué)