ポートフォリオ最適化の課題

Rで学ぶ中級ポートフォリオ分析

Ross Bennett

Instructor

課題

  • 多くのソルバーはポートフォリオ最適化に特化していない

  • 問題に合うソルバー選定や、ソルバーに合うよう問題を定式化するために、ソルバーの機能と限界を把握する

  • ソルバー間の切替が難しい

  • 閉形式ソルバー(例:二次計画法)

  • グローバルソルバー(例:差分進化最適化)

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で学ぶ中級ポートフォリオ分析

Let's practice!

Rで学ぶ中級ポートフォリオ分析

Preparing Video For Download...