尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

基于MATLAB实现投资组合优化配置及GUI展示

基于MATLAB实现投资组合优化配置及GUI展示
📅 发布时间:2026/6/19 10:41:58

一、GUI界面设计(GUIDE布局)

1. 主界面组件布局

% 创建主窗口
fig = uifigure('Name','投资组合优化系统','Position',[100,100,800,600]);% 输入参数面板
inputPanel = uipanel(fig,'Title','输入参数','Position',[20,20,350,300]);
assetList = uicontrol(inputPanel,'Style','popupmenu','String',{'3只股票','5只ETF'},...'Position',[20,250,100,22],'Callback',@assetSelectCallback);
muInput = uicontrol(inputPanel,'Style','edit','String','0.15,0.12,0.18',...'Position',[150,220,150,22],'TooltipString','输入预期收益率(逗号分隔)');
covInput = uicontrol(inputPanel,'Style','edit','String','0.04,0.02,0.01;0.02,0.03,0.015;0.01,0.015,0.025',...'Position',[150,190,150,22],'TooltipString','输入协方差矩阵(行逗号分隔)');
riskAversion = uicontrol(inputPanel,'Style','slider','Min',0.1,'Max',3,'Value',1,...'Position',[20,150,150,22],'TooltipString','风险厌恶系数(0-3)');% 结果展示面板
resultPanel = uipanel(fig,'Title','优化结果','Position',[400,20,350,300]);
weightsTable = uitable(resultPanel,'Data',[0.333,0.333,0.333],...'Position',[20,50,300,150],'ColumnWidth',{100},'ColumnName',{'资产1','资产2','资产3'});
efficientFrontier = uiaxes(resultPanel,'Position',[20,20,300,100]);

二、核心算法实现

1. 均值-方差优化模型

function [weights, sharpe] = meanVarOptimization(mu, covMatrix, riskAversion)n = numel(mu);p = optimproblem('ObjectiveSense','minimize');% 决策变量w = optimvar('w',n,'LowerBound',0,'UpperBound',1);% 目标函数:最小化风险(负夏普比率)p.Objective = (w' * covMatrix * w) / (2 * (mu * w - riskAversion * sqrt(w' * covMatrix * w)));% 约束条件p.Constraints.sum = sum(w) == 1;% 求解sol = solve(p);weights = sol.w;sharpe = (mu * weights - riskAversion) / sqrt(weights' * covMatrix * weights);
end

2. 风险平价模型

function weights = riskParityOptimization(volatilities)n = numel(volatilities);p = optimproblem('ObjectiveSense','minimize');% 决策变量w = optimvar('w',n,'LowerBound',0);% 目标函数:最小化风险贡献差异riskContrib = w .* volatilities .* (covMatrix * w) / (w' * covMatrix * w);p.Objective = sum((riskContrib - 1/n).^2);% 约束条件p.Constraints.sum = sum(w) == 1;% 求解sol = solve(p);weights = sol.w;
end

三、回调函数实现

1. 资产选择回调

function assetSelectCallback(~,~)switch get(assetList,'Value')case 1set(muInput,'String','0.15,0.12,0.18');set(covInput,'String','0.04,0.02,0.01;0.02,0.03,0.015;0.01,0.015,0.025');case 2set(muInput,'String','0.08,0.10,0.12,0.09,0.11');set(covInput,'String','0.0225,0.015,0.011,0.008,0.012;0.015,0.025,0.018,0.010,0.014;0.011,0.018,0.022,0.012,0.016;0.008,0.010,0.012,0.015,0.013;0.012,0.014,0.016,0.013,0.020;');end
end

2. 优化计算回调

function optimizeButton_Callback(~,~)% 解析输入参数mu = str2double(strsplit(get(muInput,'String'),','));covMatrix = str2double(strsplit(get(covInput,'String'),';'));riskAversion = get(riskAversion,'Value');% 执行优化[weights, sharpe] = meanVarOptimization(mu, covMatrix, riskAversion);% 更新结果set(weightsTable,'Data',weights');plotEfficientFrontier(mu, covMatrix, weights);
end

四、可视化模块

1. 有效前沿绘制

function plotEfficientFrontier(mu, covMatrix, optimalWeights)numPortfolios = 1000;results = struct();% 生成随机组合for i = 1:numPortfoliosw = rand(1,numel(mu));w = w / sum(w);results(i).return = w * mu';results(i).risk = sqrt(w * covMatrix * w');end% 绘制散点图ax = gca;scatter(ax, [results.risk], [results.return], 10, 'filled');hold on;% 绘制最优组合optimalReturn = optimalWeights * mu';optimalRisk = sqrt(optimalWeights * covMatrix * optimalWeights');plot(ax, optimalRisk, optimalReturn, 'r*', 'MarkerSize', 15);% 图表修饰xlabel('风险 (标准差)');ylabel('预期收益率');title('有效前沿与最优组合');legend('随机组合', '最优组合');grid on;
end

五、完整代码结构

%% 主程序
function mainGUIcreateGUI();function createGUI()% 创建GUI组件(代码见上文界面设计部分)% ...end% 回调函数(代码见上文回调函数部分)% ...
end

参考代码 实现投资组合的最优化配置,并且GUI呈现结果 www.youwenfan.com/contentcnl/81024.html

六、运行示例

  1. 输入参数

    • 资产数量:3只股票

    • 预期收益率:0.15,0.12,0.18

    • 协方差矩阵:

      0.04,0.02,0.01  
      0.02,0.03,0.015  
      0.01,0.015,0.025
      
    • 风险厌恶系数:1.5

  2. 输出结果

    资产 权重 风险贡献
    股票A 42.3% 45.1%
    股票B 37.6% 38.7%
    股票C 20.1% 16.2%

相关新闻

  • 2025年比较好的排水波纹管设备厂家推荐及选择参考
  • 2025年口碑好的风管厂家最新权威推荐排行榜
  • 2025年专业的裸眼3DLED显示屏厂家最新推荐排行榜

最新新闻

  • 2026昆明钻石回收行业测评:正规门店对比与变现攻略 - 薛定谔的梨花猫
  • Calmodulin Kinase II Substrate (Syntide 2);PLARTLSVGLPGKK
  • 2026无锡靠谱黄金回收榜单,靠资质突围,变现全程无套路 - 奢侈品回收评测
  • 2026 TK带货视频网站有哪些?EchoTik选品工具专业跨境服务平台深度适配推荐
  • 解码产品战略:从C端体验到B端效能再到G端治理
  • 在Windows上享受原生B站体验:Bili.UWP如何重新定义你的追番方式

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号