基金网 ,专业服务基金投资人

    设为首页   加入收藏



首页>>新闻详细
基于 Python 的投资组合优化模型的设计与应用探讨
中国基金网 时间: 2023-05-18 10:40:09 来源:上海沪创投资管理有限公司 高清海 庄莹莹 郭全强
大赛简介 比赛规则 大赛奖项设置

[中国基金网18日讯]Columbia University Qing Li,Ziyao Gao

Amcreative Investment (LA) Inc. Mo Li

摘要:

马科维茨模型是一种广泛使用的投资组合优化方法,旨在最大化收益并同时最小化风险。该模型基于分散投资的概念,建议投资者通过投资多样化的资产组合来降低整体风险。然而,传统的 Markowitz模型存在一些限制,其中一个主要限制是其对输入参数的微小变化非常敏感,可能导致不稳定和次优的投资组合,以及运算量级过大,实操过程中有难度。为了解决这个问题,并为主动型基金经理组合管理提供一个客观、容易实现的配置参考,我们提出将主观观点与量化配置相结合,并给出了基于马科维茨模型优化的 Python 算法,并验证了其在投资组合优化中的应用。

关键词:马科维茨模型,投资组合优化,股票基金,股票收益率,有效前沿,Python 语言,机器学习,智能投资

一、前言

组合优化是金融学中一个基本问题,旨在构建一个资产组合,给定收益率下风险最小化,或给定风险下收益最大化。组合优化的一种常用方法是马科维茨模型,由 Harry Markowitz 于 1952 年提出,也被称为现代投资组合理论(MPT)[1],将大类资产配置带入到了量化配置时代。此模型已经被广泛用于金融学中的投资组合优化问题,不仅限于股票基金,还可用于其他类型的资产组合。

Markowitz 模型在理论上具有开创性意义,但在实践中也遇到了诸多问题,由于许多投资者不熟悉有关的数学知识,不习惯于估计证券间的协方差,以及计算机计算均值的期望收益率不很准确等因素将导致无效的证券资产组合,同时因为风险资产数量众多,估算所有风险资产的相关系数的计算量过大,实操过程中有难度。为了解决这个问题,在本文中,我们提出了 Python 算法尝试使用夏普比例以及主观与量化相结合对 Markowitz 模型进行优化。

优化马科维茨模型的一种方法是使用夏普比率。夏普比率衡量的是投资组合的超额收益超过单位波动率的无风险收益率,它是由威廉·夏普(William Sharpe)于 1966 年提出的,已经成为一种被广泛接受的评估投资组合风险调整后绩效的工具。夏普比率用于投资组合优化,以构建在给定风险水平下提供更高回报的投资组合。通过纳入风险调整绩效指标,投资者可以构建比使用传统马科维茨模型构建的投资组合更有效的投资组合。

二、文献综述

马科维茨现代投资组合理论(MPT)的目的是寻找给定收益下风险最小化或给定风险下收益最大化的投资组合,这些组合构成了有效前沿,并根据效用函数得到最优投资组合。多年来,随着学术界不断对这一理论进行完善、优化,MPT 经过了多次演变,1964 年 William Sharpe、John Lintner等引入的资本资产定价模型(CAPM)扩展了马科维茨的工作[2]。CAPM 是描述资产预期收益与风险之间关系的模型,它提供了一种基于风险和整体市场预期回报来确定证券预期回报的方法。1966 年威廉·夏普(William Sharpe)引入了风险调整收益的概念,他称之为夏普比率(Sharpe Ratio)。夏普比率衡量的是投资组合的超额收益超过单位波动率的无风险收益率[3]。这一概念已成为投资者评估其投资组合风险调整后绩效的重要工具。在 20 世纪 80 年代和 90 年代,研究者开始探索传统均值-方差优化模型的局限性。均值-方差模型的一个关键限制是,它假设资产的回报是正态分布的,而事实并非总是如此。1982 年 Robert Engle 等研究人员开发了自回归条件异方差(ARCH)模型,可以解释非正态收益分布和波动聚类[4]。1991 年 Fisher Black 和 Robert Litterman 也提 出了关于马科维茨参数敏感性的改进方式,形成著名的 Black-Litterman 模型[5]。

