Savant verdict: Review advised
Security analysis or source-hub review identified patterns requiring attention.
Live evaluation
Not evaluated yet. Workspaces can request a live evaluation.
Security assessment
Scan pending.
Structure
- Description is very shortA description that says when to use the skill helps agents route to it.
- Ships 5 executable scripts__init__.py, cli.js, example.py, fund_screener.py, install.js. Review what they do before enabling the skill for agents with tool access.
- The source hub's security checks flagged this skillSocket: warn (1 alert: gptSecurity); Snyk: warn (Risk: MEDIUM · No issues)
SKILL.md
---
name: fund-screener
description: 中国公募基金全市场筛选与深度分析工具,支持夏普/索提诺/卡玛等量化指标筛选
user-invocable: yes
metadata:
{
"openclaw":
{
"emoji": "📊",
"os": ["darwin", "linux", "win32"],
"requires": {
"anyBins": ["python3", "python"]
},
"install": [
{
"id": "pip",
"kind": "uv",
"package": "akshare pandas numpy",
"bins": ["python3"],
"label": "pip install akshare pandas numpy"
}
]
}
}
---
# 基金分析技能 (Fund Screener)
通过 AkShare 获取中国公募基金实时数据,基于量化指标筛选优质基金产品。
## 功能
1. **单基金深度分析**: 对单只基金进行全方位诊断,包括风险指标、阶段收益、年度收益、资产配置、基金经理、持仓信息
2. **全市场批量筛选**: 从全市场开放式基金中智能筛选,支持多种模式
3. **结果导出**: 自动保存 CSV 文件
## 使用方法
运行此技能需要 Python 3.8+ 和依赖: `pip install akshare pandas numpy`
```bash
# 单基金分析
python fund_screener.py <基金代码> [基金名称]
# 纯债基金筛选(低风险)
python fund_screener.py --bond
# 固收+基金筛选
python fund_screener.py --gushou-plus
# 股票类基金筛选
python fund_screener.py --stock
# Alpha策略筛选(卡玛比率)
python fund_screener.py --stock-alpha
# 自定义参数
python fund_screener.py --bond --min-sharpe 1.0 --max-dd 2 --min-return 2.5
python fund_screener.py --gushou-plus --min-sortino 1.5
python fund_screener.py --stock-alpha --min-calmar 0.8 --min-return 10
# 数量控制
python fund_screener.py --bond --max 50
```
## 筛选模式与指标
| 模式 | 参数 | 核心指标 | 默认筛选标准 |
|------|------|----------|------------|
| 纯债基金 | `--bond` | 夏普比率 | 夏普>=1.0, 回撤<2%, 收益>2.5% |
| 固收+ | `--gushou-plus` | 索提诺比率 | 夏普>=0.8, 索提诺>=1.2, 回撤<5%, 收益>3.5% |
| 股票Alpha | `--stock-alpha` | 卡玛比率 | 卡玛>=1.2, 回撤<30%, 收益>10% |
| 默认/股票 | 无/`--stock` | 夏普比率 | 夏普>=0.5, 回撤<15%, 收益>3% |
## 自定义参数
| 参数 | 说明 |
|------|------|
| `--min-sharpe <value>` | 最小夏普比率 |
| `--min-sortino <value>` | 最小索提诺比率 |
| `--min-calmar <value>` | 最小卡玛比率 |
| `--max-dd <value>` | 最大回撤百分比(正数,如5表示<5%) |
| `--min-return <value>` | 最小年化收益率(%) |
| `--max <value>` | 最大分析数量(50-500) |
## 作为 Python 模块使用
```python
from fund_screener import get_fund_metrics, analyze_single_fund, calculate_sharpe_ratio
# 分析单只基金
metrics = get_fund_metrics('004010', '华泰柏瑞鼎利混合A')
# 深度分析
analysis = analyze_single_fund('004010')
```
## 数据来源
- 基金净值: 东方财富网 (via AkShare)
- 基金经理/规模: 基金经理持仓数据
- 资产配置: 基金季度持仓报告
- **数据验证**: 百度股市通 (via BrowserMCP,可选增强)
## 浏览器数据验证(BrowserMCP)
AkShare的部分数据存在已知偏差(基金规模为经理总规模而非单只基金规模、持仓数据可能滞后、收益率计算口径差异)。当BrowserMCP可用时,应在Python筛选生成CSV后,自动通过浏览器访问**百度股市通**进行数据交叉验证和修正。
### 前置条件
- `.mcp.json` 中已配置 BrowserMCP
### 完整工作流
```
Step 1: 运行Python筛选 → 生成初始CSV
Step 2: 读取CSV,识别A/C份额对,去重
Step 3: 逐只基金通过BrowserMCP访问百度股市通
Step 4: 验证并修正三大数据:规模、持仓、收益
Step 5: 更新CSV + 保存验证缓存JSON
Step 6: 输出修正摘要
```
### Step 2: A/C份额去重
同一基金的A/C份额共享相同的持仓和规模,无需重复验证。去重规则:
- 去掉基金名称末尾的A/B/C/E/H后缀进行分组
- 每组只验证一个份额(代码数字较小的优先)
- 验证后的持仓和规模数据复制到同组所有份额
- 近1年收益因费率差异不同,每个份额单独取值(或仅验证A份额)
### Step 3: 浏览器验证协议
对每只唯一基金,访问两个页面:
#### 3a. 持仓页 — 获取前5大持仓
**URL**: `https://gushitong.baidu.com/fund/ab-{code}?mainTab=%E6%8C%81%E4%BB%93`
使用 `browser_navigate` 访问后 `browser_snapshot` 获取快照。在快照文本中查找:
```
十大重仓股票 更新日期:YYYY-MM-DD
股票A名 X.XX% 股票B名 X.XX% 股票C名 X.XX% ...
```
提取前5个股票名称,用 `, ` 连接作为"前5大持仓"。
**异常处理**:
- 若显示 `十大重仓股票 暂无数据` → 保留CSV原值(港股通基金常见)
- 若页面超时 → 重试1次,仍失败则跳过
- 若显示 `服务异常` → 等待2秒后重试
#### 3b. 简况页 — 获取规模和近1年收益
**URL**: `https://gushitong.baidu.com/fund/ab-{code}?mainTab=%E7%AE%80%E5%86%B5`
使用 `browser_navigate` 访问后 `browser_snapshot` 获取快照。在快照文本中查找:
- **近1年收益**: 寻找 `近一年` 附近的百分比数值,如 `+53.47% 近一年` → 提取 `53.47`
- **基金规模**: 寻找 `规模` 附近的数值,格式如 `X.XX亿` → 提取 `X.XX`
> 注意:部分基金的规模在简况页未直接显示数值,可尝试从持仓页的快照中查找。
### Step 4: 修正CSV
对每只验证过的基金:
- 若百度的"前5大持仓"与CSV不同 → 用百度数据覆盖CSV
- 若百度的"基金规模"与CSV不同 → 用百度数据覆盖CSV
- 若百度的"近1年收益"与CSV不同 → 用百度数据覆盖CSV
- 对A/C份额对:将A份额的持仓和规模数据同步到C份额
### Step 5: 保存验证缓存
更新 `baidu_fund_data.json` 文件,Schema如下:
```json
{
"004814": {
"规模": "189.25",
"近1年": "53.63",
"前5大持仓": "紫金矿业, 徐工机械, 新华保险, 中国重汽, 三一重工",
"持仓更新日期": "2025-12-31",
"验证时间": "2026-02-24"
}
}
```
### Step 6: 输出修正摘要
验证完成后打印汇总表:
```
=== 数据验证摘要 ===
总计检查: 25 只(去重后)
规模修正: 18 只
持仓修正: 14 只
收益修正: 4 只
跳过(暂无数据): 2 只
```
### 性能优化
- 每次页面加载后等待1-2秒,避免触发反爬
- 25只唯一基金约需50次页面加载,预计耗时5-8分钟
- 可利用缓存JSON:若当天已验证过,跳过重复验证
## 风险提示
历史业绩不代表未来表现。本工具仅供学习研究,不构成投资建议。