陳輝民 余 博 周 澳
(湖南工程學院 經(jīng)濟學院,湖南 湘潭 411104)
現(xiàn)代資產(chǎn)組合理論也稱證券投資組合理論、投資分散理論,是馬科維茨(Harry Markowitz)1952年在其論文《證券組合選擇》(Portfolio Selection)首創(chuàng)[1],是現(xiàn)代金融學的基礎。該理論的主要觀點為:(1)投資者的投資效用函數(shù)(U)取決于投資者擁有的資產(chǎn)組合的均值和方差(μσ2);(3)使用方差—協(xié)方差衡量證券組合的風險,以最小方差為決策依據(jù)確定證券的最優(yōu)組合。
此理論首次引入數(shù)理統(tǒng)計的均值-方差思想,而成為現(xiàn)代金融學的基礎,金融類專業(yè)課程多次出現(xiàn)現(xiàn)代資產(chǎn)組合理論知識點。如投資學課程—滋維·博迪著的《投資學》第7章最優(yōu)風險資產(chǎn)組合介紹了組合投資理論[2];弗蘭克 J.法博齊等著的《金融經(jīng)濟學》—第13章 均值方差組合選擇介紹了資產(chǎn)組合理論[3];證券投資學課程—李英著的《證券投資學》—第13章證券投資的收益和風險與第14章 投資組合的選擇介紹了證券組合理論[4];數(shù)理金融課程—張元萍主編的《數(shù)理金融基礎》第四章—投資組合理論與資產(chǎn)定價模型有兩節(jié)內(nèi)容進行介紹[5]。多門課程重復出現(xiàn)資產(chǎn)組合理論就表明該理論在整個本科金融類專業(yè)教學是非常重要的。
傳統(tǒng)教學投資組合理論存在兩個不足:(1)側重理論介紹,忽視數(shù)理推導和過程重現(xiàn);(2)使用EXCEL的VBA技術處理高度理想化數(shù)據(jù)呈現(xiàn)證券組合投資的結論[6]。傳統(tǒng)教學受制商業(yè)軟件的授權及學生主觀能動性,鑒于證券組合理論的重要性及R軟件開源及擴展包豐富性,進行實驗設計,引入量化金融思想來提升學生創(chuàng)新性能力和學習的積極性。
R軟件開源,是用來進行統(tǒng)計計算和圖形展示的自由軟件環(huán)境,可以在UNIX平臺、Windows和MacOS上編譯和運行。R軟件最初是由奧克蘭大學統(tǒng)計系的Robert Gentleman和Ross ihaka(“R & R”)編寫的,由全球R愛好者協(xié)作維護。R提供了廣泛的統(tǒng)計方法和圖形技術,輕松編寫數(shù)學符號和公式,且高度可擴展的。
R軟件包含一個“Finance”模塊,具體包括標準回歸模型(Standard regression models)、時間序列分析(Time series)、金融(Finance)、風險管理(Risk management)、金融書籍命令(Books:NMOF,FRAPO)、數(shù)據(jù)及日期管理(Data and date management)6個模塊154個核心包,用來處理資產(chǎn)組合的核心擴展包包括:PerformanceAnalytics、portfolio、fPortfolio、quantmod、TTR等[7]。
1.實驗用R包簡單介紹
(1)時間序列分析基礎擴展基礎包
“zoo” 是個S3類的包,主要用來處理:(1)不規(guī)則的時間序列數(shù)值向量、矩陣和因子;(2)保持一個特定的索引/日期/時間類的獨立性;(3)擴展時間序列和基本R保持一致標準類[8];“TTR”(技術交易規(guī)則)提供包括CCI, ADX, TDI, VHF, GMMA等44個函數(shù)[9];“xts”是用來擴展“zoo”,最大限度保持原始格式信息,用戶定制與擴展,簡化跨類互操作的包,對R的不同時間序列數(shù)據(jù)類進行統(tǒng)一處理[10];“fBasics”是金融數(shù)據(jù)處理與管理的包,主要用來處理財務回報率及相關數(shù)量指標、對數(shù)據(jù)進行探索性分析和推斷[11];“fAssets”是一個“計算金融和金融工程”教學R包,主要用來對金融資產(chǎn)數(shù)據(jù)進行探索性分析、可視化、資產(chǎn)選擇、方差-協(xié)方差估計等[12]。
(2)證券組合分析專業(yè)擴展包
“quantmod”專注處理量化金融建模與交易的R擴展包,需要“xts”和“TTR”包支撐,包含ETL類、分析類、展現(xiàn)類三大函數(shù),可以用來獲取數(shù)據(jù)和指導量化投資、算法交易、統(tǒng)計套利和高頻交易等投資行為[13];“l(fā)pSolve”是用來處理線性規(guī)劃、積分、混合整數(shù)規(guī)劃問題的擴展包[14];“fPortfolio”用來處理證券組合優(yōu)化,有效前沿的擴展包[15]。
2.安裝所需的R擴展包及載入內(nèi)存
編制一段R代碼,可以一次性安裝和載入所需的時間序列分析基礎擴展基礎包和證券組合分析專業(yè)擴展包;也可以利用install.packages()和library()兩個命令逐次單個安裝和載入,具體的R教學代碼如下。
依據(jù)金融工程專業(yè)教學需要,選擇深圳證券交易所(http://www.szse.cn/)的J金融業(yè)6支包含“銀行”關鍵詞的A股股票作為研究對象進行教學設計,即平安銀行(000001)、寧波銀行(002142)、江陰銀行(002807)、鄭州銀行(002936)、青島銀行(002948)、蘇州銀行(002966)。也可以在上海證券交易所(http://www.sse.com.cn/)選擇所需上市公司股票進行教學設計??紤]整理數(shù)據(jù)的簡便性,這里使用“quantmod”包下載深圳證券交易所6支金融類銀行股票實時價格時間序列,同時計算其每月收益率,并轉(zhuǎn)化為時間序列對象,相應的教學R代碼如下。
1.計算均值—方差
馬科維茨投資組合理論((Harry M. Markowitz,1952)把證券的收益和風險用數(shù)理統(tǒng)計的方法定義為均值與方差,可以運用“fPortfolio::covEstimator”命令計算6支金融類A股股票的日均值和協(xié)方差矩陣,結果見表1、表2,具體的教學代碼如下。
表1 6支A股股票收益率均值
表2 6支A股股票方差—協(xié)方差數(shù)據(jù)
2.計算證券組合均值—方差組合的有效邊界及最小方差
設置好組合的類型(portfolioSpec)、求解方法(setSolver)及約束條件(constraints),使用“fPortfolio::portfolioFrontier”命令測算數(shù)據(jù)后,利用“frontierPlot”“monteCarloPoints”命令畫出有效邊界圖及模擬的均值—方差數(shù)據(jù)點;最后是“minvariancePoints”命令標識最小方差點,見圖1,具體的R教學代碼如下。
圖1 6支A股(銀行類)的有效邊界圖
3. 證券組合投資比重分析
使用slot函數(shù)提取“minvariancePortfolio”命令測算的最小方差條件下的各證券投資比例,見表3。使用barplot繪制投資比例條形圖,見圖2,具體的R教學代碼如下。
表3 最小方差條件下各證券的投資
(1)提取投資比例并輸出
minVarC <- minvariancePortfolio(ts.df.StockReturnDaily) ##最小方差
圖2 最小方差條件下證券組合中證券的投資比例
4.有效邊界上的證券組合的投資比例及風險驗證
有效邊界上,證券組合的預期收入mu=0.005時,使用“efficientPortfolio”進行估測,并使用slot函數(shù)提取S4類的投資比例、均值與風險數(shù)據(jù),得到投資比例表4和收益與風險數(shù)據(jù)表5。具體的R教學代碼如下:
表4 證券組合各證券的投資比例
表5 證券組合的收益與風險
在有效邊界已經(jīng)確定的情況下,引入無風險資產(chǎn),構建風險資產(chǎn)與無風險資產(chǎn)的資產(chǎn)組合,通過資本市場線理論和基金分離定理,確定最優(yōu)的風險組合,即資本市場線與有效邊界的切點。如果無風險資產(chǎn)的收益率為0.0005(教學示意用),使用“fPortfolio::tangencyPortfolio”命令測算得到最優(yōu)市場組合MarketC,并使用“fPortfolio::tangencyLInes”命令做出資本市場線示意圖3,具體的R教學代碼如下。
圖3 資本市場線示意
《金融工程學》《金融經(jīng)濟學》《數(shù)理金融》和《投資學》等課程都涉及資產(chǎn)組合理論,是教學的重點,因為其數(shù)學推導比較抽象,故也是教學的難點。使用少量證券資產(chǎn)確定有效的組合對于本科生來說還具有一定的難度,如何幫助學生克服學習困難,掌握該理論并進行運用,需要教師根據(jù)學生特點和大數(shù)據(jù)時代統(tǒng)計工具的開源性設計實驗,促使學生通過使用計算機仿真和重現(xiàn)資產(chǎn)組合理論,引導學生進行創(chuàng)新性思考。把程序設計思維和金融理論結合可以較好地提升學生的學習積極性和創(chuàng)新性,更好地引導學生進行探索性學習。