以 R 及 plotly 進行「投資組合最佳化」

「現代投資組合理論」(Modern Portfolio Theory, MPT, or mean-variance analysis) 提出一套數學架構,能夠建構出投資組合,使得在選定的風險下,能夠獲得最高的報酬!

關於「現代投資組合理論」的說明,可參考這篇文章:應用「現代投資組合理論」進行「投資組合最佳化」

本文說明如何以 R 及 plotly 進行「投資組合最佳化」。

基本原理是以 random number 建立 N 項資產各種比重的排列組合,找出什麼樣的資產配置能夠在給定的報酬率 (expected return) 之下,帶來最小的風險 (portfolio return variance)。

首先,安裝 R (R 是一套能夠方便進行統計運算及繪製統計圖表的軟體環境)。

在 R 下,執行下列指令安裝相關的 package。
install.packages("plotly")
install.packages("quantmod")
install.packages("ROI")
install.packages("ROI.plugin.glpk")
install.packages("ROI.plugin.quadprog")
install.packages("DEoptim")
install.packages("doParallel")
install.packages("PortfolioAnalytics")
下載資產歷史報酬率範例檔: data_3_assets.txt

下載: portfolio_n_assets_v6_example.r

在 R 下,執行下列指令進行投資組合最佳化。
source("portfolio_n_assets_v6_example.r")
在 R 下,執行下列指令畫出各種資產比重配置下的平均報酬率 (Mean Returns) v.s. 風險 (Standard Deviation) 圖。
p
會輸出如下圖表,在這個範例,藍點是債券+股票的投資組合A,紅點是債券+股票+年金的投資組合B:



在 R 下,執行下列指令畫出投資組合A之中債券、股票的各種比重。
p.weightA



在 R 下,執行下列指令畫出投資組合B之中債券、股票、年金的各種比重。
p.weightB



參考資料


Portfolio Optimization Using R and Plotly

Getting Started with Plotly for R

Plotly R Library

plotly for R

The R Project for Statistical Computing

The R Manuals

Introduction to PortfolioAnalytics

Complex Portfolio Optimization with PortfolioAnalytics

R Package ‘PortfolioAnalytics’

R Package ‘quantmod’