Python用Markowitz有效边界构建最优投资组合可视化分析四只股票 – 拓端 |
您所在的位置:网站首页 › 投资组合边界定义 › Python用Markowitz有效边界构建最优投资组合可视化分析四只股票 – 拓端 |
当时,投资者主要围绕期望收益建立投资组合。Markowitz 解释说,通过结合低相关风险资产,可以实现比单独持有一项资产更好的整体投资组合,或者比简单地选择具有最高期望收益的股票更好。 Markowitz 的整个论文将相关性纳入投资组合构建中。这允许使用高风险和低相关资产构建投资组合,同时与单独拥有每个单独的证券相比,为投资者提供整体较低的投资组合风险! 什么被认为是“更好”的整体投资组合?“_更好_”的投资组合被定义为在给定风险水平下最大化收益的投资组合。风险被定义为我们在 第一部分中介绍的投资组合标准差。 根据现代投资组合理论建立投资组合要建立基于 _MPT_的投资组合,投资者需要以下数据: 资产的期望收益,E(r)。资产的标准差,σ资产与投资组合中持有的其他资产的相关性,corr(X,Y)使用上述数据,我们可以为每种资产随机分配不同的权重,并计算该特定投资组合的收益和标准差。 投资组合示例在下图中,您会发现 50,000 个不同的投资组合,由四种股票组成:股票代码分别为:NOC、AAPL、MSFT、MMM。底轴(x 轴)是投资组合的计算风险(_标准差_),左轴(y 轴)是投资组合的期望收益。 每次随机生成投资组合时,它都会为我们的四只股票中的每一种分配不同的权重,然后计算投资组合的收益和标准差。 通过运行 50,000 次随机模拟,我们可以看到一个看起来像子弹形状的图。我们生成如此多的投资组合的原因是,我们可以尝试找到最优的投资组合权重,从而在给定的风险水平下最大化我们的收益。 每次我们生成一个随机投资组合时,每只股票的权重都会发生变化。在某些投资组合中,苹果可能占投资组合的 20%、投资组合的 75% 甚至是投资组合的 1%,对于我们资产组合中包含的所有其他股票也是如此。但是,所有权重的总和始终等于 1。 这是一张图表,说明了 50,000 个随机生成的投资组合: ![]() x 轴:投资组合波动率(风险),y 轴:投资组合收益 为了进一步说明我们的示例,假设在我们生成的 50,000 个随机投资组合中,投资者想要风险不超过 20% 的投资组合(垂直绘制在 x 轴上的 0.20 标记处)。位于这条线右侧的所有投资组合都将被忽略,位于这条线左侧的所有投资组合都是可接受的投资组合。 在 0.2 处绘制黄线时, _MPT _推测投资者会选择在这条线上具有 最高 收益的投资组合。在这种情况下,这将是我们的两条线相交的地方。_应该_根据 _MPT _选择精确的投资组合,以使所选风险 水平 的收益最大化 。 对于给定的投资组合风险水平,在我们曲线的顶部边缘最大化收益的所有其他投资组合呢? 进入有效边界有效边界是一条在每个风险水平上都遵循最高收益的曲线。在下图中,有效边界是红色曲线。 根据 _MPT_的说法,除了沿着这条曲线找到的投资组合之外,任何投资者都不应该投资于投资组合。 ![]() 现在让我们回顾一下这个实现中使用的一些 Python 代码,并尝试生成一些新的有效边界。 于以下代码,使用以下规范创建一个 pandas 数据_框“dta”_ : dfta:每列是个股的价格,按日期排序。就我而言,数据框的索引是参考日期。 import seaborn as sns# 生成我们市场数据的每日收益率 dans = df_mage()# 生成我们每日收益率的相关矩阵df tns.corr()# 使用seaborn生成一个热图 heatmap(corre)上面的代码将生成一个漂亮的表格来可视化每只股票的相关性。在 第一部分中,需要相关性来计算投资组合标准差。 ![]() 相关性热图 下面是用于生成我们的有效边界图和 50,000 个随机投资组合的代码。 col = coy * 252for sio in range(nuos): 利润率=收益率/波动率 pots.append(reuns) potity.append(votty) stts.append(eihs)# 每个投资组合的收益和风险值 portfolio = {'Returns': orttrns, 'Volatility': potvtilty, '夏普比率': shp_tio}。 # 数据框架 df = pd.DataFrame # 为所需的列的安排获得更好的标签 df = df\[cm_der\]现在,为了生成一个漂亮的有效边界图,让我们找到夏普比率最高的投资组合和波动率最低的投资组合。 ma\_a\_row = df.iloc\[df\['夏普比率'\].idxmax()\] 。 maxhr\_TN = mashrow\_\['收益率'\] maha\_VOL = m\_hae\_o\_\['Volatility'\] plt.scatr plt.corar(label='夏普比率') plt.scaer(ma\_p\_OL, axhpTN, c='red', s=50) plt.sow()![]() 上方点:夏普比率最高的投资组合,下方点:波动率最低的投资组合。 我们对 50000 个随机生成的投资组合进行了很好的可视化,并带有两个额外的点。回想一下,上方的点代表具有最高夏普比率的投资组合,而下方的点代表我们具有最低风险(波动性)的投资组合。 让我们检查一下从我们最初的四只股票中产生这些投资组合的权重。 ![]() _MPT _的主要限制之一是它使用历史(过去)数据。根据历史收益、相关性和风险(标准差)创建投资组合,并不能保证未来看起来是一样的。 然而,MPT确实为我们提供了一些非常有用的好处,如资产配置、多样化和投资组合再平衡。 资产配置 允许投资者根据他们的年龄和财务目标设定一定的风险。多元化 有助于评估高风险、低相关性资产作为一个整体投资组合,并以易于理解和评估的方式(风险和收益)。投资组合再平衡 为投资者提供路线图,以定期审查其当前的投资组合,并在需要时帮助重新调整头寸。 |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |