October DealsAmazon USOctober deal check: compare before you payAmazon US: current deals, useful picks and tech finds.Check DealsSlow PC?RecommendedPC slow today? Run a repair scan before it gets worseResolve common Windows issues and optimize system performance.Scan NowOctober DealsAmazon USDeal season is back - check today's better picksAmazon US: current deals, useful picks and tech finds.See Picks×
Skip to content
The Finance Base
The Money Desk · Blog
Re:

用 Tushare 数据搭建 AI 量化分析系统:DSA 开源项目拆解与部署指南

DSA 是将 Tushare 等数据源、LLM 分析、SQLite、FastAPI 与飞书推送组合起来的 A 股研究原型。本文说明部署路径、权限成本与模型结果的验证边界。
From TheFinanceBase Team2 min to read

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

DSA(Deep Stock Analysis)是一个面向 A 股研究的开源 AI 分析原型:它将行情等数据交给大模型生成分析结果,并提供 API、SQLite 存储和飞书推送。它不是已经证明能够盈利的策略,也没有展示券商下单、订单管理或实盘风控链路。个人投资者可以把它用于研究和复盘,但不应将模型评分或买卖建议直接当作交易信号。

DSA 是什么,能做什么

项目仓库为 github.com/shuwey/dsa,名称是 DSA(Deep Stock Analysis)。README 将它描述为 AI 驱动的 A 股量化分析系统,包含数据获取、LLM 分析、批量任务、REST API、本地存储和飞书推送。项目作者称它可批量分析 4000 多只 A 股,并输出 0—100 的情绪评分以及买入、持有、观望等建议;仓库没有公开运行日志、失败率或独立验证这些覆盖与结果质量的数据,因此这些数字应视为项目方说法,而不是已核实的性能指标。项目介绍文章也说明了功能定位,但不是收益表现的独立证明。

理解它的边界,关键是区分三类软件:数据系统负责取数,分析系统负责整理数据并形成判断,交易系统还需要策略规则、回测、订单管理、券商接口和账户风控。DSA 展示了前两类能力;仓库没有展示自动下单、订单状态管理或账户级风控,因此称它为 AI 辅助分析或选股研究工具,比称为自动交易系统准确。

架构与数据源切换的含义

仓库展示的处理链路可以概括为:

Tushare Pro / AkShare / 东方财富 / 腾讯财经
                    ↓
             DataFetcherManager
                    ↓
       K线、筹码、板块、新闻等数据 Pipeline
                    ↓
           LLM Agent(DeepSeek / MiniMax)
                    ↓
          FastAPI API / SQLite / 飞书推送

仓库目录包含 data_provider、src、strategies、api、bot 和 tushare-skill 等模块。项目作者称可在多个数据源间切换;这种抽象有助于降低单一接口暂时不可用的影响,但不代表不同来源的数据可以无缝拼接。行情时间戳和延迟、股票代码格式、缺失值处理以及复权口径都可能不同。切换来源时,应保留每条数据的 source、retrieved_at、trade_date、adjustment 和 quality_status,并检查字段定义后再用于分析或回测。

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

部署:修正克隆地址后按 README 配置

