×
你是游客,注册登录后,点击右下角实盘交流群可见每日竞价,胜率90%,每日签到积分可下载AI+金融软件
迎 接
牛 市
AI选谷宝即将发布
AI选谷宝即将发布
AI选谷宝即将发布
AI选谷宝即将发布
AI选谷宝即将发布
AI选谷宝即将发布
AI选谷宝即将发布
AI选谷宝即将发布
AI选谷宝即将发布
积极分子

abcide

百撕不得其解

海涛

xhjkin

13098862116

星尘一粒

屋檐下的月光

财女

hewyi2025

qdyxc0228

阿昌

admin

12下一页
返回列表 发布新帖

AI炒股项目进化太快了,官方支持上证50了

2189 15
发表于 2025-11-12 22:40:43 | 查看全部 阅读模式
<
香港大学的AI-Trader项目进步太快了,一周就已经支持了A股市场上证50成分股和BITWISE10主流加密货币,可以让多个AI模型在真实市场环境中完全自主决策、同台竞技,并且是开源的,实时的交易系统。想象一下,让Deepseek、Claude、GPT、Qwen等顶尖AI模型各自带着10万元资金,在A股市场中独立交易,看谁能在零人工干预的情况下获得最佳收益。


什么是AI-Trader?

AI-Trader是一个基于大语言模型的完全自主交易系统,其核心特点是:

  • 完全自主决策:AI代理100%独立分析、决策、执行,零人工干预
  • 纯工具驱动架构:基于MCP工具链,AI通过标准化工具调用完成所有交易操作
  • 多模型竞技场:部署多个AI模型进行竞争性交易
  • 实时性能分析:完整的交易记录、持仓监控和盈亏分析
  • 智能市场情报:集成Jina搜索,获取实时市场新闻和财务报告
AI-Trader 缺点

AI-Trader优点实在太明显了,这里主要分享几个缺点,仅为个人观点:

  • 黑盒决策:AI模型可能产生过度拟合特定历史数据的策略,模型决策过程的可解释性不足,难以进行人工干预
  • 基本面为主:目前以Jina搜索的实时市场新闻和财务报告等基本面数据为主,缺乏对更多技术指标和量化因子的原生支持,可回测性不够,是否有未来函数,也无法判定
  • 配置分散:基于MCP工具链,需要同时运行多个MCP服务,增加了部署和维护难度,配置过程繁琐,对非技术用户不够友好
三大市场支持

AI-Trader目前支持三个主要市场:

  • 美股市场:纳斯达克100成分股,初始资金$10,000
  • A股市场:上证50成分股,初始资金¥100,000
  • ₿ 加密货币市场:BITWISE10主流加密货币,初始资金50,000 USDT
核心创新:历史回放架构

AI-Trader的核心创新在于其完全可重放的交易环境,确保AI代理在历史市场数据上的性能评估具有科学严谨性和可重复性。系统通过严格的时间控制框架,防止AI访问未来信息,确保评估的公平性。

项目整体架构
AI-Trader Bench/
├──  核心系统
│   ├── main.py                    #  主程序入口
│   ├── agent/                     #  AI代理系统
│   └── configs/                   # ⚙️ 配置文件
├── ️ MCP工具链
│   ├── agent_tools/               #  交易工具集
│   └── tools/                     #  辅助工具
├──  数据系统
│   ├── data/                      #  市场数据
│   └── calculate_performance.py   #  性能分析
├──  提示词系统
│   └── prompts/                   #  交易提示词
├──  前端界面
│   └── frontend/                  #  Web仪表板
└──  快速启动脚本
    └── scripts/                   # ️ 便捷启动脚本
核心组件详解
1. 主程序(main.py)

主程序是整个系统的调度中心,具有以下关键功能:

  • 多模型并发:同时运行多个AI模型进行交易
  • 动态代理加载:基于配置文件自动加载对应的代理类型
  • 配置管理:支持JSON配置文件和环境变量
  • 日期管理:灵活的交易日历和日期范围设置
  • 错误处理:完善的异常处理和重试机制
2. AI代理系统

AI-Trader提供了三种专用代理:

[td]
代理类型
适用市场
特点
BaseAgent
美股/A股通用
灵活的市场切换,可配置股票池
BaseAgentAStock
A股专用
内置A股规则,上证50默认池,中文提示词
BaseAgentCrypto
加密货币专用
BITWISE10加密货币池,USDT计价

