227 lines
9.0 KiB
Plaintext
227 lines
9.0 KiB
Plaintext
## 核心设计理念
|
||
|
||
**因子经济学逻辑**:
|
||
- 动量效应:价格趋势的持续性
|
||
- 均值回归:价格的回复特性
|
||
- 波动率特征:风险与收益的关系
|
||
- 流动性溢价:成交量蕴含的信息
|
||
- 市场情绪:价量关系的异常表现
|
||
|
||
Grammar Rules
|
||
/* */ - Block comments for multiple lines
|
||
; - Statement separator (not needed for last line)
|
||
Last statement is the Alpha expression for BRAIN simulator
|
||
Alpha expression cannot be assigned to a variable
|
||
No classes, objects, pointers, or functions allowed
|
||
|
||
**统计有效性准则**:
|
||
- 信息比率最大化:信号与噪声比
|
||
- 因子稳定性:在不同市场环境下保持有效
|
||
- 单调性:因子值与预期收益的单调关系
|
||
- 可解释性:基于扎实的金融逻辑
|
||
|
||
## 技术实现要求
|
||
|
||
**智能参数匹配**:
|
||
- 动量类:短周期[10,20,30]捕捉近期趋势
|
||
- 反转类:中周期[40,50,60]识别过度反应
|
||
- 波动类:长周期[120,250]确保统计稳定性
|
||
- 流动性类:多周期对比分析异常变化
|
||
|
||
**噪声处理技术**:
|
||
- 移动平均线:平滑噪声,突出趋势
|
||
- 标准偏差:测量波动程度
|
||
- 归一化:将不同时间窗口的因子值调整到同一尺度
|
||
|
||
**嵌套结构逻辑**:
|
||
- 单层:直接有效的原始信号
|
||
- 双层:信号提炼与降噪处理
|
||
- 三层:多维度特征融合与增强
|
||
|
||
**操作符汇总
|
||
|
||
**算术运算符 (Arithmetic):
|
||
abs(x) - 绝对值
|
||
add(x, y, filter=false) - 加法 (x + y)
|
||
densify(x) - 分组字段稠密化
|
||
divide(x, y) - 除法 (x / y)
|
||
inverse(x) - 倒数 (1/x)
|
||
log(x) - 自然对数
|
||
max(x, y, ..) - 最大值
|
||
min(x, y, ..) - 最小值
|
||
multiply(x, y, filter=false) - 乘法 (x * y)
|
||
power(x, y) - 幂运算 (x^y)
|
||
reverse(x) - 取反 (-x)
|
||
sign(x) - 符号函数
|
||
signed_power(x, y) - 保留符号的幂运算
|
||
sqrt(x) - 平方根
|
||
subtract(x, y, filter=false) - 减法 (x - y)
|
||
to_nan(x, value=0, reverse=false) - 值与NaN转换
|
||
|
||
**逻辑运算符 (Logical):
|
||
and(input1, input2) - 逻辑与
|
||
if_else(input1, input2, input3) - 条件判断
|
||
input1 < input2 - 小于比较
|
||
input1 <= input2 - 小于等于
|
||
input1 == input2 - 等于比较
|
||
input1 > input2 - 大于比较
|
||
input1 >= input2 - 大于等于
|
||
input1 != input2 - 不等于
|
||
is_nan(input) - 是否为NaN
|
||
not(x) - 逻辑非
|
||
or(input1, input2) - 逻辑或
|
||
|
||
**时间序列运算符 (Time Series):
|
||
days_from_last_change(x) - 上次变化天数
|
||
hump(x, hump=0.01) - 限制变化幅度
|
||
jump_decay(x, d, sensitivity=0.5, force=0.1) - 跳跃衰减
|
||
kth_element(x, d, k) - 第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) - NaN计数
|
||
ts_covariance(y, x, d) - 协方差
|
||
ts_decay_linear(x, d, dense=false) - 线性衰减
|
||
ts_delay(x, d) - 延迟值
|
||
ts_delta(x, d) - 差值 (x - 延迟值)
|
||
ts_max(x, d) - 时间序列最大值
|
||
ts_mean(x, d) - 时间序列均值
|
||
ts_min(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_target_tvr_decay(x, lambda_min=0, lambda_max=1, target_tvr=0.1) - 目标换手率衰减
|
||
ts_target_tvr_delta_limit(x, y, lambda_min=0, lambda_max=1, target_tvr=0.1) - 目标换手率差值限制
|
||
ts_zscore(x, d) - 时间序列Z分数
|
||
|
||
**横截面运算符 (Cross Sectional):
|
||
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) - 缩放
|
||
scale_down(x, constant=0) - 按比例缩放
|
||
vector_neut(x, y) - 向量中性化
|
||
winsorize(x, std=4) - 缩尾处理
|
||
zscore(x) - Z分数
|
||
|
||
**向量运算符 (Vector):
|
||
vec_avg(x) - 向量均值
|
||
vec_max(x) - 向量最大值
|
||
vec_min(x) - 向量最小值
|
||
vec_sum(x) - 向量求和
|
||
|
||
**变换运算符 (Transformational):
|
||
bucket(rank(x), range="0,1,0.1" or buckets="2,5,6,7,10") - 分桶
|
||
generate_stats(alpha) - 生成统计量
|
||
trade_when(x, y, z) - 条件交易
|
||
|
||
**分组运算符 (Group):
|
||
combo_a(alpha, nlength=250, mode='algo1') - 组合Alpha
|
||
group_backfill(x, group, d, std=4.0) - 分组回填
|
||
group_cartesian_product(g1, g2) - 笛卡尔积分组
|
||
group_max(x, group) - 分组最大值
|
||
group_mean(x, weight, group) - 分组均值
|
||
group_min(x, group) - 分组最小值
|
||
group_neutralize(x, group) - 分组中性化
|
||
group_rank(x, group) - 分组排名
|
||
group_scale(x, group) - 分组缩放
|
||
group_zscore(x, group) - 分组Z分数
|
||
|
||
**特殊运算符 (Special):
|
||
in - 包含判断
|
||
self_corr(input) - 自相关性
|
||
universe_size - 宇宙大小
|
||
|
||
**归约运算符 (Reduce):
|
||
reduce_avg(input, threshold=0) - 平均值归约
|
||
reduce_choose(input, nth, ignoreNan=true) - 选择归约
|
||
reduce_count(input, threshold) - 计数归约
|
||
reduce_ir(input) - IR归约
|
||
reduce_kurtosis(input) - 峰度归约
|
||
reduce_max(input) - 最大值归约
|
||
reduce_min(input) - 最小值归约
|
||
reduce_norm(input) - 范数归约
|
||
reduce_percentage(input, percentage=0.5) - 百分比归约
|
||
reduce_powersum(input, constant=2, precise=false) - 幂和归约
|
||
reduce_range(input) - 范围归约
|
||
reduce_skewness(input) - 偏度归约
|
||
reduce_stddev(input, threshold=0) - 标准差归约
|
||
reduce_sum(input) - 求和归约
|
||
|
||
## 卓越因子特征
|
||
每个表达式应体现:
|
||
1. **经济学直觉**:基于公认的市场异象
|
||
2. **计算鲁棒性**:避免过拟合和极端值敏感
|
||
3. **交易可行性**:考虑实际执行成本
|
||
4. **创新性**:在经典因子上进行合理改进
|
||
|
||
## 终极Alpha标准(第18个)
|
||
- 多因子融合:结合动量、价值、质量、情绪等多个维度
|
||
- 多时间尺度:协调使用短、中、长期窗口
|
||
- 风险调整:隐含波动率控制或标准化处理
|
||
- 市场状态适应:能够适应不同市场环境
|
||
- 因子组合优化:考虑因子之间的相关性和组合风险
|
||
- 动态调整:能够根据市场条件实时调整参数
|
||
- 表达式不要太复杂
|
||
|
||
**表达式不要太复杂
|
||
|
||
可用字段:{fields_formatted}
|
||
可用运算符:{operators_formatted}
|
||
|
||
**重要规则(必须严格遵守):**
|
||
1. **CRITICAL:必须使用提供的「可用字段」列表中的完整字段ID,如 anl10_cpsff_2371、anl10_cpsfq1_consensus_2351 等**
|
||
2. **CRITICAL:绝对禁止使用 close、volume、high、low、open 等不完整的字段名**
|
||
3. **必须使用提供的「可用运算符」列表中的运算符**
|
||
4. **每个表达式必须是独立的,不能有赋值或其他语法结构**
|
||
5. **请严格按照 operator(field_id, numeric_parameter) 的格式编写**
|
||
6. **如果违反以上规则,生成的表达式将被系统拒绝!**
|
||
|
||
**错误示例(禁止使用):**
|
||
- ts_corr(rank(close), rank(volume), 10)
|
||
- ts_sum(returns, 20) / ts_std_dev(returns, 20)
|
||
- close - open
|
||
|
||
**正确示例(使用格式):**
|
||
- ts_corr(rank(fnd72_pit_or_cr_q_oper_inc_to_tot_debt), rank(fnd72_pit_or_cr_q_oper_inc_to_tot_debt), 10)
|
||
- divide(ts_sum(fnd72_pit_or_cr_q_oper_inc_to_tot_debt, 20), ts_std_dev(fnd72_pit_or_cr_q_oper_inc_to_tot_debt, 20))
|
||
|
||
*=========================================================================================*
|
||
|
||
输出格式:
|
||
输出必须是且仅是纯文本。
|
||
每一行是一个完整、独立、语法正确的WebSim表达式。
|
||
严禁任何形式的解释、编号、标点包裹(如引号)、Markdown格式或额外文本。
|
||
|
||
===================== !!! 重点(输出方式) !!! =====================
|
||
现在,请严格遵守以上所有规则,开始生成可立即在WebSim中运行的复合因子表达式。
|
||
不要自行假设, 你需要用到的操作符 和 数据集, 必须从我提供给你的里面查找, 并严格按照里面的使用方法进行组合
|
||
**输出格式**(一行一个表达式, 每个表达式中间需要添加一个空行, 只要表达式本身, 不需要赋值, 不要解释, 不需要序号, 也不要输出多余的东西):
|
||
|
||
表达式
|
||
|
||
表达式
|
||
|
||
表达式
|
||
|
||
...
|
||
|
||
表达式
|
||
=================================================================
|
||
|
||
重申:请确保所有表达式都使用WorldQuant WebSim平台函数,不要使用pandas、numpy或其他Python库函数。输出必须是一行有效的WQ表达式。
|
||
以下是我的账号有权限使用的操作符, 请严格按照操作符, 以及我提供的数据集, 进行生成,组合 100 个 alpha:
|
||
不要自行假设, 你需要用到的操作符 和 数据集, 必须从我提供给你的里面查找, 并严格按照里面的使用方法进行组合
|
||
|
||
=================================================================
|
||
ts_product ts_zscore ts_mean ts_scale add sign subtract ts_delta ts_rank greater ts_av_diff ts_quantile ts_count_nans ts_covariance
|
||
ts_arg_min divide ts_corr multiply if_else ts_sum ts_delay group_zscore ts_arg_max ts_std_de ts_backfill
|
||
以上这些操作符不能传入事件类型的数据集, 只能传入时间序列数据集, 不能传入事件数据,不能传入事件数据,不能传入事件数据 |