简单投资组合优化方法工具箱
项目介绍
简单投资组合优化方法工具箱是一个基于 MATLAB 开发的量化金融工具,旨在为投资者提供基础的资产配置决策支持。该项目核心基于马科维茨(Markowitz)的现代投资组合理论(MPT),通过数学优化手段在给定的风险水平下追求收益最大化,或在给定的目标收益下实现风险最小化。
系统集成从模拟数据生成、历史参数估计、多策略配置优化到结果可视化分析的完整流程,帮助用户通过量化手段客观地理解风险分散化效应及有效前沿的概念。
功能特性
- 资产数据模拟:内置基于多元正态分布的随机数据生成引擎,能够模拟具有特定相关性和波动率特征的多资产价格路径。
- 配置策略实现:
- 等权重(Equal Weight):作为基准策略,将权重平均分配给所有资产。
- 全局最小方差(GMV):通过二次规划寻找整体波动率最低的配置方案。
- 最大夏普比率(Tangency Portfolio):寻找风险溢价与波动率比值最高的切线组合。
- 有效前沿计算:自动求解在不同目标收益率约束下的最优波动率,描绘资产配置的效率边际。
- 资本市场线(CML):结合无风险利率,展示从无风险资产出发与有效前沿相切的最佳投资路径。
- 蒙特卡洛模拟对比:随机生成数千组投资组合散点,直观展示优化策略与随机分配在收益风险空间中的位置对比。
- 专业可视化展示:生成高质量的二维图表,涵盖资产个体、随机组合、有效前沿曲线及关键优化点。
系统要求
- MATLAB R2016b 或更高版本
- Optimization Toolbox(用于调用 quadprog 二次规划求解器)
使用方法
- 环境配置:确保 MATLAB 已安装优化工具箱。
- 运行程序:启动 MATLAB,将工作目录切换至项目文件夹,并在命令行窗口输入主程序指令或直接点击运行按钮。
- 查看输出:
- 命令行:将实时打印各策略的年化收益、年化波动及夏普比率对比表,并展示详细的资产权重分配。
- 图形窗口:程序将自动弹出投资组合分析图表,展示有效前沿、资本市场线及资产特征分布。
实现逻辑分析
1. 数据准备与参数估计
程序首先定义了各资产的真实年化收益率、波动率及相关性矩阵,利用多元正态函数生成模拟的对数收益率。随后,程序通过对价格数据取对数差分的方式还原每日收益率,并根据 252 个交易日的年化因子计算预期年化收益向量和协方差矩阵。
2. 二次规划求解
该工具箱的核心算法依赖于求解定值的二次规划问题(Quadratic Programming):
- 全局最小方差:目标函数为使组合方差(w' * Cov * w)最小化,约束条件为权重和等于 1 且禁止卖空(所有权重非负)。
- 最大夏普比率:通过一种线性转换技巧,将非线性的夏普比率函数转化为标准的等效二次规划问题,通过求解变换后的变量空间,最终还原出切线组合的最优权重。
3. 有效前沿的构建
程序在资产池中最低收益和最高收益之间步进式采样,针对每个目标收益率作为等式约束,重复调用优化算法寻找当前收益下的最小方差。最后,通过筛选高于最小方差组合收益的部分,绘制出代表最优配置集合的有效前沿曲线。
4. 辅助函数与指标计算
程序内置了专门的性能计算函数,用于接收权重矩阵、收益率向量和协方差矩阵,集中输出年化收益、波动率以及剔除无风险利率后的夏普比率。
5. 可视化技术细节
- 随机组合:通过生成符合单位 simplex 约束(权重之和为 1)的随机数,模拟出大量随机分散的投资点,体现主动优化相对于盲目配置的优越性。
- 资本市场线:结合给定的无风险利率,连接无风险资产点与最大夏普组合点,并向右延伸,展示资产配置的最有效边界。
- 文本标注:自动在散点图中标记各基础资产的名称,并使用符号区别不同的核心策略。