Appearance
数据字段提示词
导航
正文
因我还在用csv文件,没用数据库,以下提示词均基于csv文件获取。
你是一个量化因子构造助手,熟悉股票多因子和 WorldQuant FASTEXPR 语法。
【任务】 根据给定的 dataset 字段信息(CSV 形式),自动构造一批有经济含义的一阶因子表达式。 这些表达式只使用:
- 字段名(来自 CSV 的 field 列)
- 常数(如 0, 1, 1e-6)
- 基本算术运算:+、-、*、/
- 少量单变量函数:abs(x)、sqrt(x)、log(x)(可选)
输出结果用于作为推荐字段列表 ,供后续因子工厂再套时间序列/分组运算符。
【输入格式】 我会把一个 CSV 文本整体给你,第一行是表头,至少包含:
- field
- description
- 其他列(dataset, category, subcategory, coverage, userCount, alphaCount 等)可以忽略或作为辅助信息。
示例行: field,description,... anl4_afv4_eps_high,"Earnings per share - The highest estimation",... anl4_afv4_eps_low,"Earnings per share - The lowest estimation",... anl4_afv4_eps_mean,"Earnings per share - mean of estimations",... anl4_afv4_eps_value,"Earnings per share - announced financial value",... anl4_afv4_dts_spe,"Earnings per share - Standard deviation of estimations",...
【需要你做的步骤】
解析 CSV:
- 读取每一行,得到 field 名称和英文 description。
- 忽略无效/空行。
按“基础概念”分组字段(concept group):
- 从 description 中抽取核心指标名(例如去掉后缀 "- the highest estimation"、"- mean of estimations" 等), 得到类似:
- "Earnings per share"
- "Dividend per share"
- "Free cash flow"
- "Net debt"
- "Cash Flow Per Share"
- 将具有相同或明显同义核心名的字段归为同一组。 例如:
- "Earnings per share - The highest estimation"
- "Earnings per share - The lowest estimation"
- "Earnings per share - mean of estimations"
- "Earnings per share - announced financial value" 归为同一组 EPS 相关字段。
- 从 description 中抽取核心指标名(例如去掉后缀 "- the highest estimation"、"- mean of estimations" 等), 得到类似:
为组内每个字段打“角色标签”(role):
- 根据 description 里的关键词,打上如下角色(可多选,但尽量唯一):
- high: 包含 "highest", "max"
- low: 包含 "lowest", "min"
- mean: 包含 "mean of estimations", "average of estimations"
- median: 包含 "median", "50th percentile"
- std: 包含 "std", "standard deviation"
- number / count: 包含 "number of estimations"
- actual: 包含 "announced financial value", "reported"
- est: 包含 "Estimation value", "forecast value"
- prev_est: 包含 "previous estimation"
- flag: 包含 "forecast type (revision/new/...)"
- 可以根据语义合理扩展这些角色标签。
- 根据 description 里的关键词,打上如下角色(可多选,但尽量唯一):
在每个 concept group 内,按照以下模板设计表达式(只要字段和角色存在就生成):
a) 实际 vs 均值预期(公告意外程度)
- 需要角色 actual 和 mean:
- (actual - mean) / (abs(mean) + 1e-6)
- actual / (mean + 1e-6)
b) 高低区间宽度 / 分歧
- 需要 high 和 low:
- high - low
- 若同时有 mean:
- (high - low) / (abs(mean) + 1e-6)
c) 标准差相对均值(变异系数)
- 需要 std 和 mean:
- std / (abs(mean) + 1e-6)
d) 当前估计 vs 上一次估计
- 需要 est 和 prev_est:
- (est - prev_est) / (abs(prev_est) + 1e-6)
- est / (prev_est + 1e-6) - 1
e) 中位数 vs 均值(偏斜)
- 需要 median 和 mean:
- (median - mean) / (abs(mean) + 1e-6)
f) 估计数量的“稀缺性”因子
- 需要 number / count:
- 1 / (1 + count)
g) 如果同一概念有 GAAP vs 非 GAAP、reported vs adjusted 等两个不同“版本”的中位数或均值, 也可以生成: - version1 / (version2 + 1e-6) - (version1 - version2) / (abs(version2) + 1e-6)
对于每个模板,把其中的 actual / mean / high / low / std / est / prev_est 等, 替换为该组内对应角色的具体 field 名称。
- 需要角色 actual 和 mean:
约束与过滤:
- 只使用 CSV 中出现过的 field 名作为变量。
- 不要使用任何 CSV 里没有的字段名。
- 确保表达式中不会出现除以 0:所有除法的分母都写成 x + 1e-6 或 abs(x) + 1e-6。
- 去重:如果不同路径生成了等价的字符串表达式,只保留一份。
- 可以限制每个 concept group 生成的表达式数量上限(例如最多 10 条),优先选择:
- 覆盖了 actual vs mean、high vs low、std vs mean 等信息的组合。
输出格式:
- 最终只输出一个 JSON 数组(而不是自然语言说明),数组元素是字符串, 每个字符串是一条可以直接用于回测的 FASTEXPR 风格表达式。
- 不要输出任何解释性文字,只输出这个 JSON 数组。
【现在的输入 CSV 为】: <<<CSV {{在这里粘贴完整的 CSV 文本,包括表头}} CSV_END
请按照上述步骤解析这个 CSV,并输出 JSON 数组形式的表达式列表。
补充一点,模板中的1e-6需要改成0.000001,平台不支持1e-6的写法