深度强化学习金融投资建模毕业论文【建模】

一、核心思路

目前,面对股票市场随机性大和动荡的情况,仅靠人类自身实现高收益的投资组合不是一项简单的任务。与此同时,如何通过预测股价做出有利可图的交易决策仍然相当具有挑战性,并且还在探索中。近年来,基于强化学习的股票自动交易的研究不断涌现,并逐渐发展为三种投资任务:单只股票交易任务、多只股票交易任务和投资组合任务。但如何明确地将股票之间的群体关系整合到投资组合的学习中,在现有的投资组合研究中缺少适当地探索。与此同时,如何在一项研究中直观体现出强化学习算法在多种金融投资任务中的适用性,在现有的基于强化学习的金融研究中还需要进一步思考。基于此,本文的主要研究了如下工作: 
1.本文提出了基于对比超图强化学习的投资组合方法,该方法使用超图结构来描述股票之间的成组(group-wise)关系。具体地说,本文使用超图结构对股票之间的关系进行建模,并设计了一个双通道超图注意力网络捕捉股票的关系,在每个股票超图中聚合信息时,引入注意力机制来区分不同股票邻居节点的重要性。本文从两个通道中分别得到同一股票的两个独立表示,并引入对比学习,最大化同行业和同基金股票间的互信息,提高它们自身的表示学习能力。进一步地,本文将不同股票融合后的表示作为强化学习中策略函数的环境状态,利用策略梯度算法对模型进行训练。通过这种方式,本文明确地加入了丰富的成组关系信息,以指导更有利可图的投资组合。 
2.本文同时开展了面向三种交易任务的强化学习研究,包括:单只股票交易任务、多只股票交易任务和投资组合任务。将从市场中获取到的股票价格数据和计算出的金融指标作为环境状态,并将两类强化学习算法中的多个代表性算法作为策略网络,包括: DQN、优势动作评论算法 (Advantage Actor Critic, A2C)、深度确定性策略梯度算法 (Deep deterministic policy gradient, DDPG)、近端策略优化算法(Proximal Policy Optimization,,PPO)、确定性策略强化学习算法(Twin Delayed Deep Deterministic policy gradient algorithm,,TD3)和连续动作空间软行动者-评论家算法 (Soft Actor-Critic,,SAC)[58]。然后,验证上述两类深度强化学习算法在单只股票交易、多只股票交易和投资组合三个投资任务上的有效性,并对比不同算法在累计收益率、夏普比率和最大回撤三个指标上的回测表现结果,同时进行了深入的分析。 

二、过程与验证

主要讨论三种股票投资任务,分别是单只股票交易任务、多只股票交易任务和投资组合任务。在三种投资任务中,单只股票交易和多只股票交易是选择合适的时机将股票进行买入或卖出的决策过程,旨在减小损失且最大化利益。在交易过程中,用股票收盘价和通过收盘价计算得出的金融指标构成单只股票交易任务和多只股票交易任务的市场状态。投资组合是将现有固定资产按不同的比例分配到不同金融产品中的方法,旨在减小投资风险且最大化利益。在交易过程中,用收盘价的价格变化率协方差和通过收盘价计算得出的金融指标构成投资组合任务的市场状态。在单只和多只股票交易任务中,每天的交易决策是买入、卖出的股票份额,而投资组合任务中,每天的交易决策是每只股票投资金额的比例。归纳展示了三种任务在市场状态的细节和投资过程的差异。 

由于对比学习可以最大化同行业和同基金股票间的互信息,本文认为对比学习可以作为一个高效的图集成解决方案。为了验证这一点,本文进一步采用连接方案和对比学习分别集成两个 GCN 结构,两个 HGCN 结构。表 3-4 显示了具有不同集成结构的模型的性能,其中,HGCN-C 和 GCN-C 是加入对比学习后的模型, HGCN-T 和 GCN-T 是只连接股票所处行业超图和基金持有股票的超图。可以看出,在 HGCN 中对比学习的使用可以使累积收益值增加 20%,波动率值降低7%,在 GCN 中对比学习的使用使累积收益值增加 30%,波动率值降低 10%。这进一步说明了对比学习的有效性。总的来说,比起基于连接的融合,对比学习提供了稳定的改进。 

