@openfinclaw/findoo-datahub-plugin 2026.3.2 → 2026.3.10

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 (67) hide show
  1. package/DESIGN.md +492 -151
  2. package/_vendor/claude-skills-finance/SKILL.md +192 -0
  3. package/_vendor/claude-skills-finance/assets/dcf_analysis_template.md +184 -0
  4. package/_vendor/claude-skills-finance/assets/expected_output.json +161 -0
  5. package/_vendor/claude-skills-finance/assets/forecast_report_template.md +177 -0
  6. package/_vendor/claude-skills-finance/assets/sample_financial_data.json +219 -0
  7. package/_vendor/claude-skills-finance/assets/variance_report_template.md +122 -0
  8. package/_vendor/claude-skills-finance/references/financial-ratios-guide.md +396 -0
  9. package/_vendor/claude-skills-finance/references/forecasting-best-practices.md +294 -0
  10. package/_vendor/claude-skills-finance/references/valuation-methodology.md +255 -0
  11. package/_vendor/claude-skills-finance/scripts/budget_variance_analyzer.py +406 -0
  12. package/_vendor/claude-skills-finance/scripts/dcf_valuation.py +449 -0
  13. package/_vendor/claude-skills-finance/scripts/forecast_builder.py +494 -0
  14. package/_vendor/claude-skills-finance/scripts/ratio_calculator.py +432 -0
  15. package/index.ts +332 -14
  16. package/openclaw.plugin.json +2 -2
  17. package/package.json +1 -1
  18. package/references/cn-market-specifics.md +165 -0
  19. package/references/crypto-analysis.md +635 -0
  20. package/references/financial-ratios-cn.md +452 -0
  21. package/references/hk-market-specifics.md +166 -0
  22. package/references/macro-cycle-cn.md +409 -0
  23. package/references/valuation-cn.md +427 -0
  24. package/skills/README.md +294 -0
  25. package/skills/a-concept-cycle/skill.md +200 -0
  26. package/skills/a-convertible-arb/skill.md +294 -0
  27. package/skills/a-dividend-king/skill.md +187 -0
  28. package/skills/a-earnings-season/skill.md +221 -0
  29. package/skills/a-index-timer/skill.md +192 -0
  30. package/skills/a-ipo-new/skill.md +297 -0
  31. package/skills/a-northbound-decoder/skill.md +185 -0
  32. package/skills/a-quant-board/skill.md +286 -0
  33. package/skills/a-share/skill.md +347 -0
  34. package/skills/a-share-radar/skill.md +185 -0
  35. package/skills/cross-asset/skill.md +202 -0
  36. package/skills/crypto/skill.md +269 -0
  37. package/skills/crypto-altseason/skill.md +208 -0
  38. package/skills/crypto-btc-cycle/skill.md +231 -0
  39. package/skills/crypto-defi-yield/skill.md +181 -0
  40. package/skills/crypto-funding-arb/skill.md +158 -0
  41. package/skills/crypto-stablecoin-flow/skill.md +149 -0
  42. package/skills/data-query/skill.md +124 -30
  43. package/skills/derivatives/skill.md +188 -35
  44. package/skills/etf-fund/skill.md +216 -0
  45. package/skills/factor-screen/skill.md +186 -0
  46. package/skills/hk-china-internet/skill.md +190 -0
  47. package/skills/hk-dividend-harvest/skill.md +192 -0
  48. package/skills/hk-hsi-pulse/skill.md +154 -0
  49. package/skills/hk-southbound-alpha/skill.md +163 -0
  50. package/skills/hk-stock/skill.md +295 -0
  51. package/skills/macro/skill.md +244 -53
  52. package/skills/risk-monitor/skill.md +171 -0
  53. package/skills/us-dividend/skill.md +162 -0
  54. package/skills/us-earnings/skill.md +149 -0
  55. package/skills/us-equity/skill.md +235 -0
  56. package/skills/us-etf/skill.md +261 -0
  57. package/skills/us-sector-rotation/skill.md +223 -0
  58. package/src/config.ts +4 -5
  59. package/src/datahub-client.test.ts +4 -7
  60. package/src/datahub-client.ts +6 -1
  61. package/src/register-tools.ts +720 -0
  62. package/src/tool-helpers.ts +89 -0
  63. package/test/e2e/l3-gateway-bootstrap.live.test.ts +339 -0
  64. package/test/e2e/l4-skill-tool-chain.live.test.ts +465 -0
  65. package/skills/crypto-defi/skill.md +0 -69
  66. package/skills/equity/skill.md +0 -64
  67. package/skills/market-radar/skill.md +0 -47
@@ -1,53 +1,206 @@
1
1
  ---
2
2
  name: fin-derivatives
3
- description: "Derivatives analysis — futures (holdings/settlement/warehouse/term structure), options (chains/Greeks/IV), convertible bonds. All via DataHub."
3
+ description: "Derivatives analysis — futures (daily/holdings/settlement/curve), options (basic/daily/chains with Greeks), convertible bonds. 12 DataHub endpoints via fin_derivatives. Use when: user asks about futures prices, term structure, options strategies, Greeks, convertible bonds, or commodity proxies. NOT for: spot equity (use fin-a-share/fin-us-equity/fin-hk-stock), crypto futures (use fin-crypto), macro rates (use fin-macro)."
4
4
  metadata: { "openclaw": { "emoji": "📉", "requires": { "extensions": ["findoo-datahub-plugin"] } } }
5
5
  ---
6
6
 
7
7
  # Derivatives Analysis
8
8
 
9
- Use the **fin_derivatives** tool for futures, options, and convertible bond analysis via DataHub (works out of the box).
9
+ Use **fin_derivatives** for futures, options, and convertible bond analysis via DataHub.
10
10
 
11
- ## When to Use
11
+ ## Tools & Parameters
12
12
 
13
- - "螺纹钢期货持仓" / "rebar futures holding"
14
- - "IF2501 结算价" / "futures settlement"
15
- - "铜仓单变化" / "warehouse receipts"
16
- - "AAPL期权链" / "option chains with Greeks"
17
- - "可转债转股溢价率" / "CB conversion premium"
13
+ ### fin_derivatives
18
14
 
19
- ## Available Endpoints
15
+ | Parameter | Type | Required | Format | Default | Example |
16
+ | ---------- | ------ | -------- | -------------------------------- | ------- | ------------------ |
17
+ | symbol | string | Depends | see symbol format below | — | RB2501.SHF |
18
+ | endpoint | string | Yes | see endpoint tables | — | futures/historical |
19
+ | trade_date | string | No | YYYY-MM-DD (must be trading day) | — | 2025-02-28 |
20
+ | start_date | string | No | YYYY-MM-DD | — | 2025-01-01 |
21
+ | end_date | string | No | YYYY-MM-DD | — | 2025-02-28 |
22
+ | limit | number | No | 1-5000 | 200 | 30 |
20
23
 
21
- ### Futures
24
+ ### Symbol Format
22
25
 
23
- | endpoint | Description | Example |
24
- | -------------------- | ------------------------ | ------------------------------------------------------------------------------------------- |
25
- | `futures/historical` | Futures historical OHLCV | `fin_derivatives(symbol="RB2501.SHF", endpoint="futures/historical")` |
26
- | `futures/info` | Contract specification | `fin_derivatives(symbol="RB2501.SHF", endpoint="futures/info")` |
27
- | `futures/holding` | Position ranking | `fin_derivatives(symbol="RB2501.SHF", endpoint="futures/holding", trade_date="2025-02-28")` |
28
- | `futures/settle` | Daily settlement | `fin_derivatives(symbol="RB2501.SHF", endpoint="futures/settle")` |
29
- | `futures/warehouse` | Warehouse receipts | `fin_derivatives(symbol="RB.SHF", endpoint="futures/warehouse")` |
30
- | `futures/mapping` | Active contract mapping | `fin_derivatives(symbol="RB.SHF", endpoint="futures/mapping")` |
26
+ - Futures: `RB2501.SHF` (上期所), `IF2501.CFX` (中金所), `C2501.DCE` (大商所), `SR2501.ZCE` (郑商所)
27
+ - Futures (品种): `RB.SHF`, `CU.SHF` (用于 warehouse/mapping/curve,无合约月份)
28
+ - Options (A): `510050.SH` (标的查合约列表), `10004537.SH` (具体合约)
29
+ - Options (US): `AAPL` (查链时用标的 ticker)
30
+ - Convertible: `113xxx.SH` (可转债代码)
31
31
 
32
- ### Options
32
+ ## Endpoint Map (12 total)
33
33
 
34
- | endpoint | Description | Example |
35
- | ---------------- | ------------------------- | ----------------------------------------------------------------- |
36
- | `options/basic` | Option contract list | `fin_derivatives(symbol="510050.SH", endpoint="options/basic")` |
37
- | `options/daily` | Option daily prices | `fin_derivatives(symbol="10004537.SH", endpoint="options/daily")` |
38
- | `options/chains` | Option chains with Greeks | `fin_derivatives(symbol="AAPL", endpoint="options/chains")` |
34
+ ### Futures (7)
39
35
 
40
- ### Convertible Bonds
36
+ | endpoint | Description | Key Params |
37
+ | -------------------- | ------------------- | ------------------- |
38
+ | `futures/historical` | Historical OHLCV | symbol (合约) |
39
+ | `futures/info` | Contract spec | symbol (合约) |
40
+ | `futures/holding` | Position ranking | symbol + trade_date |
41
+ | `futures/settle` | Daily settlement | symbol (合约) |
42
+ | `futures/warehouse` | Warehouse receipts | symbol (品种) |
43
+ | `futures/mapping` | Active contract map | symbol (品种) |
44
+ | `futures/curve` | Term structure | symbol (品种) |
41
45
 
42
- | endpoint | Description | Example |
43
- | ------------------- | --------------- | ------------------------------------------------------------------- |
44
- | `convertible/basic` | CB basic info | `fin_derivatives(symbol="113xxx.SH", endpoint="convertible/basic")` |
45
- | `convertible/daily` | CB daily prices | `fin_derivatives(symbol="113xxx.SH", endpoint="convertible/daily")` |
46
+ ### Options (3)
46
47
 
47
- ## Futures Analysis Pattern
48
+ | endpoint | Description | Key Params |
49
+ | ---------------- | ------------------ | ------------------ |
50
+ | `options/basic` | Contract list | symbol (A 股标的) |
51
+ | `options/daily` | Daily prices | symbol (A 股合约) |
52
+ | `options/chains` | Chains with Greeks | symbol (US ticker) |
48
53
 