已有研究使用夏普比率来优化马科维茨模型。一些研究发现,将夏普比率纳入投资组合优化可以提高投资组合的风险调整绩效。例如,Ferson、Schadt(1996)的一项研究发现,使用夏普比率来优化马科维茨模型的投资组合比使用传统马科维茨模型构建的投资组合具有更高的夏普比率[6]。国内也有许多学者对马科维茨模型的有效性进行了研究,戴玉林(1991)对马科维茨模型进行了分析和评价,指出了其存在的不足,如将方差作为测度风险的参数是不科学的,应将其修正为半方差等问题[7];王淑燕等(2014)对马科维茨均值-方差理论的算法进行了优化[8]。李斌(2018)等将 VaR模型应用到均值方差模型中,提出序列相关性有助于提高证券投资组合的样本外表现[9]。

三、基金组合管理中全主观与全量化的特点与矛盾

完全主观的投资组合管理是一种方法,其中投资决策完全基于基金经理的主观判断。基金经理利用自己的经验、专业知识和直觉,结合考虑宏观经济趋势、市场情绪和地缘政治事件等定性因素来构建投资组合。 纯主观投资具有较高的灵活性和适应性。基金经理可以根据市场变化或新的投资机会快速调整投资组合。 然而,完全主观的投资组合管理的缺点在于缺乏客观性和透明度。投资决策基于主观判断,可能会受个人偏见或情感影响。基金经理也可能缺乏投资选择和投资组合构建的系统方法,这可能导致表现不佳或增加风险。

完全量化的投资组合管理是另一种方法,其中投资决策完全基于量化模型和算法。基金经理使用数学模型和统计分析来选择投资并构建投资组合。 纯量化投资,可以减少个人偏见或情感的影响。基金经理还可以提供明确和系统的投资选择和投资组合构建方法。 然而,量化模型可能无法捕捉所有市场情况或投资机会,并且可能还受到数据误差或模型假设的影响,缺乏灵活性和适应性。基金经理也可能会错过没有被模型捕捉到的新趋势或市场异动。

纯主观和纯定量投资组合管理之间并不是割裂的,许多基金经理采用了两种方法的结合,将主观判断和定量分析相结合,以提高投资决策的准确性和有效性。 在当前数字时代的环境下,数据的收集和分析能力变得越来越重要,这为定量投资组合管理提供了更多的机会和优势。但是,仅仅依靠数据和模型来进行投资决策也存在一定的风险和不足。因此,在投资组合管理中,需要对主观和定量方法进行合理的组合和应用,以确保投资决策的准确性和有效性。

四、基于 Python 算法的基金组合构建

尽管马科维茨模型是一种广泛使用的投资组合优化技术,但由于其依赖于在现实世界中不成立的假设,因此在实际应用中存在一定的局限性。具体而言,该模型假设预期收益和波动率是恒定的,并且可以准确地估计,这并不总是成立的。 为了解决这些限制,我们引入夏普比率作为一种风险调整的绩效指标,可用于投资组合优化。然后结合夏普比率与 Markowitz 模型开发了 Python 算法,目的是通过优化权重分配来获得最优的资产组合,基于历史数据运算得到具体的配置比例,即最优投资组合配置。

我们开发的 Python 算法使用 Pandas 库对数据进行预处理,计算股票的收益率和协方差矩阵,并采用马科维茨模型进行资产组合优化,优化过程采用随机权重分配的方法进行模拟,最终得到了一个最优的资产组合。

(一)Python 算法的主要功能如下:A.估计资产的预期收益和波动性

为了估计资产的预期收益和波动性,该算法使用了历史模拟方法,包括计算过去五年每日收益的平均值和标准差。假设过去的收益是未来收益的一个很好的估计,并且收益是正态分布的。

B.构建有效边界

利用估计的预期收益和资产的波动率,使用马科维茨模型构建了有效的投资组合边界。有效边界表示在给定风险水平下提供最高预期回报的投资组合集合。

C.计算组合的夏普比率

夏普比率是一个衡量所承担的每单位风险可以实现多少超额回报的指标,使我们能够比较具有不同风险特征的投资组合。

D.基于夏普比率的最优投资组合选择

