在证券交易中,为了降低风险,经常使用一笔资金购买多支股票。那么,如何合理地选择证券组合,并确定每支证券的资金分配系数,以使预期风险最低,预期收益最高,就成了一个经典的经济学问题 – 证券投资组合优化问题。
马科维茨均值-方差模型(Markowitz Mean-Variance Model)是一种用于求解证券投资组合优化问题的数学模型。本文改进了一种多元函数连续域蚁群算法,用于求解马科维茨均值-方差模型。
在蚁群算法中,一只蚂蚁代表一个投资组合P={x1,x2,⋯,xn}。通过马科维茨理论,我们可以计算出该投资组合P对应的均值和方差。将均值、方差绘制在r-σ二维空间上,可以观察各个投资组合之间的帕累托关系。帕累托关系有三种可能情况:明显优于
、明显劣于
和无法比较优劣
。这些无法比较优劣的点的集合,最终构成一条有效边界曲线。
本文以一种二元函数连续域蚁群算法为蓝本,改进为n元函数连续域蚁群算法。原算法效果如下:
众所周知,绘图最高只能画到三维,恕我无法直观地表达n元函数连续域蚁群算法的效果。但是最终效果可以从求解马科维茨均值方差模型的近似求解中看出来。详细效果见后文。
研究结果如下图。从图中可以看出,蚁群算法的解形成了清晰的Pateto有效前沿。而且解的分布范围广,说明该算法具有良好的搜索能力,能保证结果的多样性。
和MATLAB金融工具箱相比,因为蚁群算法的迭代次数较多,对解的探索能力强,因此整体而言,蚁群算法的解要优于MATLAB金融工具箱的解。
为了进一步验证本文设计的蚁群算法的算法性能,我们选取了前3只股票。即在n=3的情况下,暴力计算了有效市场边界。下图表示了MATLAB金融工具箱、蚁群算法、暴力算法的结果比较:
从图中可以看出,蚁群算法确实优于金融工具箱的解,和真实的有效市场边界更为接近。