現代投資組合理論

Python 量化風險管理

Jamsheed Shorish

Computational Economist

風險—報酬權衡

  • 風險因子:影響報酬的不確定性來源
  • 直觀:不確定性越大(風險越高)需以更高報酬補償
  • 無法保證報酬:需要期望報酬的衡量
    • 歷史平均報酬:作為未來期望報酬的替代
Python 量化風險管理

投資人的風險偏好

  • 投資人調查:在特定風險水準下的_最低_可接受報酬?
  • 回覆形成一個(風險、報酬)風險輪廓「資料點」
  • 調整風險水準 ⇒ 產生一組(風險、報酬)點
  • 投資人風險偏好:定義風險與報酬的一組量化關係
Python 量化風險管理

選擇投資組合權重

  • 變動_既定_投資組合的資產權重 ⇒ 產生一組(風險、報酬)配對
  • 調整權重=風險管理的起點!
  • 目標:在_既定_風險下,調整權重以最大化期望報酬
    • 等價地:在_既定_期望報酬下,最小化風險
  • 調整權重=調整投資人的風險曝險
Python 量化風險管理

現代投資組合理論

  • 效率投資組合:在給定風險下帶來最高期望報酬的權重組合
  • Modern Portfolio Theory (MPT),1952 年
    • H. M. Markowitz(1990 年諾貝爾獎)
  • 效率投資組合權重向量 $w^\star$ 滿足:

求解效率投資組合的最佳化問題方程式

Python 量化風險管理

效率前緣

  • 針對不同風險水準計算多個效率投資組合
  • 效率前緣:由效率投資組合形成的(風險、報酬)軌跡
  • PyPortfolioOpt 函式庫:MPT 的最佳化工具
    • EfficientFrontier 類別:一次產生一個最適組合
    • Constrained Line AlgorithmCLA)類別:產生整條效率前緣
      • 需要報酬的共變異數矩陣
      • 需要未來期望報酬的替代:歷史平均報酬
Python 量化風險管理

投資銀行投組 2005 - 2010

  • 期望報酬:來自歷史資料
  • 共變異數矩陣Covariance Shrinkage 改善估計效率
  • Constrained Line Algorithm 物件 CLA
  • 最小變異數組合cla.min_volatility()
  • 效率前緣cla.efficient_frontier()

 

expected_returns = mean_historical_return(prices)

efficient_cov = CovarianceShrinkage(prices).ledoit_wolf()
cla = CLA(expected_returns, efficient_cov)
minimum_variance = cla.min_volatility()
(ret, vol, weights) = cla.efficient_frontier()
Python 量化風險管理

視覺化效率前緣

  • (vol, ret)散佈圖

以一系列(風險、報酬)點繪製的效率前緣圖

Python 量化風險管理

視覺化效率前緣

  • (vol, ret)散佈圖
  • 最小變異數組合:所有效率組合中波動最小者

在效率前緣圖上標示的最小變異數組合

Python 量化風險管理

視覺化效率前緣

  • (vol, ret)散佈圖
  • 最小變異數組合:所有效率組合中波動最小者
  • 風險偏好提高:沿著前緣向上移動

沿效率前緣朝更高風險與更高報酬方向移動的箭頭示意

Python 量化風險管理

一起來練習吧!

Python 量化風險管理

Preparing Video For Download...