我正在尝试对给定股票未来30天的波动性进行滚动预测(即预测时间t + 1,然后在预测t + 2时使用此预测,依此类推...)

我这样做是使用R的rugarch软件包,该软件包是我使用rpy2软件包在Python中实现的。 (我发现Python软件包的文档记录不清,更难使用。这些软件包中的大多数在R中也已经成熟得多)。

到目前为止,这是我的代码,该模型适用于直到我拥有的最后30天数据的股票回报的整个时间序列。 然后,我对我拥有的未见数据的最后30天进行滚动预测(我认为)。

import numpy as np

import pandas as pd

import matplotlib.pyplot as plt

from rpy2.robjects.packages import importr

import rpy2.robjects as robjects

from rpy2.robjects import numpy2ri

ticker = 'AAPL'

forecast_horizon = 30

prices = utils.dw.get(filename=ticker, source='iex', iex_range='5y')

df = prices[['date', 'close']]

df['daily_returns'] = np.log(df['close']).diff() # Daily log returns

df['monthly_std'] = df['daily_returns'].rolling(21).std() # Standard deviation across trading month

df['annual_vol'] = df['monthly_std'] * np.sqrt(252) # Convert monthly standard devation to annualized volatility

df = df.dropna().reset_index(drop=True)

# Initialize R GARCH model

rugarch = importr('rugarch')

garch_spec = rugarch.ugarchspec(

mean_model=robjects.r('list(armaOrder = c(0,0))'),

variance_model=robjects.r('list(garchOrder=c(1,1))'),

distribution_model='std'

)

# Used to convert training set to R list for model input

numpy2ri.activate()

# Train R GARCH model on returns as %

garch_fitted = rugarch.ugarchfit(

spec=garch_spec,

data=df['daily_returns'].values * 100,

out_sample=forecast_horizon

)

numpy2ri.deactivate()

# Model's fitted standard deviation values

# Revert previous multiplication by 100

# Convert to annualized volatility

fitted = 0.01 * np.sqrt(252) * np.array(garch_fitted.slots['fit'].rx2('sigma')).flatten()

# Forecast using R GACRH model

garch_forecast = rugarch.ugarchforecast(

garch_fitted,

n_ahead=1,

n_roll=forecast_horizon - 1

)

# Model's forecasted standard deviation values

# Revert previous multiplication by 100

# Convert to annualized volatility

forecast = 0.01 * np.sqrt(252) * np.array(garch_forecast.slots['forecast'].rx2('sigmaFor')).flatten()

volatility = pd.DataFrame({

'actual': df['annual_vol'].values,

'model': np.append(fitted, forecast),

})

plt.plot(volatility['actual'][:-forecast_horizon], label='Train')

plt.plot(volatility['actual'][-forecast_horizon - 1:], label='Test')

plt.plot(volatility['model'][:-forecast_horizon], label='Fitted')

plt.plot(volatility['model'][-forecast_horizon - 1:], label='Forecasted')

plt.legend()

plt.show()

该代码使用我自己的API检索每日价格,但是可以将其更改为您自己的价格数据以运行该代码。

对于AAPL,此脚本得出以下实际波动率与拟合波动率/预测波动率的关系图:

这导致以下两个问题:

这种对看不见的数据的预测令人惊讶地令人印象深刻,尤其是考虑到苹果最近在测试集中的波动率很高-高于该模型所适用的任何波动率。 此滚动预测是否按我期望的方式工作? 还是模型在拟合过程中实际上看到了最后30天?

如果此滚动预测能够按我预期的那样工作,那么现在我如何才能使模型适合我迄今拥有的整个训练数据时间序列,然后在未来30天进行滚动预测? 我无法在文档中找到任何可实现此目的的示例或任何在线示例。 无论该模型对我执行的历史数据进行测试的效果如何,如果不能用于对未来进行实际预测,则完全没有用。

