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

具体代码如下,可以在此基础上进一步探索:
在2015-2017年时间段进行回测,发现第五组有显著的增加收益效果。
具体代码如下,可以在此基础上进一步探索:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本