101个α因子#7
((adv20 < volume) ? ((-1 * ts_rank(abs(delta(close, 7)), 60)) * sign(delta(close, 7))) : (-1 * 1))
worldquant brain平台上调整后的语法:
((adv20 < volume) ? ((-1 * ts_rank(abs(ts_delta(close, 7)), 60)) * sign(ts_delta(close, 7))) : (-1 * 1))
这个alpha因子的逻辑可以拆解为条件判断下的两类信号生成机制,其核心是通过成交量筛选市场状态,并结合价格变化的幅度与方向构建反转策略。以下是逐步解析:
1. 整体结构:条件运算符
因子形式为:
(adv20 < volume) ? 表达式A : 表达式B
-
条件:
adv20 < volume
adv20
代表过去20天的平均成交量(假设为简单移动平均)。volume
为当日成交量。- 条件满足:当日成交量超过过去20日均量(放量)。
- 条件不满足:当日成交量低于或等于20日均量(缩量或常态)。
-
表达式A(放量时的逻辑):
(-1 * ts_rank(abs(ts_delta(close, 7)), 60) * sign(ts_delta(close, 7)))
-
表达式B(非放量时的逻辑):
-1
(固定值,直接看空)。
2. 放量时的信号生成(表达式A)
步骤拆解:
-
计算价格变化方向与幅度:
ts_delta(close, 7)
:过去7天的价格变化值(当前收盘价 - 7天前收盘价)。sign(ts_delta(close, 7))
:提取价格变化的方向(正值为上涨,负值为下跌)。
-
计算价格波动幅度的历史排名:
abs(ts_delta(close, 7))
:取价格变化的绝对值(仅关注波动幅度,忽略方向)。ts_rank(..., 60)
:计算该绝对值在过去60天内的滚动排名(标准化为0到1之间的分位数,例如排名最高为1,最低为0)。
-
组合方向与排名:
ts_rank(...) * sign(...)
:将价格方向(±1)与波动幅度的历史排名相乘。- 若过去7天上涨(sign=+1),则结果为
ts_rank值
; - 若过去7天下跌(sign=-1),则结果为
-ts_rank值
。
- 若过去7天上涨(sign=+1),则结果为
-
符号反转:
- 乘以
-1
,最终表达式为-1 * (ts_rank * sign)
。 - 上涨时(sign=+1):结果为
-ts_rank
(负值,看空信号); - 下跌时(sign=-1):结果为
+ts_rank
(正值,看多信号)。
- 乘以
逻辑解释:
- 放量上涨:
- 价格涨幅越大(
ts_rank
高),因子值越负,认为短期超买,预期反转下跌。
- 价格涨幅越大(
- 放量下跌:
- 价格跌幅越大(
ts_rank
高),因子值越正,认为短期超卖,预期反弹上涨。
- 价格跌幅越大(
- 核心思想:放量伴随极端价格波动时,押注均值回复。
3. 非放量时的信号(表达式B)
- 直接赋值:
-1
(固定看空信号)。 - 隐含假设:
- 成交量未超过20日均值时,市场缺乏动能,默认看空。
- 可能认为缩量环境下趋势难以持续,或策略仅在放量时有效。
4. 综合逻辑总结
- 放量场景(
volume > adv20
):- 若过去7天上涨,且涨幅在近期60天内处于高位(波动剧烈),因子值为负,看空;
- 若过去7天下跌,且跌幅在近期60天内处于高位,因子值为正,看多。
- 非放量场景(
volume ≤ adv20
):- 无条件看空(固定值-1)。
5. 策略设计意图
- 成交量筛选:
- 仅对放量交易日生成动态信号,认为放量是价格波动有效性的前提。
- 波动率与反转:
- 通过
ts_rank
捕捉价格波动的极端性(排名越高,波动越异常),押注反转。
- 通过
- 非对称处理:
- 放量上涨时看空,放量下跌时看多,非放量时统一看空,体现策略对市场状态的敏感性。
6. 潜在应用与改进点
- 适用市场:
- 震荡市或均值回复较强的市场(反转策略有效)。
- 趋势市中可能失效(如放量上涨后继续上涨)。
- 改进方向:
- 非放量时的固定看空可能过于武断,可引入其他条件(如结合价格位置或波动率)。
ts_rank
窗口(60天)和价格变化窗口(7天)需根据市场节奏调整。- 可对放量下跌的信号进一步过滤(如结合超卖指标RSI)。
7. 示例验证
- 案例1(放量上涨):
- 过去7天上涨10%,涨幅在60天内排名前10%(
ts_rank=0.9
),因子值 =-1 * 0.9 * 1 = -0.9
,强烈看空。
- 过去7天上涨10%,涨幅在60天内排名前10%(
- 案例2(放量下跌):
- 过去7天下跌8%,跌幅在60天内排名前5%(
ts_rank=0.95
),因子值 =-1 * 0.95 * (-1) = +0.95
,强烈看多。
- 过去7天下跌8%,跌幅在60天内排名前5%(
- 案例3(缩量震荡):
- 成交量低于20日均值,因子值 =
-1
,直接看空。
- 成交量低于20日均值,因子值 =
总结
该因子通过成交量筛选+价格波动极端性排名+方向反转,构建了一个条件式反转策略:
- 放量时:押注短期过度波动的价格向均值回归。
- 非放量时:默认看空,规避低波动或无趋势市场。
其核心假设是放量伴随的价格极端波动不可持续,适用于捕捉短期反转机会。
目前没有调整至可提交的状态。欢迎留言交流!