stock-analyzer-skill 1.1.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.
- package/.claude-plugin/marketplace.json +19 -0
- package/.claude-plugin/plugin.json +21 -0
- package/CHANGELOG.md +93 -0
- package/CONTRIBUTING.md +331 -0
- package/README.md +259 -0
- package/experts/README.md +119 -0
- package/experts/buffett.md +91 -0
- package/experts/chaogu_yangjia.md +125 -0
- package/experts/decide.md +212 -0
- package/experts/duan_yongping.md +106 -0
- package/experts/lynch.md +127 -0
- package/experts/soros.md +89 -0
- package/experts/xu_xiang.md +107 -0
- package/experts/zhao_laoge.md +143 -0
- package/experts/zuoshou_xinyi.md +144 -0
- package/install-plugin.js +69 -0
- package/methodology.md +455 -0
- package/package.json +43 -0
- package/scripts/__pycache__/announcements.cpython-314.pyc +0 -0
- package/scripts/__pycache__/backtest.cpython-314.pyc +0 -0
- package/scripts/__pycache__/chan.cpython-314.pyc +0 -0
- package/scripts/__pycache__/classifier.cpython-314.pyc +0 -0
- package/scripts/__pycache__/common.cpython-314.pyc +0 -0
- package/scripts/__pycache__/finance.cpython-314.pyc +0 -0
- package/scripts/__pycache__/init_pool.cpython-314.pyc +0 -0
- package/scripts/__pycache__/kline.cpython-314.pyc +0 -0
- package/scripts/__pycache__/patterns_local.cpython-314.pyc +0 -0
- package/scripts/__pycache__/quote.cpython-314.pyc +0 -0
- package/scripts/__pycache__/refresh_pool.cpython-314.pyc +0 -0
- package/scripts/__pycache__/screener.cpython-314.pyc +0 -0
- package/scripts/__pycache__/technical.cpython-314.pyc +0 -0
- package/scripts/announcements.py +118 -0
- package/scripts/backtest.py +528 -0
- package/scripts/chan.py +591 -0
- package/scripts/classifier.py +302 -0
- package/scripts/common.py +507 -0
- package/scripts/data/__init__.py +208 -0
- package/scripts/data/__pycache__/__init__.cpython-314.pyc +0 -0
- package/scripts/data/__pycache__/cache.cpython-314.pyc +0 -0
- package/scripts/data/__pycache__/config.cpython-314.pyc +0 -0
- package/scripts/data/__pycache__/types.cpython-314.pyc +0 -0
- package/scripts/data/cache.py +99 -0
- package/scripts/data/config.py +49 -0
- package/scripts/data/industry_thresholds.json +199 -0
- package/scripts/data/portfolio_example.json +14 -0
- package/scripts/data/sector_etf.csv +14 -0
- package/scripts/data/sector_mapping.json +64 -0
- package/scripts/data/sector_stocks.json +135 -0
- package/scripts/data/types.py +66 -0
- package/scripts/fetchers/__init__.py +130 -0
- package/scripts/fetchers/__pycache__/__init__.cpython-314.pyc +0 -0
- package/scripts/fetchers/__pycache__/akshare_finance.cpython-314.pyc +0 -0
- package/scripts/fetchers/__pycache__/akshare_kline.cpython-314.pyc +0 -0
- package/scripts/fetchers/__pycache__/akshare_quote.cpython-314.pyc +0 -0
- package/scripts/fetchers/__pycache__/baostock_kline.cpython-314.pyc +0 -0
- package/scripts/fetchers/__pycache__/eastmoney_finance.cpython-314.pyc +0 -0
- package/scripts/fetchers/__pycache__/eastmoney_kline.cpython-314.pyc +0 -0
- package/scripts/fetchers/__pycache__/eastmoney_quote.cpython-314.pyc +0 -0
- package/scripts/fetchers/__pycache__/efinance_finance.cpython-314.pyc +0 -0
- package/scripts/fetchers/__pycache__/efinance_kline.cpython-314.pyc +0 -0
- package/scripts/fetchers/__pycache__/efinance_quote.cpython-314.pyc +0 -0
- package/scripts/fetchers/__pycache__/pytdx_quote.cpython-314.pyc +0 -0
- package/scripts/fetchers/__pycache__/sina_kline.cpython-314.pyc +0 -0
- package/scripts/fetchers/__pycache__/sina_quote.cpython-314.pyc +0 -0
- package/scripts/fetchers/__pycache__/tencent_kline.cpython-314.pyc +0 -0
- package/scripts/fetchers/__pycache__/tencent_quote.cpython-314.pyc +0 -0
- package/scripts/fetchers/__pycache__/tushare_kline.cpython-314.pyc +0 -0
- package/scripts/fetchers/__pycache__/tushare_quote.cpython-314.pyc +0 -0
- package/scripts/fetchers/__pycache__/yfinance_kline.cpython-314.pyc +0 -0
- package/scripts/fetchers/akshare_finance.py +35 -0
- package/scripts/fetchers/akshare_kline.py +59 -0
- package/scripts/fetchers/akshare_quote.py +52 -0
- package/scripts/fetchers/baostock_kline.py +64 -0
- package/scripts/fetchers/eastmoney_finance.py +29 -0
- package/scripts/fetchers/eastmoney_kline.py +48 -0
- package/scripts/fetchers/eastmoney_quote.py +68 -0
- package/scripts/fetchers/efinance_finance.py +32 -0
- package/scripts/fetchers/efinance_kline.py +46 -0
- package/scripts/fetchers/efinance_quote.py +53 -0
- package/scripts/fetchers/pytdx_kline.py +70 -0
- package/scripts/fetchers/pytdx_quote.py +78 -0
- package/scripts/fetchers/sina_kline.py +30 -0
- package/scripts/fetchers/sina_quote.py +35 -0
- package/scripts/fetchers/tencent_kline.py +52 -0
- package/scripts/fetchers/tencent_quote.py +29 -0
- package/scripts/fetchers/tushare_kline.py +62 -0
- package/scripts/fetchers/tushare_quote.py +62 -0
- package/scripts/fetchers/yfinance_kline.py +66 -0
- package/scripts/finance.py +92 -0
- package/scripts/init_pool.py +105 -0
- package/scripts/kline.py +62 -0
- package/scripts/monitor.py +107 -0
- package/scripts/patterns_local.py +599 -0
- package/scripts/quote.py +69 -0
- package/scripts/refresh_pool.py +328 -0
- package/scripts/screener.py +434 -0
- package/scripts/strategies/__init__.py +11 -0
- package/scripts/strategies/__pycache__/__init__.cpython-314.pyc +0 -0
- package/scripts/strategies/__pycache__/registry.cpython-314.pyc +0 -0
- package/scripts/strategies/__pycache__/thresholds.cpython-314.pyc +0 -0
- package/scripts/strategies/factors/__init__.py +8 -0
- package/scripts/strategies/factors/__pycache__/__init__.cpython-314.pyc +0 -0
- package/scripts/strategies/factors/__pycache__/liquidity.cpython-314.pyc +0 -0
- package/scripts/strategies/factors/__pycache__/momentum.cpython-314.pyc +0 -0
- package/scripts/strategies/factors/__pycache__/quality.cpython-314.pyc +0 -0
- package/scripts/strategies/factors/__pycache__/valuation.cpython-314.pyc +0 -0
- package/scripts/strategies/factors/__pycache__/volatility.cpython-314.pyc +0 -0
- package/scripts/strategies/factors/liquidity.py +49 -0
- package/scripts/strategies/factors/momentum.py +45 -0
- package/scripts/strategies/factors/quality.py +54 -0
- package/scripts/strategies/factors/valuation.py +76 -0
- package/scripts/strategies/factors/volatility.py +89 -0
- package/scripts/strategies/registry.py +87 -0
- package/scripts/strategies/thresholds.py +28 -0
- package/scripts/technical/__init__.py +116 -0
- package/scripts/technical/__pycache__/__init__.cpython-314.pyc +0 -0
- package/scripts/technical/__pycache__/astock.cpython-314.pyc +0 -0
- package/scripts/technical/__pycache__/boll.cpython-314.pyc +0 -0
- package/scripts/technical/__pycache__/candlestick.cpython-314.pyc +0 -0
- package/scripts/technical/__pycache__/core.cpython-314.pyc +0 -0
- package/scripts/technical/__pycache__/kdj.cpython-314.pyc +0 -0
- package/scripts/technical/__pycache__/macd.cpython-314.pyc +0 -0
- package/scripts/technical/__pycache__/moving_average.cpython-314.pyc +0 -0
- package/scripts/technical/__pycache__/report.cpython-314.pyc +0 -0
- package/scripts/technical/__pycache__/rsi.cpython-314.pyc +0 -0
- package/scripts/technical/__pycache__/scoring.cpython-314.pyc +0 -0
- package/scripts/technical/__pycache__/signals.cpython-314.pyc +0 -0
- package/scripts/technical/__pycache__/trend.cpython-314.pyc +0 -0
- package/scripts/technical/__pycache__/volume.cpython-314.pyc +0 -0
- package/scripts/technical/astock.py +98 -0
- package/scripts/technical/boll.py +49 -0
- package/scripts/technical/candlestick.py +151 -0
- package/scripts/technical/core.py +92 -0
- package/scripts/technical/kdj.py +68 -0
- package/scripts/technical/macd.py +97 -0
- package/scripts/technical/moving_average.py +59 -0
- package/scripts/technical/report.py +221 -0
- package/scripts/technical/rsi.py +37 -0
- package/scripts/technical/scoring.py +392 -0
- package/scripts/technical/signals.py +70 -0
- package/scripts/technical/trend.py +143 -0
- package/scripts/technical/volume.py +113 -0
- package/scripts/technical.py +215 -0
- package/skills/financial-analyst/SKILL.md +141 -0
- package/skills/help/SKILL.md +188 -0
- package/skills/init/SKILL.md +66 -0
- package/skills/investment-researcher/SKILL.md +152 -0
- package/skills/market/SKILL.md +99 -0
- package/skills/portfolio/SKILL.md +96 -0
- package/skills/screener/SKILL.md +128 -0
- package/skills/sector/SKILL.md +102 -0
- package/skills/stock/SKILL.md +148 -0
- package/skills/technical/SKILL.md +168 -0
- package/workflow.md +91 -0
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: help
|
|
3
|
+
description: 显示所有可用的股票分析 skills 和使用说明。当用户输入 /help、/stocks、/skills 或询问"有哪些功能"时触发。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Stock Analyzer Skills 帮助
|
|
7
|
+
|
|
8
|
+
显示所有可用的 A 股分析 skills 和使用说明。
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```text
|
|
13
|
+
/help
|
|
14
|
+
/stocks
|
|
15
|
+
/skills
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## 可用的 Skills
|
|
19
|
+
|
|
20
|
+
### 1. 单股分析 - `/stock`
|
|
21
|
+
|
|
22
|
+
快速分析个股,支持三种模式:
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
/stock <股票名称或代码> # 快速分析(默认)
|
|
26
|
+
/stock <股票名称或代码> quick # 3 分钟快评
|
|
27
|
+
/stock <股票名称或代码> full # 五层完整分析
|
|
28
|
+
/stock <股票名称或代码> debate # 8 人专家圆桌辩论
|
|
29
|
+
/stock <股票名称或代码> debate 长线 # 仅长线 4 人专家
|
|
30
|
+
/stock <股票名称或代码> debate 短线 # 仅短线 4 人专家
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
**示例:**
|
|
34
|
+
|
|
35
|
+
- `/stock 贵州茅台`
|
|
36
|
+
- `/stock 600519 full`
|
|
37
|
+
- `/stock sh600989 debate`
|
|
38
|
+
|
|
39
|
+
### 2. 大盘复盘 - `/market`
|
|
40
|
+
|
|
41
|
+
每日大盘复盘,指数+板块+风格+资金+预判:
|
|
42
|
+
|
|
43
|
+
```text
|
|
44
|
+
/market # 完整复盘(默认)
|
|
45
|
+
/market quick # 3 分钟快评
|
|
46
|
+
/market intraday # 分时复盘
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 3. 板块分析 - `/sector`
|
|
50
|
+
|
|
51
|
+
行业/主题板块全景分析:
|
|
52
|
+
|
|
53
|
+
```text
|
|
54
|
+
/sector <板块名称> # 板块全景
|
|
55
|
+
/sector <板块名称> compare # 核心标的对比
|
|
56
|
+
/sector <板块名称> stock # 板块内个股筛选
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**示例:**
|
|
60
|
+
|
|
61
|
+
- `/sector 半导体`
|
|
62
|
+
- `/sector 新能源 compare`
|
|
63
|
+
|
|
64
|
+
### 4. 选股策略 - `/screener`
|
|
65
|
+
|
|
66
|
+
多因子策略筛选候选股:
|
|
67
|
+
|
|
68
|
+
```text
|
|
69
|
+
/screener # 均衡精选(默认)
|
|
70
|
+
/screener --strategy balanced # 均衡精选
|
|
71
|
+
/screener --strategy quality_value # 质量价值
|
|
72
|
+
/screener --strategy growth_momentum # 成长动量
|
|
73
|
+
/screener --strategy defensive # 防守低波
|
|
74
|
+
/screener --strategy turning_point # 拐点修复
|
|
75
|
+
/screener --sector 资源 # 指定板块筛选
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### 5. 技术分析 - `/technical`
|
|
79
|
+
|
|
80
|
+
纯技术分析,不做基本面:
|
|
81
|
+
|
|
82
|
+
```text
|
|
83
|
+
/technical <股票代码> # 完整技术分析
|
|
84
|
+
/technical <股票代码> quick # 快速扫描
|
|
85
|
+
/technical <股票代码> full # 完整报告+缠论+战法
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**示例:**
|
|
89
|
+
|
|
90
|
+
- `/technical sh600989`
|
|
91
|
+
- `/technical 600519 quick`
|
|
92
|
+
|
|
93
|
+
### 6. 持仓检查 - `/portfolio`
|
|
94
|
+
|
|
95
|
+
持仓组合健康检查:
|
|
96
|
+
|
|
97
|
+
```text
|
|
98
|
+
/portfolio # 健康检查(默认)
|
|
99
|
+
/portfolio health # 健康检查
|
|
100
|
+
/portfolio rebalance # 调仓建议
|
|
101
|
+
/portfolio compare # 持仓对比
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### 7. 财务分析 - `/financial-analyst`
|
|
105
|
+
|
|
106
|
+
财务建模和预测:
|
|
107
|
+
|
|
108
|
+
```text
|
|
109
|
+
/financial-analyst <任务描述>
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**示例:**
|
|
113
|
+
|
|
114
|
+
- `/financial-analyst 分析贵州茅台的财务健康状况`
|
|
115
|
+
- `/financial-analyst 预测宁德时代未来 3 年营收`
|
|
116
|
+
|
|
117
|
+
### 8. 投资研究 - `/investment-researcher`
|
|
118
|
+
|
|
119
|
+
市场研究和尽职调查:
|
|
120
|
+
|
|
121
|
+
```text
|
|
122
|
+
/investment-researcher <任务描述>
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
**示例:**
|
|
126
|
+
|
|
127
|
+
- `/investment-researcher 研究新能源汽车行业投资机会`
|
|
128
|
+
- `/investment-researcher 对比亚迪进行尽职调查`
|
|
129
|
+
|
|
130
|
+
### 9. 初始化股票池 - `/init`
|
|
131
|
+
|
|
132
|
+
首次安装或刷新各板块前 20 只活跃股票:
|
|
133
|
+
|
|
134
|
+
```text
|
|
135
|
+
/init # 检测并初始化(已有数据则跳过)
|
|
136
|
+
/init force # 强制重新初始化
|
|
137
|
+
/init top 30 # 每板块取 Top 30
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
**说明:** 首次安装时会自动运行。如需更新股票池数据,可手动执行 `/init force`。
|
|
141
|
+
|
|
142
|
+
## 工作流建议
|
|
143
|
+
|
|
144
|
+
### 快速选股流程
|
|
145
|
+
|
|
146
|
+
1. `/market quick` - 了解市场状态
|
|
147
|
+
2. `/screener` - 筛选候选股
|
|
148
|
+
3. `/stock <候选股> quick` - 快速分析
|
|
149
|
+
4. `/technical <候选股>` - 确认买点
|
|
150
|
+
|
|
151
|
+
### 完整分析流程
|
|
152
|
+
|
|
153
|
+
1. `/market` - 大盘复盘
|
|
154
|
+
2. `<强势板块>` - 板块分析
|
|
155
|
+
3. `/screener --sector <板块>` - 板块内选股
|
|
156
|
+
4. `/stock <候选股> full` - 五层分析
|
|
157
|
+
5. `/technical <候选股>` - 技术确认
|
|
158
|
+
6. `/portfolio` - 持仓调整
|
|
159
|
+
|
|
160
|
+
### 持仓检查流程
|
|
161
|
+
|
|
162
|
+
1. `/portfolio health` - 检查持仓健康
|
|
163
|
+
2. `/market` - 确认市场风格
|
|
164
|
+
3. `/technical <弱势持仓>` - 检查是否破位
|
|
165
|
+
4. `/screener` - 找替代候选
|
|
166
|
+
5. `/portfolio rebalance` - 调仓建议
|
|
167
|
+
|
|
168
|
+
## 数据来源
|
|
169
|
+
|
|
170
|
+
- **实时行情**:腾讯财经 `qt.gtimg.cn`
|
|
171
|
+
- **财务数据**:东方财富 `emweb.securities.eastmoney.com`
|
|
172
|
+
- **K 线数据**:新浪财经 `money.finance.sina.com.cn`
|
|
173
|
+
- **公告/研报**:东方财富 `np-anotice-stock.eastmoney.com`
|
|
174
|
+
|
|
175
|
+
所有数据 API 在国内直连,无须代理。
|
|
176
|
+
|
|
177
|
+
## 注意事项
|
|
178
|
+
|
|
179
|
+
1. 所有分析仅供参考,不构成投资建议
|
|
180
|
+
2. 涉及实时行情时,脚本会自动获取最新数据
|
|
181
|
+
3. 如果脚本不可用,会参考 methodology.md 中的方法论
|
|
182
|
+
4. 数据失败时会说明失败的数据源和影响
|
|
183
|
+
|
|
184
|
+
## 获取更多帮助
|
|
185
|
+
|
|
186
|
+
- 查看 `workflow.md` 了解 9 个 skill 的协作流程
|
|
187
|
+
- 查看 `methodology.md` 了解完整投资方法论
|
|
188
|
+
- 查看 `README.md` 了解项目结构和安装说明
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: init
|
|
3
|
+
description: 初始化或刷新股票池,为每个板块拉取前 20 只股票。当用户输入 /init、/setup、"初始化股票池"、"刷新股票池"时触发。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 初始化股票池
|
|
7
|
+
|
|
8
|
+
为 A 股各板块初始化前 20 只活跃股票,供选股、板块分析等 skill 使用。
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```text
|
|
13
|
+
/init # 检测并初始化(已有数据则跳过)
|
|
14
|
+
/init force # 强制重新初始化
|
|
15
|
+
/init top 30 # 每板块取 Top 30
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## Instructions
|
|
19
|
+
|
|
20
|
+
当用户触发此 skill 时,执行以下步骤:
|
|
21
|
+
|
|
22
|
+
1. **运行初始化脚本**:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
python3 scripts/init_pool.py
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
2. **如果用户指定 `force`**,加 `--force` 参数:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
python3 scripts/init_pool.py --force
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
3. **如果用户指定 `top N`**,加 `--top N` 参数:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
python3 scripts/init_pool.py --top 30
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
4. **输出结果**:展示初始化摘要,包括每板块股票数量和总计。
|
|
41
|
+
|
|
42
|
+
## 前置条件
|
|
43
|
+
|
|
44
|
+
- 需要设置 `EASTMONEY_API_TOKEN` 环境变量(东财 push2 API 的 ut 参数)
|
|
45
|
+
- 如未设置,脚本会提示获取方式
|
|
46
|
+
|
|
47
|
+
## 输出格式
|
|
48
|
+
|
|
49
|
+
初始化成功后,展示类似:
|
|
50
|
+
|
|
51
|
+
```
|
|
52
|
+
✅ 初始化完成: 14 个板块,共 280 只股票
|
|
53
|
+
|
|
54
|
+
各板块分布:
|
|
55
|
+
金融: 20 只
|
|
56
|
+
消费: 20 只
|
|
57
|
+
医药: 20 只
|
|
58
|
+
...
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Notes
|
|
62
|
+
|
|
63
|
+
- 已有数据时默认跳过,避免重复拉取
|
|
64
|
+
- 使用 `force` 参数可强制刷新
|
|
65
|
+
- 数据来源: 东方财富 push2 API
|
|
66
|
+
- 过滤规则: 排除 ST 股、低成交额、低市值标的
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: investment-researcher
|
|
3
|
+
description: 投资研究 agent,专注于市场研究、尽职调查、投资组合分析和资产估值。完全自包含——使用 stock-analyzer-skill 包的 scripts/ 工具。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Investment Researcher
|
|
7
|
+
|
|
8
|
+
投资研究 agent,专注于市场研究、尽职调查、投资组合分析和资产估值。
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```text
|
|
13
|
+
/investment-researcher <任务描述>
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
## 前置依赖
|
|
17
|
+
|
|
18
|
+
- 本 skill 是 [stock-analyzer-skill](https://github.com/) 的一部分
|
|
19
|
+
- 工具脚本位于包根目录 `scripts/`;当前 skill 目录到包根目录为 `../../..`
|
|
20
|
+
- 全部基于 curl + Python stdlib,无需额外 Python 库
|
|
21
|
+
|
|
22
|
+
## Instructions
|
|
23
|
+
|
|
24
|
+
使用简洁中文。先给投资建议(buy/hold/sell/observe)和置信度,再给关键证据、风险提示和跟踪条件。涉及最新行情、公告、研报或政策时必须取数或说明数据不可得。
|
|
25
|
+
|
|
26
|
+
## Workflow Coordination
|
|
27
|
+
|
|
28
|
+
完整链路见包根目录 `workflow.md`。本 skill 是深度研究总控:
|
|
29
|
+
|
|
30
|
+
- 调用 `market` 判断市场风格和风险偏好。
|
|
31
|
+
- 调用 `sector` 判断行业景气、竞争格局和轮动位置。
|
|
32
|
+
- 调用 `financial-analyst` 做财务质量、预测和估值假设。
|
|
33
|
+
- 调用 `stock` 汇总五层投资结论。
|
|
34
|
+
- 调用 `technical` 给交易窗口、支撑阻力和失效条件。
|
|
35
|
+
- 调用 `portfolio` 评估是否适合现有组合。
|
|
36
|
+
|
|
37
|
+
输出必须标注每个证据来自哪个模块,并合并为 `investment_view`、`risk_map`、`tracking_plan`。
|
|
38
|
+
|
|
39
|
+
### Step 1: 理解研究目标
|
|
40
|
+
|
|
41
|
+
- 明确研究对象(个股、行业、市场)
|
|
42
|
+
- 确定分析维度(技术面、基本面、新闻面)
|
|
43
|
+
- 确认数据需求
|
|
44
|
+
|
|
45
|
+
### Step 2: 收集数据
|
|
46
|
+
|
|
47
|
+
#### 2.1 首选:包内脚本
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
|
|
51
|
+
# 实时行情(个股/批量)
|
|
52
|
+
python3 scripts/quote.py sh600989,sz000807,sh518880
|
|
53
|
+
|
|
54
|
+
# 财务数据
|
|
55
|
+
python3 scripts/finance.py SH600989
|
|
56
|
+
|
|
57
|
+
# K线(5min/15min/30min/日 K)
|
|
58
|
+
python3 scripts/kline.py sh600989 # 日 K,30 根
|
|
59
|
+
python3 scripts/kline.py sh600989 5 48 # 5 分钟 K,48 根
|
|
60
|
+
python3 scripts/kline.py sh600989 240 10 # 日 K,10 根
|
|
61
|
+
|
|
62
|
+
# 研报
|
|
63
|
+
python3 scripts/announcements.py 600989 reports
|
|
64
|
+
|
|
65
|
+
# 公司公告
|
|
66
|
+
python3 scripts/announcements.py 600989
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
所有脚本支持 `-j` 输出 JSON 便于二次处理。
|
|
70
|
+
|
|
71
|
+
#### 2.2 兜底:直接 curl
|
|
72
|
+
|
|
73
|
+
当脚本不可用或需要绕过限制时:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
# 实时行情(腾讯接口,GBK编码需转码)
|
|
77
|
+
curl -s "https://qt.gtimg.cn/q=sh600989" | iconv -f GBK -t UTF-8
|
|
78
|
+
# 字段映射以 scripts/common.py 中 TENCENT_FIELDS 为准
|
|
79
|
+
|
|
80
|
+
# 批量行情
|
|
81
|
+
curl -s "https://qt.gtimg.cn/q=sh600989,sh601118,sz000001" | iconv -f GBK -t UTF-8
|
|
82
|
+
|
|
83
|
+
# 国际油价
|
|
84
|
+
curl -s "https://qt.gtimg.cn/q=hf_CL,hf_OIL" | iconv -f GBK -t UTF-8
|
|
85
|
+
# hf_CL=WTI原油 hf_OIL=布伦特原油
|
|
86
|
+
|
|
87
|
+
# 财务摘要(东方财富接口)
|
|
88
|
+
curl -s "https://emweb.securities.eastmoney.com/PC_HSF10/NewFinanceAnalysis/ZYZBAjaxNew?type=0&code=SH600989"
|
|
89
|
+
# type=0:主要指标 type=3:利润表 type=4:资产负债表
|
|
90
|
+
|
|
91
|
+
# 券商研报
|
|
92
|
+
curl -s "https://reportapi.eastmoney.com/report/list?pageSize=5&beginTime=2026-01-01&endTime=2026-12-31&pageNo=1&code=600989"
|
|
93
|
+
|
|
94
|
+
# 公司公告
|
|
95
|
+
curl -s "https://np-anotice-stock.eastmoney.com/api/security/ann?page_size=5&page_index=1&ann_type=A&stock_list=600989&f_node=0"
|
|
96
|
+
|
|
97
|
+
# 历史K线(新浪接口)
|
|
98
|
+
curl -s "https://money.finance.sina.com.cn/quotes_service/api/json_v2.php/CN_MarketData.getKLineData?symbol=sh600989&scale=240&ma=no&datalen=30"
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
#### 2.3 WebSearch/WebFetch 使用策略
|
|
102
|
+
|
|
103
|
+
- WebSearch 在国内环境下**不可靠**,返回的是模板文本而非真实搜索结果
|
|
104
|
+
- WebFetch 对国内财经域名(eastmoney、sina、10jqka)**普遍被拦截**
|
|
105
|
+
- **不要反复重试超过 2 次**,失败后立即切换到 2.1 或 2.2 方案
|
|
106
|
+
- WebSearch 适用于获取英文信息和国际数据源
|
|
107
|
+
|
|
108
|
+
#### 2.4 数据收集清单
|
|
109
|
+
|
|
110
|
+
- [ ] 实时行情:股价、PE、PB、市值、换手率
|
|
111
|
+
- [ ] 财务数据:营收、净利润、毛利率、ROE、现金流
|
|
112
|
+
- [ ] 走势数据:近期K线(30日)、成交量变化
|
|
113
|
+
- [ ] 券商研报:最新评级、目标价、核心观点
|
|
114
|
+
- [ ] 公司公告:最新公告、重大事项
|
|
115
|
+
- [ ] 关联数据:所属行业指数、大宗商品价格、汇率
|
|
116
|
+
|
|
117
|
+
### Step 3: 分析
|
|
118
|
+
|
|
119
|
+
- 技术面分析:趋势、支撑/阻力、成交量
|
|
120
|
+
- 基本面分析:ROE、增速、毛利率、负债率、现金流(5 层框架,详见 `methodology.md` §2)
|
|
121
|
+
- 估值评估:PE、PEG、PE/ROE
|
|
122
|
+
- 板块与风格:所属板块轮动位置
|
|
123
|
+
- 风险评估:情景分析、凯利公式仓位
|
|
124
|
+
- 综合判断
|
|
125
|
+
|
|
126
|
+
只在需要完整阈值、专家讨论或数据源细节时读取 `methodology.md`,不要默认整篇加载。
|
|
127
|
+
|
|
128
|
+
### Step 4: 输出
|
|
129
|
+
|
|
130
|
+
- 分析报告
|
|
131
|
+
- 投资建议(buy/hold/sell)
|
|
132
|
+
- 风险提示
|
|
133
|
+
- 关键观察
|
|
134
|
+
|
|
135
|
+
**专家讨论(可选)**:8 人圆桌(巴菲特/林奇/索罗斯/段永平 + 徐翔/赵老哥/炒股养家/作手新一),详见 `methodology.md` §3。
|
|
136
|
+
|
|
137
|
+
## Allowed Auto-Actions (No Confirmation Needed)
|
|
138
|
+
|
|
139
|
+
- 运行 scripts/ 下的查询脚本
|
|
140
|
+
- 读取本地 data/ 下的参考数据
|
|
141
|
+
- 读取 `methodology.md`
|
|
142
|
+
|
|
143
|
+
## Actions Requiring Confirmation
|
|
144
|
+
|
|
145
|
+
1. 执行 `git commit`、`git push`
|
|
146
|
+
2. 修改 scripts/ 或 data/ 文件
|
|
147
|
+
|
|
148
|
+
## Guardrails
|
|
149
|
+
|
|
150
|
+
- 不要把短线交易信号包装成长期投资结论,必须区分时间维度。
|
|
151
|
+
- 研报、公告、政策信息必须带日期;过期信息不得当作最新催化。
|
|
152
|
+
- 对高波动主题给出仓位上限、止损触发和失效条件。
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: market
|
|
3
|
+
description: A 股大盘复盘 skill。用于市场快评、完整复盘、盘中分时复盘、指数/板块 ETF/风格轮动/资金偏好判断;优先使用 stock-analyzer-skill 包内 scripts/quote.py 和 scripts/kline.py 获取实时指数与板块 ETF 数据。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Market Review
|
|
7
|
+
|
|
8
|
+
每日大盘复盘——指数+板块+风格+资金+预判。
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```text
|
|
13
|
+
/market [范围: full|quick|intraday]
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
- `full`(默认):完整复盘,指数+板块+风格+持仓影响+明日预判
|
|
17
|
+
- `quick`:3分钟快评,涨跌+最强最弱板块+一句话结论
|
|
18
|
+
- `intraday`:分时复盘,大盘+关键标的5分钟走势分析
|
|
19
|
+
|
|
20
|
+
## Instructions
|
|
21
|
+
|
|
22
|
+
使用中文,输出简洁有结构。先给市场状态和操作倾向,再展开指数、板块、风格证据。涉及“今天、盘中、最新”时必须取实时数据。
|
|
23
|
+
|
|
24
|
+
## Workflow Coordination
|
|
25
|
+
|
|
26
|
+
完整链路见包根目录 `workflow.md`。本 skill 是大多数分析的上游入口:
|
|
27
|
+
|
|
28
|
+
- 下游到 `sector`:当输出强/弱板块、轮动方向或行业主题时,继续做板块全景。
|
|
29
|
+
- 下游到 `screener`:当用户要“找机会/选股/候选池”时,把市场状态映射为策略:进攻=`growth_momentum`,均衡=`balanced`,防守=`defensive`,价值修复=`quality_value`,急跌企稳=`turning_point`。
|
|
30
|
+
- 下游到 `portfolio`:当用户关心持仓影响或调仓时,交接 `market_regime`、强弱板块、风险级别。
|
|
31
|
+
|
|
32
|
+
输出必须包含 `market_regime`(进攻/均衡/防守/冰点/亢奋)和适合的下一步 skill。
|
|
33
|
+
|
|
34
|
+
### Step 1: 获取大盘数据
|
|
35
|
+
|
|
36
|
+
优先使用包内脚本。当前 skill 目录到包根目录为 `../../..`:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
python3 scripts/quote.py sh000001,sz399001,sz399006,sh000300,sh000016,sh000905
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
### Step 2: 获取板块ETF
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
python3 scripts/quote.py sh510050,sh510300,sh510500,sh512010,sh512480,sh512690,sh512800,sh513120,sh512660,sh515790,sh515030,sh516160
|
|
46
|
+
```
|
|
47
|
+
|
|
48
|
+
盘中模式额外取指数或关键 ETF 的 5 分钟 K 线:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
python3 scripts/kline.py sh000001 5 48
|
|
52
|
+
python3 scripts/kline.py sh512480 5 48
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Step 3: 分析输出
|
|
56
|
+
|
|
57
|
+
**full模式输出结构:**
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
## 大盘全景
|
|
61
|
+
| 指数 | 收盘 | 涨跌 | 信号 |
|
|
62
|
+
|
|
63
|
+
## 板块涨跌排行
|
|
64
|
+
🔥 强势板块 | 💀 弱势板块
|
|
65
|
+
|
|
66
|
+
## 风格判断
|
|
67
|
+
- 大小盘分化: 上证50 vs 中证500
|
|
68
|
+
- 市场风格: 成长/价值/防御
|
|
69
|
+
- 资金流向: 流入/流出板块
|
|
70
|
+
|
|
71
|
+
## 持仓影响
|
|
72
|
+
| 持仓 | 今日 | 板块 | 匹配度 |
|
|
73
|
+
|
|
74
|
+
## 明日预判
|
|
75
|
+
- 方向判断
|
|
76
|
+
- 关注板块
|
|
77
|
+
- 操作建议
|
|
78
|
+
- 数据日期/时间
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**quick模式:** 只输出指数+最强最弱板块+一句话
|
|
82
|
+
|
|
83
|
+
**intraday模式:** 额外获取关键标的5分钟K线做分时分析
|
|
84
|
+
|
|
85
|
+
### Step 4: 风格信号库
|
|
86
|
+
|
|
87
|
+
| 信号 | 含义 | 历史胜率 |
|
|
88
|
+
|------|------|---------|
|
|
89
|
+
| 上证50涨+中证500跌 | 大小盘分化,防御为主 | 高 |
|
|
90
|
+
| 半导体/光伏暴跌 | 成长板块杀跌 | 短期超跌反弹概率大 |
|
|
91
|
+
| 医药/白酒/银行齐涨 | 防御行情确立 | 持续2-3天 |
|
|
92
|
+
| 券商+黄金同涨 | 市场方向不明,博弈+避险 | 震荡延续 |
|
|
93
|
+
| 创业板单日+3%以上 | 超跌暴力反弹 | 需观察次日是否延续 |
|
|
94
|
+
|
|
95
|
+
## Guardrails
|
|
96
|
+
|
|
97
|
+
- 不要虚构北向资金、成交额、融资余额等脚本无法直接提供的数据;如用户需要,说明当前工具未覆盖或另行查询。
|
|
98
|
+
- 若市场休市,明确说明行情数据可能是上一交易日。
|
|
99
|
+
- 输出建议按“进攻/均衡/防守”分层,不给无条件满仓或清仓指令。
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: portfolio
|
|
3
|
+
description: A 股持仓组合健康检查 skill。用于组合实时涨跌、仓位/板块集中度、风险预警、调仓再平衡和持仓标的对比;优先读取 data/portfolio.json,缺失时回退 data/portfolio_example.json,并使用 scripts/quote.py、scripts/finance.py、scripts/kline.py 获取数据。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Portfolio Review
|
|
7
|
+
|
|
8
|
+
持仓组合健康检查——实时盈亏+板块分布+风险监控+调仓建议。
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```text
|
|
13
|
+
/portfolio [模式: health|rebalance|compare]
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
- `health`(默认):持仓健康检查,涨跌+支撑位+风险预警
|
|
17
|
+
- `rebalance`:结合大盘风格给出调仓建议
|
|
18
|
+
- `compare`:持仓标的互相对比+替换建议
|
|
19
|
+
|
|
20
|
+
## Instructions
|
|
21
|
+
|
|
22
|
+
使用中文,输出用表格+红绿标记。先给组合状态和最需要处理的风险,再给逐项数据。不要假设用户的真实持仓,除非 `data/portfolio.json` 或用户消息提供了持仓。
|
|
23
|
+
|
|
24
|
+
## Workflow Coordination
|
|
25
|
+
|
|
26
|
+
完整链路见包根目录 `workflow.md`。本 skill 是最终落地和再平衡环节:
|
|
27
|
+
|
|
28
|
+
- 上游来自 `market`:接收市场状态,决定组合进攻/均衡/防守。
|
|
29
|
+
- 上游来自 `technical`:接收破位、止损、支撑阻力,决定减仓或观察。
|
|
30
|
+
- 上游来自 `screener`/`stock`:接收替代候选和投资结论,决定换仓。
|
|
31
|
+
- 下游到 `screener`:当组合需要补行业、降低集中度或替换弱势股时,生成候选池。
|
|
32
|
+
- 下游到 `stock`:对拟买入或拟替换标的做最终五层确认。
|
|
33
|
+
|
|
34
|
+
输出必须包含 `position_plan`、行业集中度、需要处理的持仓、替代候选需求。
|
|
35
|
+
|
|
36
|
+
### Step 1: 获取全部持仓行情
|
|
37
|
+
|
|
38
|
+
当前 skill 目录到包根目录为 `../../..`。先读取 `data/portfolio.json`;不存在时使用 `data/portfolio_example.json`,并在输出中标注“示例持仓”。
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
python3 scripts/quote.py <持仓sh/sz代码列表>
|
|
42
|
+
python3 scripts/finance.py -c <持仓SH/SZ代码列表>
|
|
43
|
+
python3 scripts/kline.py <单只持仓代码> 240 30
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
脚本支持 `-j` 输出 JSON,便于计算组合权重、行业暴露和排序。
|
|
47
|
+
|
|
48
|
+
### Step 2: 获取大盘+板块
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
python3 scripts/quote.py sh000001,sz399001,sz399006,sh000016
|
|
52
|
+
python3 scripts/quote.py sh512010,sh512480,sh512690,sh512800,sh513120,sh518880
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Step 3: 健康检查输出
|
|
56
|
+
|
|
57
|
+
**health模式输出:**
|
|
58
|
+
|
|
59
|
+
```
|
|
60
|
+
持仓健康检查 | 时间: YYYY-MM-DD HH:MM
|
|
61
|
+
|
|
62
|
+
┌─────────┬──────┬──────┬──────┬──────┬──────┐
|
|
63
|
+
│ 标的 │ 现价 │ 今日 │ 占比 │ 状态 │ 风险 │
|
|
64
|
+
├─────────┼──────┼──────┼──────┼──────┼──────┤
|
|
65
|
+
│ 宝丰能源 │ 24.59│ +0.2%│ 15% │ ⚠️ │ 24.0 │
|
|
66
|
+
│ 云铝股份 │ 28.52│ -0.9%│ 10% │ ✅ │ 27.5 │
|
|
67
|
+
│ ... │ │ │ │ │ │
|
|
68
|
+
└─────────┴──────┴──────┴──────┴──────┴──────┘
|
|
69
|
+
|
|
70
|
+
板块分布: 资源40% 医药0% 科技5% 避险8% 金融3.5% 现金30%
|
|
71
|
+
风险评级: ⚠️ 资源仓位偏重,科技偏轻
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
**rebalance模式额外输出:**
|
|
75
|
+
- 大盘风格判断(成长/价值/防御)
|
|
76
|
+
- 板块轮动信号
|
|
77
|
+
- 调仓建议(卖出/买入/持有)
|
|
78
|
+
|
|
79
|
+
**compare模式额外输出:**
|
|
80
|
+
- 持仓标的横向对比表(PE/ROE/增速/走势)
|
|
81
|
+
- 替换建议(弱→强)
|
|
82
|
+
|
|
83
|
+
### Step 4: 风险预警规则
|
|
84
|
+
|
|
85
|
+
| 预警 | 条件 | 操作建议 |
|
|
86
|
+
|------|------|---------|
|
|
87
|
+
| 🔴 破位 | 跌破关键支撑位 | 减仓/止损 |
|
|
88
|
+
| 🟡 弱势 | 连续2日跑输板块 | 观察/减仓 |
|
|
89
|
+
| 🟢 健康 | 在支撑位上方运行 | 持有 |
|
|
90
|
+
| ⭐ 强势 | 板块领涨+放量 | 持有/加仓 |
|
|
91
|
+
|
|
92
|
+
## Guardrails
|
|
93
|
+
|
|
94
|
+
- 未知成本价时,不计算真实盈亏,只做当日涨跌、估值和风险状态。
|
|
95
|
+
- 调仓建议必须包含“减/加多少、触发条件、替代标的或现金比例”,避免泛泛而谈。
|
|
96
|
+
- 不要建议超过用户风险承受能力的集中仓位;单一行业或主题过重时优先提示组合风险。
|