使用夏普比率作为风险调整后的绩效衡量标准,选择了提供最高夏普比率的最佳投资组合。通过 Python 算法运算后输出的最优权重可以实现最高的夏普比率,从而优化了基金经理根据其认知和能力提出的投资组合计划。

E.可视化处理

该算法还使用了 Matplotlib 库,对优化结果进行了可视化处理。

(二)实证分析

1、数据选择:

首先将基金经理的主观认知作为新的信息,按照主观观点选择一组股票。本文中用到的资产数据来源于 Bloomberg,实战中选择的 10 只股票为:

AMLP,APTV,AVGO,BABA,ORCL,STM,TCOM,UAL,UBER,VIAC,ZNGA,选取从股票上市以来至2023 年 3 月 31 日区间的股票日收盘价为基础计算,并以最小时段对数据做对齐,使用 Excel 表格计算其日收益率,形成一个可以供系统读取的数据库,存放在 D 盘当中。

2、启用我们设计的 Python 软件工具对上述资产价格进行运算,得到以下结果:

(1)有效边界呈曲线状,表明风险与收益之间存在权衡。最优组合的夏普比率明显提高,说明其风险调整后的收益高于其他组合。


(2)最优配比

通过运算得出 10 只股票的优化权重参见附表一。从这些数据可以看出该系统明显高配了稳定增长的、从事芯片技术的博通(AVGO)和数据库系统股票(ORCL)比例都超过了一倍;明显低配了低增长的石油天然气基础设施股(AMLP),以及高波动的阿里巴巴(BABA)和美联航(UAL)等股票。这与人们的主观认知一致,但是为基金经理提供了一个量化的参考。

(3)实证检验。以 2021 年 3 月 31 日十个股票的日收盘价作为基础,考察到 2023 年 3 月 31日期间的持平(参见附表二)、下跌(参见附表三)与上涨(参见附表四)阶段的组合表现,得到以下验证结论:在指数持平阶段优化后加权收益率为 6%,而均权收益率为-6%,两者相差 12 个百分点;在指数下跌(-6.9%)阶段, 加权收益率为 1.8%, 均权收益率为-9.2%,两者相差 11 个百分点;在指数上涨阶段加权收益率为 13%,均权收益率为-2.5%。实证三个阶段加权收益率都明显高过均权收益率。这期间股市受到了疫情、战争、货币扩张与紧缩的各种因素影响,这些负面因素对高波动率股票有更多的不利影响,固然系统仅从历史数据得出的权重配置建议,并不能预测未来的事件的发生,但却很好地减少了组合对这些风险暴露。表面看起来,在这两年作为一个短周期里面,系统的建议取得成功有一定偶然性,但是从基金经理主观角度来看,这些事件的发生,除了降息、加息周期有规律可循,其他事件一样是不可预测的,所以系统的建议并没有增加基金经理管理组合风险的难度。

3、使用 Python 算法优化组合的优缺点

(1)系统本身的优缺点。首先可以使基金经理的工作效率大大提高。以往需要很强的数学和金融工程部门专业人员支持才能实现的功能,现在基金经理自己就可以很快测试不同的品种加入或者剔除组合对基金组合风险收益特征的影响。建立根据我们实践中检验,马科维茨模型的 Python 算法是一个投资组合优化的便捷工具,其根据历史数据可以简洁地计算出优化的投资组合(每加入或者剔除一个股票几分钟即可完成),相比全程手动用 EXCEL 表格(可能花费几个小时)大大简化了计算的工作量。

(2)底层运算仍有提升空间。Python 系统语言非常干净清晰,设计优雅,具有出色的模块化特征,适合循序渐进地开发,也是目前比较容易满足机器学习和人工智能在金融投资领域的最好的工具。但是由于其功能较多、矩阵运算量比较大,比如十只股票的组合可能需要比较数万个运算结果,导致其运行速度仍然是比较慢的。解决这个问题,简单的方法比如将系统嫁接到专业数据库上,省却人工导入数据和手工计算日收益率的流程,其运算速度还可以大幅提升。更加高阶一点的方法可以使用 C/C++代码来编写核心代码等。[10]

