You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
227 lines
9.0 KiB
227 lines
9.0 KiB
## 核心设计理念
|
|
|
|
**因子经济学逻辑**:
|
|
- 动量效应:价格趋势的持续性
|
|
- 均值回归:价格的回复特性
|
|
- 波动率特征:风险与收益的关系
|
|
- 流动性溢价:成交量蕴含的信息
|
|
- 市场情绪:价量关系的异常表现
|
|
|
|
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
|
|
以上这些操作符不能传入事件类型的数据集, 只能传入时间序列数据集, 不能传入事件数据,不能传入事件数据,不能传入事件数据 |