每日股票分析:LLM 驱动的多市场股票情报系统

一个 LLM 驱动的多市场股票分析系统,带实时新闻、决策仪表板和自动通知。48K star。支持零成本定时运行。

  • ⭐ 3000
  • 更新于 2026-08-27
每日股票分析:LLM 驱动的多市场股票情报系统 #

PageIndex:29K⭐ 无向量 RAG 系统AI-Trader:14K⭐ 全自动 AI 交易智能体

每日股票分析是一个开源的 LLM 驱动股票分析系统,提供多市场情报——实时新闻聚合、自动化决策仪表板和智能通知系统。凭借 48,278 个 GitHub star,它已成为散户投资者获取机构级分析的最受欢迎的量化交易工具之一。

本文涵盖安装、市场数据源、LLM 集成、仪表板配置、自动化分析和部署策略。

TL;DR #

每日股票分析把实时市场数据、新闻情绪分析和 LLM 驱动的洞察结合到一个统一决策平台。支持多个市场:美股、A 股、加密货币和期货。系统可以完全免费运行,带定时自动化分析,让机构级股票研究对所有人都可及。

什么是每日股票分析? #

每日股票分析是一个综合性股票情报平台,利用大语言模型分析市场数据、新闻情绪和技术指标。与传统只显示价格走势的图表工具不同,这个系统提供上下文分析——解释市场为什么在动、接下来可能发生什么

平台支持多个市场和数据源:

  • 美股:NYSE、NASDAQ,实时和延迟数据
  • A 股:沪深交易所,全面覆盖
  • 加密货币:Binance、Coinbase、Kraken 等主流交易所
  • 期货与大宗商品:原油、黄金、农产品和指数
  • 外汇:主要货币对,实时汇率
在 DigitalOcean 上部署每日股票分析系统

安装指南 #

前置条件 #

  • Python:3.10+(推荐 3.11)
  • 数据库:PostgreSQL 14+ 或 SQLite(轻量场景)
  • LLM API:OpenAI、Anthropic,或经 Ollama 的本地模型
  • 市场数据 API:Tushare(A 股)、AKShare(免费)或付费服务商
  • 系统:最低 8GB 内存,SQLite 模式 4GB

方案 1:Docker 部署(最简单) #

# 克隆仓库
git clone https://github.com/ZhuLinsen/daily_stock_analysis.git
cd daily_stock_analysis

# 配置环境变量
cp .env.example .env
# 编辑 .env 填入你的 API 密钥

# 启动所有服务
docker compose up -d

# 检查状态
docker compose ps

方案 2:手动安装 #

# 克隆仓库
git clone https://github.com/ZhuLinsen/daily_stock_analysis.git
cd daily_stock_analysis

# 创建虚拟环境
python -m venv venv
source venv/bin/activate  # Linux/Mac
# 或
venv\Scripts\activate     # Windows

# 安装依赖
pip install -r requirements.txt

# 初始化数据库
python setup_database.py --init

# 配置 LLM 和数据源
cp config.example.yaml config.yaml
# 编辑 config.yaml

# 运行首次分析
python main.py --market us --date $(date +%Y-%m-%d)

方案 3:本地 LLM 配置(免费) #

想完全避免 API 成本:

# 安装 Ollama 做本地 LLM 推理
curl -fsSL https://ollama.ai/install.sh | sh

# 拉取合适的模型
ollama pull qwen2.5:14b

# 更新 config.yaml 使用本地模型
cat >> config.yaml << EOF
llm:
  provider: ollama
  model: qwen2.5:14b
  base_url: http://localhost:11434
EOF

# 零 API 成本运行分析
python main.py --market a_shares --date $(date +%Y-%m-%d)

市场数据集成 #

AKShare 集成(免费 A 股数据) #

AKShare 无需 API 密钥即可免费访问中国市场数据:

import akshare as ak

# 获取 A 股实时行情
df = ak.stock_zh_a_spot_em()
print(df.head())

# 获取历史价格数据
hist_df = ak.stock_zh_a_hist(
    symbol="000001",
    period="daily",
    start_date="20260101",
    end_date="20260625",
    adjust="qfq"
)

