Aj Stock Analysis
A股价值投资分析工具,提供股票筛选、个股深度分析、行业对比和估值计算功能。基于价值投资理论,使用tushare获取公开财务数据,适合低频交易的普通投资者。
- Skill ID
- zuoa/aj-skills/aj-stock-analysis
- Publisher
- zuoa
- Repository
- aj-skills
- Installs
- 0
- Files
- 34
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
zuoa/aj-skills/aj-stock-analysisInstalls these files- .env.example
- SKILL.md
- config/sector_computing_default.json
- references/a-stock-features.md
- references/financial-ratios.md
- references/value-investing-principles.md
- scripts/assemble_data.py
- scripts/data_contract.py
- scripts/data_fetcher.py
- scripts/env_loader.py
- scripts/event_window.py
- scripts/fetch_basic.py
- scripts/fetch_event_window.py
- scripts/fetch_financial.py
- scripts/fetch_holder.py
- scripts/fetch_news_data.py
- scripts/fetch_price.py
- scripts/fetch_realtime.py
- scripts/fetch_valuation.py
- scripts/financial_analyzer.py
- scripts/news_fetcher.py
- scripts/realtime_metrics.py
- scripts/sector_analyze.py
- scripts/sector_fetcher.py
- scripts/sentiment_analyzer.py
- scripts/stock_screener.py
- scripts/valuation_calculator.py
- templates/analysis_report.md
- tests/fixtures/sample_stock_data.json
- tests/test_assemble_data.py
- tests/test_data_contract.py
- tests/test_financial_analyzer.py
- tests/test_sentiment_analyzer.py
- tests/test_valuation_calculator.py
What this skill tells the agent
China Stock Analysis Skill
基于价值投资理论的中国A股分析工具,面向低频交易的普通投资者。
When to Use
当用户请求以下操作时调用此skill:
- 分析某只A股股票
- 筛选符合条件的股票
- 对比多只股票或行业内股票
- 计算股票估值或内在价值
- 查看股票的财务健康状况
- 检测财务异常风险
Prerequisites
Python环境要求(必须使用venv)
所有脚本命令都应在项目虚拟环境中运行。
python3 -m venv .venv
source .venv/bin/activate安装依赖:
pip install tushare pandas numpyEnvironment Bootstrap(执行前必须自动完成)
在运行任何脚本前,先在当前项目目录执行:
cd <skill项目目录>
if [ ! -d ".venv" ]; then
python3 -m venv .venv
fi
source .venv/bin/activate
python3 -m pip install -U pip
python3 -m pip install tushare pandas numpy说明:
.venv必须位于 skill 项目根目录下(不是全局目录)- 若
import tushare失败,必须先执行上述 bootstrap,再继续后续分析流程
TUSHARE_TOKEN / BRAVE_API_KEY 建议保存在 ~/.aj-skills/.env,并在执行前先加载到当前 shell:
set -a
source ~/.aj-skills/.env
set +a说明:
- 脚本不会自动读取
~/.aj-skills/.env - 必须通过 CLI 参数显式传入:
--token "${TUSHARE_TOKEN}"、--brave-api-key "${BRAVE_API_KEY}"
执行前参数预检(使用 test 命令):
test -n "${TUSHARE_TOKEN}" || { echo "缺少 TUSHARE_TOKEN"; exit 1; }
# 仅当使用 Brave 新闻源时检查
test -n "${BRAVE_API_KEY}" || { echo "缺少 BRAVE_API_KEY(news-provider=brave 时必填)"; exit 1; }依赖检查
在执行任何分析前,先检查tushare是否已安装:
python3 -c "import tushare; print(tushare.__version__)"Core Modules
1. Stock Screener (股票筛选器)
筛选符合条件的股票
2. Financial Analyzer (财务分析器)
个股深度财务分析
3. Industry Comparator (行业对比)
同行业横向对比分析
4. Valuation Calculator (估值计算器)
内在价值测算与安全边际计算
5. News & Sentiment (新闻与舆情)
抓取近期社会面新闻并生成舆情风险评估
Workflow 1: Stock Screening (股票筛选)
用户请求筛选股票时使用。
Step 1: Collect Screening Criteria
向用户询问筛选条件。提供以下选项供用户选择或自定义:
估值指标:
- PE (市盈率): 例如 PE < 15
- PB (市净率): 例如 PB < 2
- PS (市销率): 例如 PS < 3
盈利能力:
- ROE (净资产收益率): 例如 ROE > 15%
- ROA (总资产收益率): 例如 ROA > 8%
- 毛利率: 例如 > 30%
- 净利率: 例如 > 10%
成长性:
- 营收增长率: 例如 > 10%
- 净利润增长率: 例如 > 15%
- 连续增长年数: 例如 >= 3年
股息:
- 股息率: 例如 > 3%
- 连续分红年数: 例如 >= 5年
财务安全:
- 资产负债率: 例如 < 60%
- 流动比率: 例如 > 1.5
- 速动比率: 例如 > 1
筛选范围:
- 全A股
- 沪深300成分股
- 中证500成分股
- 创业板/科创板
- 用户自定义列表
Step 2: Execute Screening
python scripts/stock_screener.py \
--scope "hs300" \
--token "${TUSHARE_TOKEN}" \
--pe-max 15 \
--roe-min 15 \
--debt-ratio-max 60 \
--dividend-min 2 \
--output screening_result.json参数说明:
--scope: 筛选范围 (all/hs300/zz500/cyb/kcb/custom:600519,000858,...)--pe-max/--pe-min: PE范围--pb-max/--pb-min: PB范围--roe-min: 最低ROE--growth-min: 最低增长率--debt-ratio-max: 最大资产负债率--dividend-min: 最低股息率--token: tushare token(必填)--format: 输出格式 (json/table)--quiet: 静默模式--output: 输出文件路径
Step 3: Present Results
读取 screening_result.json 并以表格形式呈现给用户:
| 代码 | 名称 | PE | PB | ROE | 股息率 | 评分 |
|---|---|---|---|---|---|---|
| 600519 | 贵州茅台 | 25.3 | 8.5 | 30.2% | 2.1% | 85 |
Workflow 2: Stock Analysis (个股分析)
用户请求分析某只股票时使用。
Step 1: Collect Stock Information
询问用户:
- 股票代码或名称
- 分析深度级别:
- 摘要级:关键指标 + 投资结论(1页)
- 标准级:财务分析 + 估值 + 行业对比 + 风险提示
- 深度级:完整调研报告,包含历史数据追踪
Step 1.5: Prepare Output Directory
单只股票分析时,skill 需要自动创建输出目录,命名规则:
${股票名称}_${股票代码}
示例:
stock_dir="贵州茅台_600519"
mkdir -p "${stock_dir}"Step 2: Fetch Stock Data
推荐使用“分模块抓取 + 聚合”流程(CLI解耦):
mkdir -p "${stock_dir}/data"
# 1) 基础信息
python scripts/fetch_basic.py \
--code "600519" \
--token "${TUSHARE_TOKEN}" \
--output "${stock_dir}/data/basic.json"
# 2) 财务数据
python scripts/fetch_financial.py \
--code "600519" \
--token "${TUSHARE_TOKEN}" \
--years 5 \
--output "${stock_dir}/data/financial.json"
# 3) 估值与行情
python scripts/fetch_valuation.py \
--code "600519" \
--token "${TUSHARE_TOKEN}" \
--output "${stock_dir}/data/valuation.json"
python scripts/fetch_price.py \
--code "600519" \
--token "${TUSHARE_TOKEN}" \
--days 180 \
--output "${stock_dir}/data/price.json"
# 4) 新闻舆情
python scripts/fetch_news_data.py \
--code "600519" \
--name "贵州茅台" \
--days 7 \
--limit 20 \
--provider brave \
--brave-api-key "${BRAVE_API_KEY}" \
--output "${stock_dir}/data/news.json"
# 5) 实时与事件窗口
python scripts/fetch_realtime.py \
--code "600519" \
--token "${TUSHARE_TOKEN}" \
--benchmark hs300 \
--window 60 \
--output "${stock_dir}/data/realtime.json"
python scripts/fetch_event_window.py \
--code "600519" \
--token "${TUSHARE_TOKEN}" \
--name "贵州茅台" \
--benchmark hs300 \
--pre-days 1 \
--post-days 1,3,5 \
--provider brave \
--brave-api-key "${BRAVE_API_KEY}" \
--output "${stock_dir}/data/event_window.json"
# 6) 聚合为分析输入
python scripts/assemble_data.py \
--input-dir "${stock_dir}/data" \
--output "${stock_dir}/stock_data.json"兼容模式(单命令抓取)保留如下:
python scripts/data_fetcher.py \
--code "600519" \
--token "${TUSHARE_TOKEN}" \
--data-type all \
--with-news \
--news-provider brave \
--brave-api-key "${BRAVE_API_KEY}" \
--with-realtime \
--with-event-window \
--benchmark hs300 \
--realtime-window 60 \
--event-window-pre 1 \
--event-window-post 1,3,5 \
--news-days 7 \
--news-limit 20 \
--years 5 \
--output "${stock_dir}/stock_data.json"参数说明:
--code: 股票代码--data-type: 数据类型 (basic/financial/valuation/holder/news/all)--years: 获取多少年的历史数据--token: tushare token(必填)--with-news: 附加新闻与舆情--news-days: 新闻窗口天数--news-limit: 新闻最大条数--news-sources: 新闻来源过滤(逗号分隔)--news-provider: 新闻源 (auto/brave/tushare/rss)--brave-api-key: Brave Search API Key(news-provider=brave时必填)--with-realtime: 附加实时指标(趋势/确认/风险/筹码)--with-event-window: 附加事件窗口分析(事件后1/3/5日反应)--benchmark: 相对强弱基准指数 (hs300/zz500/zz1000/cyb/kcb)--realtime-window: 实时指标计算窗口(日)--event-window-pre: 事件窗口前置天数--event-window-post: 事件窗口后验天数(逗号分隔)--cache-ttl-min: 缓存有效期(分钟)--format: 输出格式 (json/table)--quiet: 静默模式--output: 输出文件
可选:单独执行新闻舆情流程
python scripts/news_fetcher.py --code 600519 --name 贵州茅台 --token "${TUSHARE_TOKEN}" --days 7 --limit 20 --provider brave --brave-api-key "${BRAVE_API_KEY}" --output "${stock_dir}/news.json"
python scripts/sentiment_analyzer.py --input "${stock_dir}/news.json" --output "${stock_dir}/sentiment.json"Step 3: Run Financial Analysis
python scripts/financial_analyzer.py \
--input "${stock_dir}/stock_data.json" \
--level standard \
--output "${stock_dir}/analysis_result.json"或直接读取分模块目录(自动聚合):
python scripts/financial_analyzer.py \
--input-dir "${stock_dir}/data" \
--level standard \
--output "${stock_dir}/analysis_result.json"参数说明:
--input: 输入的股票数据文件--input-dir: 分模块目录(自动读取并聚合为分析输入)--level: 分析深度 (summary/standard/deep)--output: 输出文件
Step 4: Calculate Valuation
python scripts/valuation_calculator.py \
--input "${stock_dir}/stock_data.json" \
--methods dcf,ddm,relative \
--discount-rate 10 \
--growth-rate 8 \
--output "${stock_dir}/valuation_result.json"参数说明:
--input: 股票数据文件--methods: 估值方法 (dcf/ddm/relative/all)--discount-rate: 折现率(%)--terminal-growth: 永续增长率(%)--growth-rate: 永续增长率兼容别名(%)--margin-of-safety: 安全边际(%)--format: 输出格式 (json/table)--quiet: 静默模式--output: 输出文件
Step 5: Generate Report
读取分析结果,参考 templates/analysis_report.md 模板生成中文分析报告。
报告生成必检项(必须全部满足):
- 最终报告必须落盘为 Markdown 文件(
.md) - 必须包含“新闻与舆情”章节
- 必须使用
stock_data.json中的news_sentiment/news_items填充对应字段 - 若新闻抓取失败,需在报告中明确写出失败原因(来自
news_sentiment.error) - 不允许省略模板中
summary_title与“业绩与审计信号”章节 - 若
stock_data.json包含realtime_metrics,报告必须包含“实时指标看板”章节(趋势/确认/风险/筹码) - 若
stock_data.json包含event_window,报告必须包含“事件窗口反应”内容(事件数、后1/3/5日收益、后1/3/5日超额收益) - 若
realtime_metrics存在,综合评分必须采用 财务40% + 实时60%(实时优先)
报告结构(标准级):
- 公司概况:基本信息、主营业务
- 财务健康:资产负债表分析
- 盈利能力:杜邦分析、利润率趋势
- 成长性分析:营收/利润增长趋势
- 实时指标看板:趋势/确认/风险/筹码
- 事件窗口分析:事件后收益与超额收益
- 估值分析:DCF/DDM/相对估值
More from zuoa
Use this skill in a project
Open any RiverX project, search the Skills panel for zuoa/aj-skills/aj-stock-analysis, and install it in one click.