(3)使用夏普比率来优化马科维茨模型的好处与不足。首先,它提供了一种评估投资组合的风险调整绩效的方法,这在投资组合管理中是至关重要的。其次,它帮助克服马科维茨模型的一些限制,例如估计误差和静态分析,通过提供一个动态的和自适应的投资组合管理方法。虽然我们的分析提供了使用夏普比率在投资组合优化中的有效性方面的有价值见解,但它并非没有局限性。例如,我们的分析仅考虑了有限数量的资产,并未考虑交易成本和流动性约束等因素,这些因素可能对投资组合绩效产生重大影响。未来的研究可以通过扩大样本量并将其他因素纳入分析来解决这些限制。此外,可以通过将其与其他风险调整绩效指标(如 Sorento 比率或 Omega 比率)进行比较来进一步探索使用夏普比率的有效性。

五、Python 组合优化技术对个人养老资产、基金组合、保险资金、银行资金等组合管理都能起到很好的辅助作用。不同的资产因为其用途不一样,收益目标和风险承受能力均不同,甚至同一资产在不同的阶段,还会有不同的变化。对资产组合中的具体标的进行评估也需要不同的参照。

1、个人养老资产。长期看养老资产也是追求长期的稳定增值,但是在一个人的青年阶段,养老资金处在积累阶段,现金支出压力不大,所以可以承受比较高的波动风险,从而可以增加股票类较高风险的配置,而年老阶段则需要稳定的现金支出,需要增加高分红股票和固定收益类资产的配置。在第一阶段投资人可以使用 Python 模型来构建一个基于指数波动率、赚取长期高阿尔法的股票组合,这类股票可能是具有核心竞争力的科技股、品牌消费类股票等。在第二个阶段,则需要以稳定的回报为目标,寻找一组低贝塔的可信任股票比如银行、保险类股票,使用 Python 构建夏普比例最大的组合,加以一定比例的债券和货币基金构建出个人的养老资产组合。

2、基金组合管理。我们以主动管理类的公募基金为例,其盈利的主要方式是依赖基金经理团队的主观挖掘能力,管理目标即业绩比较基准是长期战胜某一个指数,因此使用 Python 组合优化技术可以很好地发挥作用。如果可以在目前的资讯系统中加入本系统,使用专业的数据库,则很容易让基金经理在其熟悉的股票中挑选出能够让组合夏普比例最大化的组合参考。目前,国内外市场已经普遍采用以夏普比例的高低来评价基金,纯主观基金能够长期实现夏普比例大于 1 却是凤毛麟角,因此,基于主观选股的组合量化优化手段应该在公募基金中具有最广泛的使用前景。

3、保险资产的管理。保险公司和大学捐赠基金类似,为了支付投保人的保险利益,需要保证资产回报率维持在一定的水平,比如每年 5%—6%,等于确定了马科维茨模型有效边界中的一条,即寻求一定回报之下的最低风险组合。因此,基于马科维茨有效边界理论的 Python 优化技术,无论对于资产的委托方评价受托人的管理能力,还是对于保险资产的受托端基金经理的组合管理,都具有很好的使用价值。

首先,保险公司作为基金的主要投资者,可以利用该工具高效、便捷地选择基金组合。其次,拥有直接投资股票团队的保险公司也可以使用马科维茨模型来构建股票投资组合。最后,在大类资产配置方面,可以通过模拟指数的方式作为跨资产类别进行资产配置决策的工具,这些资产可能涉及股权、债券和地产等,对这些资产做指数化处理之后,可以使用 Python 技术对组合进行优化。保险公司资产管理端拥有强大的技术团队,对大类资产进行指数化处理并不难。

与保险资金的管理类似,大学的捐赠基金也同样追求为稳定的回报。我们从数百家美国大学基金中选取了部分代表(如附表五),其过去二十年的组合管理业绩表现基本上呈现出高夏普比例和高收益的正相关性。在了解了捐赠基金的基础上,我们可以继续使用 Python 组合优化技术来评价捐赠基金的组合,当然这需要额外的专业力量对组合的对冲基金、股权基金、特殊机会、地产、股票进行指数化处理。在目前的公开资料中,我们还没有搜索到这种评价,但是直观看起来,这些基金在股权类资产的配置上比重偏高,在经历了 2021-2022 年度的风投资产泡沫(贡献了年度 45%以上的估值收益)之后,这些基金 2023 年的年报有可能会披露出现类似美国西部地区银行的倒闭风险。