# 获取板块表现
sector_df = ak.stock_board_industry_name_em()
print(sector_df)

Tushare 集成(高级 A 股数据) #

需要更全面的 A 股数据(含基本面):

import tushare as ts

# 用你的 API token 初始化
pro = ts.pro_api("YOUR_TUSHARE_TOKEN")

# 获取 A 股日线数据
df = pro.daily(
    ts_code="000001.SZ",
    start_date="20260101",
    end_date="20260625"
)

# 获取财务报表
income_df = pro.income(
    ts_code="000001.SZ",
    period="20260331",
    fields="total_operating_income,net_profit,total_expense"
)

# 获取股东信息
holder_df = pro.stock_holder_top10(
    ts_code="000001.SZ",
    ann_date="20260331"
)

美股数据 #

import yfinance as yf

# 获取美股数据
ticker = yf.Ticker("AAPL")
df = ticker.history(period="3mo")

# 获取期权链
options = ticker.options

# 获取分析师推荐
recommendations = ticker.recommendations

# 获取新闻情绪
news = ticker.news
for item in news:
    print(f"{item['title']}: {item['providerPublishTime']}")

加密货币数据 #

import ccxt

# 连接交易所
exchange = ccxt.binance({
    'apiKey': 'YOUR_API_KEY',
    'secret': 'YOUR_SECRET',
})

# 获取行情
ticker = exchange.fetch_ticker('BTC/USDT')
print(f"价格: {ticker['last']}")
print(f"成交量: {ticker['quoteVolume']}")

# 获取订单簿
order_book = exchange.fetch_order_book('ETH/USDT')
print(f"买一: {order_book['bids'][0][0]}")
print(f"卖一: {order_book['asks'][0][0]}")

LLM 驱动分析 #

情绪分析管道 #

每日股票分析的核心是 LLM 驱动的情绪分析管道:

from daily_stock_analysis.llm import LLMAnalyzer
from daily_stock_analysis.data import MarketDataProvider

# 初始化组件
llm = LLMAnalyzer(model="gpt-4o", temperature=0.3)
data_provider = MarketDataProvider(source="akshare")

# 获取市场数据和新闻
market_data = data_provider.get_market_data(
    symbol="000001.SZ",
    period="1d",
    indicators=["rsi", "macd", "bollinger"]
)

news_data = data_provider.get_news(
    symbol="000001.SZ",
    days=7,
    sources=["eastmoney", "cls", "cnbc"]
)

# 运行 LLM 分析
analysis = llm.analyze_market(
    market_data=market_data,
    news_data=news_data,
    prompt_template="comprehensive_analysis"
)

print(f"总体情绪: {analysis.sentiment}")
print(f"置信度: {analysis.confidence:.1%}")
print(f"关键因素: {', '.join(analysis.key_factors)}")
print(f"风险等级: {analysis.risk_level}")

自定义分析提示词 #

可以为不同场景定制 LLM 分析提示词:

# 技术分析提示词
tech_prompt = """
分析以下股票技术指标并提供:
1. 趋势方向(看涨/看跌/中性)
2. 关键支撑和阻力位
3. 动量评估
4. 成交量分析解读
5. 总体技术评级(1-10)

数据:{market_data}
"""

# 基本面分析提示词
fund_prompt = """
分析以下基本面数据并提供:
1. 营收增长评估
2. 盈利能力评价
3. 债务可持续性
4. 估值对比
5. 总体基本面评级(1-10)

数据:{fundamental_data}
"""

# 综合分析
combined = llm.analyze(
    prompt_template="combined_analysis",
    market_data=market_data,
    fundamental_data=fundamental_data,
    news_data=news_data
)

多市场对比分析 #

同时对比不同市场的股票:

# 对比美股科技股
us_techs = llm.compare_stocks(
    symbols=["AAPL", "MSFT", "GOOGL", "AMZN", "META"],
    market="us",
    comparison_metrics=["pe_ratio", "revenue_growth", "profit_margin"]
)

# 对比 A 股板块
a_share_sectors = llm.compare_sectors(
    sectors=["新能源", "半导体", "医药", "消费"],
    market="a_shares",
    time_period="1m"
)

仪表板配置 #

Web 仪表板设置 #

