日内因子:开盘缺口探索

本文探索股价日内模式中蕴藏的一种选股因子:开盘缺口。

股价的日内走势可能蕴藏着一些非常有用的信息,尤其是开盘和收盘的几分钟,潜藏的有效“私有信息”可能性比较大。比如,由于隔夜时段的交易暂停,每个交易日开盘后,市场累积的大量私有信息,将通过交易迅速得到释放,知情交易概率在日内呈现快速下降的态势。

开盘缺口因子就致力于抓住上一日收盘和本日开盘之间信息差距。如果开盘价远高于前一日收盘价(跳空高开),说明说明市场情绪激动,股票可能会大幅上涨(突破缺口)或者也会逐步下跌(缺口填补)。本文主要探索上一日收盘价和本日开盘价的差距(close_1/open)是否会造成一定的收益差距(ret_0)。

首先抽取特征,然后创建下列衍生因子:

  • alpha:open/close_1,alpha越大,说明本日开盘价高出上一日收盘价幅度越大

  • rank(alpha):对于alpha值进行百分比升序排列

  • ret0:shift(close,-2)/shift(open,-1)-1,下一日收益

接着进行股票过滤:

  • 过滤掉退市和ST的股票

  • 过滤掉出现涨跌停的股票

最后进行alpha因子的分组收益分析: 对alpha排序后,将其分为5组,计算每一组股票的平均累计收益率,画出累计收益图以分析不同大小alpha对于收益率的影响。

本文探索股价日内模式中蕴藏的一种选股因子:开盘缺口。

股价的日内走势可能蕴藏着一些非常有用的信息,尤其是开盘和收盘的几分钟,潜藏的有效“私有信息”可能性比较大。比如,由于隔夜时段的交易暂停,每个交易日开盘后,市场累积的大量私有信息,将通过交易迅速得到释放,知情交易概率在日内呈现快速下降的态势。

开盘缺口因子就致力于抓住上一日收盘和本日开盘之间信息差距。如果开盘价远高于前一日收盘价(跳空高开),说明说明市场情绪激动,股票可能会大幅上涨(突破缺口)或者也会逐步下跌(缺口填补)。本文主要探索上一日收盘价和本日开盘价的差距(close_1/open)是否会造成一定的收益差距(ret_0)。

首先抽取特征,然后创建下列衍生因子:

- **alpha**:open/close_1,alpha越大,说明本日开盘价高出上一日收盘价幅度越大
- **rank(alpha)**:对于alpha值进行百分比升序排列
- **ret0**:shift(close,-2)/shift(open,-1)-1,下一日收益

接着进行股票过滤:

- 过滤掉退市和ST的股票
- 过滤掉出现涨跌停的股票

最后进行alpha因子的分组收益分析:
对alpha排序后,将其分为5组,计算每一组股票的平均累计收益率,画出累计收益图以分析不同大小alpha对于收益率的影响。

> **defm6_run_bigquant_run**(input_1, input_2):
> \# 示例代码如下。在这里编写您的代码
>      df = input_1.read_df()
>      factor = input_2.read_pickle()[0]
>      df['group'] = pd.cut(df[factor],bins=[0.0,0.02,0.4,0.6,0.98,1.0],labels=[1,2,3,4,5])
>      grouped_processed_df = df.groupby(['date','group'])['ret0'].agg(np.mean).fillna(0).reset_index()
>      results = grouped_processed_df.groupby('group').apply(**lambda** df: np.cumprod(1+df.set_index('date')['ret0'])).T
>      data_2 = DataSource.write_pickle([factor])
>      data_1 = DataSource.write_df(results)      
>      **return** Outputs(data_1=data_1,data_2=data_2)  
> \# 后处理函数,可选。输入是主函数的输出,可以在这里对数据做处理,或者返回更友好的outputs数据格式。此函数输出不会被缓存。
> **defm6_post_run_bigquant_run**(outputs):
>      results = outputs.data_1.read()
>      new_data = pd.DataFrame()     
> **for** i **in** range(1,6):         
>     new_data[i] = results[i]     
> factor = outputs.data_2.read_pickle()[0]     
> T.plot(new_data,
>             options={
>                 'legend':{'enabled': **True**},
>                 'chart': {'type': 'line'},
>                 'title': {'text': factor+' :因子分组收益'}})
>  **return** outputs

在2015-2017年时间段进行回测,发现第五组有显著的增加收益效果。

![img](https://pic4.zhimg.com/v2-5a715167524944fdf9222becc1004493_b.jpg)![img](https://pic4.zhimg.com/80/v2-5a715167524944fdf9222becc1004493_720w.jpg)

具体代码如下,可以在此基础上进一步探索:

 在2015-2017年时间段进行回测,发现第五组有显著的增加收益效果。

img

img

具体代码如下,可以在此基础上进一步探索:

日内因子:开盘缺口探索 - 策略&研究 - AI量化投资社区 - BigQuant本文探索股价日内模式中蕴藏的一种选股因子:开盘缺口。 股价的日内走势可能蕴藏着一些有用的信息,特别是开盘和收盘的那几分钟,尤其可能潜藏着一些“私有信息”。比如,由于隔夜时段的交易暂停,每个交易日开盘后,市场累积的大量私有信息,将通过交易迅速得到释放,知情交易概率在日内呈现快速下降的态势。 开盘缺口因子就致力于抓住上一日收盘和本日开盘之间信息差距。如果开盘价远高于前一日收盘价(跳空高开),说明说明市场情绪激动,股票可能会大幅上涨(…https://bigquant.com/community/t/topic/182853?utm_source=csdn_article&utm_medium=article&utm_id=csdn

posted @ 2022-01-05 11:52  BigQuant量化  阅读(32)  评论(0编辑  收藏  举报  来源