Eugene Fama Naive diversification實作

康韡瀚
May 14, 2021

--

Naive diversification實作

投資風險可以分為系統性風險(又稱市場風險)和非系統性風險(又稱個別風險),並可透過投資組合多角化來進行風險驅散,達到降低風險的效果,但是多角化是有極限的,假設投資組合為均勻權重投資組合(equal weight portfolio),當資產數目趨近於無限大時,可完全驅散非系統性風險,但是無法驅散系統性風險,此為多角化極限。

2013年諾貝爾經濟學獎得主Eugene Fama (以下簡稱Fama)曾經在Foundations of Finance: Portfolio Decisions and Securities Prices 1976–06提出,Naive diversification(中譯:傻瓜多角化),Fama 使用美股資料,製作均勻權重投資組合,發現當資產數目為15-20檔時,再繼續增加資產數目,總風險已無明顯下降,即趨近於資產多角化的極限。與學理上資產數目需要趨近於無限大才可以達到資產多角化極限。

我參考Fama 的作法,對2019/01/01至2020/12/31台灣股市進行實測,以台灣加權指數作為替代變數,以隨機選取台灣上市股票的方式製作均勻權重投資組合。觀察當資產數目增加時,變異數(總風險)的變化。但由於我是採用隨機選股的方式,有些股票代碼已經改變,但是我爬取的目標網頁還未更改導致程式錯誤,因此我設定當出現錯誤時程式停止增加股票進投資組合,若無出現錯誤,股票數目上限為100間公司。下圖Y軸為資產風險,X軸為投資組合資產數量,紅色水平線為2019/01/01至2020/12/31台灣加權股價指數風險,由此圖可以看出台股在20檔以後就不太會有劇烈修正,大約符合Fama利用美股資料所做試驗結果相同,但是當投資組合資產數量達到約50檔時,投資組合風險卻低於市場風險,明顯違背於學理上多角化只能驅散個別風險,無法驅散市場風險。我認為原因為台灣股票市場並不符合馬可維茲投資組合假設,再者台灣加權股價指數作替代變數,僅能代表台灣所有股票,並不代表台灣所有資產。

但是如果將此試驗重複多次可以發現,結果並不會每次都如上圖穩定,有時候會出現如下圖,在增加某一資產時,投資組合風險呈現劇烈變化,我認為此原因為,我在選擇標的時是以隨機方式選取股票,並不如馬可維茲資產投資組合理論基本假設中,投資人純粹以未來報酬的變異數來衡量投資組合風險,我運算風險時,使用的是過去資料,並非對未來的預期。

程式操作流程:

使用套件:

import pandas_datareader.data as web

import datetime as dtimport pandas as pdimport numpy as npimport scipy.optimize as solverfrom functools import reduceimport matplotlib.pyplot as pltimport requestsimport randomfrom random import sample

step1 爬取所有公司代碼

res = requests.get("https://isin.twse.com.tw/isin/class_main.jsp?owncode=&stockname=&isincode=&market=1&issuetype=1&industry_code=&Page")df = pd.read_html(res.text)[0]# 設定column名稱df.columns = df.iloc[0]df = df.iloc[1:]for i in range(len(val)):val[i]=str(val[i])+str('.TW')

step 2 建立十組最高資產數目為100的均勻權重投資組合,計算報酬率和風險

此計算投資組合報酬率和變異數為矩陣計算方式,計算方式如下

step 3 資料視覺化

此y為是先算出,台灣加權股價指數在資料區間變異數

plt.scatter(n1[2],portfolio_risk2[2])plt.ylabel('portfolio_risk1')plt.xlabel('N')plt.axhline(y=0.17642768,color='red',linewidth=3.0)

--

--