每日股票分析内置 Web 仪表板:

# 启动仪表板服务
python dashboard.py --host 0.0.0.0 --port 8080

# 访问 http://localhost:8080

仪表板提供:

  • 带热力图的实时市场总览
  • 带交互图表的个股分析
  • 板块表现对比
  • 新闻情绪时间线
  • 自动化分析报告

仪表板定制 #

# dashboard_config.yaml
dashboard:
  refresh_interval: 300  # 5 分钟
  default_market: "a_shares"
  charts:
    - type: "heatmap"
      title: "市场热力图"
      data_source: "sector_performance"
    - type: "line"
      title: "股价历史"
      data_source: "historical_prices"
    - type: "sentiment"
      title: "新闻情绪"
      data_source: "llm_sentiment"
  alerts:
    - threshold: 0.8
      action: "notification"
      channels: ["email", "telegram"]

导出报告 #

# 生成 PDF 日报
python report_generator.py --format pdf --output daily_report.pdf

# 生成带图表的 HTML 报告
python report_generator.py --format html --output daily_report.html

# 导出 CSV 分析数据
python report_generator.py --format csv --output analysis_data.csv

自动调度 #

Cron 任务设置 #

安排自动分析运行:

# 编辑 crontab
crontab -e

# 每天早 7 点 A 股分析
0 7 * * * cd /path/to/daily_stock_analysis && python main.py --market a_shares --auto

# 美股开盘后分析(工作日 21 点)
0 21 * * 1-5 cd /path/to/daily_stock_analysis && python main.py --market us --auto

# 周日综合周报
0 9 * * 0 cd /path/to/daily_stock_analysis && python weekly_report.py

Systemd 服务 #

持久后台运行:

# /etc/systemd/system/daily-stock-analysis.service
[Unit]
Description=Daily Stock Analysis Service
After=network.target postgresql.service

[Service]
Type=simple
User=stockuser
WorkingDirectory=/opt/daily_stock_analysis
ExecStart=/opt/daily_stock_analysis/venv/bin/python main.py --daemon
Restart=always
RestartSec=30

[Install]
WantedBy=multi-user.target
# 启用并启动服务
sudo systemctl enable daily-stock-analysis
sudo systemctl start daily-stock-analysis
sudo systemctl status daily-stock-analysis

通知系统 #

Telegram 通知 #

# 配置 Telegram 机器人
python notify.py --setup telegram \
  --bot-token "${TELEGRAM_BOT_TOKEN}" \
  --chat-id "${TELEGRAM_CHAT_ID}"

# 发送测试通知
python notify.py --send "AAPL 每日分析完成" \
  --channel telegram

邮件通知 #

from daily_stock_analysis.notify import Notifier

# 配置邮件通知器
notifier = Notifier(
    provider="smtp",
    smtp_server="smtp.gmail.com",
    smtp_port=587,
    username="your_email@gmail.com",
    password="your_app_password"
)

# 发送分析报告
notifier.send_email(
    to="your_email@gmail.com",
    subject="每日股票分析报告",
    body=analysis_report,
    attach_pdf=True
)

自定义 Webhook 通知 #

# 发送到自定义 webhook(如 Slack、Discord)
notifier.send_webhook(
    url="https://hooks.slack.com/services/YOUR/WEBHOOK/URL",
    payload={
        "text": f"{symbol} 分析完成",
        "blocks": [
            {
                "type": "section",
                "text": {
                    "type": "mrkdwn",
                    "text": f"*{symbol}* - 情绪: {sentiment}"
                }
            }
        ]
    }
)

对比:每日股票分析 vs 替代方案 #

特性每日股票分析TradingViewWind 金融终端同花顺
LLM 分析✅ 原生部分
新闻情绪✅ 自动基础基础基础
多市场✅ 5 类部分A 股为主
开源✅ MIT
免费运行✅ 可零成本免费层受限昂贵免费层受限
自动通知✅ Telegram/邮件/Webhook部分部分
定时任务✅ 内置

加入社区:Telegram

披露:本文提到的工具可能带有联盟关系。我们不接受付费评测。所有观点均为我们自己的。

📦 出现在以下合集中

💬 留言讨论