前庭概要
先看一下前面提到的“风险分担”。通过调整收益变化的概率分布,使其变动范围逐渐“接近”中间,从而达到降低风险的目的(如下图所示,想知道具体内容的合作伙伴是前一句话)。事实上,这种“向中间移动”的实现也被称为最小化方差(或最小化标准差)。
现代投资组合理论
现代投资组合理论(Modern Portfoilio Theory)的核心思想是以“最小化收益率变化分布、最大化预期收益”为目标构建资产。也称为平均-方差分析,是金融。
我们“设计”了一个投资组合,假设由两种股票组成,两种股票的收益率遵循正态分布(平均0)。通过程序仿真进行了仿真。
你可以看到,青绿色的双线表示“股票”的收益率变化。接下来,我们再定义两个函数。
1、权重函数:用于为2支股票分配随机权重。
2、投资组合配置函数:调用加权函数生成不同的投资组合,计算这些投资组合下的预期收益和方差。
此时数据已经准备好了。我们随机挑选了500个投资组合。(需要注意的是,构成投资组合的这两种股票的平均收益率是可以计算的固定值,在合成投资组合时,由于构成的权重不同,投资组合的收益率和方差也不同。)
现在,让我们以图形方式来看一下投资组合的特性。为了更直观地分析,请转换实用程序-收入轴。横轴是收益率的标准差,纵轴是预期收益率。
通过可视化可以观察到形成抛物线,例如“子弹”。线上的每个蓝点代表不同权重比例的投资组合。我们称抛物线的一半为有效边界。对于有相同风险(分散)的两点,投资者追求更高的预期收益率。
实际上,随着构成投资组合的股票数量的增加,子弹区域逐渐填满,下图是由四种股票组合不同权重组成的投资组合特征图。
此时有效边界仍然有效。因为在其他位置的所有点,在有效边界上,可以找到风险相同、收益更高的对应点。
包括矢量计算、拉格朗日乘子和二次规划问题,如有效边界求解。幸运的是,Python的第三方库已经包含了可以调用的现成方法。我们将在下面做一个简短的说明。
首先,根据已知条件,有以下数据(或通过简单计算获得):
1、股票平均价格向量p: (P1、p2,pn),记录n个股票指定交易日内的每个平均价格。
>2、股票方差向量 S2:记录着n只股票各自收益率的离散程度
3、n * n 的协方差矩阵 C:记录着n只股票相互收益率变化趋势之间的相关程度。
另外,我们假设一个带求解的可变向量 w:(w1,w2 ,...,wn) ,记录着股票的配置比例(权重)。
由此我们得到:
投资组合的期望收益 R = wT · P(按w对各股票期望收益加权平均)
投资组合的方差 V = w · C ·wT,之所以不使用 wi2Si2 ,是因为简单的加权平方,只考虑了资产本身的离散程度,而遗漏了资产相互间的相关影响,因此我们引入C 这个 N x N 的协方差矩阵:
等价于:
它的对角线的值代表每个资产的自身的方差,而对角线以外的值则是代表资产之间的方差。
那么结合我们刚才说到的投资组合图形,我们需要找的,就是图中方差最小的那个点,也即最左侧的那一点,也就是使投资组合方差 w · C · wT 最小化。
这里我假设各位都已经把那些大学里艰涩难懂的线性代数,微积分等数学知识以往的差不多了,因此并不做具体推导,后续我可能会把具体推导过程挂在网盘上供有兴趣的同学下载。在这里不做展开。
代码实现
我们可以利用Cvxopt库来求解得到最左侧的红点所对应的权重分配,具体代码如下:
通过该方法,我们得到了最小方差的权重分配参数 w 向量:
在下一章中,我们将会展示如何在量化交易回测中应用上述方法。