WQ 算子尝试1

0、算子评级

一、7月29尝试算子

1、group_rank(ts_rank(eps / cap, 180), subindustry)

2、group_rank(ts_rank(cashflow_op / cap, 120), subindustry)

group_rank(ts_rank(cashflow_op / cap, 120), subindustry) decay :2 Sharpe:1.74

group_rank(ts_rank(cashflow_op / cap, 60), subindustry) decay :5 Sharpe:1.81 industry

group_rank(ts_rank(cashflow_op / cap, 60), subindustry) decay :4 Sharpe:1.83 industry

二、7月30尝试算子

算子来源:https://support.worldquantbrain.com/hc/en-us/community/posts/39797611609751--Alpha%E7%81%B5%E6%84%9F-%E4%BB%8E%E4%B8%80%E4%B8%AALearn%E9%A1%B5%E9%9D%A2%E7%9A%84%E4%BE%8B%E5%AD%90%E5%87%BA%E5%8F%91-%E8%81%8A%E8%81%8A%E6%88%91%E6%80%8E%E4%B9%88%E6%8A%8A%E7%8E%B0%E9%87%91%E6%B5%81%E5%9B%A0%E5%AD%90%E5%81%9A%E5%88%B0fitness-1-8

大家好,最近刚开始在BRAIN上认真做alpha研究,踩了不少坑,也有一些收获,写出来跟大家交流一下。 起因 说来有点偶然。刚上平台的时候啥也不懂,就去Learn页面翻文档。在"Alpha Examples for Beginners"里看到一个叫"Earnings Yield Momentum"的例子,用的是分析师盈利预测数据做时序排名再按行业分组。 我直接抄过来跑了一下,sharpe不到1,还行但也谈不上多好。然后我就开始琢磨,这个字段到底靠不靠谱? 第一个坑:数据覆盖率 我当时不知道怎么看一个字段的数据覆盖情况。后来在文档里找到可以通过long count和short count来判断------简单说就是用rank()包一下这个字段,看有多少股票被分到了多头和空头。 跑了一下发现分析师预测类数据在TOP3000里大概只覆盖三分之一的股票,也就是说大部分股票根本没有这类数据。这对信号的稳定性肯定有影响。 想了想,有没有什么基本面指标覆盖率更高、又能反映类似"盈利质量"的意思? 翻了一圈字段列表,最后选了一个覆盖率超过90%的基本面现金流类字段。理由也简单:现金流比利润指标更难造假,而且是实打实的钱进钱出。 改进思路(不贴具体表达式了,说方法论) 第一步:构建基础信号 用现金流类指标除以规模指标做标准化,再rank。逻辑就是找现金流质量高的股票。结果:sharpe不到1,有信号但弱,turnover也偏高。 第二步:加入时间维度 光看当前值太粗糙了,我想看"这个指标是不是在变好"。于是用ts_rank做时序百分位排名。这一步提升比较明显,sharpe翻倍了。关键insight是:比起"现在好不好","正在变好"的信息量更大。 第三步:同行比较 直接rank是拿所有行业一起比,但不同行业的特征差别太大。换成group_rank按细分行业分组后又有明显提升。这里我踩过一个坑:用sector级别分组效果远不如subindustry,越细的分组越能消除系统性偏差。 第四步:加入对冲成分 这一步是意外发现的。在价值因子的基础上减去一个短期价格动量的反转信号,效果特别好。逻辑想通了:做多"基本面在改善但近期被低估的",做空"基本面在恶化但近期被高估的",两个信号天然互补。这一步之后sharpe和fitness都有质的飞跃。 第五步:参数微调 调整decay参数让仓位平滑过渡。这里有个小技巧:fitness公式里turnover在分母位置,所以在不损失sharpe的前提下降低turnover能直接提升fitness,算是"免费的午餐"。

参照这个核心思想,写出Fast Expression表达式

复制代码
# 第一步:构建基础信号(现金流/市值)
base_signal = cashflow_op / cap;

# 第二步:加入时间维度,捕捉"正在变好"
ts_improved = ts_rank(base_signal, 60);

# 第三步:同行比较,细分行业分组
grouped_signal = group_rank(ts_improved, subindustry);

# 第四步:加入对冲成分(做多基本面改善,做空短期高估)
hedge = -ts_rank(returns, 10);

# 第五步:组合信号
final_signal = grouped_signal + hedge;

# 输出最终Alpha
final_signal

参数: decay :8 subindustry

参数: decay :10 subindustry

参数: decay :13 subindustry

参数: decay :12 industry

参数: decay :14 sector

三、其他

模板

相关推荐
闻道且行之3 小时前
图片处理助手|泊松融合原理 + C++ 工程实现,seamlessClone 三模式一次讲透
数据库·c++·人工智能·opencv
夏炳辉.4 小时前
PostgreSQL 高可用集群核心配置参数全解:从原生流复制到 Patroni 企业级方案
数据库·postgresql
努力的小雨5 小时前
KES 开启 SSL 前,证书、端口和客户端要一起验
数据库
DevOps老兵5 小时前
AI全栈知识07:向量数据库 - Milvus/Chroma实战
数据库·ai·milvus
这个DBA有点耶5 小时前
当数据库从“存储”走向“决策”:金仓数据库的融合架构之路
数据库·架构·aigc
smilejingwei6 小时前
Trae+SQLazy 实践 SQL 国产化移植:Oracle => 达梦
数据库·sql·oracle
意疏7 小时前
2026年远控软件安全横评:六款主流工具逐项核查——官方文档、一手实测与安全事件,全摊开
大数据·前端·数据库
名不经传的养虾人7 小时前
从0到1:企业级AI项目迭代日记 Vol.90|Agent变快了,Judge定下来了
大数据·数据库·人工智能·ai编程·企业ai
冰之杍7 小时前
MySQL utf8mb3 → utf8mb4 完整修改方案
数据库·mysql