楼主: 瑾曦。
1851 3

[作业] 基于LSTM与GARCH族混合模型预测股票波动率的Python操作代码 [推广有奖]

  • 2关注
  • 2粉丝

博士生

18%

还不是VIP/贵宾

-

威望
0
论坛币
2081 个
通用积分
38.9088
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
7389 点
帖子
104
精华
0
在线时间
137 小时
注册时间
2018-9-8
最后登录
2022-11-7

楼主
瑾曦。 在职认证  学生认证  发表于 2021-6-26 11:25:01 |只看作者 |坛友微信交流群|倒序 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
<!-- markdown css tag --><div class="pinggu_markdown">
<div class="pinggu_markdown__html"><h1 id="基于lstm与garch族混合模型预测股票波动率的python操作代码">基于LSTM与GARCH族混合模型预测股票波动率的Python操作代码</h1>
<blockquote>
<p>LSTM; GARCH; 股票波动率; Python</p>
</blockquote>
<p>学习了金融数据分析这门课,对<strong>Python</strong>这个工具又有了新的认识,真是太强大了!本小白的报告是基于哈工大硕士论文田晓丹《基于LSTM与多GARCH型混合模型的股价波动性预测的实证分析》的方法,研究预测时间序列中证5&#48;&#48;指数价格波动率最优的模型,在GARCH模型基础上结合神经网络LSTM算法,对解释变量及GARCH得到的参数进行多次训练得到损失函数RMSE和MAE最小的混合模型。做完此实验能让我们对GARCH族模型的原理有更好的理解,也为在金融中应用算法提供思路,大家快来学习一下吧!</p>
<h2 id="garch族模型">GARCH族模型</h2>
<p>GARCH(1,1)模型;EGARCH(1,1)模型;TGARCH(1,1)模型。这三个模型递进地改进了杠杆效应即对称效应,就是利空和利好消息对金融市场的冲击不同。通过Eviews对中证5&#48;&#48;指数收益率总样本的1&#48;%进行样本外预测,并根据损失函数RMSE和MAE大小,得到最小的损失模型为TGARCH,得到各参数的列估计值,具体可通过Eviews里面生成的模型残差和方差来计算得到各参数的列估计值。</p>
<h2 id="lstm算法">LSTM算法</h2>
<p>LSTM 神经网络属于时间递归神经网络。基于对循环神经网络的优化,LSTM神经网络能够解决循环神经网络的梯度缺陷。LSTM神经网络包括存储器块(记忆单元Cell)和三个自适应乘法门,即输入门(Input Gate)、输出门(Output Gate)和遗忘门(Forget Gate)[1&#48;]。LSTM的训练过程也是复杂的,简单来说是其输入门的输入值由三部分组成,即输入层中神经元的输出向量,前一个隐含层中的记忆单元的输出向量,前一时刻记忆单元的历史存储信息。</p>
<h2 id="基于lstm与garch族混合模型的python代码">基于LSTM与GARCH族混合模型的Python代码</h2>
<p>通过上述GARCH族模型的回归和LSTM神经网络学习算法的了解,查找相关资料进行代码编写,主要的参数维度需要根据自己的数据来.下面列出一些需要注意的地方。</p>
<pre class=" language-python"><code class="prism  language-python"><span class="token keyword">def</span> <span class="token function">create_dataset</span><span class="token punctuation">(</span>dataset<span class="token punctuation">,</span> look_back<span class="token punctuation">)</span><span class="token punctuation">:</span>  
    dataX<span class="token punctuation">,</span> dataY <span class="token operator">=</span> <span class="token punctuation">[</span><span class="token punctuation">]</span><span class="token punctuation">,</span> <span class="token punctuation">[</span><span class="token punctuation">]</span>                     <span class="token comment">#这里的look_back与timestep相同  </span>
  <span class="token keyword">for</span> i <span class="token keyword">in</span> <span class="token builtin">range</span><span class="token punctuation">(</span><span class="token builtin">len</span><span class="token punctuation">(</span>dataset<span class="token punctuation">)</span><span class="token operator">-</span>look_back<span class="token number">-1</span><span class="token punctuation">)</span><span class="token punctuation">:</span>  
        a <span class="token operator">=</span> dataset<span class="token punctuation">[</span>i<span class="token punctuation">:</span><span class="token punctuation">(</span>i<span class="token operator">+</span>look_back<span class="token punctuation">)</span><span class="token punctuation">]</span>  
        dataX<span class="token punctuation">.</span>append<span class="token punctuation">(</span>a<span class="token punctuation">)</span>  
        dataY<span class="token punctuation">.</span>append<span class="token punctuation">(</span>dataset<span class="token punctuation">[</span>i <span class="token operator">+</span> look_back<span class="token punctuation">]</span><span class="token punctuation">)</span>  
    <span class="token keyword">return</span> np<span class="token punctuation">.</span>array<span class="token punctuation">(</span>dataX<span class="token punctuation">)</span><span class="token punctuation">,</span>np<span class="token punctuation">.</span>array<span class="token punctuation">(</span>dataY<span class="token punctuation">)</span>  
<span class="token comment">#训练数据太少 look_back并不能过大</span>

<span class="token comment">#建模  </span>
n_features <span class="token operator">=</span> data<span class="token punctuation">.</span>shape<span class="token punctuation">[</span><span class="token operator">-</span><span class="token number">1</span><span class="token punctuation">]</span> <span class="token operator">-</span> <span class="token number">1</span>  
model <span class="token operator">=</span> Sequential<span class="token punctuation">(</span><span class="token punctuation">)</span>  
model<span class="token punctuation">.</span>add<span class="token punctuation">(</span>LSTM<span class="token punctuation">(</span><span class="token number">4</span><span class="token punctuation">,</span>activation <span class="token operator">=</span> <span class="token string">'relu'</span><span class="token punctuation">,</span>return_sequences <span class="token operator">=</span><span class="token boolean">False</span><span class="token punctuation">,</span>input_shape<span class="token operator">=</span><span class="token punctuation">(</span>n_features<span class="token punctuation">,</span>time_stamp<span class="token punctuation">,</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">)</span>  
model<span class="token punctuation">.</span>add<span class="token punctuation">(</span>Dropout<span class="token punctuation">(</span><span class="token number">&#48;.2</span><span class="token punctuation">)</span><span class="token punctuation">)</span>  <span class="token comment">#防止过拟合  </span>
model<span class="token punctuation">.</span>add<span class="token punctuation">(</span>Dense<span class="token punctuation">(</span><span class="token number">1</span><span class="token punctuation">)</span><span class="token punctuation">)</span>      <span class="token comment">#输出维度和y一样  </span>
start <span class="token operator">=</span> time<span class="token punctuation">.</span>time<span class="token punctuation">(</span><span class="token punctuation">)</span>  
<span class="token comment">#编译模型  </span>
model<span class="token punctuation">.</span><span class="token builtin">compile</span><span class="token punctuation">(</span>loss<span class="token operator">=</span><span class="token string">'mean_squared_error'</span><span class="token punctuation">,</span> optimizer<span class="token operator">=</span><span class="token string">'Adam'</span><span class="token punctuation">)</span>
</code></pre>
<h2 id="结论">结论</h2>
<p>报告研究了金融市场中时间序列波动率预测问题,从GARCH族模型和LSTM神经网络理论出发,应用Eviews对GARCH模型进行回归,找到预测精度最优的模型,再运用得到的参数估计值作为LSTM训练集的输入,训练得到预测损失最小的GARCH和LSTM混合模型。对GARCH和LSTM模型有更深入的理解,也能用更精确的方法来预测股价波动率,也学习了很多Python知识,受益颇深。</p>
<p><strong>参考文献</strong><br>
[1] 田晓丹. 基于LSTM与多GARCH型混合模型的股价波动性预测的实证分析[D].哈尔滨工业大学,2&#48;19.<br>
[2] CSDN,人大经济论坛各种资料.</p>
</div>
</div>
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:python 股票波动率 GARCH ARCH 混合模型

沙发
hifinecon 发表于 2021-6-27 13:28:08 |只看作者 |坛友微信交流群

使用道具

藤椅
晚饭一碗饭 发表于 2021-6-29 15:25:12 来自手机 |只看作者 |坛友微信交流群
可以借鉴一下写python结课作业吗

使用道具

板凳
瑾曦。 在职认证  学生认证  发表于 2021-7-1 09:35:44 |只看作者 |坛友微信交流群
晚饭一碗饭 发表于 2021-6-29 15:25
可以借鉴一下写python结课作业吗
可以的呀

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 10:01