利用馬科維茨投資組合模型建立Alpha策略
上學期的一份大作業。
理論基礎
馬科維茨的投資組合(均值-方差、有效邊界)模型最早採用了風險資產的期望收益率(均值)和用方差(或標準差)代表的風險來研究資產組合和選擇問題。理論上來說可以通過投資組合規避非系統性風險。
而Alpha策略則是找出某種可以超越大盤收益率的選股策略,再做空對應大盤的股指期貨等衍生品,就可以穩定產生收益,且可以規避系統性風險。
所以將兩者結合,利用馬科維茨的理論選股規避非系統性風險,再套入Alpha策略,進行對沖,規避系統性風險,從而產生穩定收益。這個策略看起來很美好,但是否能真正奏效,我們來實際模擬一下。
主要利用的工具
Matlab建立模型、R做簡單可視化。
所利用的數據範圍
滬深三百的300支股票的收盤價數據、滬深三百股指收盤價數據(對比構建的投資組合收益率)
數據時間範圍
2012年1月——2017年11月
建立模型過程如下:
第一步
將滬深三百300支股票 2012.1.1--2013.1.1的收盤價導出。
這樣其實可以構成一個245*300(245是因為2012年大約有245個交易日)的收盤價矩陣。
然後計算每支股票的日收益率,得出一個新的244*300的收益率矩陣。
求得的日收益率是用複利計算,也就是用
註:其中的股票肯定存在有些股票在數據區間還未上市或者停牌的情況,這部分數據顯示為空值。則進行初步篩選,比如這一年超過1/3空值的股票去掉,不進入這一次的組合中;對其餘低於1/3空值的股票,在空值中插入該股票在2012.1.1——2013.1.1時間內非空值數據的均值,比如股票A每日價格為:9.53,9.31,(停牌),9.99,則停牌那天的數據插入 ,即數據變為9.53,9.31,9.61,9.99。(這種方法值得商榷)
第二步
計算每支股票的期望收益率以及300支股票之間的協方差,這樣就構成了一個300*300的矩陣(300支股票,但是如果存在第一步注中的空值超過1/3的股票,那就<300了)。
Matlab有函數可以算。
注意 協方差需要得到一個協方差矩陣,橫軸縱軸都是股票,矩陣中(i,j)位置就代表股票i和股票j的協方差,(i,i)就代表方差。
第三步
Matlab有一系列的金融函數,包括資產組合(也就是有效邊界)的這個函數,即:portopt
[PortRisk,PortReturn,PortWet] = portopt(ExpReturn,ExpCovariance,N)
輸入期望收益率矩陣(ExpReturn,第一步中244*300的矩陣)和協方差矩陣(ExpCovariance,第二步中300*300的矩陣),以及需要多少個點(N)來組成你的圖像。
輸出橫坐標:風險(標準差),縱坐標:期望收益率,還有很重要的:在某個點這些股票的權重分配。
輸出的都是一個300*1的矩陣。
這樣有效邊界就畫出來了。
然後就要找最優市場組合點,即CML和有效邊界的切點,設定無風險利率為0.03,再找切點就可以了。找切點可以用夏普比,因為剛剛函數的輸出不是有300個點嗎,計算這300個點的夏普比,最大那個點,就是切點了。這樣就可以做出圖1了。(收益率和標準差都年化過了)
離奇的權重
特別有趣,滬深300中大部分股票分配的權重都是0!切點的最佳市場組合大概只有二十支股票有分配權重,這有很重要的意義!如果300支股票都有權重,那現實中很難有一個投資人有財力和精力去投資300支股票,但是只有20支,就完全具有操作空間了。
對沖和收益
先利用馬科維茨的有效邊界理論在滬深三百中選股,由此確定之後買入股票的權重,同時做空對應的滬深300期貨進行對沖,並在之後過程中逐月向前滾動得出新的最優投資組合,繼續做空期貨對沖,實現規避系統性風險的目的。最終計算收益率,思路示意圖如圖1所示:
選擇了2012年1月——2017年11月5年的數據進行回測,不算很短了,防止了一定程度上的過擬合,最終均值方差策略選出的股票與滬深300股指的每月年化收益率,如圖3所示,可以看出紅色柱還是明顯高於綠色柱的。
圖ut3
對沖策略重要的不是看我們選股策略的收益率,而是看比對應的股指期貨收益率高出多少,高出的部分才是真正的收益率(因為賣空了股指期貨),所以把每個紅條減去綠條才是,如圖4所示。
一些建倉參數設置
在這裡對沖時,沒有選擇最簡單的等價值對沖,而是根據組合的 來選擇需要賣空的股指期貨。所以就引出來了以下的 的計算和現金的配置
(1)建倉合約選擇
為簡化模型,且設置策略全部為買入 30 天后平倉,所以本組在建倉合約的選擇上全部選擇下月合約,合約份數:
(2)Beta參數設定
在投資過程中,投資組合的系統風險用 Beta 係數來計量,通過以大盤整體為參照物,用投資組合的風險收益率與整個大盤的平均風險收益率作比較,可以得出如下公式:
式中,Cov 為協方差函數, 與 分別反映投資組合與大盤整體的風險收益率,
反應大盤總體的價格波動,這裡用滬深 300 股指度量。
(3)現金及交易成本預留
在本模型中,總資金的用途劃為三部分,分別為購買股票的資金、購買期貨的保證金和補貼虧損保證金的部分。最終決定初始保證金規模為期貨總價值的15%,補貼虧損的現金占購買期貨總價值的 10%。
動態調整期貨頭寸
在本模型中,用前一年的股票價格選出投資組合及配置權重後,可根據
計算每次 Beta 值。
籍此在每 30 天會動態調整 Beta 係數值,從而改變購買期貨的總價值。
Beta 穩定性
經計算,由均值方差選股策略選出的股票組合,Beta 標準差為 0.1502,波動較大,但是通過分析 Beta 與滬深 300 股指的同步走勢,我發現正好解釋了之前產生的一些疑問。
當發現馬科維茨選股策略選股得出的收益率很高時,就產生一定疑問:在2015 年股災期間,所選出的股票組合收益仍然遠高於滬深 300 指數。 但是通過分析 Beta 與滬深 300 指數的同步走勢發現,在 2015 年股災期間,均值方差模型所選股票的 Beta 值不斷下降,且達到最低點 Beta=0.1626。這個數值正好說明在這段時間,所選股票與大盤相關性差。當大盤暴跌時,選出的股票卻只是小跌甚至略微盈利,這就解釋了為什麼股災期間,所選股票仍能獲得較大超額收益率。 Beta和大盤的走勢如圖5:
現金配置比例
總資產主要用來購買股票和期貨,而用來購買期貨的部分又包含了保證金和用來補貼期貨虧損的部分。首先,決定初始保證金規模為期貨總價值的15%,補貼虧損的現金占購買期貨總價值的 10%。
現在,假設用來購買股票的部分為 x,購買期貨的為 y,則有
根據公式:
所以,購買期貨的現金
聯立(1)、(2)、(3)解得x、y
策略就是這樣,但是其實還是有好多問題,
- 還是有可能存在過擬合問題。這5年的回測時間還是不算很長。現在得出的收益率也是經過一定的調參的,比如選股時間現在是利用一年的數據選股,之前用過三個月的、半年的,但效果一般。還是那句話,沒有永遠賺錢的策略,所以現在這個策略實際有多少收益率就不一定了。
- 可能買不到想要的價格。那個收益率最高的那個月,其實是因為剛好買入了一支連續漲停一個月的股票——巨人網路,可以看圖6。這就導致了可能買不進去..
- 採用的插值法,是否有更好的方法替代。
推薦閱讀:
※投資理論(2):斗傻理論(Bigger Fool Theory)|米羅
※臨兵斗者皆陣列於前(上) 市場如戰場 先為不可勝
※這個龍愛量子的「真愛粉」終於承認自己是大忽悠了!丨無路可套
※《通往自由的交易之路》精英級100課邀請函
※預測未來10年的投資大方向,準備好迎接未來了嗎?