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对本文所作的贡献表示诚挚感谢,他毕业于厦门大学(马来西亚分校),专长金融数学,数据分析可视化。

相关文章
|
1天前
|
机器学习/深度学习 TensorFlow API
Python深度学习基于Tensorflow(3)Tensorflow 构建模型
Python深度学习基于Tensorflow(3)Tensorflow 构建模型
10 2
|
2天前
|
语音技术 开发者 Python
python之pyAudioAnalysis:音频特征提取分析文档示例详解
python之pyAudioAnalysis:音频特征提取分析文档示例详解
9 0
|
2天前
|
数据可视化 大数据 Python
python大数据分析处理
python大数据分析处理
7 0
|
3天前
|
机器学习/深度学习 人工智能 大数据
AI时代Python金融大数据分析实战:ChatGPT让金融大数据分析插上翅膀
AI时代Python金融大数据分析实战:ChatGPT让金融大数据分析插上翅膀
|
4天前
|
机器学习/深度学习 自然语言处理 算法
Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码
Python遗传算法GA对长短期记忆LSTM深度学习模型超参数调优分析司机数据|附数据代码
|
4天前
|
Python Perl
Python中的字符串分析:判断字符串中是否包含字母
Python中的字符串分析:判断字符串中是否包含字母
9 0
|
15天前
|
存储 人工智能 数据处理
Python:编程的艺术与科学的完美交融
Python:编程的艺术与科学的完美交融
19 1
|
2天前
|
JSON 数据格式 开发者
pip和requests在Python编程中各自扮演着不同的角色
`pip`是Python的包管理器,用于安装、升级和管理PyPI上的包;`requests`是一个HTTP库,简化了HTTP通信,支持各种HTTP请求类型及数据交互。两者在Python环境中分别负责包管理和网络请求。
13 5
|
4天前
|
存储 Python 容器
Python高级编程
Python集合包括可变的set和不可变的frozenset,用于存储无序、不重复的哈希元素。创建集合可使用{}或set(),如`my_set = {1, 2, 3, 4, 5}`。通过add()添加元素,remove()或discard()删除元素,如`my_set.remove(3)`。
|
5天前
|
测试技术 Python
Python模块化方式编程实践
Python模块化编程提升代码质量,包括:定义专注单一任务的模块;使用`import`导入模块;封装函数和类,明确命名便于重用;避免全局变量降低耦合;使用文档字符串增强可读性;为每个模块写单元测试确保正确性;重用模块作为库;定期维护更新以适应Python新版本。遵循这些实践,可提高代码可读性、重用性和可维护性。
25 2