stock-analyzer-skill 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (102) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +110 -39
  3. package/data/reports/202506_Stock_Analysis_Summary.md +271 -0
  4. package/experts/README.md +23 -2
  5. package/experts/buffett.md +44 -1
  6. package/experts/chaogu_yangjia.md +50 -0
  7. package/experts/decide.md +54 -2
  8. package/experts/duan_yongping.md +45 -0
  9. package/experts/lynch.md +48 -1
  10. package/experts/soros.md +43 -0
  11. package/experts/xu_xiang.md +44 -0
  12. package/experts/zhao_laoge.md +53 -0
  13. package/experts/zuoshou_xinyi.md +66 -0
  14. package/methodology.md +313 -13
  15. package/package.json +1 -1
  16. package/scripts/__pycache__/screener.cpython-314.pyc +0 -0
  17. package/scripts/api/__init__.py +22 -0
  18. package/scripts/api/__pycache__/__init__.cpython-314.pyc +0 -0
  19. package/scripts/api/__pycache__/quote_cli.cpython-314.pyc +0 -0
  20. package/scripts/api/__pycache__/screener_cli.cpython-314.pyc +0 -0
  21. package/scripts/api/quote_cli.py +106 -0
  22. package/scripts/api/screener_cli.py +149 -0
  23. package/scripts/business/__init__.py +15 -0
  24. package/scripts/business/__pycache__/__init__.cpython-314.pyc +0 -0
  25. package/scripts/business/__pycache__/screening_service.cpython-314.pyc +0 -0
  26. package/scripts/business/__pycache__/stock_analysis.cpython-314.pyc +0 -0
  27. package/scripts/business/screening_service.py +267 -0
  28. package/scripts/business/stock_analysis.py +183 -0
  29. package/scripts/common/__init__.py +334 -0
  30. package/scripts/common/__pycache__/__init__.cpython-314.pyc +0 -0
  31. package/scripts/common/__pycache__/http.cpython-314.pyc +0 -0
  32. package/scripts/common/__pycache__/parsers.cpython-314.pyc +0 -0
  33. package/scripts/common/__pycache__/utils.cpython-314.pyc +0 -0
  34. package/scripts/common/__pycache__/validators.cpython-314.pyc +0 -0
  35. package/scripts/common/exceptions/__init__.py +172 -0
  36. package/scripts/common/exceptions/__pycache__/__init__.cpython-314.pyc +0 -0
  37. package/scripts/common/http.py +79 -0
  38. package/scripts/common/metrics.py +92 -0
  39. package/scripts/common/parsers.py +125 -0
  40. package/scripts/common/utils.py +195 -0
  41. package/scripts/common/validators.py +219 -0
  42. package/scripts/config/__init__.py +24 -0
  43. package/scripts/config/__pycache__/__init__.cpython-314.pyc +0 -0
  44. package/scripts/config/__pycache__/loader.cpython-314.pyc +0 -0
  45. package/scripts/config/data_source.yaml +126 -0
  46. package/scripts/config/industry_thresholds.yaml +158 -0
  47. package/scripts/config/limits.yaml +48 -0
  48. package/scripts/config/loader.py +141 -0
  49. package/scripts/config/notification.yaml +57 -0
  50. package/scripts/config/scoring.yaml +159 -0
  51. package/scripts/data/__pycache__/config.cpython-314.pyc +0 -0
  52. package/scripts/data/__pycache__/types.cpython-314.pyc +0 -0
  53. package/scripts/data/config.py +56 -4
  54. package/scripts/data/portfolio.json +100 -0
  55. package/scripts/data/portfolio_example.json +66 -11
  56. package/scripts/data/sector_stocks.json +244 -80
  57. package/scripts/data/types.py +3 -3
  58. package/scripts/fetchers/__init__.py +54 -0
  59. package/scripts/fetchers/__pycache__/__init__.cpython-314.pyc +0 -0
  60. package/scripts/fetchers/__pycache__/akshare_quote.cpython-314.pyc +0 -0
  61. package/scripts/fetchers/__pycache__/eastmoney_event.cpython-314.pyc +0 -0
  62. package/scripts/fetchers/__pycache__/eastmoney_flow.cpython-314.pyc +0 -0
  63. package/scripts/fetchers/__pycache__/eastmoney_lhb.cpython-314.pyc +0 -0
  64. package/scripts/fetchers/__pycache__/eastmoney_quote.cpython-314.pyc +0 -0
  65. package/scripts/fetchers/__pycache__/efinance_quote.cpython-314.pyc +0 -0
  66. package/scripts/fetchers/__pycache__/sina_quote.cpython-314.pyc +0 -0
  67. package/scripts/fetchers/__pycache__/tencent_quote.cpython-314.pyc +0 -0
  68. package/scripts/fetchers/akshare_quote.py +17 -3
  69. package/scripts/fetchers/eastmoney_event.py +148 -0
  70. package/scripts/fetchers/eastmoney_flow.py +118 -0
  71. package/scripts/fetchers/eastmoney_lhb.py +134 -0
  72. package/scripts/fetchers/eastmoney_quote.py +3 -3
  73. package/scripts/fetchers/efinance_quote.py +17 -3
  74. package/scripts/fetchers/sina_quote.py +5 -9
  75. package/scripts/fetchers/tencent_quote.py +3 -1
  76. package/scripts/monitor/__init__.py +13 -0
  77. package/scripts/monitor/__pycache__/__init__.cpython-314.pyc +0 -0
  78. package/scripts/monitor/__pycache__/manager.cpython-314.pyc +0 -0
  79. package/scripts/monitor/channels/__init__.py +6 -0
  80. package/scripts/monitor/channels/__pycache__/__init__.cpython-314.pyc +0 -0
  81. package/scripts/monitor/channels/__pycache__/bark.cpython-314.pyc +0 -0
  82. package/scripts/monitor/channels/__pycache__/base.cpython-314.pyc +0 -0
  83. package/scripts/monitor/channels/bark.py +75 -0
  84. package/scripts/monitor/channels/base.py +36 -0
  85. package/scripts/monitor/health.py +148 -0
  86. package/scripts/monitor/manager.py +229 -0
  87. package/scripts/portfolio/__init__.py +13 -0
  88. package/scripts/portfolio/__pycache__/__init__.cpython-314.pyc +0 -0
  89. package/scripts/portfolio/__pycache__/manager.cpython-314.pyc +0 -0
  90. package/scripts/portfolio/manager.py +329 -0
  91. package/scripts/portfolio/performance.py +209 -0
  92. package/scripts/screener.py +78 -23
  93. package/scripts/strategies/factors/__pycache__/liquidity.cpython-314.pyc +0 -0
  94. package/scripts/strategies/factors/liquidity.py +1 -1
  95. package/skills/backtest/SKILL.md +57 -0
  96. package/skills/help/SKILL.md +69 -5
  97. package/skills/monitor/SKILL.md +98 -0
  98. package/skills/portfolio/SKILL.md +135 -40
  99. package/skills/stock/SKILL.md +99 -1
  100. package/skills/{init → stock-init}/SKILL.md +5 -5
  101. package/workflow.md +36 -2
  102. package/scripts/common.py +0 -507
