Python 繪製效率前緣(Efficient_Frontier)
Markowitz所提出的效率前緣(Efficient Frontier)是我在投資學課程中學到的資產分配理論,在此我將介紹如何使用python繪製及計算效率前緣。
效率前緣曲線,為一個以最小變異數投資組合為中心,劃一個水平線做對稱軸,可分為曲線上半部和曲線下半部。曲線上半部隨著風險增加,報酬率增加,曲線下半部隨著風險增加,報酬率降低,上半部支配下半部。因此在討論效率前緣時,通常只討論曲線上半部,不會討論曲線下半部。
由下圖即可看出控制效率前緣主要兩個變數為報酬率和風險且在效率前緣曲線上的點都具有兩個特性
1.在同樣報酬率下風險最小
2.同樣的風險下報酬最高
程式撰寫
step1:載入套件
!pip install 為notebook 中下載套件的方法,只需在後面加套件名稱即可下載
step2:透過 pandas_datareader爬取股價
此以2002.TW(中國鋼鐵),3686.TW(達能科技),6274.TWO(台燿)為例
補充:因為是透過yahoo做為資料源爬取 再輸入股票代號時不可只輸入代號必須在後面輸入國籍代碼,台股多為TW或是TWO,建議先至https://finance.yahoo.com/查詢後再輸入list
step3:計算報酬率並輸出
step4:計算投資組合風險和報酬率
輸入參數:
n:控制下圖有幾個點
tuple( X, Y) :X,Y為單一標的佔最高,低權重比例
step5:繪製效率前緣
輸入參數: risk_free(無風險利率)
在紅色星星為最小風險下的投資組合,上方的藍色的曲線為在相同風險下報酬率最高點的連線,也就是效率前緣(Efficient Frontier),同時也算出各個投資組合的夏普值[夏普值公式=(報酬率-無風險利率)/標準差],在上圖中可以看出越往左上方,越靠近效率前緣曲線的點,顏色越亮,夏普值越高,即在承受相同的風險(波動)下,報酬率越高的投資組合,資產運用效率高。越靠近圖片右下方夏普值越低,資產運用效率差。
參考資料:
Python-繪製效率前緣(Efficient Frontier)
量化交易30天 Day24 — 投資組合概念(四) 效率前緣
https://ithelp.ithome.com.tw/articles/10250190
Python金融:投资组合分析 - 使用pandas分析有效边界