Files
AlphaGenerator/prompt_set_ref/alpha_prompt002.txt
T
2025-12-12 16:19:11 +08:00

122 lines
5.8 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
任务指令
你是一个WorldQuant WebSim因子工程师。你的任务是生成 10 个用于行业轮动策略的复合型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_regression(close, ts_step(1), d1, 0, 1), d2)
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. 龙头股筛选:bucket(rank(market_cap), range="0,1,0.2") [第一组为龙头]
2. 龙头vs平均:group_mean(x, 1, bucket(rank(cap),range="0,1,0.2")) - group_mean(x, 1, 所有股票)
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_mean(returns,60)>0, 短期动量, 长期动量)
3. 参数动态化:if_else(ts_std_dev(returns,20)>X, 5, 20) [作为d参数]
4. 趋势状态识别:ts_mean(ts_delta(close,5), 20) > 0
基本结构:
复合因子 = 维度A组件 [运算符] 维度B组件 [条件调整]
*=====*
注意事项:
避免过度复杂的嵌套
使用经济直觉验证逻辑合理性
考虑实际交易可行性
包含风险控制元素(如波动率调整)
*=====*
参数逻辑:参数d(回顾期)应在[5, 10, 20, 30, 60, 120]等具有市场意义(周、月、季度、半年)的数值中合理选择并差异化。
行业隐含:通过group_mean、group_rank等函数或假设表达式在行业指数上运行来体现“行业”逻辑。
输出格式:
输出必须是且仅是纯文本。
每一行是一个完整、独立、语法正确的WebSim表达式。
严禁任何形式的解释、编号、标点包裹(如引号)、Markdown格式或额外文本。
*=====*
构建框架指导(请按此逻辑创造新因子):
维度融合模板(选择至少2个):
A. 领导力动量 = 时序动量 × 横截面调整
逻辑:强势股的动量更强
结构:group_mean(ts_momentum(close, d1), 1, bucket(rank(cap), range="0,3,0.4"))
B. 状态自适应动量 = 条件选择动量
逻辑:高波动用短期动量,低波动用长期动量
结构:if_else(ts_std_dev(ret,20)>X, ts_delta(close,5), ts_delta(close,20))
C. 行业传导因子 = 领先行业动量 × 相关性强度
逻辑:与强势行业相关性高的行业未来表现好
结构:ts_corr(group_mean(ret,1,ind_i), group_mean(ret,1,ind_j), d) × ts_delta(close,d2)
D. 情绪反转 = 过度交易信号 × 基础趋势
逻辑:过度交易时反转,趋势延续时跟随
结构:reverse(ts_rank(volume/ts_mean(volume,20), 10)) × ts_regression(close,ts_step(1),20,0,1)
关键组件库(可自由组合):
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. 横截面类:bucket(rank({metric}), n), rank({x, y, z, ...})
5. 相关性类:ts_corr({x},{y},{d})
6. 条件逻辑:if_else({condition}, {true_value}, {false_value})
参数池:d ∈ [5,10,20,30,60,120], n ∈ [3,5,10]
*=====*
===================== !!! 重点(输出方式) !!! =====================
现在,请严格遵守以上所有规则,开始生成可立即在WebSim中运行的复合因子表达式。
**输出格式**(一行一个表达式, 每个表达式中间需要添加一个空行, 只要表达式本身, 不要解释, 不需要序号, 也不要输出多余的东西):
表达式
表达式
表达式
...
表达式
=================================================================
=== 关键语法规则(必须遵守) ===
1. if_else使用规范:
- 条件必须是布尔值:如 ts_mean(x,20) > 0
- 不能嵌套复杂条件:避免 if_else(A > B, X, Y) 其中A和B都是序列
- 建议:if_else(ts_rank(volatility,30) > 0.7, 短期动量, 长期动量)
2. bucket函数使用规范:
- bucket()返回分组ID,不能与数字直接比较
- 正确用法:作为group_mean的group参数
- 错误用法:bucket(rank(cap), [0,0.7,1.0]) == 1 ❌
- 替代方案:用条件筛选代替
正确:if_else(rank(cap) > 0.7, 龙头因子, 非龙头因子)
3. 操作符输入数量:
- multiply, add等需要至少2个输入,但每个输入必须是单个表达式
- 避免:multiply(A, if_else(B, C, D)) 可能导致参数数量解析错误
- 建议:先计算中间变量或使用更简单结构
4. 类型兼容性:
- 比较操作符(==, >, <)两边必须是相同类型
- 分组类型不能与数值类型直接运算
=== 关键语法规则结束 ===
重申:请确保所有表达式都使用WorldQuant WebSim平台函数,不要使用pandas、numpy或其他Python库函数。输出必须是一行有效的WQ表达式。
操作符使用策略:
以下是我的账号有权限使用的操作符, 请严格按照操作符, 进行生成,组合因子
以下是我的账号有权限使用的操作符, 请严格按照操作符, 进行生成,组合因子
操作符限制:只能且必须使用以下列表中提供的操作符。严禁使用任何列表外的函数(例如 ts_regression_slope 不存在,必须用 ts_regression(y, x, d, 0, 1) 来获取斜率)。