skills/windpy-sdk/references/fund-fields.md
wangyitong a65adcc2e5 Initial commit: merged, deduplicated, and vetted skill collection
Sources: extracted from two upstream archives (skill-repo, skills-main),
merged with the following policy:

- 15 broken symlinks (pointing to /Users/jameslee/.cc-switch/skills or
  ../../.agents/skills on a foreign machine) discarded
- 3 real name collisions with identical content (ai-pair, ifind-http-api,
  zhipu-websearch) kept as one copy
- Functional overlaps deduped keeping the strongest variant:
  - docx family: kept docx (official, full toolchain) + docx-cn
    (GB/T 9704 Chinese official-document constants),
    dropped docx_writer (no scripts, name collided with docx)
  - humanizer family: kept humanizer-zh (6 zh reference docs),
    dropped humanizer (en, redundant for CN workflow)
- Skills that only ran in a foreign environment removed:
  ablemind-ops, app-publish, hlb-design-system, openclaw-adj-skill,
  claude-driver
- alphapai excluded from this public repo because its SKILL.md hard-coded
  live credentials

Result: 25 skills, 572 files, ~7.5 MB.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-13 14:47:12 +08:00

240 lines
7.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# WindPy 基金专用字段参考
基金数据通过 `w.wsd()`(时间序列)和 `w.wss()`(截面快照)获取。
## 基金基础字段wss 截面数据)
| 字段 | 含义 | 说明 |
|------|------|------|
| `nav` | 单位净值 | 最新净值 |
| `nav_acc` | 累计净值 | 含分红的累计净值 |
| `nav_adj` | 复权净值 | 考虑分红再投资的净值 |
| `nav_date` | 净值日期 | 最新净值对应日期 |
## 基金信息字段wss 截面数据)
| 字段 | 含义 | 说明 |
|------|------|------|
| `fund_type` | 基金类型 | 股票型/债券型/混合型等 |
| `sec_name` | 基金简称 | |
| `fund_manager` | 基金经理 | |
| `fund_corp` | 基金公司 | |
## ETF 涨跌幅字段
### 实时涨跌幅(日内)
| 字段 | 含义 | 函数 | 说明 |
|------|------|------|------|
| `rt_last` | 最新价 | wsq | 实时成交价 |
| `rt_pct_chg` | 实时涨跌幅(%) | wsq | 相对于昨收的实时涨跌 |
| `rt_chg` | 实时涨跌额 | wsq | 实时涨跌金额 |
| `rt_nav` | 实时净值 | wsq | ETF实时IOPV净值 |
### 日频涨跌幅日K
| 字段 | 含义 | 函数 | 说明 |
|------|------|------|------|
| `close` | 日收盘价 | wsd/wss | 当日收盘价 |
| `pct_chg` | 日涨跌幅(%) | wsd/wss | 当日涨跌幅 |
| `change` | 日涨跌额 | wsd/wss | 当日涨跌金额 |
| `nav` | 单位净值 | wsd/wss | 日终单位净值 |
| `pct_chg_nav` | 净值日涨跌幅(%) | wsd/wss | 净值日涨跌幅 |
**使用场景对比:**
- **实时行情wsq**:适合盘中监控、日内交易决策
- **日频行情wsd/wss**:适合日终复盘、历史数据分析、策略回测
---
## 使用示例
```python
from WindPy import w
w.start()
# 基金净值时间序列
err, df = w.wsd("510300.SH", "nav,nav_acc,nav_adj", "-30D", "", "", usedf=True)
# 列名: ['NAV', 'NAV_ACC', 'NAV_ADJ']
# 多只基金截面信息
err, df = w.wss("510300.SH,159915.SZ,512800.SH",
"sec_name,nav,nav_acc,fund_type,fund_manager",
"", usedf=True)
# ETF 实时行情(日内)
err, df = w.wsq("510300.SH", "rt_last,rt_pct_chg,rt_nav", usedf=True)
# ETF 日频涨跌幅获取方式
## 方式1使用 wsd 获取历史日频涨跌幅(推荐)
err, df = w.wsd("510300.SH", "close,pct_chg", "-30D", "", "", usedf=True)
# close: 日收盘价
# pct_chg: 日涨跌幅(%)
## 方式2使用 wss 获取截面日频涨跌幅
err, df = w.wss("510300.SH,159915.SZ", "close,pct_chg", "tradeDate=20260209", usedf=True)
# 获取指定交易日的收盘价和涨跌幅
## 方式3获取ETF的历史净值涨跌幅
err, df = w.wsd("510300.SH", "nav,pct_chg_nav", "-30D", "", "", usedf=True)
# nav: 单位净值
# pct_chg_nav: 净值日涨跌幅
w.stop()
```
---
## 常见基金代码示例
| 代码 | 名称 | 类型 |
|------|------|------|
| `510300.SH` | 华泰柏瑞沪深300ETF | 股票ETF |
| `159915.SZ` | 易方达创业板ETF | 股票ETF |
| `512800.SH` | 华宝中证银行ETF | 行业ETF |
| `511880.SH` | 银华日利 | 货币ETF |
| `518880.SH` | 华安黄金ETF | 商品ETF |
---
## 基金信息字段补充wss 截面数据)
以下字段在 `wss()` 中已验证可用:
| 字段 | 含义 | options 参数 | 说明 |
|------|------|-------------|------|
| `fund_type` | 基金类型 | — | 契约型开放式等 |
| `fund_investtype` | 投资类型 | — | 灵活配置型/QDII混合型等 |
| `fund_fundscale` | 基金规模 | `rptDate=YYYYMMDD` | 元,需指定报告期 |
| `fund_setupdate` | 成立日期 | — | datetime |
| `fund_maturitydate` | 到期日期 | — | 封闭式基金 |
| `fund_benchmark` | 业绩基准 | — | 文字描述 |
| `fund_managementfeeratio` | 管理费率 | — | 百分比 |
### 区间收益率wss
| 字段 | 含义 | 必须 options |
|------|------|-------------|
| `NAV_adj_return` | 复权净值区间收益率(%) | `startDate=YYYYMMDD;endDate=YYYYMMDD` |
```python
# 获取基金近 1 年区间收益率
df = wss("110011.OF,000001.OF", "NAV_adj_return", "startDate=20250225;endDate=20260225")
```
### 净值日频涨跌wsd
| 字段 | 含义 | 函数 |
|------|------|------|
| `nav` | 单位净值 | wsd |
| `nav_acc` | 累计净值 | wsd |
| `nav_adj` | 复权净值 | wsd |
| `NAV_adj_return` | 复权净值日收益率(%) | wsd |
```python
# 基金复权净值及日收益率时间序列
df = wsd("110011.OF", "nav,nav_adj,NAV_adj_return", "-30D")
```
---
## 注意事项
1. **净值更新时间:** 一般 T 日 21:00 后更新 T 日净值
2. **QDII 基金:** 净值更新可能延迟 1-2 个交易日
3. **货币 ETF** 使用 `rt_nav` 获取实时净值/每万份收益
4. **LOF 基金:** 代码后缀 .SZ/.SH同时有场内交易和场外净值
5. **基金规模:** `fund_fundscale` 需指定 `rptDate`,否则返回 None
6. **区间收益率:** `NAV_adj_return` 在 wss 中需 `startDate/endDate`,在 wsd 中直接返回日收益率
7. **风险指标:** `return_1m/risk_sharpe` 等字段名在 wss 中返回 None可能需要额外权限或不同的字段名建议自行用净值序列计算
---
## ETF 涨跌幅获取详解
### 实时涨跌幅(盘中)
适合**日内交易监控**和**实时盯盘**
```python
# 获取多只ETF实时涨跌幅
etf_list = "510300.SH,159915.SZ,518880.SH"
err, df = w.wsq(etf_list, "rt_last,rt_pct_chg,rt_chg,rt_nav", usedf=True)
# 返回示例:
# rt_last: 最新成交价
# rt_pct_chg: 相对于昨收的涨跌幅(%)
# rt_chg: 涨跌金额
# rt_nav: 实时IOPV净值
```
### 日频涨跌幅日K
适合**盘后分析**、**历史回测**、**日线策略**
```python
# 获取ETF历史日频涨跌幅过去30天
err, df = w.wsd("510300.SH", "close,pct_chg", "-30D", "", "", usedf=True)
# DataFrame 包含每日收盘价和涨跌幅
# 获取特定日期的截面涨跌幅
err, df = w.wss("510300.SH,159915.SZ,518880.SH",
"close,pct_chg",
"tradeDate=20260209", usedf=True)
# 返回指定交易日的收盘价和涨跌幅
# 获取净值涨跌幅(反映基金实际收益)
err, df = w.wsd("510300.SH", "nav,pct_chg_nav", "-30D", "", "", usedf=True)
# nav: 日终单位净值
# pct_chg_nav: 净值日涨跌幅
```
### 实时 vs 日频的区别
| 维度 | 实时行情 (wsq) | 日频行情 (wsd/wss) |
|------|----------------|-------------------|
| **更新频率** | 秒级/分钟级 | 日终更新 |
| **适用场景** | 盘中交易、实时监控 | 盘后分析、策略回测 |
| **字段前缀** | `rt_` (real-time) | 无前缀 |
| **涨跌幅基准** | 相对于昨收价 | 相对于前一日收盘价 |
| **数据存储** | 通常只保留当日 | 长期历史数据 |
### 常用ETF涨跌幅监控代码
```python
def get_etf_daily_performance(etf_list, date=None):
"""
获取ETF日频涨跌幅表现
Parameters:
-----------
etf_list : list
ETF代码列表如 ['510300.SH', '159915.SZ']
date : str, optional
日期,格式 'YYYYMMDD',默认最新交易日
Returns:
--------
DataFrame : 包含ETF名称、收盘价、涨跌幅
"""
if date is None:
from datetime import datetime
date = datetime.now().strftime('%Y%m%d')
codes = ','.join(etf_list)
err, df = w.wss(codes, "sec_name,close,pct_chg",
f"tradeDate={date}", usedf=True)
if err == 0:
df.columns = ['ETF名称', '收盘价', '涨跌幅(%)']
df = df.sort_values('涨跌幅(%)', ascending=False)
return df
return None
# 使用示例
etf_codes = ['510300.SH', '159915.SZ', '518880.SH', '512800.SH']
df = get_etf_daily_performance(etf_codes)
print(df)
```