快速开始部分的 README 曾出现 https://github.com/your_name/dsa.git 这一占位地址,与真实仓库不符。以下使用真实地址。README 给出的命令和变量名称如下;实际运行前应核对仓库当前的依赖、目录结构和 .env.example,因为文档与代码可能不同步。GitHub 仓库

  1. 克隆项目并安装依赖:

    git clone https://github.com/shuwey/dsa.git
    cd dsa
    pip install -r requirements.txt
    cp .env.example .env
  2. 编辑 .env,填入自己申请的凭据:

    TUSHARE_TOKEN=your_tushare_token_here
    LLM_API_KEY=your_llm_api_key_here
    FEISHU_APP_ID=your_feishu_app_id
    FEISHU_APP_SECRET=your_feishu_app_secret

    只使用本地 API 分析时,飞书凭据是否必需取决于项目实际配置。不要把 Token 或 API Key 提交到 Git、贴进公开日志,或发送到消息正文。

  3. 启动服务:

    python main.py

    README 给出的默认服务地址是 http://localhost:8000。如果启动失败,先查看终端报错、环境变量是否加载、依赖版本是否兼容,以及项目实际提供的配置项;不要仅凭 README 推断某个接口必然可用。

  4. 请求分析接口。README 示例以股票代码 002460 发起手动分析:

    Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
    curl -X POST http://localhost:8000/api/v1/analysis/analyze 
      -H "Content-Type: application/json" 
      -d '{"stock_codes": ["002460"], "selection_source": "manual"}'

    Python 批量请求示例:

    import requests
    
    codes = ["002460", "300750", "600110", "002594", "600163"]
    response = requests.post(
        "http://localhost:8000/api/v1/analysis/analyze",
        json={"stock_codes": codes, "selection_source": "manual"}
    )
    print(response.json())

    示例展示的是调用方式,不保证接口在所有版本、配置和数据权限下都成功。批量请求应先从少量代码开始,确认响应结构、失败处理和调用成本,再扩大规模。

Tushare 权限:先核对接口,不要只看积分

Tushare 积分档位不是所有数据服务的通行证。官方权限页面在 2026 年 8 月 18 日显示的个人用户价格与权限信号如下;具体接口门槛、调用频次、历史范围和单独费用应以购买时的官方页面为准,部分费用不支持退款,机构费用可能为个人费用的 10 倍。Tushare 积分与频次权限说明

项目 官方页面在 2026-08-18 显示的个人用户信息 解读
120 积分 免费档,含非复权日线权限信号 不能据此推断包含实时或分钟行情。
2000 积分 年费 200 元档 具体可用接口需逐项核对。
5000 积分 年费 500 元档 常规数据权限更高,仍须查目标接口要求。
10000 积分 年费 1000 元档 页面显示包含部分特色数据。
15000 积分 年费 1500 元档 特色数据权限更高,逐项权限仍以官方说明为准。
历史分钟数据 单独 2000 元 不应视为普通积分档自动包含。
实时分钟数据 1000 元/月 属于单独的数据费用信号。
实时日线 200 元/月 需确认开通条件和数据定义。
新闻资讯、上市公司公告、研报库 分别为单独 1000 元、1000 元、500 元 购买前确认内容范围、权限和使用频次。

例如,Tushare 的 daily 是 A 股历史日线接口,官方说明通常在交易日 15:00—16:00 入库,返回未复权行情,停牌期间不提供数据;基础接口每分钟最多 500 次、单次最多 6000 条。A 股日线接口文档。daily_basic 提供市盈率、市净率、换手率、量比以及总市值、流通市值等每日指标,官方页面显示至少需要 2000 积分,单次最多返回 6000 条。每日指标接口文档。不要把项目 README 中的简化积分表当成当前完整权限清单。

先用日线验证数据链路

Tushare 官方示例用 Token 创建 Pro 接口,并按股票代码和日期范围查询:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
import tushare as ts

ts.set_token("YOUR_TUSHARE_TOKEN")
pro = ts.pro_api()

df = pro.daily(
    ts_code="000001.SZ",
    start_date="20180701",
    end_date="20180718"
)
print(df.head())

获取某一交易日全市场数据的形式是:

df = pro.daily(trade_date="20180810")

官方建议获取全市场历史日线时优先按交易日循环,而不是按股票代码循环。调用前应确认所需积分、频率和日期范围;日线接口返回的未复权价格也不能直接与复权收益混用。

再按需要申请每日指标

df = pro.daily_basic(
    ts_code="",
    trade_date="20180726",
    fields="ts_code,trade_date,turnover_rate,volume_ratio,pe,pb"
)

