1
準(zhǔn)備工作
用于分析投資組合風(fēng)險(xiǎn)的最受歡迎的模型是因子模型,因?yàn)楣善本哂泄餐苿?dòng)的趨勢(shì)。證券的主要組成部分經(jīng)常會(huì)解釋很大一部分差異。由于我們主要關(guān)注構(gòu)成投資組合的多種資產(chǎn),因此需要對(duì)此進(jìn)行說(shuō)明。有些問(wèn)題可能是為什么低市凈率的股票要比具有較高市凈率的股票好嗎?在此,比率的“價(jià)格”部分僅是股價(jià)(每股),比率的“帳面”部分是“股東權(quán)益” /“流通股”,這是公司資產(chǎn)負(fù)債表上的項(xiàng)目。
因子模型流行的另一個(gè)重要原因是維度。假設(shè)N資產(chǎn)隨后具有N方差和N(N-1)/2相關(guān)性。如果我們有一個(gè)有F因子的因子模型,它有N個(gè)特質(zhì)方差、F個(gè)因子方差和NF個(gè)貝塔。只要:
因子模型的參數(shù)較少。
資本資產(chǎn)定價(jià)模型Sharpe(1964)是由單個(gè)因子組成的最簡(jiǎn)單因子模型。
平均方差參數(shù)為:
因此bi是:
或者表示為:
其中b是回歸線的斜率,它使收益的平方距離最小化,a是截距或者阿爾法用一行a bf表示。
我們將使用基礎(chǔ)R函數(shù)進(jìn)行這些計(jì)算,但是首先我們需要一些數(shù)據(jù)和R的一些庫(kù)文件:
我們從Yahoo Finance使用quantmod或tidyquant的包裝器將每日價(jià)格數(shù)據(jù)下載到了quantmod包中。區(qū)別在于,quantmod收集數(shù)據(jù)并將其存儲(chǔ)為xts對(duì)象,tidyquant收集數(shù)據(jù)并將其存儲(chǔ)為tibble,從這里我們可以更輕松地使用tidyverse處理數(shù)據(jù)的功能,將數(shù)據(jù)轉(zhuǎn)換回使用timetk包中的tk_xts函數(shù)將其添加到xts對(duì)象。
公司是蘋(píng)果,哈雷戴維森,英偉達(dá),微軟,AMD,福特,通用電氣,3M,英特爾和亞馬遜。(本文基于R語(yǔ)言實(shí)現(xiàn))
數(shù)據(jù)如下所示,我們刪除了Open,High,Low,Close和Volume數(shù)據(jù),僅保留了Adjusted價(jià)格,其中每個(gè)資產(chǎn)都是其自己的列,數(shù)據(jù)已轉(zhuǎn)換為時(shí)間序列對(duì)象或xts對(duì)象, data存儲(chǔ)為索引(或行名),在下表中不可見(jiàn)。
我們還用同樣的方法收集了標(biāo)普500指數(shù)數(shù)據(jù):
看起來(lái)類(lèi)似于單個(gè)資產(chǎn)的價(jià)格。
我們可以用chartSeries函數(shù)繪制數(shù)據(jù):
我們?cè)趐ortfolio_returns和SPY收益中對(duì)所有資產(chǎn)計(jì)算每日對(duì)數(shù)收益:
每項(xiàng)資產(chǎn)的收益數(shù)據(jù):
我們可以使用autoplot功能通過(guò)ggplot功能繪制xts或者時(shí)間序列數(shù)據(jù)(我們僅繪制前3項(xiàng)資產(chǎn)):
2
R實(shí)現(xiàn)
接下來(lái),我們首先需要定義以下幾點(diǎn):
我們?cè)谕顿Y組合中擁有的資產(chǎn)數(shù)量,以前表示為N
我們應(yīng)用模型的天數(shù),通常表示為T(mén)。
a. 我們可以計(jì)算如下所示:
其中收益:
然而,為了更好的理解它,我們可以將其分解為每個(gè)計(jì)算:
beta公式的cov協(xié)方差矩陣部分如下所示:
我們可以使用基礎(chǔ)R來(lái)計(jì)算協(xié)方差如下:
其中xi是我們的資產(chǎn),yi是SPY500。代碼:
它對(duì)應(yīng)于cov(portfolio_returns,SPY_returns)計(jì)算中的第一個(gè)結(jié)果AAPL。我們可以將x = Portfolio_returns[,1]中的更改為,,…,以計(jì)算每項(xiàng)資產(chǎn)(分別為HOG,NVDA和MSFT)的協(xié)方差,也可以將以上內(nèi)容包裝到for循環(huán)中以計(jì)算所有資產(chǎn)。注意:我只在for循環(huán)中將上述方程式中的更改為,其他所有內(nèi)容都是不變的。
SPY收益的方差為
其中計(jì)算為:
在R中我們可以像這樣簡(jiǎn)單計(jì)算它:
將所有這些放在一起,我們可以計(jì)算beta?;叵胍幌拢?/span>
其中此處的ri是在我們的投資組合中的每一項(xiàng)資產(chǎn),y是市場(chǎng)收益率或SPY500收益率。
使用R為我們資產(chǎn)的每一項(xiàng)計(jì)算beta,我們可以將上述代碼包裝到一個(gè)函數(shù)中:
我們可以將這個(gè)函數(shù)應(yīng)用于數(shù)據(jù)中的單項(xiàng)資產(chǎn),然后將所有這些資產(chǎn):
這里的解釋是,值等于1表示資產(chǎn)與市場(chǎng)的移動(dòng)完全相關(guān),值>1表示資產(chǎn)的移動(dòng)比市場(chǎng)的移動(dòng)更多,或者當(dāng)市場(chǎng)移動(dòng)時(shí)波動(dòng)性更大,而值<1表示資產(chǎn)的移動(dòng)少于市場(chǎng)的移動(dòng)。
通常,科技股的市場(chǎng)beta較高,而成熟的非科技股的市場(chǎng)beta較低。也就是說(shuō),AAPL,NVDA,MSFT和AMD的beta均大于1,而HOG和Ford(F)的beta均小于1。
b. 阿爾法被定義為:
其中_ri是我們投資組合中單項(xiàng)資產(chǎn)的平均收益率,βi是我們樣本期內(nèi)每個(gè)資產(chǎn)的beta值,_f是SPY的平均收益率。因此,我們可以像這樣計(jì)算alpha:
我們資產(chǎn)的阿爾法或者如下:
還有其他方法計(jì)算,但是對(duì)于單因子模型我們可以從PerformanceAnalytics包中使用CAPM.alpha。
比我們剛剛做的要簡(jiǎn)單多了。Ra是資產(chǎn)收益率,Rb是市場(chǎng)收益率,Rf是無(wú)風(fēng)險(xiǎn)收益率。
在研究了PerformanceAnalytics包中的CAPM.beta函數(shù)之后,我們注意到它們具有CAPM.beta.bull和CAPM.beta.bear的函數(shù),因此我想看看每項(xiàng)資產(chǎn)的繪制出來(lái)如何。
3
可視化收益的協(xié)方差矩陣
為了可視化協(xié)方差矩陣,需要一些更深入的研究。
最終,我們要計(jì)算以下內(nèi)容:
其中
我們從之前使用beta和alpha結(jié)果,同理。我創(chuàng)建了一個(gè)函數(shù),該函數(shù)接受資產(chǎn)并計(jì)算殘差和Sigma值。我們?cè)谶@里計(jì)算的是以下內(nèi)容:
err
其中i=1,···,N
Sigma
以上等式在基礎(chǔ)R中的代碼為:
現(xiàn)在我們有值。我們想要?jiǎng)?chuàng)建一個(gè)矩陣,其Sigma值位于對(duì)角線下方。
這將是我們創(chuàng)建的對(duì)角矩陣,如下所示:
現(xiàn)在我們有我們的對(duì)角矩陣Diag(@),我們可以使用收益計(jì)算對(duì)角矩陣:
然后從stats包中使用cov2cor函數(shù)。
相關(guān)表如下所示:
4
ETF分析和隨機(jī)抽樣的投資組合
由于因子建模全部是關(guān)于風(fēng)險(xiǎn)和投資組合分析的,所以我們認(rèn)為比較一些美國(guó)交易所交易基金(ETFs)和標(biāo)普500指數(shù)隨機(jī)選擇的資產(chǎn)投資組合的表現(xiàn)會(huì)很有趣。
為了構(gòu)建隨機(jī)創(chuàng)建的投資組合,我們首先刪除了維基百科頁(yè)面中包含標(biāo)普500指數(shù)公司的列表以及其交易代碼,然后篩選出所有A、B和C類(lèi)股票,因?yàn)橐恍┕揪哂卸喾N資產(chǎn)類(lèi)別,而我不想要對(duì)兩種相同資產(chǎn)進(jìn)行采樣。
就像之前一樣,我們收集數(shù)據(jù)并將其放入時(shí)間序列格式。
如下所示:
接下來(lái),我們收集了美國(guó)ETFs:
數(shù)據(jù)如下所示:
SPY500:
如下:
現(xiàn)在,我們有一系列的3個(gè)數(shù)據(jù)集,分別是從SPY500維、ETFs和SPY500中隨機(jī)選擇的資產(chǎn)調(diào)整后的收盤(pán)價(jià)。接下來(lái),計(jì)算每日收益率。
asset_returns如下所示:
然而,我們想要假設(shè)我在一個(gè)投資組合中擁有所有這些資產(chǎn)。對(duì)行進(jìn)行平均,并將數(shù)據(jù)加入ETFs,并將其稱(chēng)為all_returns。
all_returns數(shù)據(jù)如下所示,其中我們可以看到myPortfolio已經(jīng)添加了ETF數(shù)據(jù)集。
接下來(lái),我們計(jì)算(像之前一樣)投資組合的和。這次只用PerformanceAnalytics包中的CAPM.beta和CAPM.alpha函數(shù)。
根據(jù)它們的值排名了ETF’s。我們可以看到GDX有最高值和最低值是有道理的,因?yàn)樗腉oldminers ETF追蹤了Arca黃金礦業(yè)指數(shù)(GDMNTR),該指數(shù)跟蹤了從事黃金礦業(yè)的公司的業(yè)績(jī)。據(jù)我所知,SPY500上市的金礦公司很少。但是,這是一種按其值展示和排名ETFs并查看其相應(yīng)值的好方法。
我們還可以通過(guò)阿爾法和貝塔的比值來(lái)排名阿爾法和貝塔,并繪制結(jié)果。
更改幾行代碼,我們可以繪制并看到負(fù)alpha的對(duì)beta比值最糟糕的表現(xiàn)。
我們可以先獲得我們ETF的Bata和alpha值,再計(jì)算alpha:
最終,對(duì)ETF進(jìn)行了隨機(jī)抽樣(由于要分析的樣本太多),并繪制了ETF之間的相關(guān)性。
5
夏普比率、CAPM、Fama-French因子分析
使用簡(jiǎn)單的圖仍無(wú)法為我們提供有關(guān)ETF、投資組合或資產(chǎn)的足夠信息。夏普比率Sharpe(1966)是更好的度量。夏普(Sharpe)比率是一種報(bào)酬變動(dòng)比率,它允許我們能夠在調(diào)整風(fēng)險(xiǎn)之后將投資組合的表現(xiàn)與無(wú)風(fēng)險(xiǎn)資產(chǎn)進(jìn)行比較。這需要之間的區(qū)別投資組合的收益率和無(wú)風(fēng)險(xiǎn)收益率,然后將其除以標(biāo)準(zhǔn)差(衡量投資組合的波動(dòng)性)。
夏普比率告訴我們,每單位風(fēng)險(xiǎn)增加我們可以期望增加多少收益單位。夏普比率定義為:
其中
僅具有市場(chǎng)因素的單一資產(chǎn)模型如下:
在t時(shí)我們獲得x和y的期望:
方差:
因此,夏普比率變?yōu)椋?/span>
回想:
我們只需插入之前定義的
和
即可,方程式變?yōu)椋?/span>
經(jīng)過(guò)一些代數(shù)運(yùn)算,我們可以獲得:
最終我們得出以下結(jié)論:
我們可以用
表示夏普比率,其中x_是x從t=1到T這個(gè)歷史期間的平均值,簡(jiǎn)單計(jì)算為
在R中我們可以簡(jiǎn)單的使用:colMeans(all_returns)/sqrt(diag(var(all_returns)))。
機(jī)器學(xué)習(xí)和集群
我們可以根據(jù)其bate、alpha和夏普比率值對(duì)ETF進(jìn)行聚類(lèi)。我們?yōu)槭裁匆@樣做?該模型可能具有比此處3個(gè)變量更多的變量,因此可以將這些公司聚集在一個(gè)較高維度的空間中,因此我們可以基于這些簇選擇ETF,并將其用作投資組合多元化工具,即一個(gè)集群可能包含風(fēng)險(xiǎn)較高的ETF,而另一個(gè)可能包含價(jià)值股或成長(zhǎng)股。由于這里的變量很少,因此無(wú)法正常工作,但是有了更多的變量,我們可以更好地分類(lèi)ETF。
beta_alphas_sharpe數(shù)據(jù)如下所示:
我們可以在一個(gè)3D圖中繪制bate、alpha和夏普比率,并從kmeans模型中根據(jù)簇來(lái)對(duì)它們上色。這也給機(jī)會(huì)使用我們可以與之交互的threejs包。
6
Fama和French因子模型
最后,我分析了各種ETF的表現(xiàn)。CAPM公式試圖通過(guò)單因子(整個(gè)市場(chǎng))來(lái)解釋投資組合的表現(xiàn)。CAPM定義如下:
我們可以通過(guò)在模型中添加因子來(lái)進(jìn)一步擴(kuò)展模型。因此,三因子模型看起來(lái)像:
它從CAPM中獲取了市場(chǎng)因子,并增加了兩個(gè)新因子,SMB和HML或Small-minus-Big和High-minus-Low。SMB試圖發(fā)揮規(guī)模效應(yīng),從長(zhǎng)遠(yuǎn)來(lái)看,小型市值公司應(yīng)跑贏市場(chǎng)。HML其目的是通過(guò)根據(jù)較高的市銷(xiāo)率對(duì)資產(chǎn)進(jìn)行分類(lèi)來(lái)捕獲價(jià)值與增長(zhǎng)效應(yīng)。通常,市凈率高的公司是價(jià)值股,而市凈率低的公司是成長(zhǎng)股,文獻(xiàn)還顯示,從長(zhǎng)遠(yuǎn)來(lái)看,價(jià)值股的表現(xiàn)要優(yōu)于成長(zhǎng)股。
Fama French因子模型使我們能夠分析基金經(jīng)理的業(yè)績(jī),因?yàn)槿绻鸉ama French因子可以解釋資產(chǎn)管理者的投資組合,那么該基金經(jīng)理就不會(huì)通過(guò)選擇投資組合和技能來(lái)增加任何價(jià)值,因此也就沒(méi)有獲得alpha值。
更正式地說(shuō),我們的等式變?yōu)椋?/span>
在R中使用以下來(lái)解決:
1、像以前一樣下載數(shù)據(jù),并將每日價(jià)格轉(zhuǎn)換為每日收益-(我們?cè)O(shè)置了一個(gè)seed,以便使用set.seed收集相同的數(shù)據(jù))。
2、下載ETF并轉(zhuǎn)換成每日收益。
3、將隨機(jī)選擇的股票的平均每日收益作為數(shù)據(jù),并將數(shù)據(jù)與ETF合并,然后將數(shù)據(jù)設(shè)置為時(shí)間序列對(duì)象。我們還從Kenneth French網(wǎng)站上下載了每日Fama French 3因子,并整理了一下數(shù)據(jù)。
最終我們可以計(jì)算解為:
我們可以看到:
相反,我們可以使用線性回歸模型來(lái)估計(jì)它們。對(duì)于我的隨機(jī)投資組合myPortfolio,我們可以使用lm函數(shù)來(lái)建立線性模型,然后使用broom包中的tidy函數(shù)將輸出整理整齊:
我們可以使用apply命令并應(yīng)用我們自己的自定義lm函數(shù)將其應(yīng)用于數(shù)據(jù)中的所有ETF。
我們還可以將tidy命令應(yīng)用于各個(gè)ETF,然后使用stars.pval使數(shù)據(jù)更加整潔。
最后,我們可以使用lapply函數(shù)整理數(shù)據(jù),使用map函數(shù)將p值變異或轉(zhuǎn)換為星形,從而對(duì)所有ETF應(yīng)用相同的方法。然后隨機(jī)抽取5個(gè)ETF回歸樣本。
這里有一些注意事項(xiàng):我們應(yīng)該對(duì)ETF的超額收益建模,而不僅僅是ETF收益。替換非常簡(jiǎn)單,例如與lm回歸的中的myPortfolio,其中RF3為Fama和French數(shù)據(jù)附帶的無(wú)風(fēng)險(xiǎn)利率。我們也應(yīng)該通過(guò)運(yùn)行coeftest(myPortfolioReg,NeweyWest(myPortfolioReg,lag = N,prewhite =FALSE))使用NewyWest調(diào)整后的標(biāo)準(zhǔn)誤差。文獻(xiàn)表明應(yīng)該使用
滯后,其中N是觀察數(shù)。我們可以像以前一樣根據(jù)ETF的alpha對(duì)ETF進(jìn)行排名,并在高alpha上做多,在低alpha上做空。通過(guò)此處的Fama French回歸來(lái)運(yùn)行我們的對(duì)沖投資組合,看看我們是否能夠獲得更好的表現(xiàn)。
最后,在這里我只使用了3因子模型。我們可以使用文獻(xiàn)中的更多因子。在Kenneth French網(wǎng)站上,我們可以收集有關(guān)Market,SMB,HML,RMW,CMA和MOM的數(shù)據(jù)。其中RMW是利潤(rùn)因子,CMA是投資因子,而MOM是動(dòng)量因子。
在下面,將提取每日Fama和French 5 因子模型并將其繪制出來(lái)。
聯(lián)系客服