日内策略研究-30年期国债ETF-夏普3.9,年化17%,最大回撤2.6%
  ELVES 17天前 114 0

为什么要做日内策略

之前在大A做指数增强,主要是微盘指数增强。从长期看,这可能是大A里相对更稳的贝塔,但也难免受周期影响,可能出现持续数月甚至半年的风格中断,进而导致收入中断。结合各个群的讨论和看到的资料,我认为高频策略不仅大约 3 个月就能验证有效性,而且有望带来更持续的收入;同时,alpha 也更多沉淀在高频数据中,参与者相对较少。最终决定在已有 β 基本盘的基础上,再做一套高频或日内策略。

选择什么标的

在大 A 只能 T+1,但有个比较特殊的存在:30 年期国债 ETF,零手续费、零佣金,支持 T0 交易,可卖空、可融资。并且小资金滑点小、盘口深。这个 ETF 才发行 3 年,还没被机构“做烂”;相比之下,10 年期国债 ETF 基本已经被套利得差不多了,定价更有效。

研究部分

数据获取

首先到米筐或者聚宽随便什么平台上先把1分钟数据拉下来玩玩看。

image.png

因为从平台直接获取的数据,这个质量就不做分析了,如果是tick数据或者在高频一点的要做个分析,之前看tick数据就有很多异常值,3秒一次,但是max和min还有奇奇怪怪的一些值要做个处理,这里为了方便分析,拿1分钟数据直接开干。

高频研报阅读

由于之前没有高频和时序研究经验,先找了两篇研报来看看,首先是兴业证券-高频漫谈-220104这篇报告,里面摒弃了简单的算子组合,提出信息角度出发,利用机器学习挖掘总体分布的统计特征,将指标构造分为四类:
分布信息: 对时序重排序不敏感,如分钟收益率的偏度、峰度、信息熵等 。
时间信息: 对时序排序敏感,利用DTW或LSTM等方法提取时序序列的特征 。
关联信息: 利用随机变量间的联合分布,如量价相关性 。
另类信息: 依赖于外部定义的特殊概念,如尾盘特征、大单统计等 。

image.png

后续重点研究分布信息和时间信息吧,我简单的理解是分布信息这个用来选截面比较合适,找过去一个t时刻下的rank,选美,时间这个也可以作为一个指标然后进行rank,都可以,如果是指数选股可以采用截面的方式做统计,但是我们的研究标的是单个标的,所以核心还是要研究时间序列的内容。

研究他的时序这篇研报兴业证券-高频研究系列六:时序信息中的Alpha-230629

有效市场假说(Efficient Markets Hypothesis,EMH)由美国经济学家尤金·法玛(Eugene Fama)于 1970 年提出并加以深化。在弱式有效市场中,市场价格已充分反映证券价格的所有历史信息,包括成交价、成交量、卖空金额、融资金额等。若弱式有效市场假说成立,则技术分析将失去作用,基本面分析也难以帮助投资者获得超额收益。然而,就 A 股市场而言,主流观点认为其尚未达到弱式有效市场。对流动性资产(如股票)来说,过去一段时间的量价信息并不能完全涵盖所有历史信息。因此,资产前后信息的关联程度,以及在已知前序信息基础上的样本数据特征,是衡量其是否近似弱式有效市场的重要维度。

在《高频漫谈》中,对时序信息的定义需满足下述条件:
𝑔 = 𝑓(𝑅𝑒𝑜𝑟𝑑𝑒𝑟(𝒅𝒂𝒕𝒂)) ≠ 𝑓(𝒅𝒂𝒕𝒂) (1)
其中,𝒅𝒂𝒕𝒂为日内行情数据,如分钟级收盘价、成交量等。指标 𝑔 对时序重排序函数 𝑅𝑒𝑜𝑟𝑑𝑒𝑟 敏感,时序变化会影响指标取值。例如,收益率自相关性 ρ(𝒓𝒕, 𝒓𝒕−𝟏) 依赖于收益率序列的排序;当重新排列收益率序列后,指标值会发生变化。在此基础上,我们衍生出基于时序信息的相关因子。在本文中,我们将时序信息因子分为两类构建方式:序列自相关性与条件分布。

下面是各因子的构造方式,其实都比较简单:

image.png

理论部分结束,感觉还是很有道理的,过去一段时间的价格并不能完全体现整个信息,可能会有未来的惯性或者关联,因子也基本是量和收益率惯性的构造,可以试试看。

代码实现

因为研报是股票来选股,做的高频因子低频化,平滑了过去15天,我们这里按比例做个平滑240分钟。

def calc_rtn_foc(df, lookback=15, smooth=240): """ 因子 1:价惯性 (rtn_foc) 逻辑:高频价格形成的动量。IC > 0 """ foc_raw = df.groupby(level='order_book_id')['rtn'].rolling(window=lookback).apply( lambda x: x.autocorr(lag=1) if len(x) == lookback else np.nan ).reset_index(level=0, drop=True) return foc_raw.groupby(level='order_book_id').rolling(window=smooth).mean().reset_index(level=0, drop=True) def calc_rtn_dw_pos(df, lookback=15, smooth=240): """ 因子 2:搬正后的 DW 统计量 (rtn_dw_pos) 逻辑:原始 DW 的 IC 为负。我们取其相反数以“搬正”为正向预测因子。 """ dw_raw = df.groupby(level='order_book_id')['rtn'].rolling(window=lookback).apply( fast_dw, raw=False ).reset_index(level=0, drop=True) dw_smooth = dw_raw.groupby(level='order_book_id').rolling(window=smooth).mean().reset_index(level=0, drop=True) return -dw_smooth # 取负值搬正

这里取15分钟来计算这个因子的IC

image.png

得到的结果比较丑,但是正的0.02,也算多头。

继续看了一篇期刊,《High-Frequency Trading in the Chinese Stock Market- Predictability, Profitability, and Regulation. 》复现里面的引力因子,得到IC比较惊人,这个引力效应因子具有很强的均值回归效应。

image.png

空头因子,把他搬正后,在写个回测引擎,考虑滑点0.2bps,手续费免五,杠杆资金费率等,以及延迟一个tick交易等,同样通过参数平原扫描查看15分钟和30、60分钟等等参数避免过拟合,最终15分钟交易还是很强。

参数平原查看

image.png

image.png

从这个结果来看,该因子频率越高,收益和回撤越好,只要滑点控制的好,在这个标的下还是有很强的α能力,核心是你能不能抢到单,但是按目前这个标的来看,没有问题,主要还是我资金量小。一样的模型下,如果滑点设置大点,就废了,下图是设置了2.0bps。如果能成功实施,感觉比红利靠谱一点,比如用到杠铃策略的另一端,债跌的时候我横盘,股跌了债涨的逻辑用于对冲。

image.png

也感慨,高频的核心不是拼谁的模型在极端时间下效果好,要保证能吃到单才行,接下来继续研究日内和高频的,看看qmt怎么落地这套策略。

最后一次编辑于 17天前 0

暂无评论

推荐阅读
  18028306419   3天前   20   0   0 Python
  15012901756   2天前   15   0   0 Python