49
- 1. `fin_derivatives(futures/info)` — contract specification
50
- 2. `fin_derivatives(futures/historical)` — price trend
51
- 3. `fin_derivatives(futures/holding)` major institution positions
52
- 4. `fin_derivatives(futures/settle)` settlement and open interest
53
- 5. `fin_derivatives(futures/warehouse)` warehouse receipts (supply signal)
54
+ ### Convertible Bonds (2)
55
+
56
+ | endpoint | Description | Key Params |
57
+ | ------------------- | ----------- | ---------- |
58
+ | `convertible/basic` | Basic info | symbol |
59
+ | `convertible/daily` | Daily price | symbol |
60
+
61
+ ## Term Structure Analysis
62
+
63
+ 使用 `futures/curve` 判断 contango/backwardation:
64
+
65
+ | 结构类型 | 特征 | 市场含义 |
66
+ | ------------------------ | ----------------------- | ---------------------------- |
67
+ | Contango (期货升水) | 远月 > 近月 | 供应充裕,仓储成本正常传导 |
68
+ | Backwardation (期货贴水) | 近月 > 远月 | 现货紧缺,即期需求旺盛 |
69
+ | Flat (平坦) | 各月差异 < 1% | 市场对未来无明显预期 |
70
+ | Super Contango | 远月溢价 > 正常仓储成本 | 极端供过于求 或 储存套利机会 |
71
+ | Super Backwardation | 近月大幅溢价于远月 | 极端紧缺,供应中断风险 |
72
+
73
+ **结构切换信号:** Contango → Backwardation 切换 = 供应挤压信号(库存快速下降验证);Backwardation → Contango = 供应恢复(仓单增加验证)。连续 3 个交易日结构翻转 + 库存同方向变化 = 高置信度信号。
74
+
75
+ **交叉验证 (三者一致性越高,信号越可靠):**
76
+
77
+ ```
78
+ fin_derivatives(futures/curve) → 期限结构形态
79
+ fin_derivatives(futures/warehouse) → 库存验证
80
+ fin_derivatives(futures/holding) → 主力持仓方向
81
+ ```
82
+
83
+ ## OI + Price Cross (持仓量×价格交叉解读)
84
+
85
+ | 价格 | OI | 含义 |
86
+ | ---- | ---- | ---------------------------- |
87
+ | 上涨 | 增加 | 新多头进场,趋势健康 |
88
+ | 上涨 | 减少 | 空头平仓,反弹不可持续 |
89
+ | 下跌 | 增加 | 新空头进场,下行趋势确认 |
90
+ | 下跌 | 减少 | 多头平仓,抛压释放,可能见底 |
91
+
92
+ ## Options Strategy Templates
93
+
94
+ 先取数据: `fin_derivatives(symbol="AAPL", endpoint="options/chains")` → ATM IV, Delta, Gamma, Vega, Theta
95
+
96
+ ### 按 IV 分位选策略
97
+
98
+ **IV 分位计算方法 (DataHub 不直接提供,需自行计算):**
99
+
100
+ - A 股: `fin_derivatives(endpoint="options/daily", symbol=<合约>, limit=250)` → 取 close 序列 → Black-Scholes 反推每日 IV → 当前 IV 在 250 日序列中的百分位
101
+ - US: `fin_derivatives(endpoint="options/chains", symbol="SPY")` → 直接取返回的 IV 字段 → 与 VIX 历史对比
102
+ - ⚠️ A 股标的有限 (50ETF/300ETF/科创50ETF 等),个股期权几乎不存在
103
+
104
+ | IV 分位 | 看涨 | 看跌 | 无方向 |
105
+ | ----------- | -------------------------- | -------------------------- | ----------------------- |
106
+ | < 30th (低) | 买 Call / Bull Call Spread | 买 Put / Bear Put Spread | Long Straddle/Strangle |
107
+ | 30-70th | Bull Call Spread | Bear Put Spread | Iron Condor |
108
+ | > 70th (高) | 卖 Put / Bull Put Spread | 卖 Call / Bear Call Spread | Short Straddle/Strangle ⚠️ 必须设止损 |
109
+
110
+ ### 常用策略参数
111
+
112
+ | 策略 | 构建方式 | 最大风险 | 适用场景 |
113
+ | ---------------- | ---------------------------------- | ------------------- | ----------- |
114
+ | Bull Call Spread | 买低 Call + 卖高 Call | 净权利金支出 | 温和看多 |
115
+ | Bear Put Spread | 买高 Put + 卖低 Put | 净权利金支出 | 温和看空 |
116
+ | Long Straddle | 买 ATM Call + 买 ATM Put | 两份权利金之和 | 重大事件前 |
117
+ | Short Strangle | 卖 OTM Call + 卖 OTM Put | 理论无限 (需保证金) | IV 冲高回落 |
118
+ | Iron Condor | Bull Put Spread + Bear Call Spread | 行权价差 - 净收入 | 区间震荡 |
119
+
120
+ ### Earnings Play 隐含波动估算
121
+
122
+ Expected Move = ATM Straddle Price / Stock Price × 100%。从 `options/chains` 取最近到期 ATM Call + Put 之和除以现价 = 隐含波动幅度。实际 < 隐含 → 卖方获利;实际 > 隐含 → 买方获利。
123
+
124
+ ### PCR 解读
125
+
126
+ - PCR > 1.2 → 恐慌/看跌情绪浓; PCR < 0.5 → 过度乐观,警惕回调; 极值回归 → 情绪拐点
127
+
128
+ ## CB Timing Strategy (可转债分层策略)
129
+
130
+ 从 `convertible/daily` 获取转股溢价率,按以下分层操作:
131
+
132
+ | 转股溢价率区间 | 属性定位 | 交易策略 | 风险特征 |
133
+ | -------------- | -------- | ---------------------------------- | -------------- |
134
+ | 0% - 5% | 偏股型 | 跟随正股交易,Delta 接近 1 | 与正股同涨同跌 |
135
+ | 5% - 20% | 平衡型 | 进可攻退可守,优选债底保护好的标的 | 中等波动 |
136
+ | 20% - 50% | 偏债型 | 持有到期或等待下修转股价 | 下行保护强 |
137
+ | > 50% | 纯债型 | 仅看 YTM,与正股脱钩 | 利率风险为主 |
138
+
139
+ **CB 分析流程:** `convertible/basic` → 转股价/信用评级/到期日/强赎条款 → `convertible/daily` → 价格和溢价率。溢价率 < 5% → 切 fin-a-share 分析正股;5-20% → 黄金区间 (AA+ 且 YTM>0 最佳);> 20% → 关注下修转股价概率 + YTM。**强赎预警:** 价格 > 130 + 连续触发条款 → 需提前止盈。
140
+
141
+ **双低策略 (经典 A 股 CB 筛选):** 双低值 = 转债价格 + 转股溢价率 × 100。双低值 < 130 为优选区间(价格低 + 溢价率低 = 下有保底上有弹性)。从 `convertible/daily` 批量获取后排序,取前 10-20 只等权持有,月度轮动。
142
+
143
+ ## A 股 vs US Options 数据差异
144
+
145
+ | 维度 | A 股 (Tushare) | US (yfinance) |
146
+ | -------- | ---------------------------------- | ----------------------- |
147
+ | Greeks | 不提供,需用 daily 数据自行推算 IV | chains 直接返回完整数据 |
148
+ | 端点 | options/basic + options/daily | options/chains |
149
+ | 标的范围 | 有限 (50ETF/300ETF/科创50ETF 等) | 数千只标的,含周度到期 |
150
+ | 延迟 | 收盘后更新 | ~15 分钟延迟 |
151
+ | 可转债 | 独有市场 (5000+ 只),全球最大 | 不适用 |
152
+
153
+ ## 高级策略模式
154
+
155
+ ### 跨期套利决策树
156
+
157
+ 用 `futures/curve` 判定结构 + `futures/holding` 观察主力持仓变化:
158
+
159
+ | 期限结构 | 持仓信号 | 套利方向 | 操作 |
160
+ | ---------------------------- | ---------------------- | -------- | --------------------------- |
161
+ | Contango + 近月多头平仓 | 多头撤退,远月仍有升水 | 正套 | 买近月 + 卖远月,等价差收敛 |
162
+ | Backwardation + 远月空头增仓 | 空头加码远月 | 反套 | 卖近月 + 买远月,赌贴水修复 |
163
+ | Contango + 库存创新高 | 仓单持续累积 | 正套加强 | 上述正套 + 更宽止损 |
164
+ | Backwardation + 库存骤降 | 现货极度紧缺 | 观望 | 不宜反套,挤仓风险高 |
165
+
166
+ **入场条件:** 近远月价差 > 历史 30 日均值 ± 1.5 标准差。**止损:** 价差反向突破 2 标准差。
167
+
168
+ ### 商品期货趋势跟踪
169
+
170
+ 组合 `futures/historical` (OHLCV) + `fin_data_regime` (市场状态) + `fin_ta` (RSI/MACD):
171
+
172
+ | 市场状态 | RSI | MACD | 信号 | 仓位建议 |
173
+ | -------- | ----- | -------- | -------- | -------- |
174
+ | Bull | > 50 | 正值 | 趋势做多 | 60-80% |
175
+ | Bull | > 70 | 正值弱化 | 趋势减速 | 减至 40% |
176
+ | Bear | < 50 | 负值 | 趋势做空 | 60-80% |
177
+ | Neutral | 40-60 | 零轴附近 | 震荡 | < 20% |
178
+
179
+ ### Greeks 风险管理规则
180
+
181
+ 从 `options/chains` 获取组合 Greeks,按阈值管理:Delta 中性 ±0.1,|Delta| > 0.3 时买卖标的归零;Gamma > 0.05 时卖短期期权降暴露;Vega 敞口 > 账户 2% 时用 calendar spread 对冲;Theta 日损耗 > 0.5% 时缩减头寸。**Gamma Scalping:** Long Gamma 持仓 + 标的偏离 ATM > 1σ → Delta hedge 锁利 → 回归后复位。
182
+
183
+ ### 可转债 YTM 快算
184
+
185
+ 从 `convertible/basic` 取面值/票面利率/到期日,从 `convertible/daily` 取当前价格:
186
+
187
+ 近似 YTM = (面值 × (1 + 票面利率 × 剩余年限) - 当前价格) / (当前价格 × 剩余年限) × 100%。YTM > 2% 且评级 AA+ → 纯债替代;YTM < 0% → 已偏股化,转用股性分析。
188
+
189
+ ### 期货品种季节性参考
190
+
191
+ | 品种 | 旺季 | 淡季 | 逻辑 |
192
+ | --------- | -------------- | ------------ | ------------------------- |
193
+ | 螺纹钢 RB | 3-5月 / 9-11月 | 7-8月 / 12月 | 建筑开工旺季 + 冬储 |
194
+ | 豆粕 M | 8-10月 | 3-5月 | 美豆收割季 + 国内需求旺季 |
195
+ | 棕榈油 P | 11-2月 | 5-8月 | 减产季 + 春节备货 |
196
+ | 铜 CU | 2-4月 | 6-8月 | 春季开工旺季 |
197
+
198
+ 用 `futures/historical` 验证季节性是否兑现,结合 `futures/warehouse` 库存数据交叉确认。
199
+
200
+ ## Data Notes
201
+
202
+ - **trade_date**: 必须是交易日(节假日/周末无数据)
203
+ - **持仓排名**: 仅前 20 席位,部分品种滞后 1 个交易日
204
+ - **仓单数据**: 各交易所更新频率不同,上期所最及时
205
+ - **futures/curve**: 返回同品种所有活跃合约当日价格
206
+ - **IV percentile**: 需自行计算历史 IV 分位,DataHub 不直接提供
@@ -0,0 +1,216 @@
1
+ ---
2
+ name: fin-etf-fund
3
+ description: "ETF and fund analysis — NAV, holdings, manager track record, fees, index tracking, adjusted NAV. 9 DataHub endpoints via fin_etf + fin_index for valuation. Use when: user asks about ETF selection, fund comparison, portfolio construction, fund manager evaluation, or index valuation percentile. NOT for: individual stocks (use fin-a-share/fin-us-equity/fin-hk-stock), macro data (use fin-macro), crypto (use fin-crypto)."
4
+ metadata: { "openclaw": { "emoji": "📦", "requires": { "extensions": ["findoo-datahub-plugin"] } } }
5
+ ---
6
+
7
+ # ETF & Fund Analysis
8
+
9
+ ## Tools & Parameters
10
+
11
+ ### fin_etf
12
+
13
+ | Parameter | Type | Required | Format | Default | Example |
14
+ | ---------- | ------ | -------- | ----------------- | ------- | ---------- |
15
+ | symbol | string | Depends | `{code}.SH/SZ/OF` | — | 510300.SH |
16
+ | endpoint | string | Yes | see table below | — | info |
17
+ | start_date | string | No | YYYY-MM-DD | — | 2025-01-01 |
18
+ | end_date | string | No | YYYY-MM-DD | — | 2025-12-31 |
19
+ | limit | number | No | 1-5000 | 200 | 50 |
20
+ | manager | string | No | fund manager name | — | 张坤 |
21
+
22
+ ### Endpoint 映射 (9 endpoints)
23
+
24
+ | endpoint | Description | Example |
25
+ | ---------------- | ----------------------------- | ----------------------------------------------------------------- |
26
+ | `nav` | 单位净值 / 累计净值历史 | `fin_etf(symbol="510300.SH", endpoint="nav", limit=250)` |
27
+ | `info` | 基金基本信息 (类型/规模/费率) | `fin_etf(symbol="510300.SH", endpoint="info")` |
28
+ | `historical` | 场内 ETF 行情 (OHLCV) | `fin_etf(symbol="510300.SH", endpoint="historical")` |
29
+ | `fund/portfolio` | 前十大持仓 (季度更新) | `fin_etf(symbol="510300.SH", endpoint="fund/portfolio")` |
30
+ | `fund/manager` | 基金经理信息 + 任期业绩 | `fin_etf(symbol="510300.SH", endpoint="fund/manager")` |
31
+ | `fund/dividends` | 分红历史 | `fin_etf(symbol="510300.SH", endpoint="fund/dividends")` |
32
+ | `fund/share` | 份额变动 (申赎趋势) | `fin_etf(symbol="510300.SH", endpoint="fund/share")` |
33
+ | `fund/adj_nav` | 复权净值 (分红再投资) | `fin_etf(symbol="510300.SH", endpoint="fund/adj_nav", limit=250)` |
34
+ | `search` | 基金搜索 | `fin_etf(endpoint="search", symbol="510300.SH")` |
35
+
36
+ ### Symbol 格式
37
+
38
+ - 场内 ETF: `510300.SH` (沪市), `159919.SZ` (深市)
39
+ - 场外基金 (OTC): `110011.OF`
40
+ - LOF 基金: `160119.SZ`
41
+ - `.SH` = 上交所, `.SZ` = 深交所, `.OF` = 场外
42
+
43
+ ## 单基金深度分析 (5 步 tool call 链)
44
+
45
+ ```
46
+ Step 1: fin_etf(endpoint="info") → 类型、规模、费率、成立日期
47
+ Step 2: fin_etf(endpoint="fund/portfolio") → 前十大持仓集中度、行业分布
48
+ Step 3: fin_etf(endpoint="fund/manager") → 任期、管理规模、历史业绩
49
+ Step 4: fin_etf(endpoint="fund/adj_nav", limit=500) → 复权净值趋势
50
+ Step 5: fin_index(endpoint="daily_basic") → 跟踪指数 PE/PB 历史分位数
51
+ ```
52
+
53
+ ### 各步骤关键阈值
54
+
55
+ | 步骤 | 指标 | 阈值 |
56
+ | ------ | ------------ | ----------------------- |
57
+ | Step 1 | 规模 | < 2 亿 → 清盘风险 |
58
+ | Step 1 | 成立时间 | < 1 年 → 历史不足 |
59
+ | Step 2 | 前十大占比 | > 60% → 集中持仓 |
60
+ | Step 2 | 单一行业占比 | > 50% → 主题基金特征 |
61
+ | Step 3 | 任期 | > 3 年 → 经历完整牛熊 |
62
+ | Step 3 | 最大回撤 | < -25% → 良好 |
63
+ | Step 4 | 回撤恢复时间 | > 6 月 → 较慢 |
64
+ | Step 5 | PE 分位 | < 20% 低估 / > 80% 高估 |
65
+
66
+ ## 基金经理研究模式
67
+
68
+ ### 按经理选基金 (3 步编排)
69
+
70
+ ```
71
+ Step 1: 用户提供基金代码或经理名 → 已知代码直接进 Step 2
72
+ 未知代码 → fin_etf(endpoint="search", symbol="关键词") 尝试搜索
73
+ 或 fin_etf(endpoint="fund/manager", symbol="已知基金代码") → 获取经理名 → 批量查同经理基金
74
+
75
+ Step 2: 对每只基金 fin_etf(endpoint="info") + fin_etf(endpoint="fund/adj_nav")
76
+ → 规模、费率、历史净值
77
+
78
+ Step 3: 综合评估
79
+ → 管理总规模、年化收益、最大回撤、风格稳定性
80
+ ```
81
+
82
+ ### 经理评估维度
83
+
84
+ | 维度 | 优秀标准 | 数据来源 |
85
+ | -------- | -------------------- | ------------------ |
86
+ | 任期 | >= 3 年 | manager.tenure |
87
+ | 年化收益 | 前 1/4 | adj_nav 计算 |
88
+ | 最大回撤 | < -25% | adj_nav 计算 |
89
+ | 规模适配 | 50-300 亿 | info.total_asset |
90
+ | 风格漂移 | 行业集中度变化 < 20% | portfolio 季度对比 |
91
+ | 换手率 | 偏低 (价值型) / 适中 | portfolio 变化频率 |
92
+
93
+ ### 换手率推算 (portfolio 季度对比)
94
+
95
+ 取连续两个季度 `fund/portfolio` 前十大持仓,计算: `换手率 ≈ 新进+退出股票数 / (Q1持仓数 + Q2持仓数) × 100%`。换手率 < 30% → 价值型低换手;30%-60% → 均衡型;> 60% → 交易型高换手。
96
+
97
+ ### 风格漂移检测
98
+
99
+ 对比最近两个季度 `fund/portfolio` 行业分布: 按申万一级行业归类持仓,计算各行业占比变化绝对值之和。变化 > 30% → 风格漂移警告,建议关注经理投资策略是否转向。
100
+
101
+ ## 同类比较分析
102
+
103
+ 1. **净值对比** — 多只基金 `fund/adj_nav` 走势叠加 (DataHub 暂不支持同类排名接口)
104
+ 2. **费率对比** — 多只基金 `info` 比较管理费/托管费
105
+ 3. **持仓差异** — 多只基金 `fund/portfolio` 对比重叠度
106
+ 4. **Sharpe 近似** — 从 `fund/adj_nav` 计算日收益率序列,Sharpe ≈ (年化收益 - 2.5%) / 年化波动率;Sharpe > 1.0 优秀,0.5-1.0 良好,< 0.5 一般
107
+
108
+ ## 指数估值分析
109
+
110
+ ### 常用指数估值查询
111
+
112
+ ```
113
+ fin_index(endpoint="daily_basic", symbol="000300.SH") # 沪深300 PE/PB
114
+ fin_index(endpoint="daily_basic", symbol="000905.SH") # 中证500
115
+ fin_index(endpoint="daily_basic", symbol="399006.SZ") # 创业板
116
+ # 海外指数估值: fin_index 暂不支持
117
+ ```
118
+
119
+ ### 估值分位数解读
120
+
121
+ | PE 分位 | 状态 | 操作建议 |
122
+ | -------- | -------- | --------------------- |
123
+ | 0%-10% | 极度低估 | 重仓买入 (历史性机会) |
124
+ | 10%-30% | 低估 | 加大定投 / 逐步建仓 |
125
+ | 30%-70% | 合理 | 正常定投 |
126
+ | 70%-90% | 偏高 | 减少定投 / 逐步减仓 |
127
+ | 90%-100% | 极度高估 | 分批止盈 / 暂停定投 |
128
+
129
+ ## 进阶分析模式
130
+
131
+ ### 定投时机信号 (估值 + 体制双因子)
132
+
133
+ ```
134
+ Step 1: fin_index(endpoint="daily_basic", symbol="000300.SH") → PE 分位数
135
+ Step 2: fin_data_regime(symbol="000300.SH") → 市场体制判断
136
+ Step 3: 综合决策矩阵
137
+ ```
138
+
139
+ | PE 分位 | 体制 (regime) | 定投策略 |
140
+ | ------- | -------------- | ---------------------- |
141
+ | < 30% | bear / ranging | 激进加码 (2-3x 正常额) |
142
+ | < 30% | bull | 正常定投 |
143
+ | 30%-70% | 任意 | 正常定投 |
144
+ | > 70% | bear | 正常定投 (逆向布局) |
145
+ | > 80% | bull | 暂停定投 / 分批止盈 |
146
+
147
+ ### ETF 套利框架 (LOF 折溢价)
148
+
149
+ DataHub 无 `premium_discount` 端点,需手动计算:
150
+
151
+ - `fin_etf(endpoint="historical")` → 场内收盘价
152
+ - `fin_etf(endpoint="nav")` → 当日单位净值
153
+ - 折溢价率 = (收盘价 - 净值) / 净值 × 100%
154
+
155
+ | 折溢价率 | 操作 | 说明 |
156
+ | --------- | -------- | -------------------- |
157
+ | > +2% | 场内卖出 | 溢价套利 (申购+卖出) |
158
+ | -2% ~ +2% | 持有不动 | 正常波动范围 |
159
+ | < -2% | 场内买入 | 折价套利 (买入+赎回) |
160
+
161
+ 适用: LOF 基金 (如 160119.SZ),ETF 折溢价通常 < 0.5% 套利空间有限。
162
+
163
+ ### 主题 ETF 轮动
164
+
165
+ ```
166
+ Step 1: fin_index(endpoint="thematic/ths_daily") → 多个概念指数近 20 日涨幅
167
+ Step 2: 按动量排序,取前 3 强势主题
168
+ Step 3: fin_etf(endpoint="historical") 查对应 ETF 近期走势确认趋势
169
+ Step 4: 每月末重新排序轮动
170
+ ```
171
+
172
+ 动量阈值: 20 日涨幅 > 5% 且成交量放大 → 趋势确认;涨幅回落至 < 0% → 退出信号。
173
+
174
+ ### 基金组合构建 (核心-卫星策略)
175
+
176
+ | 组件 | 配比 | 品种选择 | 数据验证 |
177
+ | ---- | ------ | -------------------------- | -------------------------------------------------------- |
178
+ | 核心 | 60-70% | 沪深 300/中证 500 宽基 ETF | `info` 规模 > 50 亿 + 费率最低 |
179
+ | 卫星 | 20-30% | 行业/主题 ETF | `historical` 动量 + `fund/portfolio` 持仓分散 |
180
+ | 增强 | 5-10% | 主动管理基金 | `fund/manager` 任期 > 3 年 + `fund/adj_nav` Sharpe > 0.8 |
181
+
182
+ 组合再平衡: 季度末检查偏离度,单一组件偏离目标配比 > 5% 时触发再平衡。
183
+
184
+ ### 规模陷阱筛选
185
+
186
+ 从 `info` 的 total_asset 字段判断:
187
+
188
+ | 规模 (亿元) | 风险等级 | 说明 |
189
+ | ---------------- | -------- | -------------------------- |
190
+ | < 2 | 高风险 | 清盘风险,流动性差 |
191
+ | 2-5 | 中风险 | 小规模,关注份额趋势 |
192
+ | 5-30 (主动型) | 最优区间 | Alpha 衰减小,操作灵活 |
193
+ | 30-50 (主动型) | 可接受 | 注意大规模冲击成本 |
194
+ | > 50 (主动型) | 警惕 | Alpha 衰减显著,船大难掉头 |
195
+ | > 100 (被动 ETF) | 最优 | 流动性好,跟踪误差小 |
196
+
197
+ ### 分红策略选基
198
+
199
+ `fund/dividends` 分红历史分析:
200
+
201
+ - **收息型**: 年分红 >= 2 次 且 单次分红 / 净值 > 1% → 适合退休/收入需求
202
+ - **成长型**: 不分红或极少分红 → 复利再投资,适合长期增值
203
+ - **伪分红**: 频繁分红但净值持续下跌 → 本金返还式分红,需回避
204
+
205
+ ## DataHub 不支持的功能
206
+
207
+ - LOF 折溢价数据 (`premium_discount` 端点不可用)
208
+ - 同类排名接口 (需手动多基金对比 `fund/adj_nav`)
209
+ - 海外指数估值 (fin_index 仅支持 A 股指数)
210
+
211
+ ## 格式规范
212
+
213
+ - 净值 4 位小数 (1.2345),费率 2 位小数 (0.50%)
214
+ - 规模 > 1 亿用"亿元",< 1 亿用"万元"
215
+ - 持仓分析标注季度 (如 "2025Q3")
216
+ - 注明数据截止日期
@@ -0,0 +1,186 @@
1
+ ---
2
+ name: fin-factor-screen
3
+ description: "Multi-factor stock screening (primarily A-share, with US/HK adaptation notes) — value (PE/PB/dividend), quality (ROE/ROIC/OCF), growth (revenue/earnings), momentum (price/RSI/SMA), capital flow factors. Combines fin_stock + fin_index + fin_ta. Use when: user wants to screen stocks by financial criteria, build factor portfolios, or rank stocks across multiple dimensions. NOT for: single stock analysis (use fin-a-share), ETF screening (use fin-etf-fund)."
4
+ metadata: { "openclaw": { "emoji": "🎯", "requires": { "extensions": ["findoo-datahub-plugin"] } } }
5
+ ---
6
+
7
+ # Multi-Factor Stock Screening
8
+
9
+ 五因子打分体系,支持行业中性化、复合排名与风险排除。
10
+
11
+ ## 五因子模型 — Endpoint 映射
12
+
13
+ ### Factor 1: 价值因子 (Value)
14
+
15
+ | 指标 | Endpoint | 评分标准 | 权重 |
16
+ | -------- | --------------------------------------------- | ---------------------- | ---- |
17
+ | PE (TTM) | `fin_stock(endpoint="fundamental/ratios")` | < 行业中位数 50% → 5分 | 30% |
18
+ | PB | `fin_stock(endpoint="fundamental/ratios")` | < 1.5 → 5分 | 25% |
19
+ | PS (TTM) | `fin_stock(endpoint="fundamental/ratios")` | < 行业中位数 → 加分 | 20% |
20
+ | 股息率 | `fin_stock(endpoint="fundamental/dividends")` | > 3% → 5分 | 25% |
21
+
22
+ 评分: 行业内分位数 — 前20%=5, 20-40%=4, 中位=3, 40-60%=2, 后20%=1
23
+
24
+ ### Factor 2: 质量因子 (Quality)
25
+
26
+ | 指标 | Endpoint | 评分标准 | 权重 |
27
+ | ---------- | ------------------------------------------- | ------------ | ---- |
28
+ | ROE | `fin_stock(endpoint="fundamental/ratios")` | > 15% → 5分 | 35% |
29
+ | ROIC | `fin_stock(endpoint="fundamental/metrics")` | > 12% → 5分 | 25% |
30
+ | 毛利率 | `fin_stock(endpoint="fundamental/income")` | > 30% → 加分 | 20% |
31
+ | OCF/净利润 | `fin_stock(endpoint="fundamental/cash")` | > 1.0 → 5分 | 20% |
32
+
33
+ ### Factor 3: 成长因子 (Growth)
34
+
35
+ | 指标 | Endpoint | 评分标准 | 权重 |
36
+ | -------------- | ------------------------------------------ | ------------------- | ---- |
37
+ | 营收增速 (YoY) | `fin_stock(endpoint="fundamental/income")` | > 20% → 5分 | 35% |
38
+ | 净利增速 (YoY) | `fin_stock(endpoint="fundamental/income")` | > 25% → 5分 | 35% |
39
+ | 净利加速度 | 最近2季度净利增速差 | 加速 → 加分 | 15% |
40
+ | 研发投入占比 | `fin_stock(endpoint="fundamental/income")` | > 5% → 科技成长加分 | 15% |
41
+
42
+ 成长陷阱: 营收↑净利↓=增收不增利 | 净利↑OCF为负=纸面利润 | 3季增速递减=放缓
43
+
44
+ ### Factor 4: 动量因子 (Momentum)
45
+
46
+ | 指标 | Endpoint | 评分标准 | 权重 |
47
+ | -------------- | -------------------------------------------------- | ---------------- | ---- |
48
+ | 20日涨跌幅 | `fin_stock(endpoint="price/historical", limit=20)` | 前20% → 5分 | 30% |
49
+ | 60日涨跌幅 | `fin_stock(endpoint="price/historical", limit=60)` | 前20% → 5分 | 30% |
50
+ | RSI(14) | `fin_ta(indicator="rsi", period=14)` | 50-70 → 趋势健康 | 20% |
51
+ | SMA20 vs SMA60 | `fin_ta(indicator="sma")` | 金叉 → 加分 | 20% |
52
+
53
+ ### 预计算因子捷径
54
+
55
+ `fin_stock(endpoint="fundamental/stock_factor", symbol=X, limit=60)` 返回预计算的 MACD_DIF/DEA、KDJ_K/D/J、RSI_6/12/24、BOLL_Upper/Mid/Lower、CCI,可直接用于动量因子打分,免去逐个 `fin_ta` 调用。
56
+
57
+ ### Factor 5: 资金因子 (Money Flow)
58
+
59
+ | 指标 | Endpoint | 评分标准 | 权重 |
60
+ | ------------ | -------------------------------------------- | ------------------- | ---- |
61
+ | 主力净流入 | `fin_stock(endpoint="moneyflow/individual")` | 连续3日净流入 → 5分 | 40% |
62
+ | 北向资金 | `fin_market(endpoint="flow/hsgt_flow")` | 增持 → 加分 | 30% |
63
+ | 融资余额变化 | 结合 `/fin-a-share-radar` | 增加 → 加分 | 30% |
64
+
65
+ ## 复合排名算法
66
+
67
+ **等权打分:**
68
+
69
+ ```
70
+ 复合得分 = 价值×20% + 质量×25% + 成长×25% + 动量×15% + 资金×15%
71
+ ```
72
+
73
+ **风格偏移权重表:**
74
+
75
+ | 风格 | 价值 | 质量 | 成长 | 动量 | 资金 |
76
+ | ------ | ---- | ---- | ---- | ---- | ---- |
77
+ | 价值型 | 35% | 25% | 15% | 10% | 15% |
78
+ | 成长型 | 10% | 20% | 35% | 20% | 15% |
79
+ | 均衡型 | 20% | 25% | 25% | 15% | 15% |
80
+ | 趋势型 | 10% | 15% | 15% | 35% | 25% |
81
+
82
+ ## 行业权重建议
83
+
84
+ | 行业 | 推荐因子侧重 | 原因 |
85
+ | --------- | ---------------------- | --------------------- |
86
+ | 银行/保险 | 价值 (PB) + 股息率 | PE 不适用,看资产质量 |
87
+ | 医药/科技 | 成长 + 质量 (研发) | 成长性是核心 |
88
+ | 消费/白酒 | 质量 (ROE) + 价值 (PE) | 护城河 + 估值匹配 |
89
+ | 周期/资源 | 动量 + 资金流 | 顺周期,看趋势 |
90
+ | 公用事业 | 价值 (股息率) + 质量 | 稳定现金流 |
91
+
92
+ 行业中性化: 用 `fin_index(endpoint="constituents")` 获取成分股 → 按申万一级行业分组 → 行业内分位数打分 → 跨行业综合
93
+
94
+ ## 风险排除规则
95
+
96
+ **硬性排除 (一票否决):**
97
+
98
+ | 排除条件 | Endpoint |
99
+ | -------------- | ------------------------------------------------- |
100
+ | ST / \*ST | `fin_stock(endpoint="profile")` 名称含 ST |
101
+ | 停牌中 | `fin_stock(endpoint="price/historical", limit=1)` |
102
+ | 上市不满 60 日 | `fin_stock(endpoint="profile")` 上市日期 |
103
+ | 连续 2 年亏损 | `fin_stock(endpoint="fundamental/income")` |
104
+
105
+ **风险扣分:**
106
+
107
+ | 风险因素 | Endpoint | 扣分 |
108
+ | ------------------ | --------------------------------------------------- | ---- |
109
+ | 高质押比例 > 30% | `fin_stock(endpoint="pledge/stat")` | -2分 |
110
+ | 解禁高峰 (30日内) | `fin_stock(endpoint="ownership/share_float")` | -1分 |
111
+ | 商誉占净资产 > 30% | `fin_stock(endpoint="fundamental/balance")` | -2分 |
112
+ | 经营现金流连续为负 | `fin_stock(endpoint="fundamental/cash")` | -2分 |
113
+ | 大股东持续减持 | `fin_stock(endpoint="ownership/shareholder_trade")` | -1分 |
114
+
115
+ ## 筛选流程
116
+
117
+ **快速筛选 (3步):**
118
+
119
+ 1. **核心条件**: ROE > 15% + PE < 行业中位数 + 营收增速 > 10%
120
+ 2. **风险过滤**: 排除 ST + 停牌 + 高质押
121
+ 3. **动量确认**: RSI 50-70 + 主力净流入
122
+
123
+ **完整筛选 (6步):**
124
+
125
+ 1. **选股池**: `fin_index(endpoint="constituents")` → 沪深300/中证500/全A
126
+ 2. **财务数据**: 批量 `fin_stock(fundamental/ratios)` + `fin_stock(fundamental/income)`
127
+ 3. **行业分组**: 按申万一级行业分组
128
+ 4. **五因子打分**: 行业内排名 → 分位数打分 → 加权复合
129
+ 5. **风险排除**: 硬性排除 + 风险扣分
130
+ 6. **输出排名**: Top 20-50 复合得分排名表
131
+
132
+ ## A 股特色因子
133
+
134
+ | 类别 | 因子 | 说明 |
135
+ | --------- | --------------- | -------------- |
136
+ | 打板/情绪 | 涨停板数(5日) | 连板关注度 |
137
+ | 打板/情绪 | 炸板率 | 封板不牢=风险 |
138
+ | 打板/情绪 | 龙虎榜频次 | 游资关注度 |
139
+ | 政策敏感 | 行业政策评级 | 鼓励/限制/中性 |
140
+ | 政策敏感 | 碳中和/国产替代 | ESG + 自主可控 |
141
+ | 季节性 | 1-2月春季躁动 | 成长+小盘 |
142
+ | 季节性 | 4月年报季 | 质量因子强 |
143
+ | 季节性 | 7-8月中报预期 | 成长因子 |
144
+ | 季节性 | 10-12月切换配置 | 价值因子回归 |
145
+
146
+ ## 经典筛选方案
147
+
148
+ **白马股** (沪深300): ROE>20% + 毛利率>40% + 营收增速>15% + PE<行业中位 + 近5日主力净流入>0
149
+ → 权重: 质量35 价值30 成长20 资金15 | `fundamental/ratios` + `fundamental/income` + `moneyflow/individual`
150
+
151
+ **困境反转** (全A): 前2年亏损→最近季度转盈 + PB<2 + 近10日资金由流出转流入 + 质押<20%
152
+ → 权重: 价值40 成长30 资金30 | `fundamental/income` + `fundamental/ratios` + `moneyflow/individual` + `pledge/stat`
153
+
154
+ **高股息红利** (沪深300): 股息率>4% + 连续3年分红 + ROE>10% + 融资余额30日变化<±5%
155
+ → 权重: 价值45 质量35 资金20 | `fundamental/dividends` + `fundamental/ratios` + `fin_market(margin/detail)`
156
+
157
+ **小盘成长** (中证1000/全A): 市值<100亿 + 营收增速>30% + ROE>12% + 非ST + 质押<20%
158
+ → 权重: 成长40 质量25 动量20 资金15 | `fundamental/metrics` + `fundamental/income` + `fundamental/ratios` + `pledge/stat`
159
+
160
+ ## 因子衰减与调仓
161
+
162
+ **有效性检测**: 取 Top 20% 与 Bottom 20%,比较 20 日收益率差 (`price/historical` limit=20)
163
+
164
+ - 价差 > 2% → 有效,维持权重 | 0-2% → 减弱,权重减半 | < 0 → 失效,暂停该因子
165
+
166
+ **调仓频率**: 价值/质量/成长 → 季度 (财报驱动) | 动量 → 月度 | 资金 → 双周 (高频衰减快)
167
+
168
+ **拥挤度**: Top 20% 中单一行业占比 > 40% → 拥挤,该行业个股权重打折 50%,强制上限 30%
169
+ 检测: `fin_stock(endpoint="profile")` 获取行业 → 统计分布
170
+
171
+ ## US/HK 因子适配
172
+
173
+ **US 股票**: `fundamental/ratios` (PE/PB/ROE/ROIC) + `fundamental/income` + `fundamental/dividends` + `price/historical` + `fin_ta` 全部可用
174
+ 快速模板: ROE>15% + PE<25 + 营收增速>10% + RSI 40-70。不可用: 主力资金流、北向、质押、融资余额 (A股特有)
175
+
176
+ **HK 股票**: `hk/income` (半年/年报) + `fundamental/ratios` (部分PE/PB) + `price/historical` + `fin_ta`
177
+ 局限: 无现金流/资产负债细项、无资金流向、无质押。建议仅用价值+动量双因子,权重各 50%
178
+
179
+ **`estimates/consensus` 限制:** 该端点仅限 yfinance 数据源(US 股票),不支持 A-share 代码且有频率限制。A 股因子筛选中需要分析师预期数据时,使用 `fin_stock(endpoint="fundamental/earnings_forecast")` 替代。
180
+
181
+ ## Output Format
182
+
183
+ | 排名 | 代码 | 名称 | 行业 | 复合分 | 价值 | 质量 | 成长 | 动量 | 资金 | 风险标记 |
184
+ | ---- | ---- | ---- | ---- | ------ | ---- | ---- | ---- | ---- | ---- | -------- |
185
+
186
+ 结果须标注: 选股池范围、因子权重配置、数据截止日期、被排除股票及原因。单一行业占比 < 30%。