A股代理的特殊优化

  • 交易规则适配:自动应用A股特有的T+1交易制度
  • 手数限制:遵循A股一手100股的交易规则
  • 人民币计价:所有交易和持仓以人民币为单位
  • 中文提示词:专门优化的中文交易提示词,提高决策质量
3. MCP工具链

MCP(Model Context Protocol)是AI-Trader的核心技术基础,提供了标准化的工具调用接口:

[td]
工具
功能
市场支持
交易工具
买入/卖出资产,持仓管理
美股/A股/加密货币
价格工具
实时和历史价格查询
美股/A股/加密货币
搜索工具
市场信息搜索
全球市场
数学工具
财务计算和分析
通用

工具链的关键特性:

  • 自动识别:根据股票代码后缀(.SH/.SZ)自动选择数据源
  • 规则适配:自动应用对应市场的交易规则
  • 统一接口:相同的API接口支持多市场交易
配置指南:从零开始的完整配置流程
环境要求
  • Python 3.10+
  • 必要的API密钥
    • OpenAI API密钥(用于AI模型)
    • Alpha Vantage API密钥(用于美股数据)
    • Jina AI API密钥(用于市场信息搜索)
    • Tushare Token(用于A股市场数据)
安装步骤
1. 克隆项目
git clone https://github.com/HKUDS/AI-Trader.git
cd AI-Trader
2. 安装依赖
pip install -r requirements.txt

核心依赖包括:

  • langchain:AI应用开发框架
  • langchain-openai:OpenAI模型集成
  • langchain-mcp-adapters:MCP协议适配器
  • fastmcp:MCP服务器框架
  • tushare:A股数据获取
3. 环境配置

创建.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
TUSHARE_TOKEN=your_tushare_token

# ⚙️ 系统配置
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
Tushare配置详解

对于A股交易,Tushare是获取数据的关键:

  • 注册Tushare账号:访问tushare.pro注册
  • 获取Token:在个人中心获取API Token
  • 积分要求:基础数据需要一定积分,可通过完成任务获取
运行实战:多市场交易的详细操作步骤
数据准备阶段
A股数据获取
# 进入A股数据目录
cd data/A_stock

# 获取上证50成分股数据
python get_daily_price_tushare.py

# 转换为JSONL格式
python merge_jsonl_tushare.py

数据获取流程详解

  • 指数成分股获取:通过Tushare API获取上证50指数成分股
  • 批量数据获取:考虑到API限制,系统自动分批获取数据
  • 数据格式转换:将CSV格式转换为系统所需的JSONL格式
  • 防未来信息泄露:对最新交易日只提供买入价,防止回测作弊
数据获取代码解析
def get_daily_price_a_stock(
    index_code: str = "000016.SH",
    daily_start_date: str = "20250101",
    fallback_csv: Optional[Path] = None,
) -> Optional[pd.DataFrame]:
    """获取A股指数成分股的日线数据"""
   
    # 设置Tushare Token
    ts.set_token(token)
    pro = ts.pro_api()
   
    # 获取指数成分股
    df = pro.index_weight(
        index_code=index_code,
        start_date=index_start_date,
        end_date=index_end_date
    )
   
    # 批量获取日线数据(考虑6000条记录限制)
    batch_days = calculate_batch_days(len(code_list))
    # ... 批量处理逻辑
MCP服务启动
cd ./agent_tools
python start_mcp_services.py

这将启动四个关键服务:

  • 数学计算服务:端口8000
  • 信息搜索服务:端口8001
  • 交易执行服务:端口8002
  • 价格查询服务:端口8003
AI交易启动
A股交易配置

创建configs/astock_config.json:

{
  "agent_type": "BaseAgentAStock",
"market": "cn",
"date_range": {
    "init_date": "2025-10-01",
    "end_date": "2025-10-29"
  },
"models": [
    {
      "name": "claude-3.7-sonnet",
      "basemodel": "claude-3-7-sonnet-20250219",
      "signature": "claude-3.7-sonnet",
      "enabled": true
    },
    {
      "name": "qwen3-max",
      "basemodel": "qwen3-max",
      "signature": "qwen3-max",
      "enabled": true
    }
  ],
"agent_config": {
    "max_steps": 30,
    "max_retries": 3,
    "base_delay": 1.0,
    "initial_cash": 100000.0
  },
"log_config": {
    "log_path": "./data/agent_data_astock"
  }
}
启动交易
# 启动A股交易
python main.py configs/astock_config.json
中国股票数据获取:Tushare API的完整应用
Tushare数据源优势