%%%%%%%%%%%%%%%%%%%%%%运用预测数据%%%%%%%%%%%%%%%%%%%%%%%%
clear all;                      %清除所有变量
close all;                      %清图
clc;                            %清屏
%%%%%%%%%%%%%%%%%%%%%%%%%%%%原始数据%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%%%%%%%%%%%%%%%%%%%%%%%%%%输入数据矩阵%%%%%%%%%%%%%%%%%%%%%%%%%%%
p=[sqrs;sqjdcs;sqglmj]; 
%%%%%%%%%%%%%%%%%%%%%%%%%%目标数据矩阵%%%%%%%%%%%%%%%%%%%%%%%%%%%
t=[glkyl;glhyl];    
%%%%%%%%%%%%%%%%%%%%%%%%%原始样本归一化%%%%%%%%%%%%%%%%%%%%%%%%%%
[P,minp,maxp,T,mint,maxt]=premnmx(p,t);
%%%%%%%%%%%%%%%%%%%创建一个新的前向神经网络%%%%%%%%%%%%%%%%%%%%%%%
net=newff(minmax(P),[8,2],{'tansig','purelin'},'traingdx');
%%%%%%%%%%%%%%%%%%%%%%%设置训练参数%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
net.trainParam.show = 50;              %显示中间结果的周期
net.trainParam.lr = 0.035;             %学习率
net.trainParam.epochs = 2000;          %最大迭代次数
net.trainParam.goal = 1e-3;            %目标误差
%%%%%%%%%%%%%%%%%调用 TRAINGDM 算法训练 BP 网络%%%%%%%%%%%%%%%%%%
[net,tr]=train(net,P,T);
%%%%%%%%%%%%%%%%%%%%%对 BP 网络进行仿真%%%%%%%%%%%%%%%%%%%%%%%%%%
A = sim(net,P);
a=postmnmx(A,mint,maxt);
%%%%%%%%%%%%%%%%%%%%优化后输入层权值和阈值%%%%%%%%%%%%%%%%%%%%%%%
inputWeights=net.IW{1,1};
inputbias=net.b{1};
%%%%%%%%%%%%%%%%%%%%优化后网络层权值和阈值%%%%%%%%%%%%%%%%%%%%%%%
layerWeights=net.LW{2,1};
layerbias=net.b{2};
%%%%%%%%%%%%%%%%%%%%%%%%%时间轴刻度%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
x=1990:2009;   
%%%%%%%%%%%%%%%%%%%%%%%网络输出客运量%%%%%%%%%%%%%%%%%%%%%%%%%%%%  
newk=a(1,:);       
%%%%%%%%%%%%%%%%%%%%%%%网络输出货运量%%%%%%%%%%%%%%%%%%%%%%%%%%%%
newh=a(2,:);                                      
%%%%%%%%%%%%%%%%%%%%绘值公路客运量对比图%%%%%%%%%%%%%%%%%%%%%%%%%%
figure
plot(x,newk,'r-o',x,glkyl,'b--+')  
legend('网络输出','实际');
xlabel('年份');ylabel('股票');
%%%%%%%%%%%%%%%%%%%%%%绘制对比图%%%%%%%%%%%%%%%%%%%%%%%
figure
plot(x,newh,'r-o',x,glhyl,'b--+')     
legend('网络','股票');
xlabel('年份');ylabel('股票');
%%%%%%%%%%%%%%%%%%%%%利用训练好的网络进行预测%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%2010年和2011年的相关数据%%%%%%%%%%%%%%%%%%%%%
pnew=[73.39 75.55;3.9 4.1;0.98 1.02];                     
SamNum=size(pnew,2);  
%%%%%%%%%%%利用原始输入数据的归一化参数对新数据进行归一化%%%%%%%%%%%
pnewn=tramnmx(pnew,minp,maxp);    
%%%%%%%%%%%%%%%%%%%%%%%隐含层输出预测结果%%%%%%%%%%%%%%%%%%%%%%%%%
HiddenOut=tansig(inputWeights*pnewn+repmat(inputbias,1,SamNum)); 
%%%%%%%%%%%%%%%%%%%%%%%输出层输出预测结果%%%%%%%%%%%%%%%%%%%%%%%%%
anewn=purelin(layerWeights*HiddenOut+repmat(layerbias,1,SamNum));  
%%%%%%%%%%%%%%把网络预测得到的数据还原为原始的数量级%%%%%%%%%%%%%%%
anew=postmnmx(anewn,mint,maxt);

博主简介:本人擅长数据处理、建模仿真、程序设计、论文写作与指导,项目与课题经验交流。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

坷拉博士

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值