mirror of
https://github.com/Xe138/AI-Trader.git
synced 2026-04-01 17:17:24 -04:00
15 KiB
15 KiB
🤖 AI-Trader Bench
让AI在金融市场中一展身手
一个革命性的AI股票交易代理系统,让多个大语言模型在纳斯达克100股票池中完全自主决策、同台竞技!
🎯 核心特色: 100% AI自主决策,零人工干预,纯工具驱动架构
🌟 项目介绍
想象一下:5个不同的AI模型,每个都有独特的投资策略,在同一个市场中完全自主决策、竞争,看谁能在纳斯达克100中赚得最多!
🎯 核心特性
- 🤖 完全自主决策: AI代理100%自主分析、决策、执行,零人工干预
- 🛠️ 纯工具驱动: 基于MCP工具链,AI通过工具调用完成所有交易操作
- 🏆 多模型竞技场: 运行GPT、Claude、Qwen等多个AI模型进行交易
- 📊 实时性能追踪: 完整的交易记录、持仓变化和收益分析
- 🔍 智能信息获取: 集成Jina搜索,获取最新市场资讯和财报信息
- ⚡ MCP工具链: 基于Model Context Protocol的模块化工具系统
- 🔌 策略可插拔: 支持第三方策略和自定义AI代理集成
- ⏰ 可重放设计: 支持任意时间段的回放,自动过滤未来信息
🚀 项目概述
AI-Trader Bench是一个创新的AI交易代理系统,它让多个大语言模型在真实的股票交易环境中同台竞技。每个AI代理都拥有:
🎮 交易环境
- 💰 初始资金: $10,000 美元
- 📈 交易标的: 纳斯达克100成分股(100只顶级科技股)
- ⏰ 交易时间: 工作日交易,支持历史回放
- 📊 数据来源: Alpha Vantage API + Jina AI搜索
- 🔄 时间控制: 支持任意时间段的历史回放和未来信息过滤
🧠 AI代理能力
- 📰 智能信息获取: 自动搜索市场新闻、分析师报告,自主筛选信息
- 💡 纯AI决策: 基于多维度分析,AI完全自主做出买卖决策
- 📝 自动记录: 系统自动记录每笔交易的详细日志和持仓变化
- 🔄 持续学习: AI根据市场反馈自主调整策略
🏁 竞技规则
每个AI模型完全独立运行,使用相同的:
- 💰 初始资金: $10,000美元起始资金
- 📊 市场数据: 相同的价格数据和信息源
- ⏰ 交易时间: 相同的交易时间窗口
- 📈 评估标准: 统一的性能评估指标
- 🛠️ 工具集: 相同的MCP工具链
🎯 目标:看哪个AI模型能在完全自主的情况下获得最高的投资回报!
🚫 零人工干预
- ❌ 无预设策略: 不提供任何预设的交易策略或规则
- ❌ 无人工指导: AI完全依靠自己的推理能力做决策
- ❌ 无手动干预: 交易过程中不允许任何人工干预
- ✅ 纯工具驱动: AI通过调用工具完成所有操作
- ✅ 自主学习: AI根据市场反馈自主调整行为
⏰ 可重放设计
AI-Trader Bench的核心特色之一是完全可重放的交易环境,确保AI代理在历史数据上的表现具有科学性和可重复性。
🔄 时间控制机制
📅 灵活的时间设置
{
"date_range": {
"init_date": "2025-01-01", // 任意开始日期
"end_date": "2025-01-31" // 任意结束日期
}
}
🛡️ 未来信息过滤
- 📊 价格数据: 只提供当前日期及之前的价格信息
- 📰 新闻搜索: 自动过滤未来日期的新闻和公告
- 📈 财报信息: 只包含已发布的财务数据
- 🔍 市场分析: 限制在指定时间点的可用信息
🎯 重放优势
🔬 科学研究
- 📊 市场效率研究: 测试AI在不同市场条件下的表现
- 🧠 认知偏差分析: 研究AI决策的时间一致性
- 📈 风险模型验证: 验证风险管理策略的有效性
🎯 竞赛公平性
- 🏆 公平竞争: 所有AI模型使用相同的历史信息
- 📊 客观评估: 基于相同数据集的性能比较
- 🔍 透明度: 完全可重现的实验结果
📁 项目架构
AI-Trader Bench/
├── 🤖 核心系统
│ ├── main.py # 🎯 主程序入口
│ ├── agent/base_agent/ # 🧠 AI代理核心
│ └── configs/ # ⚙️ 配置文件
│
├── 🛠️ MCP工具链
│ ├── agent_tools/
│ │ ├── tool_trade.py # 💰 交易执行
│ │ ├── tool_get_price_local.py # 📊 价格查询
│ │ ├── tool_jina_search.py # 🔍 信息搜索
│ │ └── tool_math.py # 🧮 数学计算
│ └── tools/ # 🔧 辅助工具
│
├── 📊 数据系统
│ ├── data/
│ │ ├── daily_prices_*.json # 📈 股票价格数据
│ │ ├── merged.jsonl # 🔄 统一数据格式
│ │ └── agent_data/ # 📝 AI交易记录
│ └── calculate_performance.py # 📈 性能分析
│
├── 🎨 前端界面
│ └── frontend/ # 🌐 Web仪表板
│
└── 📋 配置与文档
├── configs/ # ⚙️ 系统配置
├── prompts/ # 💬 AI提示词
└── calc_perf.sh # 🚀 性能计算脚本
🔧 核心组件详解
🎯 主程序 (main.py)
- 多模型并发: 同时运行多个AI模型进行交易
- 配置管理: 支持JSON配置文件和环境变量
- 日期管理: 灵活的交易日历和日期范围设置
- 错误处理: 完善的异常处理和重试机制
🛠️ MCP工具链
| 工具 | 功能 | API |
|---|---|---|
| 交易工具 | 买入/卖出股票,持仓管理 | buy(), sell() |
| 价格工具 | 实时和历史价格查询 | get_price_local() |
| 搜索工具 | 市场信息搜索 | get_information() |
| 数学工具 | 财务计算和分析 | 基础数学运算 |
📊 数据系统
- 📈 价格数据: 纳斯达克100成分股的完整OHLCV数据
- 📝 交易记录: 每个AI模型的详细交易历史
- 📊 性能指标: 夏普比率、最大回撤、年化收益等
- 🔄 数据同步: 自动化的数据获取和更新机制
🚀 快速开始
📋 前置要求
- Python 3.8+
- API密钥: OpenAI、Alpha Vantage、Jina AI
⚡ 一键安装
# 1. 克隆项目
git clone https://github.com/HKUDS/AI-Trader.git
cd AI-Trader
# 2. 安装依赖
pip install -r requirements.txt
# 3. 配置环境变量
cp .env.example .env
# 编辑 .env 文件,填入你的API密钥
🔑 环境配置
创建 .env 文件并配置以下变量:
# 🤖 AI模型API配置
OPENAI_API_BASE=https://your-openai-proxy.com/v1
OPENAI_API_KEY=your_openai_key
# 📊 数据源配置
ALPHAADVANTAGE_API_KEY=your_alpha_vantage_key
JINA_API_KEY=your_jina_api_key
# ⚙️ 系统配置
RUNTIME_ENV_PATH=./runtime_env.json #推荐使用绝对路径
# 🌐 服务端口配置
MATH_HTTP_PORT=8000
SEARCH_HTTP_PORT=8001
TRADE_HTTP_PORT=8002
GETPRICE_HTTP_PORT=8003
# 🧠 AI代理配置
AGENT_MAX_STEP=30 # 最大推理步数
📦 依赖包
# 安装生产环境依赖
pip install -r requirements.txt
# 或手动安装核心依赖
pip install langchain langchain-openai langchain-mcp-adapters fastmcp python-dotenv requests numpy pandas
🎮 运行指南
📊 步骤1: 数据准备 (./fresh_data.sh)
# 📈 获取纳斯达克100股票数据
cd data
python get_daily_price.py
# 🔄 合并数据为统一格式
python merge_jsonl.py
🛠️ 步骤2: 启动MCP服务
cd ./agent_tools
python start_mcp_services.py
🚀 步骤3: 启动AI竞技场
# 🎯 运行主程序 - 让AI们开始交易!
python main.py
# 🎯 或使用自定义配置
python main.py configs/my_config.json
⏰ 时间设置示例
📅 创建自定义时间配置
{
"agent_type": "BaseAgent",
"date_range": {
"init_date": "2024-01-01", // 回测开始日期
"end_date": "2024-03-31" // 回测结束日期
},
"models": [
{
"name": "claude-3.7-sonnet",
"basemodel": "anthropic/claude-3.7-sonnet",
"signature": "claude-3.7-sonnet",
"enabled": true
}
]
}
📈 启动Web界面
cd docs
python3 -m http.server 8000
# 访问 http://localhost:8000
📈 性能分析
🏆 竞技规则
| 规则项 | 设置 | 说明 |
|---|---|---|
| 💰 初始资金 | $10,000 | 每个AI模型起始资金 |
| 📈 交易标的 | 纳斯达克100 | 100只顶级科技股 |
| ⏰ 交易时间 | 工作日 | 周一至周五 |
| 💲 价格基准 | 开盘价 | 使用当日开盘价交易 |
| 📝 记录方式 | JSONL格式 | 完整交易历史记录 |
⚙️ 配置指南
📋 配置文件结构
{
"agent_type": "BaseAgent",
"date_range": {
"init_date": "2025-01-01",
"end_date": "2025-01-31"
},
"models": [
{
"name": "claude-3.7-sonnet",
"basemodel": "anthropic/claude-3.7-sonnet",
"signature": "claude-3.7-sonnet",
"enabled": true
}
],
"agent_config": {
"max_steps": 30,
"max_retries": 3,
"base_delay": 1.0,
"initial_cash": 10000.0
},
"log_config": {
"log_path": "./data/agent_data"
}
}
🔧 配置参数说明
| 参数 | 说明 | 默认值 |
|---|---|---|
agent_type |
AI代理类型 | "BaseAgent" |
max_steps |
最大推理步数 | 30 |
max_retries |
最大重试次数 | 3 |
base_delay |
操作延迟(秒) | 1.0 |
initial_cash |
初始资金 | $10,000 |
📊 数据格式
💰 持仓记录 (position.jsonl)
{
"date": "2025-01-20",
"id": 1,
"this_action": {
"action": "buy",
"symbol": "AAPL",
"amount": 10
},
"positions": {
"AAPL": 10,
"MSFT": 0,
"CASH": 9737.6
}
}
📈 价格数据 (merged.jsonl)
{
"Meta Data": {
"2. Symbol": "AAPL",
"3. Last Refreshed": "2025-01-20"
},
"Time Series (Daily)": {
"2025-01-20": {
"1. buy price": "255.8850",
"2. high": "264.3750",
"3. low": "255.6300",
"4. sell price": "262.2400",
"5. volume": "90483029"
}
}
}
📁 文件结构
data/agent_data/
├── claude-3.7-sonnet/
│ ├── position/
│ │ └── position.jsonl # 📝 持仓记录
│ └── log/
│ └── 2025-01-20/
│ └── log.jsonl # 📊 交易日志
├── gpt-4o/
│ └── ...
└── qwen3-max/
└── ...
🔌 第三方策略集成
AI-Trader Bench采用模块化设计,支持轻松集成第三方策略和自定义AI代理。
🛠️ 集成方式
1. 自定义AI代理
# 创建新的AI代理类
class CustomAgent(BaseAgent):
def __init__(self, model_name, **kwargs):
super().__init__(model_name, **kwargs)
# 添加自定义逻辑
2. 注册新代理
# 在 main.py 中注册
AGENT_REGISTRY = {
"BaseAgent": {
"module": "agent.base_agent.base_agent",
"class": "BaseAgent"
},
"CustomAgent": { # 新增
"module": "agent.custom.custom_agent",
"class": "CustomAgent"
},
}
3. 配置文件设置
{
"agent_type": "CustomAgent",
"models": [
{
"name": "your-custom-model",
"basemodel": "your/model/path",
"signature": "custom-signature",
"enabled": true
}
]
}
🔧 扩展工具链
添加自定义工具
# 创建新的MCP工具
@mcp.tools()
class CustomTool:
def __init__(self):
self.name = "custom_tool"
def execute(self, params):
# 实现自定义工具逻辑
return result
🚀 路线图
🌟 未来计划
- 🇨🇳 A股支持 - 扩展至中国股市
- 📊 收盘后统计 - 自动收益分析
- 🔌 策略市场 - 添加第三方策略分享平台
- 🎨 炫酷前端界面 - 现代化Web仪表板
- ₿ 加密货币 - 支持数字货币交易
- 📈 更多策略 - 技术分析、量化策略
- ⏰ 高级回放 - 支持分钟级时间精度和实时回放
- 🔍 智能过滤 - 更精确的未来信息检测和过滤
🤝 贡献指南
我们欢迎各种形式的贡献!特别是AI交易策略和代理实现。
🧠 AI策略贡献
- 🎯 交易策略: 贡献你的AI交易策略实现
- 🤖 自定义代理: 实现新的AI代理类型
- 📊 分析工具: 添加新的市场分析工具
- 🔍 数据源: 集成新的数据源和API
🐛 问题报告
- 使用GitHub Issues报告bug
- 提供详细的复现步骤
- 包含系统环境信息
💡 功能建议
- 在Issues中提出新功能想法
- 详细描述使用场景
- 讨论实现方案
🔧 代码贡献
- Fork项目
- 创建功能分支
- 实现你的策略或功能
- 添加测试用例
- 创建Pull Request
📚 文档改进
- 完善README文档
- 添加代码注释
- 编写使用教程
- 贡献策略说明文档
🏆 策略分享
- 📈 技术分析策略: 基于技术指标的AI策略
- 📊 量化策略: 多因子模型和量化分析
- 🔍 基本面策略: 基于财务数据的分析策略
- 🌐 宏观策略: 基于宏观经济数据的策略
📞 支持与社区
- 💬 讨论: GitHub Discussions
- 🐛 问题: GitHub Issues
- 📧 联系: your-email@example.com
📄 许可证
本项目采用 MIT License 开源协议。
🙏 致谢
感谢以下开源项目和服务:
- LangChain - AI应用开发框架
- MCP - Model Context Protocol
- Alpha Vantage - 金融数据API
- Jina AI - 信息搜索服务