字段虽有明确名称,计算口径与更新时间仍应按接口文档解释;如果用这些指标做历史测试,必须保证回测在当时只使用已经公开的数据。

怎样让 LLM 分析可审计

把一段行情文字直接交给模型并要求“买入还是卖出”,很难复现或验证。更稳妥的流程是先确定数据截止时间,再整理结构化数据、计算特征,最后让模型解释证据和不确定性。模型适合生成研究草稿,不应替代可重复计算的指标或交易规则。

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

准备有时间戳的数据

  • 保存股票基础信息、交易日历、日线及明确的复权口径。
  • 按研究问题添加估值、财务、行业板块、公告和新闻;记录报告期与实际披露日期,不能把尚未发布的财报信息提前用于历史决策。
  • 给输入保留数据源、抓取时间、交易日、缺失值和异常值标记。

把可计算特征与文字判断分开

收益率、波动率、最大回撤、均线、RSI、MACD、KDJ、布林带、成交量变化、行业相对强弱和估值分位数等,应由确定性代码根据明确的数据口径计算。LLM 可以解释这些特征之间的关系,但不应让模型暗中补齐缺失行情或自行改变计算口径。

限定模型输入和输出

输入应明确股票、日期和字段,例如:

{
  "symbol": "000001.SZ",
  "as_of": "2026-08-17",
  "price_data": {},
  "fundamental_data": {},
  "technical_features": {},
  "industry_context": {},
  "news": []
}

输出也应要求结构化格式,并保留多空证据及风险,而不是只给一个分数:

{
  "data_cutoff": "2026-08-17",
  "summary": "",
  "bull_case": [],
  "bear_case": [],
  "risk_factors": [],
  "confidence": 0,
  "action": "observe",
  "evidence": []
}

“情绪分 78”是模型输出的评分字段,不是 78% 的胜率、收益概率或预期收益率。为了能复盘,应保存模型名称和版本或调用日期、Prompt 版本、输入快照、原始输出及解析后的结果。项目 README 提到 DeepSeek 和 MiniMax,但没有给出固定模型、调用量或费用预算;批量分析前应先测少量样本的单位调用成本,并核对所用服务的可用性、限流、数据保留政策和条款。项目 README

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

怎样验证分析结果,而不是相信评分

在将模型建议用于真实资金前,至少应把“模型观点”改写为可检验的规则。例如,预先定义何种输入条件产生买入、何时退出、持有多久、是否允许空仓,然后按历史时点重建当时可获得的数据。不能把收盘后才发布的信息伪装成收盘前已知信号。

  1. 确定研究范围和基准。选定股票池、历史区间、调仓频率和基准指数,并纳入退市股票及历史成分变化,避免只研究今天仍上市的公司造成生存者偏差。

  2. 重建当时可用的数据。区分财报报告期与公告披露日期,避免使用后来才公开或修订的数据;固定行情复权方式。Tushare daily 为未复权行情,计算收益时必须明确分红、送转和复权处理。

  3. 事先写下规则并划分样本。将开发、验证和样本外区间分开,避免根据测试结果反复调 Prompt 或阈值后仍把同一段数据称为独立验证。

    Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  4. 把交易摩擦纳入回测。至少考虑佣金、印花税、滑点、买卖价差、涨跌停无法成交、停牌、流动性不足和订单规模造成的冲击成本。

  5. 与简单基准比较并报告完整指标。记录累计与年化收益、最大回撤、夏普比率、胜率和换手率;解释计算期间、资金假设及成本设置,而不要只挑最好看的一个数字。

  6. 通过后先做模拟运行。持续记录实际输入、输出、失败任务和模型版本,观察结果是否可重复、数据是否及时,再考虑是否有进一步用途。

Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

运行和结果解释的风险

情绪评分不是收益排序

README 展示了从 analysis_history 按评分取前十名的 SQLite 查询:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
import sqlite3

conn = sqlite3.connect("data/stock_analysis.db")

