日内因子:开盘缺口探索
本文探索股价日内模式中蕴藏的一种选股因子:开盘缺口。
股价的日内走势可能蕴藏着一些非常有用的信息,尤其是开盘和收盘的几分钟,潜藏的有效“私有信息”可能性比较大。比如,由于隔夜时段的交易暂停,每个交易日开盘后,市场累积的大量私有信息,将通过交易迅速得到释放,知情交易概率在日内呈现快速下降的态势。
开盘缺口因子就致力于抓住上一日收盘和本日开盘之间信息差距。如果开盘价远高于前一日收盘价(跳空高开),说明说明市场情绪激动,股票可能会大幅上涨(突破缺口)或者也会逐步下跌(缺口填补)。本文主要探索上一日收盘价和本日开盘价的差距(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年时间段进行回测,发现第五组有显著的增加收益效果。
具体代码如下,可以在此基础上进一步探索: