Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
A

A_Share_investment_Agent

> 编程语言
Open source

AI 投资系统 </div ⚠️ 免责声明:本项目仅用于教育和研究目的,不构成任何投资、实际交易建议。投资有风险,决策需谨慎。 再次强调,该系统不涉及任何投资建议,不涉及任何股票推荐,仅用于对于 AI 技术和股市结合感兴趣的朋友。 对 Agent 技术和股市感兴趣者来, 升官发…

2.5K stars0 likes0 views
WebsiteGitHub

About

AI 投资系统 </div ⚠️ 免责声明:本项目仅用于教育和研究目的,不构成任何投资、实际交易建议。投资有风险,决策需谨慎。 再次强调,该系统不涉及任何投资建议,不涉及任何股票推荐,仅用于对于 AI 技术和股市结合感兴趣的朋友。 对 Agent 技术和股市感兴趣者来, 升官发…

AI 投资系统

⚠️ 免责声明:本项目仅用于教育和研究目的,不构成任何投资、实际交易建议。投资有风险,决策需谨慎。 再次强调,该系统不涉及任何投资建议,不涉及任何股票推荐,仅用于对于 AI 技术和股市结合感兴趣的朋友。 对 Agent 技术和股市感兴趣者来, 升官发财请往他处。 不再回复任何有关系统给出信息有无用的问题,此系统不构成任何投资建议。

项目概述

这是一个基于人工智能的投资系统概念验证项目。项目目标是探索如何使用 AI 来辅助投资决策,通过多 Agent 协同工作,结合大型语言模型 (LLM) 的分析能力,提供多角度的市场解读和投资建议。

核心理念:多智能体协同与 LLM 增强决策

系统通过模拟不同角色的研究员(多头、空头)和分析师,进行信息收集、分析、辩论,最终形成投资决策。最新的“辩论室智能增强”机制引入 LLM 作为独立第三方,进一步提升决策的客观性和全面性。

系统架构

新版本的架构做出了以下改进:

  1. 引入了多头研究员(Researcher Bull)和空头研究员(Researcher Bear),让系统能够从不同角度分析市场
  2. 增加了辩论室(Debate Room)环节,通过多空双方的辩论来达成更全面的决策
  3. 优化了数据流向,使决策过程更加系统化和完整

另外,优化了终端输出,减少了不必要的详细数据显示,使输出更加清晰易读。

最新功能:

2025.11.08 数据缓存层

  • 新增 data/akshare_cache.db SQLite 缓存,持久化 AkShare 输出的实时行情 / 财务指标 / 三大报表 / 日线行情 / 新闻数据;所有表的列名与 AkShare 保持一致,并额外记录 缓存时间。
  • src/tools/akshare_cache.py 提供统一的 TTL 策略、自动建表/补列/去重逻辑,并在请求伊始优先命中缓存。
  • 默认 TTL:实时行情 10 分钟、财务指标 24 小时、财务报表 7 天、新闻 2 小时,历史日线数据长期保存;可在调用处覆盖。
  • 相比直接命中 AkShare API,新缓存层显著降低 RemoteDisconnected / ProxyError 等异常,避免新闻抓取反复触发回退逻辑。

2025.06.22 新闻搜索功能升级

我们对新闻获取系统进行了重大升级,显著提升了新闻数据的质量和获取效率:

  1. 智能搜索引擎:集成了先进的搜索功能,能够更精准地获取相关财经新闻
  2. 多源新闻整合:支持从多个主流财经网站获取新闻,包括新浪财经、网易财经、东方财富等
  3. 智能缓存系统:
    • 增量缓存:当请求更多新闻时,系统会智能地利用已有缓存,只获取差额部分
    • 去重机制:基于新闻标题自动去重,避免重复内容
    • 时效性管理:自动检查缓存有效性,确保数据时效性
    • 缓存统计:详细记录缓存使用情况,包括原缓存数量、新获取数量等
  4. 优化的查询策略:
    • 针对 A 股市场特点优化搜索关键词
    • 支持时间范围限制,可获取特定日期前的新闻
    • 智能过滤无关内容,提高新闻质量

2025.04.27 宏观分析师

2025.03.27 辩论室智能增强

我们最新升级了辩论室(Debate Room)模块的决策机制:

  1. LLM 第三方分析:引入大型语言模型作为独立的第三方分析师,对多空观点进行客观评估
  2. 混合置信度计算:将传统的多空置信度差异与 LLM 评分进行加权融合,形成更全面的决策依据
  3. 增强的辩论机制:系统现在能够自动汇总所有研究员的观点,生成结构化分析,并整合进最终决策

这一改进使决策过程更加平衡客观,特别适合在市场信息复杂、多方观点存在分歧的情况下提供更可靠的投资建议。未来我们将持续优化这一机制,进一步提升决策质量。

️ 安装与设置 (Setup)

首先,克隆本仓库到您的本地:

bash
git clone [https://github.com/24mlight/A_Share_investment_Agent.git](https://github.com/24mlight/A_Share_investment_Agent.git)
cd A_Share_investment_Agent

方式 A(推荐):使用 uv 安装与运行

本项目已支持 uv(更快的依赖解析/安装)。如果你已经安装了 uv,直接在项目根目录执行:

bash
uv sync

如需安装开发依赖(pytest/black/isort/flake8):

bash
uv sync --group dev

运行 workflow:

bash
uv run python src/main.py --ticker 000737 --show-reasoning

如果遇到下载超时(Windows 上偶发),可临时提高超时:

powershell
$env:UV_HTTP_TIMEOUT="300"
uv sync

方式 B:使用 Poetry 安装与运行(可选/兼容)

1. 安装 Poetry

Poetry 是一个用于 Python 依赖管理和打包的工具。

Windows (PowerShell):

powershell
(Invoke-WebRequest -Uri [https://install.python-poetry.org](https://install.python-poetry.org) -UseBasicParsing).Content | py -

Unix/macOS:

bash
curl -sSL [https://install.python-poetry.org](https://install.python-poetry.org) | python3 -

2. 安装项目依赖

使用 Poetry 安装项目所需的依赖包:

bash
poetry lock --no-update
bash
poetry install

3. 配置环境变量

环境变量用于存储 API 密钥等敏感信息。

首先,复制示例环境变量文件:

bash
# Create .env file for your API keys
cp .env.example .env

然后,您可以获取您的 Gemini API 密钥:Google AI Studio

您可以通过以下两种方式设置环境变量:

a. 直接修改 .env 文件 (推荐) 打开项目根目录下的 .env 文件, 填入您的 API key:

…

AkShare 代理轮询配置(可选)

例如:AKSHARE_PROXY_LIST=http://user:pass@proxy1:8080,http://user:pass@proxy2:8080,direct

AKSHARE_PROXY_LIST= AKSHARE_PROXY_MAX_ATTEMPTS=3 AKSHARE_PROXY_BASE_DELAY=1 AKSHARE_PROXY_MAX_DELAY=15 AKSHARE_PROXY_JITTER=0.5 AKSHARE_PROXY_ALLOW_DIRECT=true

bash

**注意:** 系统会优先使用 OpenAI Compatible API(如果配置了),否则会使用 Gemini API。

**b. 通过命令行设置**

**Unix/macOS:**

```bash
# Gemini API 配置
export GEMINI_API_KEY='your-gemini-api-key'
export GEMINI_MODEL='gemini-1.5-flash'

# OpenAI Compatible API 配置(可选)
export OPENAI_COMPATIBLE_API_KEY='your-openai-compatible-api-key'
export OPENAI_COMPATIBLE_BASE_URL='https://your-api-endpoint.com/v1'
export OPENAI_COMPATIBLE_MODEL='your-model-name'

Windows PowerShell:

powershell
# Gemini API 配置
$env:GEMINI_API_KEY='your-gemini-api-key'
$env:GEMINI_MODEL='gemini-1.5-flash'

# OpenAI Compatible API 配置(可选)
$env:OPENAI_COMPATIBLE_API_KEY='your-openai-compatible-api-key'
$env:OPENAI_COMPATIBLE_BASE_URL='https://your-api-endpoint.com/v1'
$env:OPENAI_COMPATIBLE_MODEL='your-model-name'

使用指南 (Usage)

⚠️ 注意: 目前回测系统还在测试中。

系统支持多种运行方式:

1. 命令行分析模式

这是直接与系统交互进行股票分析的主要方式。

基本运行 (只显示关键决策信息):

bash
uv run python src/main.py --ticker 000000 # 修改成你想要测试的股票代码

例如,分析股票代码为 301155 的情况:

bash
uv run python src/main.py --ticker 301155

显示详细推理过程 (查看每个智能体的分析过程):

bash
uv run python src/main.py --ticker 000000 --show-reasoning # 修改成你想要测试的股票代码

例如:

bash
uv run python src/main.py --ticker 301155 --show-reasoning

回测功能

bash
uv run python src/backtester.py --ticker 301157 --start-date 2024-12-11 --end-date 2025-01-07 --num-of-news 20

…

bash
# 启动 API 服务
uv run python run_with_backend.py

…


正在获取 301157 的历史行情数据...
开始日期:2024-12-11
结束日期:2024-12-11
成功获取历史行情数据,共 242 条记录

警告:以下指标存在NaN值:
- momentum_1m: 20条
- momentum_3m: 60条
- momentum_6m: 120条
...(这些警告是正常的,是由于某些技术指标需要更长的历史数据才能计算)

正在获取 301157 的财务指标数据...
获取实时行情...
成功获取实时行情数据

获取新浪财务指标...
成功获取新浪财务指标数据,共 3 条记录
最新数据日期:2024-09-30 00:00:00

获取利润表数据...
成功获取利润表数据

构建指标数据...
成功构建指标数据

Final Result:
{
  "action": "buy",
  "quantity": 12500,
  "confidence": 0.42,
  "agent_signals": [
    {
      "agent": "Technical Analysis",
      "signal": "bullish",
      "confidence": 0.6
    },
    {
      "agent": "Fundamental Analysis",
      "signal": "neutral",
      "confidence": 0.5
    },
    {
      "agent": "Sentiment Analysis",
      "signal": "neutral",
      "confidence": 0.8
    },
    {
      "agent": "Valuation Analysis",
      "signal": "bearish",
      "confidence": 0.99
    },
    {
      "agent": "Risk Management",
      "signal": "buy",
      "confidence": 1.0
    }
  ],
  "reasoning": "Risk Management allows a buy action with a maximum quantity of 12500..."
}

日志文件说明

系统会在 logs/ 目录下生成以下类型的日志文件:

  1. 回测日志

    • 文件名格式:backtest_{股票代码}_{当前日期}_{回测开始日期}_{回测结束日期}.log
    • 示例:backtest_301157_20250107_20241201_20241230.log
    • 包含:每个交易日的分析结果、交易决策和投资组合状态
  2. API 调用日志

    • 文件名格式:api_calls_{当前日期}.log
    • 示例:api_calls_20250107.log
    • 包含:所有 API 调用的详细信息和响应

所有日期格式均为 YYYY-MM-DD。如果使用了 --show-reasoning 参数,详细的分析过程也会记录在日志文件中。

项目结构 (Project Structure)

A_Share_investment_Agent/
├── backend/                     # 后端 API 和服务
│   ├── dependencies.py          # 依赖注入 (如 LogStorage)
│   ├── main.py                  # FastAPI 应用实例
│   ├── models/                  # API 请求/响应模型 (Pydantic)
│   │   ├── analysis.py          # /analysis/ 相关路由
│   │   ├── api_runs.py          # /api/runs/ 相关路由 (基于 api_state)
│   │   ├── logs.py              # /logs/ 相关路由
│   │   ├── runs.py              # /runs/ 相关路由 (基于 BaseLogStorage)
│   │   └── workflow.py          # /api/workflow/ 相关路由
│   ├── schemas.py               # 内部数据结构/日志模型 (Pydantic)
│   ├── services/                # 业务逻辑服务
│   │   └── analysis.py          # 股票分析服务
│   ├── state.py                 # 内存状态管理 (api_state)
│   ├── storage/                 # 日志存储实现
│   │   ├── base.py              # BaseLogStorage 接口定义
│   │   └── memory.py            # InMemoryLogStorage 实现
│   └── utils/                   # 后端工具函数
│       ├── api_utils.py         # API 相关工具
│       └── context_managers.py  # 上下文管理器 (如 workflow_run)
├── src/                         # Agent 核心逻辑和工具
│   ├── agents/                  # Agent 定义和工作流
│   │   ├── __init__.py
│   │   ├── debate_room.py
│   │   ├── fundamentals.py
│   │   ├── macro_analyst.py       # 宏观分析师Agent
│   │   ├── market_data.py
│   │   ├── portfolio_manager.py
│   │   ├── researcher_bear.py
│   │   ├── researcher_bull.py
│   │   ├── risk_manager.py
│   │   ├── sentiment.py
│   │   ├── state.py
│   │   ├── technicals.py
│   │   └── valuation.py
│   ├── data/                   # 数据存储目录 (本地缓存等)
│   │   ├── img/                # 项目图片
│   │   ├── sentiment_cache.json  # 情感分析结果缓存
│   │   ├── macro_analysis_cache.json  # 宏观分析结果缓存
│   │   └── stock_news/         # 股票新闻数据
│   ├── tools/                  # 工具和功能模块 (LLM, 数据获取)
│   │   ├── __init__.py
│   │   ├── api.py
│   │   ├── data_analyzer.py
│   │   ├── news_crawler.py
│   │   └── openrouter_config.py
│   ├── utils/                  # 通用工具函数 (日志, LLM客户端, 序列化)
│   │   ├── __init__.py
│   │   ├── api_utils.py        # Agent 共享的API工具 (逐步迁移至 backend)
│   │   ├── llm_clients.py
│   │   ├── llm_interaction_logger.py
│   │   ├── logging_config.py
│   │   ├── output_logger.py
│   │   ├── serialization.py
│   │   ├── structured_terminal.py  # 结构化终端输出
│   │   └── summary_report.py    # 汇总报告生成
│   ├── backtester.py          # 回测系统 (可能需要检查状态)
│   └── main.py                # Agent 工作流定义和命令行入口
├── logs/                      # 日志文件目录 (主要由 OutputLogger 生成)
├── .env                       # 环境变量配置
├── .env.example              # 环境变量示例
├── poetry.lock               # Poetry依赖锁定文件
├── pyproject.toml            # Poetry项目配置
├── run_with_backend.py       # 启动后端并可选执行分析的脚本
└── README.md                 # 项目文档

贡献指南 (Contributing)

  • 运行 poetry run pytest 可执行完整测试;其中 src/tools/test_gemini.py 依赖外部 LLM API,默认通过 RUN_GEMINI_TESTS=1 显式开启,避免在 CI/离线环境发起真实请求。

我们欢迎各种形式的贡献!

  1. Fork 本仓库
  2. 创建您的特性分支 (git checkout -b feature/AmazingFeature)
  3. 提交您的更改 (git commit -m 'Add some AmazingFeature')
  4. 推送到分支 (git push origin feature/AmazingFeature)
  5. 创建 Pull Request

☕️ 支持

如果这个项目对你有帮助,欢迎请我喝杯咖啡 ❤️

项目详细说明

架构设计

本项目是一个基于多个 agent 的 AI 投资系统,采用模块化设计,每个 agent 都有其专门的职责。系统的架构如下:

Market Data Analyst → [Technical/Fundamentals/Sentiment/Valuation Analyst & Researcher Bull/Bear & Debate Room] → Risk Manager → Portfolio Manager → Trading Decision

…

python
    {
       "market_cap": float,        # 总市值
       "volume": float,            # 成交量
       "average_volume": float,    # 平均成交量
       "fifty_two_week_high": float,  # 52周最高价
       "fifty_two_week_low": float    # 52周最低价
    }
    ```

2.  **财务指标数据 (Financial Metrics)**

    ```python
    {
       # 市场数据
       "market_cap": float,          # 总市值
       "float_market_cap": float,    # 流通市值

       # 盈利数据
       "revenue": float,             # 营业总收入
       "net_income": float,          # 净利润
       "return_on_equity": float,    # 净资产收益率
       "net_margin": float,          # 销售净利率
       "operating_margin": float,    # 营业利润率

       # 增长指标
       "revenue_growth": float,      # 主营业务收入增长率
       "earnings_growth": float,     # 净利润增长率
       "book_value_growth": float,   # 净资产增长率

       # 财务健康指标
       "current_ratio": float,       # 流动比率
       "debt_to_equity": float,      # 资产负债率
       "free_cash_flow_per_share": float,  # 每股经营性现金流
       "earnings_per_share": float,  # 每股收益

       # 估值比率
       "pe_ratio": float,           # 市盈率(动态)
       "price_to_book": float,      # 市净率
       "price_to_sales": float      # 市销率
    }
    ```

3.  **财务报表数据 (Financial Statements)**

    ```python
    {
       "net_income": float,          # 净利润
       "operating_revenue": float,    # 营业总收入
       "operating_profit": float,     # 营业利润
       "working_capital": float,      # 营运资金
       "depreciation_and_amortization": float,  # 折旧和摊销
       "capital_expenditure": float,  # 资本支出
       "free_cash_flow": float       # 自由现金流
    }
    ```

4.  **交易信号 (Trading Signals)**
    ```python
    {
       "action": str,               # "buy", "sell", "hold"
       "quantity": int,             # 交易数量
       "confidence": float,         # 置信度 (0-1) (可能是混合置信度)
       "agent_signals": [           # 各个 agent 的信号
           {
               "agent": str,        # agent 名称
               "signal": str,       # "bullish", "bearish", "neutral"
               "confidence": float  # 置信度 (0-1)
           }
       ],
       "reasoning": str            # 决策理由 (可能包含辩论摘要和LLM评估)
    }
    ```

#### 数据流转过程

1.  **数据采集阶段**

    - Market Data Agent 通过 akshare API 获取实时市场数据:
      - 股票实时行情 (`stock_zh_a_spot_em`)
      - 历史行情数据 (`stock_zh_a_hist`)
      - 财务指标数据 (`stock_financial_analysis_indicator`)
      - 财务报表数据 (`stock_financial_report_sina`)
    - 新闻数据通过新浪财经 API 获取
    - 所有数据经过标准化处理和格式

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

Python

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言