package/CHANGELOG.md CHANGED
@@ -5,6 +5,42 @@
5
5
  格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.0.0/),
6
6
  版本号遵循 [语义化版本](https://semver.org/lang/zh-CN/)。
7
7
 
8
+ ## [1.2.3] - 2026-06-09
9
+
10
+ ### Changed
11
+
12
+ - 更新 `methodology.md`:策略权重更新为五因子模型,新增波动率因子权重配置
13
+ - 更新 `docs/product-architecture.md`:添加五因子详解表格,更新策略权重与代码一致
14
+
15
+ ### Documentation
16
+
17
+ - 明确五因子模型:质量、估值、动量、流动性、波动率
18
+ - 添加各因子评分逻辑说明
19
+
20
+ ## [1.2.2] - 2026-06-09
21
+
22
+ ### Changed
23
+
24
+ - 更新 `workflow.md`:新增 monitor、stock-init、backtest、help 等 4 个 skill,扩展工作流至 12 个技能
25
+ - 更新技能速查表:添加决策门槛量化标准(监控告警、回测验证)
26
+
27
+ ### Documentation
28
+
29
+ - 更新投资专家工作流:持仓实时监控链路、策略回测验证
30
+ - 完善交接字段与决策门槛
31
+
32
+ ## [1.2.1] - 2026-06-09
33
+
34
+ ### Changed
35
+
36
+ - 更新 `docs/product-architecture.md`:新增技术架构章节,添加三层架构设计、核心技术组件、数据源矩阵、行业差异化阈值表格
37
+ - 更新 `docs/developer-guide.md`:更新项目结构,添加 BaseFetcher/CircuitBreaker/DataFetcherManager 核心技术说明,扩展数据源架构文档
38
+
39
+ ### Documentation
40
+
41
+ - 完善开发者指南中的扩展开发说明
42
+ - 添加健康检查和回测验证命令说明
43
+
8
44
  ## [1.1.0] - 2026-06-08
9
45
 
10
46
  ### Added
package/README.md CHANGED
@@ -66,7 +66,7 @@ claude skills list
66
66
 
67
67
  ## 目录结构
68
68
 
69
- ```
69
+ ```text
70
70
  stock-analyzer-skill/
71
71
  ├── .claude-plugin/ # Claude Code plugin 配置
72
72
  │ ├── plugin.json # plugin 元数据
@@ -82,37 +82,101 @@ stock-analyzer-skill/
82
82
  │ ├── investment-researcher/SKILL.md
83
83
  │ └── help/SKILL.md
84
84
  ├── scripts/ # 工具脚本(Python stdlib only)
85
- │ ├── common.py # 编码转换、字段映射、HTTP
86
- │ ├── quote.py # 腾讯实时行情
87
- ├── finance.py # 东财财务数据
88
- │ ├── kline.py # 新浪 K线
85
+ │ ├── api/ # CLI 入口层
86
+ ├── quote_cli.py # 行情查询 CLI
87
+ │ └── screener_cli.py # 选股器 CLI
88
+ │ ├── business/ # 业务逻辑层
89
+ │ │ ├── stock_analysis.py # 个股分析服务
90
+ │ │ └── screening_service.py # 选股服务
91
+ │ ├── common/ # 基础设施层
92
+ │ │ ├── __init__.py # HTTP 请求、编码转换、字段映射
93
+ │ │ ├── validators.py # 输入验证器
94
+ │ │ └── exceptions/ # 统一异常类
95
+ │ ├── config/ # 配置外部化
96
+ │ │ ├── loader.py # YAML 配置加载器
97
+ │ │ ├── data_source.yaml # 数据源端点配置
98
+ │ │ ├── industry_thresholds.yaml # 行业差异化阈值
99
+ │ │ ├── scoring.yaml # 评分权重配置
100
+ │ │ └── limits.yaml # 限流与超时配置
101
+ │ ├── data/ # 数据层
102
+ │ │ ├── types.py # 数据类型定义
103
+ │ │ ├── cache.py # 缓存管理
104
+ │ │ ├── config.py # 数据配置
105
+ │ │ ├── industry_thresholds.json # 行业阈值数据
106
+ │ │ ├── sector_etf.csv # 板块 ETF 清单
107
+ │ │ ├── sector_stocks.json # 板块核心标的库
108
+ │ │ ├── sector_mapping.json # 板块映射关系
109
+ │ │ └── portfolio_example.json # 持仓配置示例
110
+ │ ├── fetchers/ # 数据获取层(多数据源适配)
111
+ │ │ ├── tencent_quote.py # 腾讯实时行情
112
+ │ │ ├── eastmoney_quote.py # 东财实时行情
113
+ │ │ ├── eastmoney_finance.py # 东财财务数据
114
+ │ │ ├── eastmoney_kline.py # 东财 K 线
115
+ │ │ ├── sina_quote.py # 新浪行情
116
+ │ │ ├── sina_kline.py # 新浪 K 线
117
+ │ │ ├── akshare_quote.py # AkShare 行情
118
+ │ │ ├── akshare_finance.py # AkShare 财务
119
+ │ │ ├── akshare_kline.py # AkShare K 线
120
+ │ │ ├── efinance_*.py # efinance 适配
121
+ │ │ ├── baostock_kline.py # baostock K 线
122
+ │ │ ├── pytdx_*.py # pytdx 适配
123
+ │ │ ├── tushare_*.py # tushare 适配
124
+ │ │ └── yfinance_kline.py # yfinance K 线(港股/美股)
125
+ │ ├── strategies/ # 选股策略系统
126
+ │ │ ├── registry.py # 策略注册中心
127
+ │ │ ├── thresholds.py # 阈值管理
128
+ │ │ └── factors/ # 因子实现
129
+ │ ├── technical/ # 技术分析模块
130
+ │ │ ├── macd.py / kdj.py / boll.py / rsi.py # 指标计算
131
+ │ │ ├── moving_average.py # 均线系统
132
+ │ │ ├── volume.py # 量价分析
133
+ │ │ ├── trend.py # 趋势判断
134
+ │ │ ├── candlestick.py # K 线形态
135
+ │ │ ├── astock.py # A 股特色指标
136
+ │ │ ├── signals.py # 信号生成
137
+ │ │ ├── scoring.py # 综合评分
138
+ │ │ └── report.py # 报告生成
139
+ │ ├── infrastructure/ # 基础设施(预留)
89
140
  │ ├── announcements.py # 东财公告/研报
90
- │ ├── screener.py # A股多因子选股器
91
- │ ├── technical.py # 纯技术分析
92
- │ ├── classifier.py # 个股类型分类
141
+ │ ├── backtest.py # 历史回测引擎
93
142
  │ ├── chan.py # 缠论结构
94
- └── patterns_local.py # A股本土战法形态
95
- ├── data/ # 静态参考数据
96
- │ ├── sector_etf.csv # 板块 ETF 清单
97
- │ ├── sector_stocks.json # 板块核心标的库
98
- └── portfolio_example.json # 持仓配置示例
143
+ ├── classifier.py # 个股类型分类
144
+ ├── finance.py # 财务数据入口
145
+ │ ├── init_pool.py # 候选池初始化
146
+ │ ├── kline.py # K 线数据入口
147
+ ├── monitor.py # 实时监控
148
+ │ ├── patterns_local.py # A 股本土战法形态
149
+ │ ├── quote.py # 行情数据入口
150
+ │ ├── refresh_pool.py # 候选池刷新
151
+ │ ├── screener.py # A 股多因子选股器
152
+ │ └── technical.py # 技术分析入口
153
+ ├── data/ # 输出数据
154
+ │ └── reports/ # 分析报告
99
155
  ├── experts/ # 8 人专家定义
100
- │ ├── buffett.md
101
- │ ├── lynch.md
102
- ├── soros.md
103
- ├── duan_yongping.md
104
- │ ├── xu_xiang.md
105
- │ ├── zhao_laoge.md
106
- │ ├── chaogu_yangjia.md
107
- │ └── zuoshou_xinyi.md
108
- ├── tests/
109
- └── smoke_test.sh # 端到端冒烟测试
156
+ │ ├── buffett.md / lynch.md / soros.md / duan_yongping.md
157
+ │ ├── xu_xiang.md / zhao_laoge.md / chaogu_yangjia.md / zuoshou_xinyi.md
158
+ └── decide.md # 决策整合规则
159
+ ├── tests/ # 测试套件
160
+ │ ├── conftest.py # pytest 配置与 fixtures
161
+ │ ├── smoke_test.sh # 端到端冒烟测试
162
+ │ ├── test_*.py # 单元测试
163
+ │ └── unit/ # 更多单元测试
164
+ ├── docs/ # 详细文档
165
+ ├── quick-start.md # 快速入门
166
+ │ ├── user-guide.md # 使用者指南
167
+ │ ├── developer-guide.md # 开发者指南
168
+ │ ├── methodology.md # 方法论文档
169
+ │ ├── api-reference.md # API 参考
170
+ │ ├── implementation-plan.md # 实现计划
171
+ │ └── improvement-roadmap.md # 改进路线图
110
172
  ├── package.json # npm 发布配置
173
+ ├── pyproject.toml # Python 项目配置
111
174
  ├── install-plugin.js # npm postinstall 脚本
112
175
  ├── install.sh # 传统安装脚本
113
176
  ├── README.md # 本文件
177
+ ├── CHANGELOG.md # 版本变更记录
114
178
  ├── CONTRIBUTING.md # 贡献指南
115
- ├── workflow.md # 8 个 skill 的协作流程
179
+ ├── workflow.md # 9 个 skill 的协作流程
116
180
  └── methodology.md # 完整投资方法论
117
181
  ```
118
182
 
@@ -120,7 +184,7 @@ stock-analyzer-skill/
120
184
 
121
185
  ### 快速个股分析
122
186
 
123
- ```
187
+ ```text
124
188
  /stock sh600989
125
189
  ```
126
190
 
@@ -128,7 +192,7 @@ stock-analyzer-skill/
128
192
 
129
193
  ### 大盘快评
130
194
 
131
- ```
195
+ ```text
132
196
  /market quick
133
197
  ```
134
198
 
@@ -136,15 +200,15 @@ stock-analyzer-skill/
136
200
 
137
201
  ### 持仓健康检查
138
202
 
139
- ```
203
+ ```text
140
204
  /portfolio
141
205
  ```
142
206
 
143
- 读取 `data/portfolio_example.json`(可复制为 `portfolio.json` 自定义持仓)。
207
+ 读取 `scripts/data/portfolio_example.json`(可复制为 `portfolio.json` 自定义持仓)。
144
208
 
145
209
  ### 多因子选股
146
210
 
147
- ```
211
+ ```text
148
212
  /screener --sector 资源 --strategy quality_value --top 5
149
213
  ```
150
214
 
@@ -152,7 +216,7 @@ stock-analyzer-skill/
152
216
 
153
217
  ### 技术面确认
154
218
 
155
- ```
219
+ ```text
156
220
  /technical sh600989 --quick
157
221
  ```
158
222
 
@@ -160,7 +224,7 @@ stock-analyzer-skill/
160
224
 
161
225
  ### 完整五层 + 专家辩论
162
226
 
163
- ```
227
+ ```text
164
228
  /stock sh600989 debate
165
229
  ```
166
230
 
@@ -168,7 +232,7 @@ stock-analyzer-skill/
168
232
 
169
233
  ### 查看帮助
170
234
 
171
- ```
235
+ ```text
172
236
  /help
173
237
  ```
174
238
 
@@ -177,11 +241,11 @@ stock-analyzer-skill/
177
241
  ## 自定义持仓
178
242
 
179
243
  ```bash
180
- cp data/portfolio_example.json data/portfolio.json
244
+ cp scripts/data/portfolio_example.json scripts/data/portfolio.json
181
245
  # 编辑 portfolio.json,修改 codes 字段
182
246
  ```
183
247
 
184
- `/portfolio` 命令默认读取 `data/portfolio.json`(或 `data/portfolio_example.json` 作为回退)。
248
+ `/portfolio` 命令默认读取 `scripts/data/portfolio.json`(或 `scripts/data/portfolio_example.json` 作为回退)。
185
249
 
186
250
  ## 数据源
187
251
 
@@ -220,7 +284,10 @@ cp data/portfolio_example.json data/portfolio.json
220
284
  ## 解耦特性
221
285
 
222
286
  ✅ **零项目依赖**:不引用任何业务项目内文件(`src/`、`data_provider/`、`AGENTS.md` 等)
223
- ✅ **零外部 Python 库**:只用 stdlib(`urllib` + `json` + `pathlib`)
287
+ ✅ **零外部 Python 库**:只用 stdlib(`urllib` + `json` + `pathlib` + `yaml`)
288
+ ✅ **三层架构**:API 层(CLI 入口)→ Business 层(业务逻辑)→ Data 层(数据获取/缓存),职责清晰
289
+ ✅ **配置外部化**:行业阈值、评分权重、数据源端点等均通过 YAML 配置,无需改代码
290
+ ✅ **多数据源适配**:fetchers/ 下统一接口,腾讯/东财/新浪/AkShare 等可自由切换
224
291
  ✅ **单源真理**:方法论、数据、脚本各自集中在一处
225
292
  ✅ **可移植**:可打包为 git 仓库或 npm 包分发
226
293
 
@@ -241,19 +308,23 @@ rm -f ~/.claude/skills/stock ~/.claude/skills/market ~/.claude/skills/sector ~/.
241
308
 
242
309
  ## 近期改进
243
310
 
311
+ - **三层架构重构**:scripts/ 拆分为 API 层(cli 入口)、Business 层(分析/选股服务)、Data 层(fetchers/缓存/配置),职责清晰、易扩展
312
+ - **配置外部化**:行业阈值、评分权重、数据源端点等提取为 YAML 配置(`scripts/config/`),无需改代码即可调整
313
+ - **多数据源适配**:新增 fetchers/ 统一接口层,支持腾讯/东财/新浪/AkShare/eFinance/baostock/pytdx/tushare/yfinance 等 9+ 数据源自由切换
314
+ - **统一异常与验证**:新增 `common/exceptions/` 统一异常类、`common/validators.py` 输入验证器
244
315
  - **Plugin 化分发**:支持通过 Claude Code plugin 系统一键安装,无需重启
245
316
  - **帮助系统**:新增 `/help` skill,显示所有可用 skills 和使用说明
317
+ - **回测引擎**:新增 `backtest.py`,支持策略历史回测验证
318
+ - **候选池管理**:新增 `init_pool.py` / `refresh_pool.py`,支持候选池初始化与定期刷新
319
+ - **实时监控**:新增 `monitor.py`,支持持仓和关注标的实时监控
246
320
  - **行业差异化阈值**:五层分析框架按行业分档(金融/消费/科技/周期/医药/制造/能源/地产),避免一刀切误判
247
321
  - **风控体系强化**:集中度控制(单只≤15%、单行业≤30%)、时间止损、极端情景预案、加仓规则
248
- - **缠论盘整背驰**:补全中枢进入段 vs 离开段的 MACD 面积对比
249
- - **评分上限修正**:各维度评分独立 clamp,总分不超过 100
250
- - **流动性板块差异化**:主板/创业板/科创板/北交所使用不同满分阈值
251
322
  - **专家权重优化**:长短线权重随投资期限变化,巴菲特否决权限定中长期模式
252
323
  - **工作流增强**:交接字段补充投资期限/催化剂/论点破灭条件,决策门槛量化
253
324
 
254
325
  ## 已知限制
255
326
 
256
327
  - 实时数据依赖外部 API 端点稳定性;如遇变更,修改 `scripts/common.py` 中端点即可
257
- - portfolio skill 默认读取 `data/portfolio_example.json` 作为示例,实际使用前需自定义
328
+ - portfolio skill 默认读取 `scripts/data/portfolio_example.json` 作为示例,实际使用前需自定义
258
329
  - 部分 API(如东财公告)可能有反爬限制,已加超时和重试
259
330
  - 多因子权重基于经验设定,尚未经过历史回测验证
@@ -0,0 +1,271 @@
1
+ # 近期深度分析股票汇总
2
+
3
+ > 汇总时间:2026-06-08 | 分析框架:五层分析 + 8人专家圆桌
4
+
5
+ ---
6
+
7
+ ## 一、分析方法论
8
+
9
+ ### 1.1 五层分析框架
10
+
11
+ | 层级 | 分析内容 | 输出 |
12
+ |------|----------|------|
13
+ | 基本面 | ROE/增速/毛利/负债/现金流 | 评级(A/B/C) |
14
+ | 估值 | PE/PEG/PE-ROE | 评级(低估/合理/偏贵) |
15
+ | 技术面 | K线趋势/支撑阻力/量价 | 评级(强/中/弱) |
16
+ | 板块 | 所属板块/大宗商品/行业景气 | 评级 |
17
+ | 风险收益比 | 情景分析+概率加权 | 期望收益% |
18
+
19
+ ### 1.2 专家圆桌机制
20
+
21
+ **长线组**:巴菲特(价值)、彼得·林奇(成长)、索罗斯(趋势)、段永平(逆向)
22
+
23
+ **短线组**:徐翔(涨停板)、赵老哥(趋势龙头)、炒股养家(情绪流)、作手新一(低吸)
24
+
25
+ **决策规则**:
26
+ - 市场环境权重:震荡市(长线55%,短线45%)
27
+ - 冲突解决:巴菲特≤39触发否决权
28
+ - 信心指数 = 一致性分×0.4 + 综合分×0.6
29
+
30
+ ### 1.3 输出格式模板
31
+
32
+ ```
33
+ ## 一句话结论
34
+ [核心判断 + 置信度]
35
+
36
+ ## 一、五层分析
37
+ ### 第1层:基本面 评级 [A/B/C]
38
+ [财务指标表格]
39
+
40
+ ### 第2层:估值 评级 [低估/合理/偏贵]
41
+ [PE/PEG/同业对比]
42
+
43
+ ### 第3层:技术面 评级 [强/中/弱]
44
+ [技术指标 + 支撑阻力]
45
+
46
+ ### 第4层:板块
47
+ [行业景气 + 大宗商品]
48
+
49
+ ### 第5层:风险收益比
50
+ [情景分析 + 凯利公式仓位]
51
+
52
+ ## 二、8人专家圆桌
53
+ [评分表 + 分组汇总 + 信心指数]
54
+
55
+ ## 三、综合投资建议
56
+ [评级 + 仓位 + 止损止盈 + 跟踪条件]
57
+ ```
58
+
59
+ ---
60
+
61
+ ## 二、股票分析汇总
62
+
63
+ ### 2.1 海尔智家(600690)
64
+
65
+ | 维度 | 数据 | 评级 |
66
+ |------|------|------|
67
+ | 现价 | 20.17元 | - |
68
+ | 涨跌 | -0.69% | - |
69
+ | PE | 10.11 | 低估 |
70
+ | 2025 ROE | 16.98% | A |
71
+ | Q1净利增速 | -15.22% | C |
72
+ | 负债率 | 55.15% | B+ |
73
+ | 技术评分 | 50.5 | 中性 |
74
+ | **综合评级** | **Hold/Observe** | 置信度65% |
75
+
76
+ **核心逻辑**:PE 10x偏低估,ROE达标,但Q1业绩下滑15%短期承压��技术面偏弱
77
+
78
+ **风险点**:Q1净利下滑、毛利率持续收窄、白电行业增速放缓
79
+
80
+ ---
81
+
82
+ ### 2.2 宝丰能源(600989)
83
+
84
+ | 维度 | 数据 | 评级 |
85
+ |------|------|------|
86
+ | 现价 | 23.60元 | - |
87
+ | 涨跌 | +0.73% | - |
88
+ | PE | 13.76 | 低估 |
89
+ | 2025 ROE | 24.84% | A+ |
90
+ | Q1净利增速 | +50.23% | A |
91
+ | 毛利率 | 37.40% | A |
92
+ | 负债率 | 44.86% | A |
93
+ | 技术评分 | 68.6 | 偏多 |
94
+ | **综合评级** | **Buy** | 置信度78% |
95
+
96
+ **核心逻辑**:ROE 25%顶级,净利增速50%+,PEG仅0.17严重低估,技术面三阴一阳+缠论底背驰
97
+
98
+ **催化剂**:油价高位运行、内蒙古项目放量、估值修复
99
+
100
+ ---
101
+
102
+ ### 2.3 云铝股份(000807)
103
+
104
+ | 维度 | 数据 | 评级 |
105
+ |------|------|------|
106
+ | 现价 | 26.80元 | - |
107
+ | 涨跌 | -3.04% | - |
108
+ | PE | 10.71 | 低估 |
109
+ | 2025 ROE | 19.70% | A |
110
+ | Q1净利增速 | +269.45% | A+ |
111
+ | 毛利率 | 31.57% | A |
112
+ | 净利率 | 25.30% | A+ |
113
+ | 负债率 | 17.74% | A+ |
114
+ | 技术评分 | 63.5 | 偏多 |
115
+ | **综合评级** | **Buy** | 置信度80% |
116
+
117
+ **核心逻辑**:Q1净利暴增269%创纪录,PE仅10.7x,负债率17.7%极安全,技术面双针探底+老鸭头
118
+
119
+ **催化剂**:铝价高位、电解铝满产、绿电优势
120
+
121
+ ---
122
+
123
+ ### 2.4 洛阳钼业(603993)
124
+
125
+ | 维度 | 数据 | 评级 |
126
+ |------|------|------|
127
+ | 现价 | 16.89元 | - |
128
+ | 涨跌 | -7.15% | - |
129
+ | PE | 14.96 | 低估 |
130
+ | 2025 ROE | 26.61% | A+ |
131
+ | Q1净利增速 | +96.65% | A |
132
+ | 毛利率 | 22.88% | B+ |
133
+ | 负债率 | 52.03% | B |
134
+ | 技术评分 | 70.6 | 偏多 |
135
+ | **综合评级** | **Buy** | 置信度75% |
136
+
137
+ **核心逻辑**:铜金双极战略,Q1净利+97%,PE仅15x,MACD底背离+老鸭头技术面共振
138
+
139
+ **催化剂**:铜价高位、金价上涨、KFM铜钴矿放量
140
+
141
+ ---
142
+
143
+ ### 2.5 贵研铂业(600459)
144
+
145
+ | 维度 | 数据 | 评级 |
146
+ |------|------|------|
147
+ | 现价 | 23.85元 | - |
148
+ | 涨跌 | -3.64% | - |
149
+ | PE | 29.79 | 偏高 |
150
+ | 2025 ROE | 8.75% | C |
151
+ | Q1净利增速 | +9.13% | C |
152
+ | 毛利率 | 3.63% | C |
153
+ | 净利率 | 1.80% | C |
154
+ | 负债率 | 64.91% | C |
155
+ | 技术评分 | 57.0 | 中性 |
156
+ | **综合评级** | **Hold** | 置信度55% |
157
+
158
+ **核心逻辑**:贵金属催化剂概念热门,但基本面薄弱(ROE 8.8%、净利率1.8%),PE 30x偏贵
159
+
160
+ ---
161
+
162
+ ### 2.6 华友钴业(603799)
163
+
164
+ | 维度 | 数据 | 评级 |
165
+ |------|------|------|
166
+ | 现价 | 46.72元 | - |
167
+ | 涨跌 | -6.49% | - |
168
+ | PE | 12.05 | 低估 |
169
+ | 2025 ROE | 13.70% | B |
170
+ | Q1净利增速 | +99.45% | A |
171
+ | 毛利率 | 20.69% | B+ |
172
+ | 负债率 | 63.57% | C |
173
+ | 技术评分 | 46.2 | 中性偏弱 |
174
+ | **综合评级** | **Hold** | 置信度65% |
175
+
176
+ **核心逻辑**:Q1净利翻倍,PE 12x低估,但技术面极弱(MACD死叉、均线空头),负债率63.6%偏高
177
+
178
+ **催化剂**:钴价回暖、一体化成效
179
+
180
+ ---
181
+
182
+ ### 2.7 中兴通讯(000063)
183
+
184
+ | 维度 | 数据 | 评级 |
185
+ |------|------|------|
186
+ | 现价 | 36.81元 | - |
187
+ | 涨跌 | -5.93% | - |
188
+ | PE | 39.35 | **高估** |
189
+ | 2025 ROE | 7.58% | C |
190
+ | Q1净利增速 | **-46.58%** | **C** |
191
+ | 毛利率 | 28.28% | B |
192
+ | 净利率 | 3.77% | C |
193
+ | 负债率 | 65.87% | C |
194
+ | 技术评分 | 58.5 | 中性 |
195
+ | **综合评级** | **Sell** | 置信度55% |
196
+
197
+ **核心逻辑**:PE 39x严重高估,净利连续负增长(-33%、-46%),ROE仅7.6%远低于15%优秀线
198
+
199
+ **风险点**:运营商业务承压、手机亏损、估值泡沫
200
+
201
+ ---
202
+
203
+ ## 三、对比总结
204
+
205
+ ### 3.1 评级排序
206
+
207
+ | 排名 | 股票 | 评级 | 置信度 | PE | Q1增速 |
208
+ |------|------|------|--------|-----|--------|
209
+ | 1 | 云铝股份 | Buy | 80% | 10.7 | +269% |
210
+ | 2 | 宝丰能源 | Buy | 78% | 13.8 | +50% |
211
+ | 3 | 洛阳钼业 | Buy | 75% | 15.0 | +97% |
212
+ | 4 | 华友钴业 | Hold | 65% | 12.1 | +99% |
213
+ | 5 | 海尔智家 | Hold | 65% | 10.1 | -15% |
214
+ | 6 | 贵研铂业 | Hold | 55% | 29.8 | +9% |
215
+ | 7 | 中兴通讯 | **Sell** | 55% | 39.4 | **-47%** |
216
+
217
+ ### 3.2 关键指标对比
218
+
219
+ | 股票 | PE | ROE(2025) | Q1增速 | 负债率 | 技术分 |
220
+ |------|-----|-----------|--------|--------|--------|
221
+ | 云铝股份 | 10.7 | 19.7% | +269% | 17.7% | 63.5 |
222
+ | 宝丰能源 | 13.8 | 24.8% | +50% | 44.9% | 68.6 |
223
+ | 洛阳钼业 | 15.0 | 26.6% | +97% | 52.0% | 70.6 |
224
+ | 华友钴业 | 12.1 | 13.7% | +99% | 63.6% | 46.2 |
225
+ | 海尔智家 | 10.1 | 17.0% | -15% | 55.2% | 50.5 |
226
+ | 贵研铂业 | 29.8 | 8.8% | +9% | 64.9% | 57.0 |
227
+ | 中兴通讯 | **39.4** | 7.6% | **-47%** | 65.9% | 58.5 |
228
+
229
+ ---
230
+
231
+ ## 四、经验总结
232
+
233
+ ### 4.1 选股核心逻辑
234
+
235
+ 1. **基本面优先**:ROE > 15%、净利增速 > 20%、毛利率 > 30%
236
+ 2. **估值匹配**:PE/ROE < 3,PEG < 1(高增长允许放宽)
237
+ 3. **技术面确认**:趋势向上、支撑有效、买入信号共振
238
+ 4. **同业对比**:确认相对优势,避免估值陷阱
239
+
240
+ ### 4.2 风险识别模式
241
+
242
+ | 风险类型 | 识别信号 | 典型案例 |
243
+ |----------|----------|----------|
244
+ | 业绩下滑 | Q1增速转负 | 中兴通讯(-47%) |
245
+ | 估值泡沫 | PE > 30 且负增长 | 中兴通讯(PE 39x) |
246
+ | 负债过高 | 负债率 > 60% | 华友钴业(63.6%) |
247
+ | 技术破位 | MACD���叉+放量下跌 | 华友钴业 |
248
+ | 周期陷阱 | 低价但无成长 | 贵研铂业(PE 30x) |
249
+
250
+ ### 4.3 今日市场特征
251
+
252
+ - 沪深300ETF: -2.15%(大盘偏弱)
253
+ - 有色/能源/AI板块领跌
254
+ - 7只分析股票中6只下跌,仅宝丰能源微涨
255
+ - 市场整体处于震荡调整期
256
+
257
+ ---
258
+
259
+ ## 五、后续跟踪
260
+
261
+ | 股票 | 跟踪指标 | 预期信号 |
262
+ |------|----------|----------|
263
+ | 云铝股份 | Q2财报、铝价 | 增速维持50%+ |
264
+ | 宝丰能源 | 油价、内蒙古项目 | 钴价/烯烃价格 |
265
+ | 洛阳钼业 | 铜价、KFM投产 | 铜价维持9000+ |
266
+ | 华友钴业 | 钴价、负债率下降 | MACD金叉 |
267
+ | 中兴通讯 | 算力业务订单 | Q2业绩拐点 |
268
+
269
+ ---
270
+
271
+ > **注意**:本汇总仅供方法论参考,不构成投资建议。投资有风险,入市需谨慎。
package/experts/README.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # 8 人专家圆桌 · 投资哲学档案库
2
2
 
3
+ > 版本:v1.1.0(2026-06-08)
4
+ > 数据接口更新:所有调用方式已适配 `scripts/data/` 和 `scripts/common/` 模块
5
+
3
6
  本目录是 [methodology.md §三 专家讨论模式](../methodology.md#三专家讨论模式8人圆桌) 的扩展档案库。
4
7
  每位专家单独成文,深度档(1200-1500 中文字),覆盖:
5
8
 
@@ -97,13 +100,31 @@
97
100
 
98
101
  **标准流程**:
99
102
 
100
- 1. 获取目标股票数据(scripts/)
101
- 2. 获取大盘环境数据(scripts/quote.py sh000001,sh510300
103
+ 1. 获取目标股票数据(`scripts/data/`)
104
+ 2. 获取大盘环境数据(`scripts/quote.py sh000001,sh510300` 或 `get_quote("sh000001")`)
102
105
  3. 判断市场状态 → 确定长线/短线权重
103
106
  4. 每位专家按 §九 评分矩阵独立打分
104
107
  5. 按 decide.md 进行投票汇总和冲突解决
105
108
  6. 输出:评分表 + 方向 + 风险 + 仓位
106
109
 
110
+ **代码示例**:
111
+
112
+ ```python
113
+ from data import get_quote, get_quotes, get_kline, get_finance
114
+
115
+ # 获取单只股票数据
116
+ quote = get_quote("sh600989")
117
+ finance = get_finance("sh600989")
118
+ kline = get_kline("sh600989", scale=240, datalen=30)
119
+
120
+ # 获取多只股票数据
121
+ quotes = get_quotes(["sh600989", "sz000807"])
122
+
123
+ # 获取大盘数据
124
+ index_quote = get_quote("sh000001") # 上证指数
125
+ etf_quote = get_quote("sh510300") # 沪深300 ETF
126
+ ```
127
+
107
128
  ---
108
129
 
109
130
  ## 使用建议
@@ -88,4 +88,47 @@
88
88
 
89
89
  ### 调用方式
90
90
 
91
- debate 模式中,从 scripts/ 获取最新 ROE/PE/负债率/FCF 后,按上表打分。估值分需结合 PE 历史分位调整——A 股取近 5 年 PE 分位,<20%分位额外+15分,>80%分位额外-20分。
91
+ debate 模式中,从 `scripts/data/` 获取最新 ROE/PE/负债率/FCF 后,按上表打分。估值分需结合 PE 历史分位调整——A 股取近 5 年 PE 分位,<20%分位额外+15分,>80%分位额外-20分。
92
+
93
+ **代码示例:**
94
+
95
+ ```python
96
+ from data import get_quote, get_finance
97
+ from common import to_float
98
+
99
+ # 获取数据
100
+ quote = get_quote("sh600989")
101
+ fin = get_finance("sh600989")[0]
102
+
103
+ # 基本面维度
104
+ roe = to_float(fin.get("ROEJQ", 0))
105
+ if roe >= 20:
106
+ base_score = 100
107
+ elif roe >= 15:
108
+ base_score = 75
109
+ elif roe >= 10:
110
+ base_score = 40
111
+ else:
112
+ base_score = 0
113
+
114
+ # 估值维度
115
+ pe = to_float(quote.get("pe", 0))
116
+ if pe <= 15:
117
+ pe_score = 100
118
+ elif pe <= 25:
119
+ pe_score = 60
120
+ elif pe <= 40:
121
+ pe_score = 25
122
+ else:
123
+ pe_score = 0
124
+
125
+ # 安全边际维度
126
+ debt_ratio = to_float(fin.get("ZCFZL", 0))
127
+ fcf_ratio = to_float(fin.get("MGJYXJJE", 0)) / max(to_float(fin.get("EPSJB", 1)), 0.01)
128
+ if debt_ratio < 30 and fcf_ratio > 0.8:
129
+ margin_score = 100
130
+ elif debt_ratio < 50:
131
+ margin_score = 60
132
+ else:
133
+ margin_score = 0
134
+ ```