4、银行资产管理。在银行的资产管理中,马科维茨最优组合理论仍然具有重要的应用价值。银行资产的风险管理目前主要使用 VaR(Value a Risk),以及为此所做的资本充足率要求和违约准备金对风险资产的覆盖率等风控手段,其考量的核心是信贷资产的在一种置信度下资产最大的风险调整后的价值,其原理满足了马科维茨两个边界之一即某种收益条件下的风险最小化,是在资产配置完成之后的事后的、静态的检测,其缺点是一旦风险积累到一定程度将无法通过自身的资本储备弥补风险。而我们设计的系统即某种风险条件下的收益最大化,是组合管理人在构建组合之前和管理过程可以提前降低风险的手段。近年来,随着信贷资产证券化、衍生品化,以及银行直接投资中的股权、股票、债券比例越来越高,估值波动的风险已经成为银行资产的主要风险来源,加上资产与负债在流动性上的错配带来的风险。2023 年以来,以美国硅谷银行为首的大量西部地区性银行倒闭、被接管、被收购,其风险的起源正是科技股估值的泡沫破裂从二级传导到一级的过程,等硅谷银行发现自己的资本金不足以弥补可能的风险、公告准备募集新的资本的时候,该公告被作为负面信息引起存款人的警觉反而加速了风险扩散的过程。而在硅谷银行自己承认风险难以掩饰之前,银行的监管部门如美国加州创新部、美国存款保障银行、美联储以及美国金融监管局均未发现或者预警风险的发生,足以说明VaR、存款保证金比例等常规监管指标失效。

基于此,我们认为作为现金流支出稳定金融机构不能以片面追求资产收益最大化为目标,更应该考虑以稳定收益前提下的风险最小化为目标。无数次危机表明,没有对资产配置的主动的前置风险管理,仅靠事后指标监测难以实现有效的风险预防和化解,而对估值波动风险的衡量正是现代投资组合理论所关要着力解决的问题,因此,我们认为将组合优化技术引入到现代银行的资产管理,是一个非常值得探讨的课题。

当然,需要特别注意的是,任何基于历史数据的优化模型,都不能保证准确预测未来的资产表现,存在这样或者那样的局限性。因此,在实际应用中需要结合前瞻性预测加入最终的投资决策中去。但是,基于对过去的客观、科学的深入研究所形成的结论,可以提醒投资人更加谨慎地对待任何乐观或者侥幸的预期。

参考文献:

[1]Markowitz H.M. Portfolio Selection [J].Journal of Finance.1952(7). 

[2]Sharpe, William F., John Lintner, and Jan Mossin. Capital Asset Price: A theory of MarketEquilibrium under Conditions of Risk [J].Journal of Finance,1964,19(3):425-442.

[3]Sharpe, William F. The Valuation of Risk Assets and the Selection of Risky Investments inStock Portfolios and Capital Budgets[J] .The Journal of Finance ,1966,21(2): 365-394.

[4]Engle, R. F. Autoregressive Conditional Heteroscedasticity and Estimation of InflationVariance in England[J]. Econometrica, 1982,50(4), 987-1007. 

[5]Black F, Litterman R. Global portfolio optimization[J]. Financial analysts journal, 1992, 48(5): 28-43. 

[6]Ferson, W. E., & Schadt, R. W. Measuring fund strategy and performance in changingeconomic conditions[J]. The Journal of Finance, 1996,51(2), 425-461. 

[7]戴玉林. 马科维茨模型的分析与评价[J]. 金融研究 , 1991, 09: 57-63. 

[8]王淑燕,冯昌黎,郑灿畅等.多目标模型在求解投资组合最优解中的应用[J].财经界(学术版),2014(16):5. 

[9]李斌,张迪,冯佳捷.序列相关性在资产组合绩效改善中的作用[J].管理科学,2018,31(04):148-160. 

[10]《Python 与机器学习实战》,编著:何宇健,出版社:电子工业出版社,出版时间:2017 年 7月第一版.

微博 微信