matlab投资组合权重,Matlab做投资组合最优化

数据下载

https://download.csdn.net/download/moser_freshman/12301019

#Matlab做投资组合最优化

%% zuiyouhau.mat存放3只股票的209天的收盘价

clc

clear

load zuiyouhua.mat

gpsl=3;

% 1-计算收益率矩阵

retu=price2ret(zuiyouhua);

% 2-计算期望收益

expv=mean(retu);

%% 3-计算协方差矩阵 % aita(X,Y)=sigama(Xi-X)(Yi-Y)Pi

aita=cov(retu);

eig3=eig(aita);

% 随机产生投资方案,计算并画图其可行域

% rand('state',0);

weights=rand(1000,gpsl); % 产生1000行,3列随机数

total=sum(weights,2); % 按列求和

for gpi=1:gpsl % 比例标准化,变成了权重矩阵

weights(:,gpi)=weights(:,gpi)./total;

end

[portrisk,portreturn]=portstats(expv,aita,weights); %% 1-期望收益,2-协方差矩阵,3-多组权重-投资方案

% 绘图

%title('均值-方差有效前沿以及各个资产组合的风险与收益')

%xlabel('风险(标准差)')

%ylabel(

  • 0
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
当涉及到神经网络预测股票的Matlab程序时,通常会使用时间序列数据作为输入,以预测未来的股票价格或趋势。以下是一个简单的神经网络预测股票的Matlab程序的示例: ```matlab % 导入数据 data = xlsread('stock_data.xlsx'); % 假设数据存储在Excel文件中 % 数据预处理 normalized_data = normalize(data); % 数据归一化处理 % 划分训练集和测试集 train_ratio = 0.8; % 训练集所占比例 train_size = floor(train_ratio * size(normalized_data, 1)); train_data = normalized_data(1:train_size, :); test_data = normalized_data(train_size+1:end, :); % 设置神经网络参数 input_size = size(data, 2); % 输入层大小,即特征数量 hidden_size = 10; % 隐含层大小 output_size = 1; % 输出层大小,即预测结果数量 learning_rate = 0.01; % 学习率 num_epochs = 100; % 迭代次数 % 初始化神经网络权重和偏置 W1 = randn(input_size, hidden_size); b1 = zeros(1, hidden_size); W2 = randn(hidden_size, output_size); b2 = zeros(1, output_size); % 训练神经网络 for epoch = 1:num_epochs % 前向传播 hidden_layer = sigmoid(train_data * W1 + b1); predicted_output = hidden_layer * W2 + b2; % 计算损失函数 loss = mean((predicted_output - train_data).^2); % 反向传播 d_predicted_output = 2 * (predicted_output - train_data) / size(train_data, 1); d_hidden_layer = d_predicted_output * W2' .* sigmoid_derivative(hidden_layer); % 更新权重和偏置 W2 = W2 - learning_rate * hidden_layer' * d_predicted_output; b2 = b2 - learning_rate * sum(d_predicted_output); W1 = W1 - learning_rate * train_data' * d_hidden_layer; b1 = b1 - learning_rate * sum(d_hidden_layer); end % 测试神经网络 hidden_layer_test = sigmoid(test_data * W1 + b1); predicted_output_test = hidden_layer_test * W2 + b2; % 反归一化处理 predicted_output_test = denormalize(predicted_output_test); % 绘制预测结果 plot(predicted_output_test); ``` 这是一个简单的基于反向传播算的神经网络预测股票的Matlab程序示例。程序中包含了数据导入、数据预处理、训练神经网络、测试神经网络以及结果可视化等步骤。请注意,这只是一个示例程序,实际应用中可能需要根据具体情况进行调整和改进。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值