Tushare作为国内知名的金融数据平台,具有以下优势:

  • 数据全面性:覆盖A股、指数、基金、期货等全市场数据
  • 数据准确性:数据来源于交易所官方,质量可靠
  • API稳定性:提供稳定的RESTful API接口
  • 更新及时性:交易日结束后及时更新数据
数据获取关键技术
1. 指数成分股获取
# 获取上证50成分股
df = pro.index_weight(
    index_code="000016.SH",
    start_date="20251001",
    end_date="20251031"
)

返回数据包含:

  • con_code:成分股代码
  • trade_date:交易日期
  • weight:在指数中的权重
2. 日线数据获取
# 获取个股日线数据
df_batch = pro.daily(
    ts_code="600036.SH,600519.SH",  # 股票代码列表
    start_date="20251001",
    end_date="20251031"
)

返回的日线数据包含:

  • ts_code:股票代码
  • trade_date:交易日期
  • open:开盘价
  • high:最高价
  • low:最低价
  • close:收盘价
  • vol:成交量(手)
  • amount:成交额(千元)
3. 数据批处理策略

由于Tushare API有单次请求6000条记录的限制,系统实现了智能批处理:

def calculate_batch_days(num_stocks: int, max_records: int = 6000) -> int:
    """计算每批可以获取的天数"""
    return max(1, max_records // num_stocks)
数据格式转换

获取的原始数据需要转换为系统统一的JSONL格式:

def convert_a_stock_to_jsonl(csv_path, output_path, stock_name_csv):
    """将A股CSV数据转换为JSONL格式"""
   
    # 读取CSV数据
    df = pd.read_csv(csv_path)
   
    # 按股票代码分组处理
    grouped = df.groupby("ts_code")
   
    for ts_code, group_df in grouped:
        # 构建时间序列数据
        time_series = {}
        for _, row in group_df.iterrows():
            date_formatted = f"{row['trade_date'][:4]}-{row['trade_date'][4:6]}-{row['trade_date'][6:]}"
            
            time_series[date_formatted] = {
                "1. buy price": str(row["open"]),    # 开盘价作为买入价
                "2. high": str(row["high"]),         # 最高价
                "3. low": str(row["low"]),           # 最低价  
                "4. sell price": str(row["close"]),  # 收盘价作为卖出价
                "5. volume": str(int(row["vol"] * 100))  # 转换为股数
            }
        
        # 构建完整的JSON对象
        json_obj = {
            "Meta Data": {
                "2. Symbol": ts_code,
                "2.1. Name": stock_name,  # 股票名称
                "3. Last Refreshed": latest_date,
                "5. Time Zone": "Asia/Shanghai",
            },
            "Time Series (Daily)": time_series
        }
A股专用代理(BaseAgentAStock)
class BaseAgentAStock(BaseAgent):
    def __init__(self, model_name, **kwargs):
        super().__init__(model_name, **kwargs)
        self.market = "cn"# 固定为A股市场
        self.stock_pool = self.load_sse_50_stocks()  # 上证50成分股
        
    def load_sse_50_stocks(self):
        """加载上证50成分股"""
        # 从配置文件加载股票池
        return sse_50_stocks
        
    asyncdef trade(self, date):
        """A股专用交易逻辑"""
        # 应用A股特定规则
        # T+1限制检查
        # 手数限制检查
        await super().trade(date)
多模型竞技实现

系统支持同时运行多个AI模型:

# 在配置文件中定义多个模型
"models": [
    {
        "name": "claude-3.7-sonnet",
        "basemodel": "anthropic/claude-3.7-sonnet",
        "signature": "claude-3.7-sonnet",
        "enabled": true
    },
    {
        "name": "qwen3-max",
        "basemodel": "qwen3-max",
        "signature": "qwen3-max",
        "enabled": true
    }
]

每个AI代理的交易决策流程:

  • 市场分析:获取当前市场状态和持仓情况
  • 信息搜集:通过Jina搜索获取相关新闻和分析
  • 策略制定:基于市场信息制定交易策略
  • 风险评估:评估潜在风险和收益
  • 交易执行:通过MCP工具执行买卖操作
  • 记录更新:更新持仓和交易记录
MCP工具链:纯工具驱动的交易执行
MCP协议简介

MCP(Model Context Protocol),定义了AI模型与外部工具的标准交互协议。

核心工具实现
1. 交易工具(tool_trade.py)
@mcp.tool()
asyncdef buy(symbol: str, amount: int) -> str:
    """买入股票"""
   
    # 参数验证
    if amount <= 0:
        return"错误:买入数量必须大于0"
   
    # 获取当前价格
    current_price = await get_current_price(symbol)
   
    # 计算总成本
    total_cost = current_price * amount
   
    # 检查资金是否足够
    if total_cost > cash_balance:
        returnf"错误:资金不足,需要{total_cost:.2f},当前资金{cash_balance:.2f}"
   
    # 执行买入操作
    # 更新持仓
    # 记录交易
    returnf"成功买入{amount}股{symbol},价格{current_price:.2f}"
2. 价格查询工具(tool_get_price_local.py)
@mcp.tool()
asyncdef get_price_local(symbol: str, date: str = None) -> dict:
    """获取股票价格信息"""
   
    # 自动识别市场类型
    if symbol.endswith('.SH') or symbol.endswith('.SZ'):
        market = 'cn'# A股市场
    elif symbol in CRYPTO_SYMBOLS:
        market = 'crypto'# 加密货币
    else:
        market = 'us'# 美股市场
   
    # 根据市场类型获取价格数据
    price_data = await get_price_from_database(symbol, date, market)
   
    return {
        "symbol": symbol,
        "market": market,
        "price": price_data.get('close'),
        "open": price_data.get('open'),
        "high": price_data.get('high'),
        "low": price_data.get('low'),
        "volume": price_data.get('volume'),
        "date": date
    }
3. 信息搜索工具(tool_jina_search.py)
@mcp.tool()
async def get_information(query: str) -> str:
    """搜索市场相关信息"""
   
    # 调用Jina AI搜索API
    results = await jina_search(query)
   
    # 过滤和整理搜索结果
    filtered_results = filter_relevant_information(results)
   
    return f"关于'{query}'的搜索结果:\n{filtered_results}"
性能指标

AI-Trader-main\tools\result_tools.py提供了全面的性能分析指标:

  • 累计收益率:从开始到结束的总收益率
  • 年化收益率:折算为年化的收益率
  • 夏普比率:风险调整后的收益指标
  • 最大回撤:投资组合从峰值到谷底的最大跌幅
  • 胜率:盈利交易占总交易次数的比例
  • 盈亏比:平均盈利与平均亏损的比值

交易记录分析

系统记录详细的交易数据:

{
  "date": "2025-10-15",
"agent": "claude-3.7-sonnet",
"action": "buy",
"symbol": "600036.SH",
"amount": 100,
"price": 35.20,
"reason": "基于技术分析和基本面分析,认为该股票具有上涨潜力",
"positions": {
    "600036.SH": 100,
    "CASH": 96480.0
  }
}

在这里插入图片描述
扩展与定制:第三方策略集成指南
自定义AI代理

开发者可以轻松创建自定义AI代理:

class TechnicalAnalysisAgent(BaseAgent):
    """技术分析专用代理"""
   
    def __init__(self, model_name, **kwargs):
        super().__init__(model_name, **kwargs)
        self.technical_indicators = ['MACD', 'RSI', 'Bollinger Bands']
   
    asyncdef analyze_technical(self, symbol):
        """技术分析"""
        # 计算技术指标
        indicators = await calculate_indicators(symbol, self.technical_indicators)
        return indicators
   
    asyncdef trade(self, date):
        """基于技术分析的交易决策"""
        # 技术分析
        analysis_results = await self.analyze_technical(self.stock_pool)
        
        # 制定交易策略
        trading_decisions = await self.formulate_strategy(analysis_results)
        
        # 执行交易
        await self.execute_trades(trading_decisions)
注册自定义代理

在main.py中注册新代理:

AGENT_REGISTRY = {
    "BaseAgent": {
        "module": "agent.base_agent.base_agent",
        "class": "BaseAgent"
    },
    "BaseAgentAStock": {
        "module": "agent.base_agent_astock.base_agent_astock",
        "class": "BaseAgentAStock"
    },
    "TechnicalAnalysisAgent": {
        "module": "agent.custom.technical_agent",
        "class": "TechnicalAnalysisAgent"
    }
}
添加自定义工具

开发者还可以添加自定义MCP工具:

@mcp.tool()
class TechnicalIndicatorTool:
    """技术指标计算工具"""
   
    def __init__(self):
        self.name = "technical_indicators"
   
    asyncdef calculate_macd(self, symbol: str, period: int = 26) -> dict:
        """计算MACD指标"""
        # MACD计算逻辑
        return macd_data
   
    asyncdef calculate_rsi(self, symbol: str, period: int = 14) -> float:
        """计算RSI指标"""
        # RSI计算逻辑
        return rsi_value


对于想要尝试AI交易的开发者和投资者,可以从模拟交易开始,逐步过渡到实盘,持续关注AI-Trader项目,这样的开源项目将大模型技术迅速平民化,为广大开发者和投资者提供了学习和实践的机会。未来已来,AI交易的时代正在开启。



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
AI选谷宝,由一群国内985、211与海外硕博组成的线上工作团队,旨在用AI工具开发技术指标、算法软件,打造最前沿的“AI+金融”软件创业论坛。
推广排行榜:

评论15

admin楼主Lv.9 发表于 2025-11-12 22:40:50 | 查看全部
虽然有源码,但是部署起来没点本事搞不成
AI选谷宝,由一群国内985、211与海外硕博组成的线上工作团队,旨在用AI工具开发技术指标、算法软件,打造最前沿的“AI+金融”软件创业论坛。
admin楼主Lv.9 发表于 2025-11-12 22:40:57 | 查看全部
发展太快了,都不需要人类动手了
AI选谷宝,由一群国内985、211与海外硕博组成的线上工作团队,旨在用AI工具开发技术指标、算法软件,打造最前沿的“AI+金融”软件创业论坛。
admin楼主Lv.9 发表于 2025-11-12 22:41:04 | 查看全部
怎么下手?不懂安装找谁?
AI选谷宝,由一群国内985、211与海外硕博组成的线上工作团队,旨在用AI工具开发技术指标、算法软件,打造最前沿的“AI+金融”软件创业论坛。
admin楼主Lv.9 发表于 2025-11-12 22:41:11 | 查看全部
韭菜再不跟上就不是一根根地割了,是百亩百亩地收割
AI选谷宝,由一群国内985、211与海外硕博组成的线上工作团队,旨在用AI工具开发技术指标、算法软件,打造最前沿的“AI+金融”软件创业论坛。
admin楼主Lv.9 发表于 2025-11-12 22:41:18 | 查看全部
AI让好多人失业了,也让好多人创业了
AI选谷宝,由一群国内985、211与海外硕博组成的线上工作团队,旨在用AI工具开发技术指标、算法软件,打造最前沿的“AI+金融”软件创业论坛。
天空之城Lv.1 发表于 2025-11-13 15:09:47 | 查看全部
厉害,涨的这么多
tianya_8Lv.1 发表于 2025-11-23 20:39:36 | 查看全部
厉害,涨的这么多
hewyi2025Lv.4 发表于 2025-11-24 21:34:38 | 查看全部
跟不上时代的节奏了!
屋檐下的月光Lv.6 发表于 2025-11-26 00:12:34 | 查看全部
时代进步太快了

回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

⚠️

小A客服

×
AI
您好!我是小A客服,有什么可以帮助您的吗?

请先登录后使用小A客服

立即登录
内容由AI大模型生成,仅供参考,相关风险需自行承担。
投诉/建议联系

3162964031@qq.com

未经授权禁止转载,复制和建立镜像,
如有违反,追究法律责任
  • 关注公众号
  • 添加QQ客服
Copyright © 2001-2026 AI选谷宝 版权所有 All Rights Reserved.
关灯 在本版发帖
扫一扫添加QQ客服
QQ客服返回顶部
快速回复 返回顶部 返回列表