【免费下载链接】ContestTrade
A Multi-Agent Trading System Based on Internal Contest Mechanism
ContestTrade 是一个基于内部竞赛机制(Contest Mechanism)的多智能体(Multi-Agent)量化交易框架。它的核心思路是:让多个数据智能体(Data Analysis Agent)各自从海量市场数据中提炼"文本因子",再由 LightGBM 机器学习模型根据历史收益表现预测每个智能体未来谁更强,最终优选出最强的一批数据智能体参与后续研究决策。本文将拆解这套"内部选秀"机制的完整链路。
🏆 双竞赛架构:模拟一家投资公司
ContestTrade 的工作流程模拟了一家投资公司的动态决策过程,由数据处理阶段和研究决策阶段两个竞赛管道组成:
- 第一轮竞赛(数据侧):多个数据智能体并行产出因子,内部竞赛机制评估每个因子的潜在价值,选出"冠军"因子组合;
- 第二轮竞赛(研究侧):研究员智能体基于冠军因子提交交易提案,再次通过竞赛与 LightGBM 预测进行权重分配,合成最终配置。
数据智能体自身的产出流程如下:从新闻、研报、财报等多源数据出发,经过"泛读 → 精读 → 总结 → 因子生成"四步,最终输出一段结构化的文本因子:
📊 第一轮竞赛:给每个数据智能体"算分"
第一轮竞赛的主控制器是 data_contest.py,它把竞赛拆成 5 个清晰步骤:
- 加载历史因子:data_manager.py 从
agents_workspace/factors目录加载每个智能体最近 5 个交易日的因子文件(每天一个YYYY-MM-DD_09-00-00.json); - 评估缺失的 reward:对尚未评分的历史因子,evaluator.py 用 LLM 把因子文本拆成独立的 observation(观点/事实),再识别出受影响的个股或行业(mention → symbol),让 LLM 按 -2 到 2 的五档标准预测次日表现,最后用真实次日开盘价变化计算 reward(评分 × 实际涨跌幅);
- 预测因子排序:这一步就是 LightGBM 登场的地方(见下文);
- 选择优质智能体:按预测得分排序,采用 top-k 策略取前 3 名;
- 筛选当天因子:只保留冠军智能体当天产出的因子,传递给研究团队。
💡 关键设计:reward 不是拍脑袋的分数,而是"LLM 预测方向 × 真实市场表现"的闭环反馈,这让每个智能体的历史成绩单客观可验证。
🤖 LightGBM 预测:用5天成绩单预测明天谁最强
预测器实现在 predictor.py,整个机制可以概括为"双模型 + 夏普比率":
① 特征工程 —— 把5天reward变成5个特征
对每个智能体过去 5 天的 reward 序列(缺失日用局部中位数填充),构造滚动统计特征:
| 特征 | 含义 |
|---|---|
reward_mean_1d | 最近 1 天平均收益 |
reward_mean_3d / reward_std_3d | 近 3 天均值与波动 |
reward_mean_5d / reward_std_5d | 近 5 天均值与波动 |
② 双模型预测 —— 同时预测"均值"和"波动"
项目内置了两个训练好的 LightGBM 回归模型(预训练模型直接随仓库提供):
- 均值模型:lgbm_mean_model.joblib → 预测未来收益的期望
- 标准差模型:lgbm_std_model.joblib → 预测未来收益的不确定性
两者相除得到预测夏普比率(pred_mean / max(pred_std, 0.01)),作为该智能体的预测得分。这个设计的巧味在于:不仅奖励"赚得多",还惩罚"波动大"——一个天天大起大落和稳扎稳打的智能体,即使平均收益相同,后者也会胜出。
③ 优雅降级 —— 模型不可用时的兜底
如果模型文件缺失或加载失败(use_lightgbm 为 False),预测器自动回退到"5 天 reward 简单均值"策略,保证系统永远不会因为模型问题而停摆。研究侧的预测器 research_predictor.py 更进一步:它用 12 个特征(5 个历史收益特征 + 7 个 LLM 评审团的 judge 评分特征)训练模型,并支持通过 train_model.py 基于近 180 天历史信号重新训练。
🎯 优胜者晋级:从因子冠军到交易信号
数据侧选出的 top-3 冠军因子会作为"背景情报"喂给研究团队。每个研究员智能体携带一条个性化"交易信念"(配置在 belief_list.json),基于 ReAct 循环(观察 → 思考 → 工具调用)使用选股器、网页搜索等工具进行深度分析,最终提交交易信号:
第二轮竞赛(research_contest.py)同样使用 LightGBM 预测各研究员的夏普比率,再由 research_weight_optimizer.py 按"夏普比率加权"分配权重——预测夏普为负的智能体直接淘汰,为正者按比率占比获得权重,最终合成一份统一的投资组合建议。
📈 实战表现:竞赛机制的价值
在论文的滚动回测对比中,ContestTrade 的组合净值显著跑赢 MACD、RSI&KDJ、LSTM 等其他策略,也跑赢 CSI All Share 基准:
这说明"让智能体内部竞争 + 用机器学习预测谁更靠谱"的机制,确实能有效过滤噪声信号,让最终决策只由最稳健的洞察驱动。
📁 关键源码索引
想深入阅读这套机制的实现,可以从以下入口开始:
- 数据竞赛主控制器:data_contest.py
- LightGBM 预测器:predictor.py
- LLM 因子评估器:evaluator.py
- 研究信号预测器:research_predictor.py
- 数据结构定义:data_contest_types.py
- 数据智能体实现:data_analysis_agent.py
⚠️ 写在最后
ContestTrade 是开源研究项目,仅供学习与研究。LightGBM 的预测得分本质上是"历史表现的统计外推",市场风格切换时可能失效;所有输出均为 AI 模型推演结果,不构成投资建议。投资有风险,入市需谨慎。
【免费下载链接】ContestTrade
A Multi-Agent Trading System Based on Internal Contest Mechanism
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考







