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