关于网络优化:
理由 - 原有的PPO-MASK算法,使用了LSTM网络,LSTM处理时间序列的表现不一定比transformer好,transformer的多头可以并行计算,而且k-v的形式
可以让模型更好地学习到生成的符号序列之间的关系。
修改 - 将网络改成了transformer,替代了之前的lstm,多头设为6个,原论文是8个,但是8个在1800票上跑会爆显存。
结果 - 使用transformer网络在1800票上训练,在全市场上测试,得到的因子如下:
st股和新股的处理: 在和强化学习因子生成框架对接的higgsdb类中添加了st和新股的处理,保证训练数据不含这些,但是用目前的程序,tensor-wise地生成测试集的逐分钟的因子值时,如果剔除st和新股,会导致 会导致tensor维度不一致,暂时不能解决。目前的解决方法是直接用jupyter脚本手动写这些因子,在脚本里可以有剔除的逻辑。
关于llm在因子挖掘中的应用
使用qwen替代原有的gpt,qwen的具体调用分为流式输出和非流式输出两种,先用后者实现一次完整的通信。
具体的方法参考qwen的技术文档
简单的流程就是:(1)获取api-key (2)安装openai包(3)构建messages(4)贴上api-key,调用
qwen的副作用
上述的 2 中提到了st股和新股的处理,原有的higgsdb类中是没有这些处理的,导致训练时会报错,于是可以直接通过调用LLM的方式,实现从逆波兰表达式到正常df[‘col]的转换,目前已经把这个功能作为一个新的proj实现了(在qwen帮助下)。
简单来说新的proj架构如下:
factor-agent/
│
├── agent.py # 主程序:构建 prompt + 调用 LLM + 生成代码
├── requirements.txt # 依赖包
├── prompts/
│ └── system_prompt.txt # 标准化提示词模板(可热更新)
├── output/
│ └── fetch_factors.py # 自动生成的因子函数文件(每次覆盖或版本化)
├── examples/
│ └── sample_exprs.json # 示例因子表达式集合
└── README.md # 使用说明