What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
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,并检查字段定义后再用于分析或回测。
#1 Best Overall
部署:修正克隆地址后按 README 配置
快速开始部分的 README 曾出现 https://github.com/your_name/dsa.git 这一占位地址,与真实仓库不符。以下使用真实地址。README 给出的命令和变量名称如下;实际运行前应核对仓库当前的依赖、目录结构和 .env.example,因为文档与代码可能不同步。GitHub 仓库
-
克隆项目并安装依赖:
git clone https://github.com/shuwey/dsa.git cd dsa pip install -r requirements.txt cp .env.example .env -
编辑
.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、贴进公开日志,或发送到消息正文。
-
启动服务:
python main.pyREADME 给出的默认服务地址是
http://localhost:8000。如果启动失败,先查看终端报错、环境变量是否加载、依赖版本是否兼容,以及项目实际提供的配置项;不要仅凭 README 推断某个接口必然可用。 -
请求分析接口。README 示例以股票代码
002460发起手动分析:Recommended Free Tools
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 积分与频次权限说明
Rank #2
| 项目 | 官方页面在 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 接口,并按股票代码和日期范围查询:
Windows Errors? Fix Them Before They Spread
Repair common Windows errors and clear accumulated junk for a smoother, more stable PC - no reinstall needed.Free scan · no reinstallOutdated Drivers Are Slowing You Down
One free scan finds every outdated or missing driver and matches the right update for your exact hardware.Free scan · exact hardware matchimport 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 分析可审计
把一段行情文字直接交给模型并要求“买入还是卖出”,很难复现或验证。更稳妥的流程是先确定数据截止时间,再整理结构化数据、计算特征,最后让模型解释证据和不确定性。模型适合生成研究草稿,不应替代可重复计算的指标或交易规则。
Do these 3 things before closing this tab:
1Repair Windows errors before they cause bigger problems2Scan for outdated or missing drivers - takes under a minute3Clear out junk files and repair common Windows errors准备有时间戳的数据
- 保存股票基础信息、交易日历、日线及明确的复权口径。
- 按研究问题添加估值、财务、行业板块、公告和新闻;记录报告期与实际披露日期,不能把尚未发布的财报信息提前用于历史决策。
- 给输入保留数据源、抓取时间、交易日、缺失值和异常值标记。
把可计算特征与文字判断分开
收益率、波动率、最大回撤、均线、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
怎样验证分析结果,而不是相信评分
在将模型建议用于真实资金前,至少应把“模型观点”改写为可检验的规则。例如,预先定义何种输入条件产生买入、何时退出、持有多久、是否允许空仓,然后按历史时点重建当时可获得的数据。不能把收盘后才发布的信息伪装成收盘前已知信号。
-
确定研究范围和基准。选定股票池、历史区间、调仓频率和基准指数,并纳入退市股票及历史成分变化,避免只研究今天仍上市的公司造成生存者偏差。
-
重建当时可用的数据。区分财报报告期与公告披露日期,避免使用后来才公开或修订的数据;固定行情复权方式。Tushare
daily为未复权行情,计算收益时必须明确分红、送转和复权处理。 -
事先写下规则并划分样本。将开发、验证和样本外区间分开,避免根据测试结果反复调 Prompt 或阈值后仍把同一段数据称为独立验证。
The Tool Desk
Outbyte PC Repair FREERepair Windows errors before they cause bigger problemsFix Now →Outbyte Driver Updater FREEScan for outdated or missing drivers - takes under a minuteDriver Scan →Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy. -
把交易摩擦纳入回测。至少考虑佣金、印花税、滑点、买卖价差、涨跌停无法成交、停牌、流动性不足和订单规模造成的冲击成本。
-
与简单基准比较并报告完整指标。记录累计与年化收益、最大回撤、夏普比率、胜率和换手率;解释计算期间、资金假设及成本设置,而不要只挑最好看的一个数字。
-
通过后先做模拟运行。持续记录实际输入、输出、失败任务和模型版本,观察结果是否可重复、数据是否及时,再考虑是否有进一步用途。
运行和结果解释的风险
情绪评分不是收益排序
README 展示了从 analysis_history 按评分取前十名的 SQLite 查询:
Best Value
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 仓库
- 适合:学习 Tushare 接口、多源适配、LLM 辅助研究、个股分析草稿、个人本地数据库和飞书自动推送。
- 不适合直接承担:未经回测的真实资金交易、高频或分钟级策略、需要严格审计与多用户权限的机构生产服务,以及把模型建议自动转成订单的场景。
按目标选择工具与权限
若只是需要 A 股数据,可先直接评估 Tushare 官方 Python 项目及对应接口权限。需要其他来源补充时可评估 AkShare,但应自行验证稳定性、字段定义和历史一致性。需要正式量化验证时,应另建或接入回测层;Backtrader、Zipline 类框架可作为候选方向,仍需检查其当前维护情况和数据适配。若需要桌面化 AI 分析,可将 Fin-Agent 作为比较对象;其官网对功能和定位的描述属于项目方自述,不是第三方验证。若目标是实盘,仍须单独评估券商 API、订单管理、风控、审计和适用合规要求,分析工具本身不会自动补齐这些部分。
购买数据权限前,先列出实际需要的接口和字段,再核对门槛、频次、历史范围和单独费用;只有确认需要盘中数据时才考虑实时或分钟服务。对 LLM 也先用小样本测调用成本,再决定模型或本地部署。这样能避免为未验证的策略提前支付高级数据或批量模型调用费用。
Quick Recap
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.




