×
你是游客,注册登录后,点击右下角实盘交流群可见每日竞价,胜率90%,每日签到积分可下载AI+金融软件
AI选谷宝即将发布
9:25竞价抓涨停 客服QQ:1051179345
AI选谷宝即将发布
AI选谷宝5.0 通达信MPV pro版本
AI选谷宝即将发布
AI选谷宝即将发布
AI选谷宝即将发布
AI选谷宝即将发布
AI选谷宝即将发布
积极分子

abcide

百撕不得其解

海涛

xhjkin

13098862116

星尘一粒

屋檐下的月光

财女

hewyi2025

qdyxc0228

阿昌

admin

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

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

1812 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.3 发表于 2025-11-24 21:34:38 | 查看全部
跟不上时代的节奏了!
屋檐下的月光Lv.4 发表于 2025-11-26 00:12:34 | 查看全部
时代进步太快了

回复

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

本版积分规则

⚠️

小A客服

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

请先登录后使用小A客服

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

3162964031@qq.com

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