aj-stock-analysis

安装量: 48
排名: #15324

安装

npx skills add https://github.com/zuoa/aj-skills --skill aj-stock-analysis

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 numpy Environment 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 模板生成中文分析报告。 报告生成必检项(必须全部满足): 0. 最终报告必须落盘为 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/相对估值 风险提示 :财务异常检测、股东减持 投资结论 :综合评分、操作建议(实时优先) 报告标题规范: summary_title 使用格式: 股票名称(股票代码):总结性结论 示例: 贵州茅台(600519):财务稳健,估值与风险匹配度较好 输出文件: ${stock_dir}/final_report.md Step 6: humanize Output 读取 ${stock_dir}/final_report.md ,并调用 humanizer-zh skill 进行润色和优化。 输出文件: ${stock_dir}/final_report_humanized.md Workflow 3: Industry Comparison (行业对比) CLI方式(板块分析,推荐)

1) 获取板块数据

python scripts/sector_fetcher.py \ --sector-name "算力板块" \ --token " ${TUSHARE_TOKEN} " \ --sector-file config/sector_computing_default.json \ --output " ${stock_dir} /sector_data.json"

2) 生成板块分析结果 + Markdown报告

python scripts/sector_analyze.py \ --input " ${stock_dir} /sector_data.json" \ --output " ${stock_dir} /sector_analysis.json" Step 1: Collect Comparison Targets 询问用户: 目标股票代码(可多个) 或者:行业分类 + 对比数量 Step 2: Fetch Industry Data python scripts/data_fetcher.py \ --codes "600519,000858,002304" \ --token " ${TUSHARE_TOKEN} " \ --data-type comparison \ --output industry_data.json 或按行业获取: python scripts/data_fetcher.py \ --industry "白酒" \ --token " ${TUSHARE_TOKEN} " \ --top 10 \ --output industry_data.json Step 3: Generate Comparison python scripts/financial_analyzer.py \ --input industry_data.json \ --mode comparison \ --output comparison_result.json Step 4: Present Comparison Table 指标 贵州茅台 五粮液 洋河股份 行业均值 PE 25.3 18.2 15.6 22.4 ROE 30.2% 22.5% 20.1% 18.5% 毛利率 91.5% 75.2% 72.3% 65.4% 评分 85 78 75 - Workflow 4: Valuation Calculator (估值计算) Step 1: Collect Valuation Parameters 询问用户估值参数(或使用默认值): DCF模型参数: 折现率 (WACC): 默认10% 预测期: 默认5年 永续增长率: 默认3% DDM模型参数: 要求回报率: 默认10% 股息增长率: 使用历史数据推算 相对估值参数: 对比基准: 行业均值 / 历史均值 Step 2: Run Valuation python scripts/valuation_calculator.py \ --code "600519" \ --methods all \ --discount-rate 10 \ --terminal-growth 3 \ --forecast-years 5 \ --margin-of-safety 30 \ --output valuation.json Step 3: Present Valuation Results 估值方法 内在价值 当前价格 安全边际价格 结论 DCF ¥2,150 ¥1,680 ¥1,505 低估 DDM ¥1,980 ¥1,680 ¥1,386 低估 相对估值 ¥1,850 ¥1,680 ¥1,295 合理 Financial Anomaly Detection (财务异常检测) 在分析过程中自动检测以下异常信号: 检测项目 应收账款异常 应收账款增速 > 营收增速 × 1.5 应收账款周转天数大幅增加 现金流背离 净利润持续增长但经营现金流下降 现金收入比 < 80% 存货异常 存货增速 > 营收增速 × 2 存货周转天数大幅增加 毛利率异常 毛利率波动 > 行业均值波动 × 2 毛利率与同行严重偏离 关联交易 关联交易占比过高(> 30%) 股东减持 大股东近期减持公告 高管集中减持 风险等级 🟢 低风险 :无明显异常 🟡 中风险 :1-2项轻微异常 🔴 高风险 :多项异常或严重异常 A-Share Specific Analysis (A股特色分析) 政策敏感度 根据行业分类提供政策相关提示: 房地产:房住不炒政策 新能源:补贴政策变化 医药:集采政策影响 互联网:反垄断、数据安全 股东结构分析 控股股东类型(国企/民企/外资) 股权集中度 近期增减持情况 质押比例 Output Format JSON/Table输出格式 默认 json 可选 --format table 用于终端快速查看 使用 --quiet 可关闭过程日志 所有脚本输出JSON格式,便于后续处理: { "code" : "600519" , "name" : "贵州茅台" , "analysis_date" : "2025-01-25" , "level" : "standard" , "summary" : { "score" : 85 , "conclusion" : "低估" , "recommendation" : "建议关注" } , "financials" : { ... } , "valuation" : { ... } , "risks" : [ ... ] } Markdown报告 生成结构化的中文Markdown报告,参考 templates/analysis_report.md 。 Data Contract 核心数据结构由 scripts/data_contract.py 约束。分析脚本会在运行前校验: 顶层必需字段: code/fetch_time/data_type/basic_info 常用可选字段: financial_data/financial_indicators/valuation/price/holder/dividend 新闻相关字段: news_items/news_sentiment 业绩审计字段: performance_data (含 forecast/express/audit/main_business ) 报表字段要求: financial_data.balance_sheet 必须是数组 financial_data.income_statement 必须是数组 financial_data.cash_flow 必须是数组 字段映射(Akshare -> Tushare) 兼容语义 当前字段(推荐) 兼容别名/来源 PE(TTM) valuation.latest.pe_ttm valuation.latest.pe PB valuation.latest.pb - 净利润 financial_data.income_statement[].净利润 n_income 经营现金流净额 financial_data.cash_flow[].经营活动产生的现金流量净额 n_cashflow_act 资本开支现金 financial_data.cash_flow[].购建固定资产、无形资产和其他长期资产支付的现金 c_pay_acq_const_fiolta ROE financial_indicators[].净资产收益率 roe 资产负债率 financial_indicators[].资产负债率 debt_to_assets Error Handling 网络错误 如果tushare数据获取失败,提示用户: 检查网络连接 稍后重试(可能是接口限流) 尝试更换数据源 股票代码无效 提示用户检查股票代码是否正确,提供可能的匹配建议。 数据不完整 对于新上市股票或财务数据不完整的情况,说明数据限制并基于可用数据进行分析。 Best Practices 数据时效性 :财务数据以最新季报/年报为准,价格数据为当日收盘价;开启 --with-realtime / --with-event-window 时补充趋势与事件冲击的动态指标 投资建议 :所有分析仅供参考,不构成投资建议 风险提示 :始终包含风险提示,特别是财务异常检测结果 对比分析 :单只股票分析时,自动包含行业均值对比 评分权重 :实时数据存在时使用 财务40% + 实时60% ;实时缺失时退化为财务分 Important Notes 所有分析基于公开财务数据,不涉及任何内幕信息 估值模型的参数假设对结果影响较大,需向用户说明 A股市场受政策影响较大,定量分析需结合定性判断

返回排行榜