大家好,我是橙哥!在风云变幻的交易市场中,做出明智的投资决策对于最大化回报同时最小化风险至关重要。投资者手中的一个关键工具是投资组合优化,它有助于选择最佳的资产分配以实现预期的投资目标。无论你是经验丰富的投资者还是新手,理解和应用投资组合优化技术都能显著增强投资策略。在本文中,我们将深入了解使用 Python 进行投资组合优化的基础知识。我们将利用 skfolio 库,这是一个专为金融投资组合优化设计的综合工具包,来演示如何加载金融数据、预处理数据并将其分为训练集和测试集来进行投资组合优化。通过本文的学习,你将掌握优化投资组合的基础知识,具备做出更明智投资决策的技能。投资组合优化是选择各种资产在投资组合中的比例,以使投资组合根据某些标准变得更好的过程。通常,这涉及平衡风险与回报之间的权衡,以实现最佳的投资结果。这一过程基于现代投资组合理论(MPT),该理论由 Harry Markowitz 在 1950 年代引入。MPT 建议投资者可以通过构建包含多种资产的投资组合,在给定风险水平下最大化回报或在给定预期回报水平下最小化风险。Python 已成为金融分析和量化金融的首选编程语言,因为它拥有强大的库和工具生态系统。像 pandas、numpy 和 scikit-learn 这样的库提供了强大的数据操作和分析能力,而像 skfolio 这样的专用库则为投资组合优化提供了量身定制的解决方案。Python 的多功能性和易用性使其成为实施和测试各种金融模型和策略的理想选择,帮助我们选择使用最有效和高效的工具。
在深入实际代码之前,让我们了解将使用的库以及它们对我们的任务为何至关重要。Population:skfolio中用于表示投资组合候选集的类。
RiskMeasure:用于衡量投资组合风险的类。
load_sp500_dataset:加载S&P 500指数历史价格数据的函数。
EqualWeighted:一种将所有资产在投资组合中分配相等的权重的策略。
MeanRisk:一种基于均值-方差优化的投资组合优化策略。
ObjectiveFunction:表示要优化的目标函数。
prices_to_returns:将历史价格数据转换为回报的函数,这是投资组合优化所必需的。这些库组成了一个强大的工具包,用于实现和分析投资组合优化技术。既然我们已经导入了必要的库,让我们继续加载和准备数据。加载数据集:load_sp500_dataset 函数加载了 S&P 500 指数的历史价格数据。
将价格转换为回报:prices_to_returns 函数将价格数据转换为回报,这对于投资组合优化至关重要。它计算百分比变化并删除任何缺失值。
拆分数据:我们使用 sklearn 中的 train_test_split 函数将数据拆分为训练集和测试集。这有助于我们评估模型在数据上的表现。
构建投资组合优化模型
接下来,我们构建并拟合一个投资组合优化模型。我们将使用 skfolio 库中的 MeanRisk 类来最小化条件风险价值(CVaR),这是一种衡量投资风险的指标。
模型初始化:我们使用最小化条件风险价值(CVaR)的目标初始化均值-风险模型,并通过portfolio_params为投资组合赋予了一个名称。模型拟合:我们利用训练数据X_train拟合模型。获取权重:拟合模型后,我们使用model.weights_attribute获取优化的投资组合权重。优化后的投资组合权重的输出是一个数组,数组中的每个元素对应于投资组合中的一项资产。以下是优化后的权重数组:非零权重:资产权重主要集中在少数关键资产上。例如,第8、4和14个资产的权重相对较高(例如,2.16562529e-02、1.47358386e-02、1.35927671e-01)。近零权重:一些权重非常接近于零(例如,1.41742527e-10、3.64888981e-11),表明这些资产对优化投资组合的贡献几乎可以忽略不计。这表明由于这些资产的较高相关风险或较低预期回报,模型已将它们排除在投资组合之外。高权重:权重最高的资产(例如,2.10319630e-01、1.52708811e-01)被模型认为在CVaR优化标准下具有更好的风险调整回报。基准投资组合:等权重
为了给我们的投资组合优化提供基准,我们将创建一个等权重投资组合。这种投资组合对每个资产分配相同权重,不考虑其风险或预期回报。这种方法可以作为基准与更复杂的优化策略进行简单而有效的比较。
以下是实施和评估等权重投资组合的步骤:
EqualWeighted 初始化:我们初始化 EqualWeighted 等权重投资组合,为其命名以便识别。拟合模型:尽管等权重投资组合中的权重是预先确定的,不受数据影响,但我们仍然调用 fit 方法以保持与 API 接口的一致性。获取权重:我们使用 benchmark.weights_ 属性获取基准投资组合的权重。等权重组合的权重输出是一个数组,其中每个元素代表分配给特定资产的权重。由于这是等权重组合,每个资产的权重相同。
等权重分配:等权重投资组合为投资组合中的每项资产分配5%的相同权重。简单性和多样化:这种方法通过将投资平均分配到所有可用资产中,确保了最大程度的多样化,从而减少任何单一资产的业绩对整个投资组合的影响。作为基准的比较:等权重投资组合作为基准,用于比较更复杂的优化策略的表现。它提供了一个基准,以评估诸如均值-风险优化等高级方法是否能提供更优越的风险调整回报。在拟合我们的投资组合优化模型后,评估它们在数据上的表现至关重要。我们将使用测试集进行预测,并将我们优化后的投资组合的表现与等权重基准进行比较。模型预测:我们使用优化模型的预测方法在测试数据(X_test)上生成预测。
基准预测:同样,我们使用等权重基准的预测方法在相同的测试数据上生成预测。
转换为数组格式:我们将优化模型的预测并转换为NumPy数组格式,以便于处理和分析。
模型预测的输出是一个数组,其中每个元素代表测试集中每个时间段的预测回报:
预测值:数组中的每个值代表优化投资组合在测试数据中相应时间段内的预期回报。预测范围:预测值随时间变化,反映模型对投资组合在不同市场条件下表现的估计。为了评估投资组合优化模型相关的风险,我们可以计算条件风险价值(CVaR)。CVaR是一种风险评估指标,用于估计在超过指定置信水平的极端情况下投资组合的预期损失。CVaR常用于量化投资组合在不利市场条件下的潜在损失。以下是计算并比较优化模型和等权重基准CVaR的过程:3、计算CVaR,即在超过置信水平的损失分布中的预期损失。4、比较优化模型和等权重基准的CVaR值,评估两者的风险水平。优化模型的CVaR:0.0217
该值表示,在最坏情况下,优化投资组合的预期损失约为2.17%。
基准CVaR:0.0251
该值表示,在最坏情况下,等权重投资组合的预期损失约为2.51%。
比较分析
优化模型的CVaR值较低:优化模型的CVaR(2.17%)低于基准(2.51%)。这表明,在最坏情况下,优化投资组合的预期损失较低,使其相对于等权重投资组合而言风险较低。
风险降低:通过均值-风险优化策略,CVaR的降低展示了其在最小化风险方面的有效性。通过专注于最小化CVaR,优化投资组合在管理潜在极端损失方面比等权重基准更有效。
可视化投资组合的构成
为了更好地理解我们的优化投资组合与等权重基准之间的差异,我们可以可视化每个投资组合的构成。以下代码生成一个图表来比较资产分配:
输出是两个投资组合中资产配置的直观展示。以下是生成图表:
投资组合名称:图表展示了两个投资组合:“最小CVaR”和“等权重”。
资产:每种颜色代表一种不同的资产。
权重:y轴显示了各资产在投资组合中的权重,范围从0%到100%。
最小CVaR投资组合:优化后的投资组合(最小CVaR)具有更集中的分配,少数资产被分配了更高的权重。这表明优化过程已经识别出能够最小化风险的特定资产,从而形成了一个集中度较高但风险可能较低的投资组合。
等权重投资组合:等权重投资组合将权重均匀分配给所有资产,形成一个高度分散的投资组合。每个资产都获得5%的等权重,确保没有任何单一资产主导投资组合。
累计收益图
累计收益图展示了投资组合的收益随时间累积的情况,可以帮助我们理解最小CVaR投资组合与等权重投资组合的长期表现。
绘制累计收益曲线:Population类的plot_cumulative_returns方法生成一个图表,显示投资组合随时间的累计收益曲线。
展示图表:plotly.io模块中的show函数展示生成的图表。
该图表展示了两个投资组合随时间的累计回报。累计回报表示从开始到某一特定时间点的资产或投资组合的总回报。回报趋势:最小CVaR投资组合用蓝线表示。该投资组合随时间呈上升趋势,但其累计回报低于等权重投资组合。
风险管理:最小CVaR投资组合旨在以较低风险运作,可能在市场下跌时提供更好的韧性。
回报趋势:等权重投资组合用红线表示。该投资组合实现了更高的累计回报,但可能承担更高的风险。多样化:该投资组合通过为所有资产分配相等的权重来实现最大程度的多样化。风险-回报权衡:最小CVaR投资组合以较低的回报换取降低的风险,而等权重投资组合则提供更高的回报,但可能面临更高的风险。表现比较:两个投资组合都提供了正回报,但最小CVaR投资组合可能提供更多的稳定性和对市场波动的保护。最小CVaR和等权重投资组合的表现总结提供了各种风险和回报指标的综合比较。以下是总结表格及其解释:风险、回报与回撤指标的解读
平均回报:最小CVaR投资组合的平均日回报(0.052%)低于等权重投资组合(0.069%)。年化平均回报:按年计算,最小CVaR投资组合的回报为13.07%,而等权重投资组合的回报为17.30%。方差与标准差:最小CVaR投资组合的日方差(0.0090%)和标准差(0.95%)低于等权重投资组合(0.012%方差和1.08%标准差)。这表明最小CVaR投资组合的波动性较低。半方差与半标准差:最小CVaR投资组合的半方差(0.0046%)和半标准差(0.68%)也较低,这些指标衡量下行风险。CVaR与EVaR在95%的置信水平:在95%的置信水平下,条件风险价值(CVaR)和预期风险价值(EVaR)对于最小CVaR投资组合(分别为2.17%和4.62%)低于等权重投资组合(分别为2.51%和5.43%)。最大回撤:两个投资组合的最大回撤均为34.70%,表示从峰值到谷底的最大观察损失。平均回撤:最小CVaR投资组合的平均回撤(3.12%)略高于等权重投资组合(2.67%)。夏普比率:夏普比率衡量每单位风险回报,最小CVaR投资组合的夏普比率(0.055)低于等权重投资组合(0.064)。年化夏普比率也遵循相同趋势。索提诺比率:专注于下行风险的索提诺比率,最小CVaR投资组合的比率(0.076)也低于等权重投资组合(0.088)。有效资产数量:最小CVaR投资组合的有效资产数量为7.46,表明其多元化程度低于等权重投资组合,后者有效资产数量等于总资产数量(20)。最小CVaR投资组合在各种财务指标上显示出较低的风险,但也带来较低的回报。等权重投资组合提供更高的回报,但伴随着更高的风险。最小CVaR投资组合和等权重投资组合的比较有助于我们理解不同投资组合优化策略之间的风险与回报权衡。