python用回归、arima、随机森林、GARCH模型分析国债期货波动性、收益率、价格预测

简介: python用回归、arima、随机森林、GARCH模型分析国债期货波动性、收益率、价格预测

全文链接:http://tecdat.cn/?p=31123

分析师:Yihan Mao


本文为客户提供咨询,让个人购买人员了解美国国债期货的特性,以便于进行个人投资及管理


任务/目标

由于国债期货的方便,可以快速交易,所以无论是用来投机还是用来对冲风险都有很好的作用效果。我们提取美国国债期货的数据,进行波动性,收益率上的分析,并进行价格预测。

相关视频

1]NFR5I9)6JFU%IET`O]V0J.png

J2087J]8Y2KV@3@EU$F54G1.png

5IFE6%[@I35{`(}586ODNI2.png

数据源准备

用python(import YahooFinance)获取美国国债期货近10年的数据作为基本分析数据。同时,由于国债期货的价格受到许多宏观因素的影响,所以并且还需要找到一些其他的影响要素,这里我们提取GDP,CPI,Treasury Yield(收益率)并作为我们的特征。

特征转换

数据预处理。datetime换成标准时间,算出日logreturn(log收益),分别算出15,50,100天的SMA与RSI加入到特征。画出boxplot,通过图过滤掉outliers跟一些不正常的点。用pandas筛选数据,填补过滤掉空数据。

分析收益

画出日收益率,寻找聚集波动性强的点,进行进一步分析。通过图看出在哪一段时间日收益较高,并且寻找近期事件发生的影响。我们发现存在收益相对较高,有投资价值。

分析波动性

波动性可以考虑为标准差的表现。首先直观观察,画出短期SMA与长期SMA,交点较多的地方为潜在波动性强的地方。再画出Bollinger Bands,密集的地方为波动性大的地方。

}}W1[4DWXW4R8@EF18MK$55.png

SEDJ96F1(}(TKEYBVJ$ZA61.png

将这段时间发生的事情结合在一起分析,可以看出人们在发生经济变动的时候会选择用此国债期货进行风险转移。


点击标题查阅往期内容


3S(HZGD)YHCS6%IA[9UNGCI.png

R语言中的时间序列分析模型:ARIMA-ARCH / GARCH模型分析股票价格

左右滑动查看更多

01

S6T``N1O57$%POVS[8N7`DR.png

02

5~STGE([ONNV[AY~CWX[8NN.png

03

VYBJ3ZTMD0)CEFR{F1L$YZW.png

04

~FW6GTT8G57GMYPXM2J7VWK.png


建模分析

Regression Model:

由于特征数据有多重因素,我们可以一个多重线性回归。通过画图scatterplot matrix我们发现,很多之间并不是线性,而且存在变量之间的线性关系(由于目标是预测,所以可以忽略),所以我们进行Box-Tidewell Transformation. 然后选取训练集合跟预测集合,建立模型进行回归预测。

ARIMA:

由于国债期货不是商品类型,所以我们不考虑季节性的变化。(ARIMA模型是指将非平稳时间序列转化为平稳时间序列,然后将结果变量做自回归(AR)和自平移(MA)。)

首先画图查看是否存在自相关。用ADF test来检测是否平稳,如果不平稳我们对其进行差分处理,知道检测P-value<0. 然后用Ljung-Box Test 检测白噪声,如果不是白噪声证明可以预测此时间序列。

RYGX8SEE[W2G`U)ZZ6BO8MM.png

接下来定阶。Auto-select得知选择ARIMA(1,1,1). 我们建立模型。并对模型进行residual分析,得知模型良好。

IH7{B`Y_5K2382KT`0N(E]P.png

同时看出residual可以看做normal分布。

我们选择前80%的数据为训练集合,后20%为测试集合,建立预测。

08%2S}@))3EQ_Z3YU18$WZT.png

可以看出预测值与实际值近似。如果假设经济状况平稳,没有重大事情发生的状况下(eg.covid-19),可以参考其变化来进行投机,实际上仍需考虑多方面宏观因素。

随机森林:

用随机的方式建立一个由很多决策树组成的,每一棵树都只负责自己的部分。每一棵树来进行自己的分类运算,最后选择评分最高的来进行预测。

N9]23KN~ZZ1MC59{]23CY2V.png

GARCH模型:

金融市场有杠杆效应。方差并不是恒定的,ARCH模型是一个很好的解决方法。

由于国债期货长达30年,很多宏观因素的变化对其有很大的影响。

预测取决于我们的目的,如果我们的目的仅仅是投机,我们只需要观察价格的变化走势,同时受到一些宏观因素的影响。比如我们还可以通过画出RSI的变化,来训练什么时候应该买入卖出。

9AV5YMUS9~Q6ZJ)0)_O@F}E.png

同时根据交易量(Volume)的变化可以看出人们的活动状况,尤其是在宏观事件影响的时候。这个对于风险管理有很重要的参考价值。

改进:

可以根据每周工作日设置indicator变量,更好的反应时间因素。同时可以设置他们的相互作用(interaction effect)。

选取的宏观因素可以进一步增加。

关于作者

在此对Yihan Mao对本文所作的贡献表示诚挚感谢,他毕业于厦门大学(马来西亚分校),专长金融数学,数据分析可视化。

相关文章
|
4月前
|
机器学习/深度学习 数据采集 数据挖掘
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
基于 GARCH -LSTM 模型的混合方法进行时间序列预测研究(Python代码实现)
129 2
|
3月前
|
机器学习/深度学习 数据采集 并行计算
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
多步预测系列 | LSTM、CNN、Transformer、TCN、串行、并行模型集合研究(Python代码实现)
337 2
|
3月前
|
算法 安全 新能源
基于DistFlow的含分布式电源配电网优化模型【IEEE39节点】(Python代码实现)
基于DistFlow的含分布式电源配电网优化模型【IEEE39节点】(Python代码实现)
259 0
|
4月前
|
机器学习/深度学习 算法 调度
【切负荷】计及切负荷和直流潮流(DC-OPF)风-火-储经济调度模型研究【IEEE24节点】(Python代码实现)
【切负荷】计及切负荷和直流潮流(DC-OPF)风-火-储经济调度模型研究【IEEE24节点】(Python代码实现)
181 0
|
3月前
|
数据采集 机器学习/深度学习 人工智能
Python:现代编程的首选语言
Python:现代编程的首选语言
286 102
|
3月前
|
数据采集 机器学习/深度学习 算法框架/工具
Python:现代编程的瑞士军刀
Python:现代编程的瑞士军刀
311 104
|
3月前
|
人工智能 自然语言处理 算法框架/工具
Python:现代编程的首选语言
Python:现代编程的首选语言
257 103
|
3月前
|
机器学习/深度学习 人工智能 数据挖掘
Python:现代编程的首选语言
Python:现代编程的首选语言
193 82
|
2月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
179 3
|
2月前
|
数据处理 Python
Python编程:类型转换与输入输出
本教程介绍Python中输入输出与类型转换的基础知识,涵盖input()和print()的使用,int()、float()等类型转换方法,并通过综合示例演示数据处理、错误处理及格式化输出,助你掌握核心编程技能。
411 3

推荐镜像

更多