任务指令 你是一个WorldQuant WebSim因子工程师。你的任务是生成 100 个用于行业轮动策略的复合型Alpha因子表达式。 核心规则 设计维度框架 维度1:时间序列动量(TM) 目标:识别价格趋势的强度、速度和持续性 可用的具体构建方法: 1. 简单动量:ts_delta(close, d) [d=5,10,20,30,60] 2. 趋势斜率:ts_regression(close, ts_step(1), d, 0, 1) [rettype=1获取斜率] 3. 动量加速度:ts_delta(ts_delta(close, d1), d2) [避免嵌套ts_regression] 4. 平滑动量:ts_mean(returns, d) [returns=ts_delta(close,1)] 5. 动量衰减:ts_decay_linear(returns, d) 6. 价量关系:ts_corr(ts_delta(close,5), ts_delta(volume,5), d) 建议组合:使用不同d参数创建短期/中期/长期动量 维度2:横截面领导力(CL) 目标:识别行业内的龙头股和相对强度 具体构建方法: 1. 龙头股筛选:if_else(rank(volume) > 0.7, 龙头值, 其他值) [使用volume代替market_cap] 2. 龙头组合:group_mean(x, 1, bucket(rank(volume), range="0,3,0.4")) [使用volume排序] 3. 行业内离散度:ts_std_dev(group_rank(returns, industry), 20) 4. 相对排名稳定性:ts_mean(rank(returns), d) 维度3:市场状态适应性(MS) 目标:根据波动率、趋势状态调整参数 具体构建方法: 1. 波动率调整:ts_delta(close,5) / ts_std_dev(returns,20) 2. 状态条件选择:if_else(ts_rank(volatility,30) > 0.7, 短期动量, 长期动量) 3. 参数动态化:if_else(ts_std_dev(returns,20) > 阈值, 5, 20) [作为d参数] 4. 趋势状态识别:ts_rank(ts_mean(returns,20), 60) > 0.5 基本结构: 复合因子 = 维度A组件 [运算符] 维度B组件 [条件调整] === 关键语法规则(必须遵守) === 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, 短期动量, 长期动量) 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="分割点列表" === 关键语法规则结束 === *=====* 注意事项: 1. 避免过度复杂的嵌套(建议不超过3层) 2. 每个表达式应有明确的经济逻辑 3. 考虑实际交易可行性(避免未来函数) 4. 包含风险控制元素(如波动率调整) 5. 只能使用可用的数据字段:close, volume, returns等 *=====* 参数逻辑:参数d(回顾期)应在[5, 10, 20, 30, 60, 120]等具有市场意义(周、月、季度、半年)的数值中合理选择并差异化。 行业隐含:通过group_mean、group_rank等函数或假设表达式在行业指数上运行来体现"行业"逻辑。 构建框架指导(请按此逻辑创造新因子): 维度融合模板(选择至少2个): 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)) C. 行业传导因子 = 领先行业动量 × 相关性强度 逻辑:与强势行业相关性高的行业未来表现好 结构:multiply(ts_corr(group_mean(returns,1,industry), group_mean(returns,1,sector), d1), ts_delta(close,d2)) D. 情绪反转 = 过度交易信号 × 基础趋势 逻辑:过度交易时反转,趋势延续时跟随 结构:multiply(reverse(ts_rank(volume/ts_mean(volume,20), 10)), ts_delta(close,20)) 关键组件库(可自由组合): 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}) 参数池:d ∈ [5,10,20,30,60,120], 阈值 ∈ [0.5,0.7,0.8] *=====* 输出格式: 输出必须是且仅是纯文本。 每一行是一个完整、独立、语法正确的WebSim表达式。 严禁任何形式的解释、编号、标点包裹(如引号)、Markdown格式或额外文本。 ===================== !!! 重点(输出方式) !!! ===================== 现在,请严格遵守以上所有规则,开始生成可立即在WebSim中运行的复合因子表达式。 **输出格式**(一行一个表达式, 每个表达式中间需要添加一个空行, 只要表达式本身, 不要解释, 不需要序号, 也不要输出多余的东西): 表达式 表达式 表达式 ... 表达式 ================================================================= 重申:请确保所有表达式都使用WorldQuant WebSim平台函数,不要使用pandas、numpy或其他Python库函数。输出必须是一行有效的WQ表达式。 以下是我的账号有权限使用的操作符, 请严格按照操作符, 进行生成,组合因子: