使用蒙特卡罗模拟的投资组合优化
使用蒙特卡罗模拟的投资组合优化
在金融市场中,优化投资组合对于实现风险与回报之间的预期平衡至关重要。蒙特卡罗模拟提供了一个强大的工具来评估不同的资产配置策略及其在不确定市场条件下的潜在结果。本文将详细介绍如何使用蒙特卡罗模拟进行投资组合优化,包括数据准备、收益率分析、移动平均线应用、风险收益计算以及价格预测等内容。
数据准备
我们从Kaggle获取了资产价格数据,并使用CSV文件进行分析。也可以使用yfinance在固定的时间范围内获取实时股票价格。
在数据处理阶段,我们重点分析了由于多种因素导致的股票“调整后收盘价”。调整后的收盘价是指市场收盘前最后一个交易价格的现金价值,它考虑了任何可能影响当天市场收盘后股价的因素。调整后的收盘价有助于投资者了解公司行动宣布后股票的公允价值,也有助于保持股票价格开始和结束的准确记录,因此我们选择对其进行分析,而不是收盘价。
为了更好地理解不同股票之间的关系,我们绘制了协方差和相关性的热图。使用Seaborn的pairplot()函数创建散点图矩阵,以展示stock_returns中变量的成对关联性。
收益率分析
在收益率分析部分,我们比较了对数收益率和简单收益率。对数收益率因其时间可加性和正态高斯分布特性而更受欢迎。从对数回报的直方图中可以看出,它大多以0为中心,呈现出正态分布的特征。
然而,对于金融数据来说,正态分布是否是一个好的假设?通过观察实际数据与正态分布的对比,我们可以发现尾部存在明显的偏离。
尽管金融数据在尾部偏离正态分布,但在大多数情况下,将价格或对数回报视为正态分布仍然是一个合理的假设。此外,我们还可以证明对数收益是可加的,而简单收益率则不具备这一特性。
移动平均线
移动平均线是平滑时间序列数据的重要工具。通过计算一定时间范围内的平均值,可以消除数据中的波动,减少变化数量。短移动平均线通常用于短期交易,而长移动平均线则用于长期交易。
当我们考虑更多的天数时,移动平均线会变得更加平滑,但对波动的反应也会变得更加滞后。
收益和风险计算
下面的代码片段计算了数据列表中每个公司的日收益,并使用直方图可视化这些收益的分布。从图中可以看出,收益分布“几乎”遵循正态分布,但在头部和尾部存在偏离。
投资组合优化
我们定义了一个randomPortfolio()
函数,用于生成随机的股票组合。通过从标准正态分布中提取随机值,对其取幂以确保其为正值,然后将其规范化以表示总投资组合价值的比例,从而生成随机的股票投资组合。
接下来,我们计算了每个投资组合的预期收益和风险。预期收益通过IncomePortfolio()
函数计算,风险通过RiskPortfolio()
函数计算。这些函数为评估投资组合的收益和风险特征提供了基本的度量。
最后,我们通过夏普比率来评估投资组合的表现。夏普比率是指每单位波动率或总风险的平均收益超过无风险利率。最优风险投资组合是夏普比率最高的投资组合。
通过在其相应的风险和收益值上添加一个红点,使用一个图例来识别最大夏普比率。散点图直观地表示了投资组合的风险和收益关系。最佳投资组合是具有最大夏普比率的投资组合,其权重也可以提取的。
蒙特卡罗模拟
蒙特卡罗模拟是一种强大的工具,用于预测未来的股票价格。我们使用算术布朗运动来生成随机路径,但也可以使用几何布朗运动。
通过1000次模拟来预测Twitter的未来价格,从而对Twitter的股票进行蒙特卡洛分析。这些模拟的最终价格存储在“sim”数组中并绘制出来。通过这样做,代码提供了对Twitter股票未来价格范围的潜在洞察,这是由蒙特卡洛模拟确定的。
所提供的代码构造了一个直方图来说明从蒙特卡洛模拟中得到的Twitter股票模拟价格的分布。可视化包括概述模拟价格的平均值、标准偏差和初始价格的文本注释。根据蒙特卡洛模拟,这种可视化表示为Twitter未来股价的潜在范围和特征提供了有价值的见解。
进一步研究方向
- 采用Q-Q图、箱形图、Kolmogonov Smirmov测试等正态性度量来量化正态性,这将有助于可视化量化数据的正态性。
- 使用指数移动平均线(EMA), EMA的计算强调最近的数据点。EMA对价格变化的反应比简单移动平均线(SMA)更快。
- 在计算移动平均线时考虑的天数的影响及其对平滑的影响。
- 使用Sortino Ratio、M2 Ratio、Calmar Ratio等其他风险回报指标,并对其差异进行校正,根据场景选择最合适的风险回报指标。
- 利用几何布朗运动(GBM)代替算术布朗运动(ABM)生成随机路径,将随机路径输入到蒙特卡罗仿真中。观察改变风险因素如何影响最优投资组合。
本文代码:
https://avoid.overfit.cn/post/9d7e2c80f7464d0b94b364e3d53f64be