这是worldquantbrian量化金融平台的一个用来自动寻找superalpha的工具。
(在正常情况下,super阿尔法模拟出来这难度非常高。)
使用了多线程,会自动遇到网络问题后重试,自动给生成成功的Alpha染色,自动检查相关性保持superalpha的提交成功率,触发限流后等待并重试等等。让worldquantbrian平台的顾问就算是残疾人也可以稳定提交superalpha的python程序
点击空白处退出提示
这是worldquantbrian量化金融平台的一个用来自动寻找superalpha的工具。
(在正常情况下,super阿尔法模拟出来这难度非常高。)
使用了多线程,会自动遇到网络问题后重试,自动给生成成功的Alpha染色,自动检查相关性保持superalpha的提交成功率,触发限流后等待并重试等等。让worldquantbrian平台的顾问就算是残疾人也可以稳定提交superalpha的python程序
功能模块:
BrainAPI封装WQB平台的所有API调用
EvolutionManager类实现进化算法的核心逻辑,管理精英种群(最多50个配置),负责配置的随机生成和基于父代的变异
WorkerTask模块多线程工作单元,每个线程独立执行完整的Alpha挖掘流程
项目主要功能描述:
这个工具是一个基于进化算法的自动化Alpha挖掘系统,专门运行在WorldQuant BRAIN平台上挖掘SUPER类型Alpha。WQB平台不允许直接上传因子,只能提交alpha表达式让平台回测,这个工具就是模拟人工在WQB上提交Alpha、等待结果、检查性能的全流程自动化。
工具的核心工作流程是:不断生成SUPER Alpha配置(包含Selection选股表达式和Combo组合表达式) → 提交到WQB平台回测 → 检查Sharpe、Fitness、Turnover等性能指标 → 把好的配置存进精英池 → 基于精英配置做变异继续进化。
为了高效利用WQB平台每天的提交限额(免费账号约100个),工具采用50%随机探索加50%精英变异的进化策略,在全局搜索和局部优化之间取得平衡。工具内置了30个高质量的Selection模板,分为强力去相关、统计学中性化猎手、分段换手率狙击、反拥挤和数据源隔离、质量优先与混合策略等5种流派,配合5个可变参数(相关性上限、相关性下限、换手率上限、Fitness门槛、Decay值),可以组合出403200种不同的配置。
工具还针对WQB平台的特性做了很多鲁棒性设计:多线程并发提交时会自动处理429限流错误(读取Retry-After头并等待重试);SUPER Alpha回测时间长,工具最多等待10分钟确保不遗漏;相关性数据有延迟,工具会重试5次直到获取到有效值;Session超时会自动重新登录,支持长时间无人值守运行。
我负责的任务:
全部由我个人开发,无团队组合
技术栈和架构:
py3.X+requests+concurrent.futures+collections.deque+random+colorama+json
分四层,BrainAPI类封装所有WQB API调用,EvolutionManager类实现进化算法,Worker Task是多线程工作单元,主程序负责启动和信号控制
实现亮点:
模板系统写入了30个Selection模板,覆盖5种不同流派,适应各种市场条件
进化策略50%探索+50%利用,变异概率经过精心设计的,不是全量替换而是局部改良,保证每次变异都有效
鲁棒性设计,三层保护:限流重试、Session超时重登、相关性检查重试。特别是相关性检查,不是立即查而是重试5次:
难点和坑
SUPERAlpha回测慢,最开始用REGULAR的等待时间(2分钟),大部分Alpha超时放弃。后来看WQB文档,SUPER要算Selection和Combo两步,确实慢3-5倍。改法是把等待循环从24次加到120次,最多等10分钟。
相关性数据延迟,Alpha达标后立即查相关性,经常拿到默认值1.0,误判为超标。后来发现WQB计算完回测后,相关性数据可能几十秒后才就绪。解决方案是加5次重试,只有拿到小于0.99的有效值才返回。
多线程限流,4个线程同时提交,经常429错误。最开始没处理,直接就失败了。后来发现WQB的429响应头里有Retry-After字段,读完睡一会儿再递归重试就好了。
Session超时,程序跑一晚上,第二天所有线程报401。原因是WQB的Session 3小时过期。改法是在所有API调用前检查Session年龄,超了就自动重新登录。




评论