現代ポートフォリオ理論

Pythonで学ぶポートフォリオ分析入門

Charlotte Werger

Data Scientist

最適ポートフォリオの作成

投資戦略のアイコン

Pythonで学ぶポートフォリオ分析入門

ポートフォリオ最適化とは?

ハリー・マーコウィッツを紹介

ハリー・マーコウィッツ

Pythonで学ぶポートフォリオ分析入門

最適化問題: 最適ウェイトの探索

$$ マーコウィッツの最適化問題

言い換えると:

  • ポートフォリオ分散を最小化(制約: {{1}})
  • 期待平均リターンは目標以上
  • ウェイトの合計は100%
  • 少なくとも一部のウェイトは正
Pythonで学ぶポートフォリオ分析入門

目標リターンを変えると効率的フロンティアに

効率的フロンティアのグラフ

Pythonで学ぶポートフォリオ分析入門

PyPortfolioOpt によるポートフォリオ最適化

from pypfopt.efficient_frontier import EfficientFrontier
from pypfopt import risk_models
from pypfopt import expected_returns
df=pd.read_csv('portfolio.csv')
df.head(2)
                XOM        RRC        BBY         MA        PFE       
date
2010-01-04  54.068794  51.300568  32.524055  22.062426  13.940202 
2010-01-05  54.279907  51.993038  33.349487  21.997149  13.741367
# 期待年率リターンと標本共分散を計算
mu = expected_returns.mean_historical_return(df)
Sigma = risk_models.sample_cov(df)
Pythonで学ぶポートフォリオ分析入門

効率的フロンティアとウェイトの取得

# 期待年率リターンとリスクを計算
mu = expected_returns.mean_historical_return(df)
Sigma = risk_models.sample_cov(df)
# 効率的フロンティアを取得
ef = EfficientFrontier(mu, Sigma)
# 選択した最適ポートフォリオを取得
ef.max_sharpe()
Pythonで学ぶポートフォリオ分析入門

最適化のバリエーション

# 最大シャープレシオのポートフォリオを選択
ef.max_sharpe()
# 目標リスクに対する最適リターンを選択 
ef.efficient_risk(2.3)
# 目標リターンに対する最小リスクを選択
ef.efficient_return(1.5)
Pythonで学ぶポートフォリオ分析入門

リスクとパフォーマンスを算出

# パフォーマンスを取得
ef.portfolio_performance(verbose=True, risk_free_rate = 0.01)
期待年率リターン: 21.3%
年率ボラティリティ: 19.5%
シャープレシオ: 0.98
Pythonで学ぶポートフォリオ分析入門

ポートフォリオを最適化しよう!

Pythonで学ぶポートフォリオ分析入門

Preparing Video For Download...