这是worldquantbrian量化金融平台的一个用来自动寻找superalpha的工具。
(在正常情况下,super阿尔法模拟出来这难度非常高。)
使用了多线程,会自动遇到网络问题后重试,自动给生成成功的Alpha染色,自动检查相关性保持superalpha的提交成功率,触发限流后等待并重试等等。让worldquantbrian平台的顾问就算是残疾人也可以稳定提交superalpha的python程序
这个工具是自动挖Alpha的机器人跑在WorldQuant BRAIN平台上,WQB不允许直接上传因子只能提交alpha表达式让平台回测,工具模拟人工在WQB上提交Alpha等结果检查性能的全流程,核心思路生成SUPER配置提交WQB回测检查性能好配置存起来继续进化,WQB的SUPER Alpha先算Selection再算Combo比REGULAR慢3-5倍但更灵活
整个程序分四块,BrainAPI类封装所有WQB API调用用Session保持连接登录用HTTP Basic Auth,Session有效期3小时,EvolutionManager类实现进化算法内部用deque保存50个精英配置序列化到evolution_history_v3.json程序重启自动加载,Worker线程用ThreadPoolExecutor开4个线程并行挖流程拿配置提交simulations轮询结果URL调用alphasid拿指标决定是否加入精英库达标就查correlationsself和correlationsprod没问题就PATCH alphasid改color为PURPLE,主程序注册CtrlC信号处理启动线程池
技术栈是Python标准库加requests加colorama没用高大上框架部署简单本地或WQB的Web IDE都能跑
我设计了30个Selection模板分5种流派每种6个,Selection是SUPER Alpha的筛选条件WQB平台要求返回一个boolean向量True表示选中这只股票进入Combo计算
参数范围设计围绕WQB的合格线:Sharpe >= 1 进化策略用50%探索加50%利用,变异有30%概率换Universe30%概率换Selection模板20%概率换Decay保证改良不是重来,WQB每天有提交上限免费账号100个左右必须用进化算法提高命中率
遇到的坑,坑1SUPER Alpha回测慢,最开始最多等2分钟大部分Alpha超时放弃,WQB的SUPER要算Selection和Combo两步确实慢,改法把等待循环从24次加到120次每次睡5秒最多等10分钟
坑2相关性数据有延迟,Alpha达标后立即查Self和Prod Correlation经常拿到默认值1 坑3多线程触发API限流,WQB有429限流保护响应头里有Retry-After字段,在post_simulation里加限流重试读到Retry-After就睡指定秒数后递归重试
坑4Session超时,程序跑一晚上所有线程报401,WQB的Session3小时过期,改法在所有API调用前检查Session年龄超3小时自动重新登录
坑5模板参数替换,但是平台有字数限制,写不下了