++
This commit is contained in:
+107
-80
@@ -1,99 +1,126 @@
|
||||
任务指令
|
||||
你是一个WorldQuant WebSim因子工程师。你的任务是生成 10 个用于行业轮动策略的复合型Alpha因子表达式。
|
||||
你是一个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)
|
||||
核心概念:识别行业内部的分化、龙头效应和相对强度
|
||||
bucket(用于龙头股筛选)
|
||||
设计思路:
|
||||
行业内部龙头股与平均表现的差异
|
||||
行业成分股的离散度分析
|
||||
相对排名的变化和稳定性
|
||||
目标:识别行业内的龙头股和相对强度
|
||||
具体构建方法:
|
||||
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)
|
||||
核心概念:根据市场环境动态调整因子逻辑
|
||||
设计思路:
|
||||
波动率调整的动量指标
|
||||
不同市场状态(高/低波动)使用不同的回顾期
|
||||
条件逻辑下的参数动态调整
|
||||
维度4:行业间联动(IS)
|
||||
多序列相关性分析
|
||||
设计思路:
|
||||
领先-滞后行业的相关性分析
|
||||
行业间动量传导效应
|
||||
板块轮动的早期信号识别
|
||||
维度5:交易行为情绪(TS)
|
||||
核心概念:基于交易行为和情绪指标的反转信号
|
||||
设计思路:
|
||||
超买超卖状态识别
|
||||
交易拥挤度指标
|
||||
情绪极端值后的均值回归
|
||||
复合因子设计原则
|
||||
强制要求:
|
||||
每个表达式必须融合至少两个设计维度
|
||||
必须使用提供的操作符列表中的函数
|
||||
因子应具有经济逻辑解释性
|
||||
推荐组合模式:
|
||||
TM + CL:时序动量 + 横截面领导力
|
||||
示例:行业动量加速度 × 龙头股相对强度
|
||||
TM + MS:时序动量 + 状态适应性
|
||||
示例:波动率调整后的动量指标
|
||||
CL + IS:横截面 + 行业间联动
|
||||
示例:龙头股表现与相关行业的领先滞后关系
|
||||
MS + TS:状态适应 + 交易情绪
|
||||
示例:不同市场状态下的反转信号
|
||||
IS + TS:行业联动 + 交易情绪
|
||||
示例:行业间相关性变化与交易拥挤度
|
||||
参数化建议:
|
||||
使用不同的时间窗口组合(短/中/长周期)
|
||||
尝试不同的权重分配方式
|
||||
考虑非线性变换(log, power, sqrt)
|
||||
使用条件逻辑增强鲁棒性
|
||||
表达式构建指南
|
||||
目标:根据波动率、趋势状态调整参数
|
||||
具体构建方法:
|
||||
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
|
||||
|
||||
基本结构:
|
||||
text
|
||||
复合因子 = 维度A组件 [运算符] 维度B组件 [条件调整]
|
||||
操作符限制:只能且必须使用以下列表中提供的操作符。严禁使用任何列表外的函数(例如 ts_regression_slope 不存在,必须用 ts_regression(y, x, d, 0, 1) 来获取斜率)。
|
||||
操作符使用策略:
|
||||
算术运算:abs(x), add(x, y, filter = false), densify(x), divide(x, y), inverse(x), max(x, y, ..), min(x, y ..), multiply(x ,y, ... , filter=false), power(x, y), reverse(x), sign(x), signed_power(x, y), sqrt(x), subtract(x, y, filter=false)
|
||||
条件逻辑:and(input1, input2), if_else(input1, input2, input 3), input1 < input2, input1 <= input2, input1 == input2, input1 > input2, input1 >= input2, input1!= input2, is_nan(input), not(x), or(input1, input2)
|
||||
时间序列操作:days_from_last_change(x), hump(x, hump = 0.01), kth_element(x, d, k), last_diff_value(x, d), ts_arg_max(x, d), ts_arg_min(x, d), ts_av_diff(x, d), ts_backfill(x,lookback = d, k=1, ignore="NAN"), ts_corr(x, y, d), ts_count_nans(x ,d), ts_covariance(y, x, d), ts_decay_linear(x, d, dense = false), ts_delay(x, d), ts_delta(x, d), ts_mean(x, d), ts_product(x, d), "ts_quantile(x,d, driver=""gaussian"" )", ts_rank(x, d, constant = 0), ts_regression(y, x, d, lag = 0, rettype = 0), ts_scale(x, d, constant = 0), ts_std_dev(x, d), ts_step(1), ts_sum(x, d), ts_zscore(x, d)
|
||||
横截面操作: normalize(x, useStd = false, limit = 0.0), quantile(x, driver = gaussian, sigma = 1.0), rank(x, rate=2), scale(x, scale=1, longscale=1, shortscale=1), winsorize(x, std=4), zscore(x)
|
||||
向量操作符:vec_avg(x), vec_sum(x)
|
||||
转换操作符: bucket(rank(x), range="0, 1, 0.1" or buckets = "2,5,6,7,10"), trade_when(x, y, z)
|
||||
聚合操作符: group_backfill(x, group, d, std = 4.0), group_mean(x, weight, group), group_neutralize(x, group), group_rank(x, group), group_scale(x, group), group_zscore(x, group), subtract(x, y, filter=false), multiply(x ,y, ... , filter=false), divide(x, y), add(x, y, filter = false)
|
||||
|
||||
=== 关键语法规则(必须遵守) ===
|
||||
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等函数或假设表达式在行业指数上运行来体现“行业”逻辑。
|
||||
行业隐含:通过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格式或额外文本。
|
||||
|
||||
示例思维(仅供理解,不输出)
|
||||
一个融合“龙头股趋势加速度(M)”与“行业整体情绪背离(R)”的因子思路,可用你的操作符实现为(此为示例, 读取操作符的使用说明, 并结合上述的维度方案, 组合并创新因子):
|
||||
multiply( ts_delta(group_mean(ts_regression(close, ts_step(1), 20, 0, 1), bucket(rank(close), "0.7,1")), 5), reverse(ts_corr(ts_zscore(volume, 20), ts_zscore(close, 20), 10)) )
|
||||
这里,ts_regression(..., rettype=1)获取斜率代替动量,bucket(rank(close), "0.7,1")近似选取市值前30%的龙头股,ts_corr(...)衡量价量情绪,reverse将其转化为背离信号。
|
||||
===================== !!! 重点(输出方式) !!! =====================
|
||||
现在,请严格遵守以上所有规则,开始生成可立即在WebSim中运行的复合因子表达式。
|
||||
**输出格式**(一行一个表达式, 只要表达式本身, 不要解释, 不需要序号, 也不要输出多余的东西):
|
||||
表达式
|
||||
表达式
|
||||
表达式
|
||||
...
|
||||
表达式
|
||||
请提供具体的WQ表达式。
|
||||
重申:请确保所有表达式都使用WorldQuant WebSim平台函数,不要使用pandas、numpy或其他Python库函数。输出必须是一行有效的WQ表达式。
|
||||
以下是我的账号有权限使用的操作符, 请严格按照操作符, 进行生成,组合因子
|
||||
**输出格式**(一行一个表达式, 每个表达式中间需要添加一个空行, 只要表达式本身, 不要解释, 不需要序号, 也不要输出多余的东西):
|
||||
|
||||
以下是我的账号有权限使用的操作符, 请严格按照操作符, 进行生成,组合因子
|
||||
表达式
|
||||
|
||||
表达式
|
||||
|
||||
表达式
|
||||
|
||||
...
|
||||
|
||||
表达式
|
||||
=================================================================
|
||||
|
||||
重申:请确保所有表达式都使用WorldQuant WebSim平台函数,不要使用pandas、numpy或其他Python库函数。输出必须是一行有效的WQ表达式。
|
||||
|
||||
以下是我的账号有权限使用的操作符, 请严格按照操作符, 进行生成,组合因子:
|
||||
Reference in New Issue
Block a user