现代投资组合理论

Python 中的定量风险管理

Jamsheed Shorish

Computational Economist

风险—收益权衡

  • 风险因子:影响收益的不确定性来源
  • 直观上:不确定性越大(风险更高)需以更高收益补偿
  • 无法保证收益:需度量预期收益
    • 历史平均收益:未来预期收益的代理
Python 中的定量风险管理

投资者风险偏好

  • 投资者调研:给定风险水平下的_最低_要求收益?
  • 调研回复形成(风险、收益)"数据点"
  • 变化风险水平 => 得到一(风险、收益)点
  • 投资者风险偏好:定义一条量化的风险—收益关系
Python 中的定量风险管理

选择组合权重

  • 调整_给定_组合的资产权重 => 生成一组(风险、收益)点
  • 调整权重 = 风险管理的起点!
  • 目标:在_给定_风险下最大化预期收益
    • 等价:在_给定_预期收益下最小化风险
  • 调整权重 = 调节投资者的风险暴露
Python 中的定量风险管理

现代投资组合理论

  • 有效组合:在给定风险下产生最高预期收益的权重
  • 现代投资组合理论(MPT),1952
    • H. M. 马科维茨(1990 年诺奖)
  • 有效组合权重向量 $w^\star$ 求解:

求解有效组合的优化问题公式

Python 中的定量风险管理

有效前沿

  • 针对不同风险水平计算多组有效组合
  • 有效前沿:由有效组合形成的(风险、收益)轨迹
  • PyPortfolioOpt 库:MPT 优化工具
    • EfficientFrontier 类:一次生成一个最优组合
    • 约束线算法CLA)类:生成整个有效前沿
      • 需收益的协方差矩阵
      • 需未来预期收益的代理:历史平均收益
Python 中的定量风险管理

投行投资组合 2005–2010

  • 预期收益:历史数据
  • 协方差矩阵Covariance Shrinkage 提升估计效率
  • 约束线算法 对象 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 中的定量风险管理

可视化有效前沿

  • (波动率、收益)散点图

将有效前沿绘制为一系列(风险、收益)点的图

Python 中的定量风险管理

可视化有效前沿

  • (波动率、收益)散点图
  • 最小方差组合:所有有效组合中波动率最低

有效前沿图上突出显示最小方差组合

Python 中的定量风险管理

可视化有效前沿

  • (波动率、收益)散点图
  • 最小方差组合:所有有效组合中波动率最低
  • 风险偏好上升:沿前沿移动

沿有效前沿移动的箭头,表示更高风险与更高回报

Python 中的定量风险管理

Vamos praticar!

Python 中的定量风险管理

Preparing Video For Download...