用途:帮助用户使用 MATLAB Financial Toolbox 的 Portfolio 对象构建并求解投资组合优化问题,如最小化方差、最大化夏普比率、计算有效前沿、目标收益组合等。
主要能力:支持均值-方差(Markowitz)建模;最小方差、目标收益和有效前沿计算;最大夏普比率与切点组合;约束设置包括默认约束(全额投资、仅多头)、上下界、分组、换手率、单向换手率、基数约束和半连续约束;提供求解方法和组合统计接口,如 estimateFrontierLimits、estimateFrontierByReturn、estimateMaxSharpeRatio、estimateFrontier,以及 estimatePortRisk、estimatePortReturn、estimatePortMoments 和 plotFrontier。
使用方式:先确定问题形式,再确认数据(历史收益矩阵或价格、预计算的 mu 和 Sigma、无风险利率)。创建对象示例:p = Portfolio('AssetMean', mu, 'AssetCovar', Sigma); 或 p = Portfolio; p = setAssetMoments(p, mean(returns)', cov(returns)); 设置约束至少调用 p = setDefaultConstraints(p); 然后按形式求解,例如 wMinVar = estimateFrontierLimits(p, 'Min'); wSharpe = estimateMaxSharpeRatio(p); wFrontier = estimateFrontier(p, 20); 统计与可视化使用 estimatePortMoments、plotFrontier 等方法。
适用场景:投资组合资产配置、有效前沿分析、风险收益权衡等问题。
限制:不建议用 fmincon、quadprog、ga 等手工求解投资组合问题,应由 Portfolio 处理求解器配置与约束管理;非金融资产配置的一般优化问题应使用 matlab-solve-optimization;获取市场数据应使用 matlab-access-datafeed;用神经网络或机器学习预测收益或权重应使用 matlab-train-network;仅清理探索收益表应使用 matlab-analyze-data;CVaR、MAD 等非均值-方差风险度量不在本技能范围,应使用 PortfolioCVaR 或 PortfolioMAD。使用基数或半连续约束时,调用 estimateMaxSharpeRatio 需指定 'Method','iterative';前沿类方法会自动检测并选择混合整数求解器,不要传入 'Method','iterative'。无约束的 Portfolio 问题是不定的;已求解时向 plotFrontier 传入权重而非组合数量;风险收益统计勿手工计算。