投資組合理論最佳化的挑戰

R 中級投資組合分析

Ross Bennett

Instructor

挑戰

  • 許多求解器並非專為投資組合最佳化設計

  • 瞭解求解器的能力與限制,才能選對工具,或調整問題以適配求解器

  • 在不同求解器間切換不易

  • 封閉形式求解器(例如 quadratic programming)

  • 全域求解器(例如 differential evolution optimization)

R 中級投資組合分析

二次效用

  • 最大化:$\quad \displaystyle \omega^T * \mu - \lambda * \omega^T * \Sigma * \omega $
  • 條件:

$$\omega_{i} >= 0$$

$$\sum_{i=1}^{n} \omega_i = 1$$

  • $\omega$ 為權重向量
  • $\mu$ 為期望報酬向量
  • $\lambda$ 為風險趨避參數
  • $\Sigma$ 為變異—共變異矩陣
R 中級投資組合分析

二次規劃求解器

  • 使用 R 套件 quadprog 解二次效用最佳化問題

  • solve.QP() 可解下列形式的二次規劃問題:

$$min(-d^Tb+\frac{1}{2}b^TDb)$$

  • 受下列限制:

$$A^Tb>=b_0$$

R 中級投資組合分析
library(quadprog)
data(edhec)
dat <- edhec[,1:4]

# Create the constraint matrix
Amat <- cbind(1, diag(ncol(dat)), -diag(ncol(dat)))
# Create the constraint vector
bvec <- c(1, rep(0, ncol(dat)), -rep(1, ncol(dat)))
 # Create the objective matrix
Dmat <- 10 * cov(dat)
# Create the objective vector
dvec <- colMeans(dat)

# Specify number of equality constraints
meq <- 1

# Solve the optimization problem
opt <- solve.QP(Dmat, dvec, Amat, bvec, meq)
R 中級投資組合分析

一起來練習吧!

R 中級投資組合分析

Preparing Video For Download...