首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在多个时间框架内聚合/重采样熊猫多指标数据并预测ARIMA

在多个时间框架内聚合/重采样熊猫多指标数据并预测ARIMA
EN

Stack Overflow用户
提问于 2019-05-23 15:25:10
回答 1查看 578关注 0票数 3

我有多个时间框架,我想跟踪和预测值(ARIMA预测每段时间提前1段),我的算法在最低的时间框架上检索数据。注意:每个时间框架都是均匀的(但不一定是对称的),可以被较低的时间间隔。作为一个重要的副词,日内时间框架(1H,4H)应该从上午9:30开始(市场开放时间)。

1分钟,5分钟,15分钟,30分钟,1H,4H,1D,1W,1M

首先,该算法执行批量history调用,并在给定的时间范围内获取所有1分钟的数据(热身数据)。然后,在运行时(永不停止;这是一个交易算法),它每分钟接收数据。

第一步(在接收大量历史数据之后)是使用一个越来越小的数据集将其聚合到每个较高的时间框架中,以节省处理时间:

即,

1分钟时间帧数据=1分钟数据(历史批量数据)

5分钟时间帧数据=聚合1分钟时间帧数据到5分钟

15分钟时间帧数据=聚合5分钟时间帧数据到15分钟

等等。

给定以下示例数据集(并假设可能包含其他符号):

代码语言:javascript
复制
                                 close        high         low        open
symbol time                                                                  
SPY    2018-05-22 09:31:00  270.245900  270.374166  270.226167  270.305100   
       2018-05-22 09:32:00  270.344566  270.374166  270.206434  270.245900   
       2018-05-22 09:33:00  270.374166  270.374166  270.314966  270.344566   
       2018-05-22 09:34:00  270.275500  270.374166  270.245900  270.374166   
       2018-05-22 09:35:00  270.413632  270.443232  270.275500  270.275500   
       2018-05-22 09:36:00  270.502431  270.522165  270.384032  270.413632   
       2018-05-22 09:37:00  270.541898  270.591231  270.492565  270.502431

Q1:我如何聚合多索引熊猫的数据,以便每个符号的时间索引和列被聚合?下面是一个部分未经测试(而且可能不起作用)的解决方案,说明了我的意图:

代码语言:javascript
复制
# Where timeframe.Frequency is a string such as "1H" or "1min"
df.resample(timeframe.Frequency).agg({"open": "first", "close": "last", "low": "min", "high": "max"})

A1df.groupby(['symbol', pd.Grouper(freq=timeframe.Frequency, level='time')]).agg({'open':'first', 'close':'last', 'high':'max', 'low':'min'})

Q2:考虑到对于较高的时间框架(例如,5分钟的时间框架数据将包含@9:35am完整条形数据和@9:37am部分条形数据表示为@9:40 a),在给定时间帧的数据集中有部分数据是明智的,还是应该在运行时将其添加到数据集之前使用QuantConnect的整合器来完成它?如何在处理history时说明这些部分条形图数据

A2:部分条确实是在重采样时创建的。例如,在6月1日之后,我可能有一个1分钟的数据点,而我的每月时间框架数据将有一个6月30日的条目,其OHLC值为1分钟栏。此时,我可以删除行,或者在数据输入时继续用新值更新它。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-23 16:33:39

对于第一个问题,假设数据是由symboltime索引的

代码语言:javascript
复制
(df.groupby(['symbol', df.index.get_level_values(1).floor('5T')])
   .agg({"open": "first", 
         "close": "last", 
         "low": "min", 
         "high": "max"})
)

给予:

代码语言:javascript
复制
                                open        close       low         high
symbol  time                
SPY     2018-05-22 09:30:00     270.305     270.276     270.206     270.374
SPY     2018-05-22 09:35:00     270.276     270.542     270.276     270.591

第二个问题过于定性,很大程度上取决于您的数据和抽样窗口。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56278496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档