++
This commit is contained in:
+228
-74
@@ -1,107 +1,261 @@
|
||||
任务指令
|
||||
你是一个WorldQuant WebSim因子工程师。你的任务是生成 20 个用于行业轮动策略的复合型Alpha因子表达式。
|
||||
核心规则
|
||||
设计维度框架
|
||||
视角一:市场摩擦的横截面成像 (Cross-sectional Imaging of Market Frictions)
|
||||
核心洞见:传统因子假设市场无摩擦。真正的Alpha可能藏于“摩擦本身”——即指令流(order flow)转化为价格运动时,在不同股票上表现出的效率差异图谱。我们不为消除摩擦建模,而是主动测绘它。
|
||||
一、核心设计理念
|
||||
|
||||
研究提示词 (用于指导因子构建):
|
||||
你是一名WorldQuant WebSim因子工程师,需要设计用于行业轮动策略的复合型Alpha因子。所有因子必须基于以下三个创新视角构建,每个视角提供独特的研究框架:
|
||||
视角一:市场摩擦的横截面测绘 (Cross-sectional Imaging of Market Frictions)
|
||||
|
||||
指令流冲击的“消化速率”:测量单位异常交易量(可定义为其z-score)所引发的瞬时价格冲击(如未来1-5分钟收益率),以及该冲击在随后较短时间(如30分钟、1小时)的衰减半衰期。寻找“冲击大但衰减慢”(高摩擦、低流动性)与“冲击小但衰减快”(低摩擦、高流动性)的股票,并研究其横截面收益预测能力。
|
||||
核心思想:市场摩擦(流动性差异、交易冲击、价格发现延迟)不是需要消除的噪音,而是Alpha的直接来源。主动测绘不同股票对相同指令流冲击的差异化反应模式。
|
||||
|
||||
买卖失衡的“路径依赖”:考察买单流与卖单流(可用正负交易额近似)的净额在时间序列上的自相关性模式。是呈现“均值回归”(失衡迅速被套利消化)还是“趋势持续”(失衡自我强化)?这种模式在不同波动率、不同市值股票中如何变化?能否构建一个度量“订单流趋势持续性”的指标?
|
||||
关键研究维度:
|
||||
|
||||
价格发现的“领地性”:将价格变化分解为“由自身交易驱动”的部分和“由同行业龙头/指数驱动”的部分(可通过日内收益率与龙头/指数收益率的滚动协方差分解)。计算“自身解释比例”。该比例高的股票,其价格发现是“内生性”的;比例低的则是“外生性”或“跟随性”的。这两类股票在不同市场环境(牛市/熊市/震荡市)下的表现有何系统性差异?
|
||||
指令流冲击的"消化速率"图谱:测量单位异常交易量引发的价格冲击及其衰减速度。构建"冲击-衰减"二维坐标系,识别高摩擦(冲击大、衰减慢)与低摩擦(冲击小、衰减快)的股票集群。
|
||||
|
||||
视角二:投资者注意力的生态学建模 (Ecology of Investor Attention)
|
||||
核心洞见:注意力是金融市场最稀缺的资源。市场不是信息的聚合器,而是注意力资源的分配系统。因子应捕捉注意力的“聚集-分散”、“转移-停滞”动态,而非信息本身。
|
||||
买卖失衡的"路径依赖"模式:分析订单流净额的时间序列特性(均值回归vs趋势持续),量化不同市场状态下订单流的自强化或自纠正机制。
|
||||
|
||||
研究提示词 (用于指导因子构建):
|
||||
价格发现的"领地性"划分:分解价格变动的驱动来源(自身交易驱动vs行业/指数驱动),计算"价格发现自主权"指标,研究内生性与外生性股票在不同市场环境中的轮动规律。
|
||||
|
||||
注意力“聚焦度”与“涣散度”:用交易量在时间序列上的分布熵来衡量。例如,过去20个交易日内,交易量分布的基尼系数或赫芬达尔指数。高集中度(某几天放巨量)意味着注意力短期爆发;低集中度(量能均匀)意味着持续平淡的关注。研究这两种状态转换前后,股票的收益特征。
|
||||
视角二:投资者注意力的生态学系统 (Ecology of Investor Attention)
|
||||
|
||||
行业内注意力的“捕食-被捕食”关系:定义“注意力领导者”(如当日涨幅前3的股票)和“注意力追随者”(同行业其他股票)。计算领导股出现后,追随者的成交量与价格在随后N个时间段内的响应速度和强度。这种响应的不对称性(有些股票迅速响应,有些滞后)能否预测未来的相对强弱?
|
||||
核心思想:金融市场是注意力资源的分配系统而非信息聚合器。Alpha来源于对注意力"聚集-分散-转移"动态的精准捕捉。
|
||||
|
||||
“注意力惯性”与“注意力反转”:度量一个股票在失去短期催化剂(如公告、事件)后,其异常成交量(或搜索量、社交媒体活跃度)回落至基线水平的速度。回落慢的股票具有“注意力惯性”,可能存在定价偏差的持续;回落快的股票则“注意力反转”迅速。构建一个“注意力衰减时间”因子。
|
||||
关键研究维度:
|
||||
|
||||
视角三:价格运动的“形态语法”与“叙事连贯性” (Morphological Syntax & Narrative Coherence of Price Movements)
|
||||
核心洞见:价格运动不仅是有方向的,更是有“形状”和“语法”的。如同语言,一段价格走势是否存在合“语法”的叙事结构(如“筑底-突破-回踩-主升”),还是杂乱无章的“噪音词汇”?市场参与者会潜意识地识别并交易这些“连贯叙事”。
|
||||
注意力分布的"聚焦度"谱系:量化交易量/活跃度在时间维度上的集中程度(基尼系数、赫芬达尔指数),识别注意力爆发期、持续关注期和注意力真空期。
|
||||
|
||||
研究提示词 (用于指导因子构建):
|
||||
行业内注意力的"级联传导"网络:建立领导者-追随者注意力传导模型,测量强势股票出现后,同行业其他股票的响应速度、响应强度和响应延迟。
|
||||
|
||||
K线序列的“可压缩性”:使用一种简化的算法(如趋势线拟合后的残差大小,或一定容忍度下的分段线性近似所需节点数),来衡量过去一段价格序列的信息复杂度。低复杂度(高可压缩性)意味着价格运动清晰、有规律;高复杂度则意味着混乱。研究“从混乱转向清晰”或“从清晰转向混乱”的拐点。
|
||||
注意力惯性的"衰减曲线":度量催化事件结束后,异常关注度回归基线的速度,构建"注意力记忆时长"因子,捕捉定价偏差的持续性。
|
||||
|
||||
关键价位互动的“叙事逻辑”:识别近期的显著高点、低点、缺口、密集成交区作为“关键叙事节点”。分析当前价格在接近这些节点时的行为:是“尊重”(反弹/受阻)还是“无视”(直接穿越)?一系列对历史节点的“尊重”行为构成了一个连贯的“支撑阻力叙事”。能否量化这种叙事逻辑的强度?
|
||||
视角三:价格运动的"形态语法"解析 (Morphological Syntax of Price Movements)
|
||||
|
||||
多尺度运动的“相位同步”:选取短期(如5日)、中期(20日)、长期(60日)的价格滤波序列(如移动平均线)。计算它们之间方向变化的领先滞后关系与同步性(可类似相位角分析)。例如,短期均线是否总是率先转向并引导中长期?还是三者经常背离?“多周期共振向上/向下”这种高度同步的状态,其形成过程和瓦解过程有何预测意义?
|
||||
核心思想:价格运动具有类似语言的"语法结构"和"叙事连贯性"。市场参与者潜意识地识别并交易这些形态模式,为系统性形态识别提供Alpha机会。
|
||||
|
||||
关键研究维度:
|
||||
|
||||
=== 关键语法规则(必须遵守) ===
|
||||
1. 数据字段规范:
|
||||
- 可使用字段:close, volume, returns
|
||||
- ❌ 错误:market_cap, marketcap, mkt_cap [这些字段不存在]
|
||||
- ✅ 正确:使用volume作为规模代理,close作为价格
|
||||
- returns通常定义为:ts_delta(close, 1) 或 close/ts_delay(close,1)-1
|
||||
价格序列的"可压缩性"度量:使用简化算法(分段线性近似、趋势线拟合残差)量化价格运动的规律性程度,识别从混沌转向有序(或相反)的临界状态。
|
||||
|
||||
2. ts_regression使用规范:
|
||||
- 避免深度嵌套ts_regression,特别是作为其他函数的参数
|
||||
- ✅ 正确:reg_slope = ts_regression(close, ts_step(1), 30, 0, 1)
|
||||
- ❌ 错误:ts_delta(ts_regression(close, ts_step(1), 30, 0, 1), 5)
|
||||
- 替代方案:用ts_delta组合计算动量变化
|
||||
关键价位的"叙事逻辑"强度:分析价格在历史关键节点(前高、前低、缺口、密集区)的行为一致性,量化"支撑阻力叙事"的连贯性得分。
|
||||
|
||||
3. if_else使用规范:
|
||||
- 条件必须是简单布尔表达式
|
||||
- 避免序列比较:❌ ts_std_dev(returns,60) > ts_mean(ts_std_dev(returns,60),120)
|
||||
- 正确使用:✅ if_else(ts_rank(ts_std_dev(returns,60), 120) > 0.7, 短期动量, 长期动量)
|
||||
多时间尺度的"相位同步"分析:研究不同周期滤波序列(如5日、20日、60日均线)之间的领先滞后关系和同步程度,识别多周期共振的形成与瓦解过程。
|
||||
|
||||
4. bucket函数使用规范:
|
||||
- bucket()返回分组ID,可用于条件判断
|
||||
- ✅ 正确:bucket(rank(volume), range="0,3,0.4") == 0 [第一组为大成交量]
|
||||
- ✅ 正确:group_mean(x, 1, bucket(rank(volume), range="0,3,0.4"))
|
||||
- 注意字符串格式:range="起始值,组数,步长" 或 buckets="分割点列表"
|
||||
=== 关键语法规则结束 ===
|
||||
二、因子构建方法论
|
||||
2.1 数据字段使用规范
|
||||
|
||||
*=====*
|
||||
注意事项:
|
||||
1. 避免过度复杂的嵌套(建议不超过3层)
|
||||
2. 每个表达式应有明确的经济逻辑
|
||||
3. 考虑实际交易可行性(避免未来函数)
|
||||
4. 包含风险控制元素(如波动率调整)
|
||||
5. 只能使用可用的数据字段:close, volume, returns等
|
||||
*=====*
|
||||
可用字段:
|
||||
|
||||
参数逻辑:参数d(回顾期)应在[5, 10, 20, 30, 60, 120]等具有市场意义(周、月、季度、半年)的数值中合理选择并差异化。
|
||||
行业隐含:通过group_mean、group_rank等函数或假设表达式在行业指数上运行来体现"行业"逻辑。
|
||||
close: 收盘价(唯一价格字段)
|
||||
|
||||
构建框架指导(请按此逻辑创造新因子):
|
||||
volume: 成交量(用于规模代理、活跃度度量)
|
||||
|
||||
维度融合模板(选择至少2个):
|
||||
returns: 收益率序列,定义为 ts_delta(close, 1) 或 divide(close, ts_delay(close, 1)) - 1
|
||||
|
||||
A. 领导力动量 = 时序动量 × 横截面调整
|
||||
逻辑:大成交量股票的动量更强
|
||||
结构:group_mean(ts_delta(close, d1), 1, bucket(rank(volume), range="0,3,0.4"))
|
||||
禁止字段:
|
||||
|
||||
B. 状态自适应动量 = 条件选择动量
|
||||
逻辑:高波动用短期动量,低波动用长期动量
|
||||
结构:if_else(ts_std_dev(returns,20) > 0.02, ts_delta(close,5), ts_delta(close,20))
|
||||
❌ market_cap, marketcap, mkt_cap(不存在)
|
||||
|
||||
C. 行业传导因子 = 领先行业动量 × 相关性强度
|
||||
逻辑:与强势行业相关性高的行业未来表现好
|
||||
结构:multiply(ts_corr(group_mean(returns,1,industry), group_mean(returns,1,sector), d1), ts_delta(close,d2))
|
||||
✅ 使用volume作为规模代理,必要时进行横截面排序和分组
|
||||
|
||||
D. 情绪反转 = 过度交易信号 × 基础趋势
|
||||
逻辑:过度交易时反转,趋势延续时跟随
|
||||
结构:multiply(reverse(ts_rank(volume/ts_mean(volume,20), 10)), ts_delta(close,20))
|
||||
2.2 复合因子构建框架
|
||||
|
||||
关键组件库(可自由组合):
|
||||
1. 动量类:ts_delta(close,{d}), ts_regression(close,ts_step(1),{d},0,1)
|
||||
2. 波动类:ts_std_dev(returns,{d}), ts_mean(abs(returns),{d})
|
||||
3. 成交量类:volume/ts_mean(volume,{d}), ts_zscore(volume,{d})
|
||||
4. 横截面类:if_else(rank(volume) > 阈值, 值1, 值2), bucket(rank(volume), range="0,3,0.4")
|
||||
5. 相关性类:ts_corr({x},{y},{d})
|
||||
6. 条件逻辑:if_else({condition}, {true_value}, {false_value})
|
||||
维度融合模板(至少选择2个维度组合):
|
||||
|
||||
参数池:d ∈ [5,10,20,30,60,120], 阈值 ∈ [0.5,0.7,0.8]
|
||||
A. 领导力动量 = 时序动量 × 横截面领导力调整
|
||||
text
|
||||
|
||||
逻辑:大成交量股票的动量信号更强、更持续
|
||||
结构示例:group_mean(ts_delta(close, 20), 1, bucket(rank(volume), range="0,3,0.4"))
|
||||
经济解释:测量不同成交量分组内价格变化的均值,捕捉大成交量群体的主导方向
|
||||
|
||||
B. 状态自适应动量 = 市场状态 × 动量周期选择
|
||||
text
|
||||
|
||||
逻辑:高波动环境使用短期动量,低波动环境使用长期动量
|
||||
结构示例:if_else(ts_std_dev(returns, 20) > 0.02, ts_delta(close, 5), ts_delta(close, 20))
|
||||
经济解释:根据波动率状态动态调整动量计算窗口,适应不同市场环境
|
||||
|
||||
C. 行业传导因子 = 行业间相关性 × 领先滞后关系
|
||||
text
|
||||
|
||||
逻辑:与强势行业保持高相关性且略有滞后的行业可能迎来轮动机会
|
||||
结构示例:multiply(ts_corr(group_mean(returns, 1, industry_A), group_mean(returns, 1, industry_B), 30), ts_delta(close, 10))
|
||||
经济解释:测量行业间联动强度与自身动量的协同效应
|
||||
|
||||
D. 情绪反转因子 = 过度交易信号 × 趋势强度
|
||||
text
|
||||
|
||||
逻辑:在过度交易区域,强势趋势可能面临反转;在交易清淡区域,趋势可能延续
|
||||
结构示例:multiply(reverse(ts_rank(divide(volume, ts_mean(volume, 20)), 10)), ts_delta(close, 20))
|
||||
经济解释:交易活跃度异常高时反转动量信号,异常低时增强动量信号
|
||||
|
||||
2.3 关键操作符使用规范
|
||||
|
||||
1. ts_regression使用规范:
|
||||
|
||||
✅ 正确:reg_slope = ts_regression(close, ts_step(1), 30, 0, 1)
|
||||
|
||||
❌ 错误:避免深度嵌套,如ts_delta(ts_regression(close, ts_step(1), 30, 0, 1), 5)
|
||||
|
||||
✅ 替代方案:先计算回归斜率,再对其应用ts_delta
|
||||
|
||||
2. if_else条件表达式规范:
|
||||
|
||||
✅ 正确:if_else(ts_rank(ts_std_dev(returns, 60), 120) > 0.7, 短期动量, 长期动量)
|
||||
|
||||
❌ 错误:避免复杂序列比较,如ts_std_dev(returns, 60) > ts_mean(ts_std_dev(returns, 60), 120)
|
||||
|
||||
3. bucket分组函数规范:
|
||||
|
||||
✅ 正确:bucket(rank(volume), range="0,3,0.4") == 0(第一组为大成交量)
|
||||
|
||||
✅ 正确:group_mean(x, 1, bucket(rank(volume), range="0,3,0.4"))
|
||||
|
||||
注意字符串格式:range="起始值,组数,步长" 或 buckets="分割点列表"
|
||||
|
||||
4. 行业处理函数:
|
||||
|
||||
group_mean(x, weight, group): 计算组内加权平均
|
||||
|
||||
group_neutralize(x, group): 对组内进行中性化处理
|
||||
|
||||
group_rank(x, group): 计算组内排序
|
||||
|
||||
group_scale(x, group): 组内标准化到[0,1]
|
||||
|
||||
group_zscore(x, group): 计算组内z-score
|
||||
|
||||
2.4 参数选择逻辑
|
||||
|
||||
回顾期d应从以下具有市场意义的数值中选择:[5, 10, 20, 30, 60, 120]
|
||||
|
||||
5: 周度(5个交易日)
|
||||
|
||||
10: 双周
|
||||
|
||||
20: 月度(约20个交易日)
|
||||
|
||||
30: 月半
|
||||
|
||||
60: 季度
|
||||
|
||||
120: 半年
|
||||
|
||||
阈值参数从[0.5, 0.7, 0.8]中选择
|
||||
|
||||
同一因子内不同组件的参数应差异化,体现多时间尺度融合
|
||||
|
||||
三、因子组件库(可自由组合)
|
||||
3.1 动量类组件
|
||||
|
||||
简单动量:ts_delta(close, {d})
|
||||
|
||||
回归动量:ts_regression(close, ts_step(1), {d}, 0, 1)(返回斜率)
|
||||
|
||||
加速动量:ts_delta(ts_delta(close, 5), 5)
|
||||
|
||||
排名动量:ts_rank(ts_delta(close, 20), 60)
|
||||
|
||||
3.2 波动性与风险调整组件
|
||||
|
||||
波动率:ts_std_dev(returns, {d})
|
||||
|
||||
平均绝对收益:ts_mean(abs(returns), {d})
|
||||
|
||||
波动率调整:divide(ts_delta(close, 20), ts_std_dev(returns, 20))
|
||||
|
||||
波动率状态:ts_rank(ts_std_dev(returns, 20), 60)
|
||||
|
||||
3.3 成交量与活跃度组件
|
||||
|
||||
成交量异常:divide(volume, ts_mean(volume, {d}))
|
||||
|
||||
成交量z-score:ts_zscore(volume, {d})
|
||||
|
||||
成交量排名:rank(volume)
|
||||
|
||||
成交量分布:bucket(rank(volume), range="0,3,0.4")
|
||||
|
||||
3.4 横截面调整组件
|
||||
|
||||
规模分组:if_else(rank(volume) > 0.7, 大市值组信号, 小市值组信号)
|
||||
|
||||
相对强弱:divide(ts_delta(close, 10), group_mean(ts_delta(close, 10), 1, industry))
|
||||
|
||||
行业中性化:group_neutralize(原始信号, industry)
|
||||
|
||||
3.5 相关性与时序关系组件
|
||||
|
||||
时间序列相关性:ts_corr({x}, {y}, {d})
|
||||
|
||||
协方差:ts_covariance({y}, {x}, {d})
|
||||
|
||||
领先滞后关系:ts_corr(ts_delay(x, 1), y, d)
|
||||
|
||||
四、因子构建原则
|
||||
4.1 复杂度控制原则
|
||||
|
||||
嵌套层数建议不超过3层
|
||||
|
||||
每个表达式应有清晰的经济逻辑解释
|
||||
|
||||
避免过度优化和数据挖掘偏差
|
||||
|
||||
4.2 交易可行性原则
|
||||
|
||||
严格避免未来函数(只能使用历史信息)
|
||||
|
||||
考虑实际交易成本(避免高换手率因子)
|
||||
|
||||
使用hump(x, hump=0.01)平滑信号变化,降低换手
|
||||
|
||||
4.3 风险控制原则
|
||||
|
||||
包含波动率调整元素
|
||||
|
||||
考虑极端值处理(使用winsorize(x, std=4))
|
||||
|
||||
进行适当的标准化(normalize()或zscore())
|
||||
|
||||
4.4 行业轮动特异性
|
||||
|
||||
必须包含行业维度处理(group_*函数)
|
||||
|
||||
体现行业间传导、轮动、分化逻辑
|
||||
|
||||
考虑行业相对强弱与绝对动量的结合
|
||||
|
||||
五、表达式构建示例框架
|
||||
示例1:行业注意力传导因子
|
||||
text
|
||||
|
||||
经济逻辑:捕捉强势行业对弱势行业的注意力传导效应,测量追随行业对领导行业信号的响应速度和强度。
|
||||
|
||||
组件分解:
|
||||
1. 识别领导行业:过去5日行业动量排名前30%
|
||||
2. 测量响应强度:自身收益率与领导行业收益率的滞后相关性
|
||||
3. 调整响应延迟:根据成交量调整,大成交量股票响应更快
|
||||
4. 行业相对位置:在自身行业内的动量排名
|
||||
|
||||
示例2:摩擦差异化的动量因子
|
||||
text
|
||||
|
||||
经济逻辑:在高摩擦(低流动性)股票中寻找未被充分消化的动量,在低摩擦股票中寻找快速衰减的反转机会。
|
||||
|
||||
组件分解:
|
||||
1. 摩擦测量:成交量冲击的价格影响半衰期
|
||||
2. 动量计算:不同摩擦环境下的最优动量窗口
|
||||
3. 横截面调整:同摩擦水平股票间的相对强弱
|
||||
4. 行业中性化:控制行业风格暴露
|
||||
|
||||
示例3:多周期形态共振因子
|
||||
text
|
||||
|
||||
经济逻辑:识别短期、中期、长期价格趋势进入同步状态(共振)的股票,这些股票往往有更强的趋势持续性。
|
||||
|
||||
组件分解:
|
||||
1. 多周期滤波:5日、20日、60日价格序列
|
||||
2. 相位同步测量:不同周期序列方向一致性的时间比例
|
||||
3. 共振强度:同步期的动量加速度
|
||||
4. 行业调整:与行业共振状态的相对差异
|
||||
|
||||
*=====*
|
||||
|
||||
|
||||
Reference in New Issue
Block a user