Py学习  »  机器学习算法

擅长机器学习的CFA3级好友小豪开号啦!

kaggle竞赛宝典 • 1 年前 • 177 次点击  


↑↑↑关注后"星标"kaggle竞赛宝典
   kaggle竞赛宝典  
作者:小豪

结构化多因子风险模型的前世今生

简介

小豪是一名擅长机器学习,同时也是三级CFA,最近他也开号了,对量化机器学习感兴趣的朋友可以关注他的公众号。

本系列希望为读者建立对“结构化风险模型”的感性认知,而不牵涉太多的细节内容,我们在许多地方看到过Barra模型,但如果想要了解Barra模型,往往这些介绍都默认了读者有一定的金融知识基础。因此本系列将介绍与Barra模型相关的先验金融知识,通过串讲,相信你再阅读与“结构化多因子风险模型”或者“Barra CNE 模型”相关内容时,会得心应手。

这个系列会涵盖以下内容:

  • 马科维茨 均值-方差理论 Markowitz Mean-Variance Model
  • 有效前沿 Efficient Frontier
  • 资本配置线 Capital Allocation Line
  • 资本市场线 Capital Market Line
  • 方差-协方差矩阵 Variance Co-variance Matrix
  • 专题:结合Barra CNE5 模型案例分析
    • 概述
    • 框架
    • 推导
    • 运用

每个章节都会配一个小的Takeaway作为记忆点, 只要对这个记忆点理解就行啦,一些常用的英文表达也会贯穿于文中,方便大家记忆。


马科维茨 均值方差理论 Markowitz Mean-Variance Model

背景

1952年哈里马科维茨发表了一篇题为“证券组合选择”的论文,标志着现代证券组合理论的开端。

在单期投资中,投资者分别以预定资金比例(weights)购买并持有的一个证券组合(portfolio)到期末,马科维茨模型试图通过优化(optimization)投资组合, 来获取风险(risk)和收益(return)的最佳点。

Takeaway:比例(weights),风险(risk),收益(return),优化(optimization),我们常说的MPT(Markowitz Portfolio Theory)其实就是这一套理论。

三大假设

在马科维茨的这套理论中,蕴含了以下三种假设:

  • 单一投资期:即这些投资是单期的(如一年期),如果要做多期的,那么这套理论并不适合,我们需要借助蒙特卡洛来实现(以后也会讲到);
  • 流动性高:无交易成本,且投资者可以买到任何想投资的产品;
  • 理性人:投资者基于最优均值方差选择,我们知道方差用于衡量资产的波动率(即收益不确定性),即投资者在波动率相同的情况下,选择收益最大的产品。(关于波动率的介绍可以参考作者另外一篇文章)

其实若要深究,MPT理论背后的假设还有很多:例如资产无限可分、允许无限做空等等,这里不做过分展开,但是记住在这里的假设中,我们的投资资产不包括无风险资产(如国债),这里做一点强调。到后面的环节中我们会做说明。

理论基础

有了上述概念,我们就知道了MPT理论在做什么:给我们一堆资产(或者说金融产品), , ...

用最简单的收益均值和方差来刻画每一个资产

那么每个资产该投多少钱,或者说每个资产配置多少权重,构建一个投资组合,我们才能追求风险最小的时候,收益最大呢?这就是马科维茨均值方差理论(Markowitz Mean Variance Model。下面我们用数学符号来表达一下,会更加清晰

考虑一个投资组合,其中每种资产的权重为,期望收益分别 ,组合期望收益为 其中 代表第种资产的随机变量。

因此在假设条件下,组合期望收益为

,其中, 该组合的风险用收益的方差衡量,收益方差可以表示为
,其中矩阵 为资产之间的收益协方差矩阵,可以表示为


Takeaway:这个组合的收益均值为,所要承担的风险,即收益方差为,优化的目标就在收益均值和收益方差之间做平衡(trade off), 做不同的目标优化,如:

  • 1、给定最小要求收益率,最小化风险

    s.t.


  • 2、给定最高风险承受,最大化收益

    s.t.


  • 3、多目标问题: 给风险和收益的比例参数后,最小化它们的混合

s.t.

如果追求收益,可以把设置的更大,如果追求稳定,可以把设置的更小,让优化目标更侧重于最小化风险项。

Takeaway:至此上述三个优化目标,希望读者已经有了认知,因为后面到结构化风险因子模型、Barra模型我们会围绕这三个目标展开。

举例说明

说了这么多,我们用两个简单的例子来强化对MPT理论的认知

  • 有且仅有两个可投资产

    假设资产A,B收益率分别为, , 方差分别为, , 两个资产相关性的为, 两个资产投资权重分别, 那么很简单的可以得到这个组合的期望收益,期望方差分别为:

    当然要满足

    带入具体数字,假设资产A,B收益率分别为5%,8%,波动率分别为10%,20%,对于资产A的投资权重为 ,相关系数取值从-1到1,资产A权重从0到1,研究不同的资产相关性下,投资组合的收益与风险情况。

import numpy as np
import pandas as pd
def portfolio1(ra,rb,sa,sb,rho,wa):
    wb = 1 - wa
    rp = wa*ra + wb*rb
    sp = ((wa**2)*(sa**2) + (wb**2)*(sb**2) + 2*wa*wb*sa*sb*rho)**0.5
    return rp,sp

ra = 0.05
rb = 0.08
sa = 0.1
sb = 0.2
rho = np.arange(-10,11,2)/10
wa = np.arange(101)/100

result = pd.DataFrame(columns = ['rho','wa','rp','sp'])
for rhos in rho:
    for was in wa:
        rp,sp = portfolio1(ra,rb,sa,sb,rhos,was)
        x = pd.DataFrame([rhos,was,rp,sp]).T
        x.columns = ['rho','wa','rp','sp']
        result = result.append(x)
result = result.reset_index(drop = True)

plt.figure(figsize=(16,9))
for i in rho:
    datas = result.loc[result.rho ==i]
    plt.scatter(datas.sp,datas.rp,marker = 'o',label = 'rho = '+ str(i))
plt.legend()
plt.xlabel('sigma',fontsize = 20)
plt.ylabel('r',fontsize = 20)
plt.show()

从我们看到每一条曲线的拐点上半部分都是一个有效的可投资点,因为在相同的风险性(标准差)下,理性人会选择期望收益大的组合投资。这就是我们所谓的有效前沿Efficient Frontier。

Takeaway: 从图中观察两个资产完全正相关时,有效前沿退化成直线;当两个资产完全负相关时,有效前沿退化成双直线。随着两资产相关性的降低,同样的期望收益下,最优组合的风险越来越低,这就是我们常说的投资分散化带来的优势。

  • 有多个可投资产(待续)

    固定多个可投资产的收益期望,收益协方差矩阵,我们通过调整资产配置的权重,继续绘制收益与风险的二维散点图,我们即将深化”有效前沿 Efficient Frontier“的概念。

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/135071
 
177 次点击