python garch模型 forecast_python - 使用GARCH模型进行滚动预测 - 堆栈内存溢出相关推荐

  1. python音频 降噪_python - 使用pyaudio对音频播放进行降噪 - 堆栈内存溢出

    我正在用Python为Raspberry Pi写一个声码器,这使声音无法识别. 我录制音频并使用回调功能实时播放-它可以工作. 现在,我需要对输入进行去噪,以Numpy数组表示(像大多数教程和SO上的 ...

  2. python dtype o_python - 什么是dtype('O')? - 堆栈内存溢出

    当你在数据帧中看到dtype('O') ,这意味着Pandas字符串. 什么是dtype ? 什么属于pandas或numpy ,或两者,或其他什么? 如果我们检查一下pandas代码: df = p ...

  3. python array太慢_python - gdal ReadAsarray对于vrt非常慢 - 堆栈内存溢出

    迟到了,但这是我根据Rutger的优秀答案写的剧本. 它以某种方式优化了磁贴大小,以便您可以读取最少的块. 这几乎肯定不是你能做的最好的,但我注意到它在处理大小为[1440000 560000]的地理 ...

  4. python协方差矩阵_python - 使用pandas.ewm.cov的EWMA协方差矩阵 - 堆栈内存溢出

    我正在尝试使用函数pandas.ewm.cov()计算一组数据之间的指数加权协方差. 听起来很傻,但我无法访问结果:特别是如何获取最后一个矩阵(在本例中为第999个)作为pandas数据帧(切片等似乎 ...

  5. python网格搜索优化参数_python - pyspark:在网格搜索为空后获得最佳模型的参数{} - 堆栈内存溢出...

    有人可以帮助我从网格搜索中提取性能最佳的模型参数吗? 由于某种原因,它是空白的字典. from pyspark.ml.tuning import ParamGridBuilder, TrainVali ...

  6. java游戏怎么导入jme3,java - JME:将带有纹理的Cinema 4d模型导入jMonkey Projekt - 堆栈内存溢出...

    我的问题是: 现在,我想将其导出到我的jMonkeyEngine中,以将其设置在场景中并对其进行动画处理. 我试图将模型导出为.obj文件并将其加载到我的项目中(只是.obj文件). 结果是我没有纹理 ...

  7. matlab输出pdf图片超出边框,matlab - 将Matlab Simulink模型保存为PDF,带有紧密的边界框 - 堆栈内存溢出...

    给定Simulink框图(模型),我想生成稍后在LaTeX文档中使用的"屏幕截图". 我希望这个截图是PDF(矢量图形, - > pdflatex),带有一个紧密的边界框,我 ...

  8. python共享内存mmap_python - IPC在单独的Docker容器中的Python脚本之间共享内存 - 堆栈内存溢出...

    问题 我已经编写了一个神经网络分类器,该分类器可以获取海量图像(每张图像约1-3 GB),将其打补丁,然后分别通过网络传递这些补丁. 培训的进行过程非常缓慢,因此我对其进行了基准测试,发现用大约50秒 ...

  9. python将输出结果写入csv_python - 将输出写入CSV文件[处于保留状态] - 堆栈内存溢出...

    我已经建立了一个对象检测模型来检测视频帧中的一些对象.它可以正常工作,但是我无法将输出数据写入到csv文件中 我已经编写了用于对象检测的代码,并将检测的一些输出参数写入csv文件. from __fu ...

最新文章

  1. API网关Kong系列(二)部署
  2. hibernate框架学习第二天:核心API、工具类、事务、查询、方言、主键生成策略等...
  3. 移动端IM开发者必读(一):通俗易懂,理解移动网络的“弱”和“慢”
  4. 印刷点阵字体_印刷术如何确定可读性:衬线与无衬线,以及如何组合字体。
  5. [react] 在JSX中如何写注释?
  6. php curl curlopt_getfields,PHP中CURL的CURLOPT_POSTFIELDS参数使用细节
  7. 《教孩子编程(Python语言版)》课程介绍
  8. 机器学习1/100天-数据预处理
  9. 计算机系统组成 教案,计算机系统组成教学设计.doc
  10. 销售订单无法使用折扣(其他可以正常使用)
  11. MythXinWCF通用宿主绿色版V1.2发布,及服务启动相关说明
  12. android取消自动获取焦点,Android 如何让EditText不自动获取焦点 (转)(示例代码)...
  13. IIS 环境下 PHP无法显示错误信息------500错误
  14. tvb php 香港IP,优酷与TVB签订战略合作协议,实现内容IP与平台资源结合
  15. 下载 bilibili 视频字幕文件
  16. 谷歌浏览器批量删除书签
  17. CTF_Web:攻防世界高手区进阶题WP(15-18)
  18. 什么是URL,URI或URN?
  19. Input的常用属性
  20. Chrome OS与Windows

热门文章

  1. python 状态机设计(聊聊transitions)
  2. tgp显示网络无法连接服务器,tgp显示未链接服务器
  3. windows下创建守护进程A和B 互相监视 挂掉拉起
  4. 中国篮协关于举办2019年NBL联赛技术代表和裁判员培训班的通知
  5. 计算机视觉那些事——光源选择
  6. 在线发货找不到CHINA POST AIRMAIL?
  7. 遗传算法:交叉操作 Order Crossover OX1, OX2, OX3, OX4, OX5
  8. 可以测试流放之路伤害的软件,《流放之路》增伤机制介绍 伤害怎么计算
  9. 简单好用的随机点名器
  10. 【Vegas原创】win7下打开telnet服务