cursor = conn.execute("""
    SELECT code, name, sentiment_score, operation_advice
    FROM analysis_history
    ORDER BY sentiment_score DESC
    LIMIT 10
""")

for row in cursor:
    print(row)

这里的 sentiment_score 是模型评分,operation_advice 是模型建议,二者都不是交易指令或经过检验的收益概率。按单次横截面评分排序还可能产生选择偏差。若数据库没有保存分析时点、数据截止时间和模型版本,事后就难以解释某次排序为何变化。

批量任务需要节流与恢复机制

即使项目作者称支持 4000 多只股票,也不能据此推断可以不受限制地同时请求数据源和 LLM。实际任务应使用分批队列、限速、缓存、带退避的重试、失败任务记录、幂等键和断点续跑;否则可能触发接口限制、重复计费或留下不完整结果。

SQLite 适合本地原型,不等于生产数据库

项目将结果存于 data/stock_analysis.db。SQLite 便于个人本地使用和查询,但多进程写入、高并发、多用户权限、备份恢复和长期审计需要额外设计。飞书推送也应限于必要摘要,避免将 Token、模型 API Key 或账户敏感信息放入消息和日志。

项目成熟度与适用人群

截至本次资料所列的仓库页面状态,DSA 有 2 个 Star、2 个 Fork、8 次提交、0 个公开 Issue,且没有公开 Release;仓库采用 MIT License。它更适合看作个人开源原型或学习项目,而非经过广泛社区验证的成熟框架。页面上的社区数字会变化,部署前应直接查看仓库当前状态。DSA GitHub 仓库

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • 适合:学习 Tushare 接口、多源适配、LLM 辅助研究、个股分析草稿、个人本地数据库和飞书自动推送。
  • 不适合直接承担:未经回测的真实资金交易、高频或分钟级策略、需要严格审计与多用户权限的机构生产服务,以及把模型建议自动转成订单的场景。

按目标选择工具与权限

若只是需要 A 股数据,可先直接评估 Tushare 官方 Python 项目及对应接口权限。需要其他来源补充时可评估 AkShare,但应自行验证稳定性、字段定义和历史一致性。需要正式量化验证时,应另建或接入回测层;Backtrader、Zipline 类框架可作为候选方向,仍需检查其当前维护情况和数据适配。若需要桌面化 AI 分析,可将 Fin-Agent 作为比较对象;其官网对功能和定位的描述属于项目方自述,不是第三方验证。若目标是实盘,仍须单独评估券商 API、订单管理、风控、审计和适用合规要求,分析工具本身不会自动补齐这些部分。

购买数据权限前,先列出实际需要的接口和字段,再核对门槛、频次、历史范围和单独费用;只有确认需要盘中数据时才考虑实时或分钟服务。对 LLM 也先用小样本测调用成本,再决定模型或本地部署。这样能避免为未验证的策略提前支付高级数据或批量模型调用费用。

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.

Leave a Reply

Your email address will not be published. Required fields are marked *

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

More post from the Money Desk

  1. The Money DeskBlogTheFinanceBase09 OCT 267 minMortgage Escrow FAQs: Taxes, Insurance, Shortages, and Refunds
  2. The Money DeskBlogTheFinanceBase09 OCT 265 minHow Mortgage Escrow Accounts Work and What Homeowners Pay For
  3. The Money DeskBlogTheFinanceBase09 OCT 265 minHow to Read a Stock Chart, Volume and Market-Cap Data
Recommended PC Tool
Recommended PC Tool
Windows Errors? Fix Them Before They SpreadFree repair scan
Crashes, No Sound, or Screen Glitches?Free driver scan

Two free Windows tools

One Free Minute Could Fix That PC

Before you go - each of these free tools takes about a minute and tackles what quietly slows a Windows PC down.

Special offer. View Outbyte info, uninstall instructions, EULA, and Privacy Policy.