Skip to content

Commit

Permalink
feat(fund_portfolio_bond_hold_em): add fund_portfolio_bond_hold_em in…
Browse files Browse the repository at this point in the history
…terface

add fund_portfolio_bond_hold_em interface
  • Loading branch information
ak-quant committed Mar 22, 2022
1 parent 4321227 commit 0475f86
Show file tree
Hide file tree
Showing 5 changed files with 143 additions and 3 deletions.
5 changes: 3 additions & 2 deletions akshare/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -1905,9 +1905,10 @@
1.4.82 fix: fix stock_a_code_to_symbol interface
1.4.83 add: add stock_us_code_table_fu interface
1.4.84 fix: fix fund_portfolio_change_em interface
1.4.85 add: add fund_portfolio_bond_hold_em interface
"""

__version__ = "1.4.84"
__version__ = "1.4.85"
__author__ = "AKFamily"

import sys
Expand Down Expand Up @@ -2631,7 +2632,7 @@
"""
基金持仓
"""
from akshare.fund.fund_portfolio_em import fund_portfolio_hold_em, fund_portfolio_change_em
from akshare.fund.fund_portfolio_em import fund_portfolio_hold_em, fund_portfolio_change_em, fund_portfolio_bond_hold_em

"""
债券概览
Expand Down
52 changes: 52 additions & 0 deletions akshare/fund/fund_portfolio_em.py
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,55 @@ def fund_portfolio_hold_em(symbol: str = "162411", date: str = "2020") -> pd.Dat
return big_df


def fund_portfolio_bond_hold_em(symbol: str = "000001", date: str = "2021") -> pd.DataFrame:
"""
天天基金网-基金档案-投资组合-债券持仓
http://fundf10.eastmoney.com/ccmx1_000001.html
:param symbol: 基金代码
:type symbol: str
:param date: 查询年份
:type date: str
:return: 债券持仓
:rtype: pandas.DataFrame
"""
url = "http://fundf10.eastmoney.com/FundArchivesDatas.aspx"
params = {
"type": "zqcc",
"code": symbol,
"year": date,
"rt": "0.913877030254846",
}
r = requests.get(url, params=params)
data_text = r.text
data_json = demjson.decode(data_text[data_text.find("{") : -1])
soup = BeautifulSoup(data_json["content"], "lxml")
item_label = [
item.text.split("\xa0\xa0")[1]
for item in soup.find_all("h4", attrs={"class": "t"})
]
big_df = pd.DataFrame()
for item in range(len(item_label)):
temp_df = pd.read_html(data_json["content"], converters={"债券代码": str})[item]
temp_df["占净值比例"] = temp_df["占净值比例"].str.split("%", expand=True).iloc[:, 0]
temp_df.rename(columns={"持仓市值(万元)": "持仓市值"}, inplace=True)
temp_df["季度"] = item_label[item]
temp_df = temp_df[
[
"序号",
"债券代码",
"债券名称",
"占净值比例",
"持仓市值",
"季度",
]
]
big_df = big_df.append(temp_df, ignore_index=True)
big_df["占净值比例"] = pd.to_numeric(big_df["占净值比例"], errors="coerce")
big_df["持仓市值"] = pd.to_numeric(big_df["持仓市值"], errors="coerce")
big_df["序号"] = range(1, len(big_df) + 1)
return big_df


def fund_portfolio_change_em(
symbol: str = "003567", indicator: str = "累计买入", date: str = "2020"
) -> pd.DataFrame:
Expand Down Expand Up @@ -143,6 +192,9 @@ def fund_portfolio_change_em(
fund_portfolio_hold_em_df = fund_portfolio_hold_em(symbol="162411", date="2020")
print(fund_portfolio_hold_em_df)

fund_portfolio_bond_hold_em_df = fund_portfolio_bond_hold_em(symbol="000001", date="2021")
print(fund_portfolio_bond_hold_em_df)

fund_portfolio_change_em_df = fund_portfolio_change_em(
symbol="003567", indicator="累计买入", date="2020"
)
Expand Down
6 changes: 6 additions & 0 deletions docs/changelog.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

## 接口更新说明

1.4.85 add: add fund_portfolio_bond_hold_em interface

1. 新增 fund_portfolio_bond_hold_em 接口,获取天天基金网-基金档案-投资组合-债券持仓数据

1.4.84 fix: fix fund_portfolio_change_em interface

1. 修复 fund_portfolio_change_em 接口,新增 indicator 字段
Expand Down Expand Up @@ -182,6 +186,8 @@

## 版本更新说明

1.4.85 add: add fund_portfolio_bond_hold_em interface

1.4.84 fix: fix fund_portfolio_change_em interface

1.4.83 add: add stock_us_code_table_fu interface
Expand Down
82 changes: 81 additions & 1 deletion docs/data/fund/fund_public.md
Original file line number Diff line number Diff line change
Expand Up @@ -1634,7 +1634,7 @@ print(fund_portfolio_hold_em_df)
数据示例

```
序号 股票代码 股票名称 占净值比例 持股数 持仓市值 季度
序号 股票代码 股票名称 占净值比例 持股数 持仓市值 季度
0 1 601318 中国平安 6.04 333.75 29029.80 2020年4季度股票投资明细
1 2 002127 南极电商 5.90 2074.47 28378.78 2020年4季度股票投资明细
2 3 000961 中南建设 5.30 2889.73 25516.32 2020年4季度股票投资明细
Expand All @@ -1648,6 +1648,86 @@ print(fund_portfolio_hold_em_df)
155 10 603806 福斯特 1.63 175.98 7165.78 2020年1季度股票投资明细
```


### 债券持仓

接口: fund_portfolio_bond_hold_em

目标地址: http://fundf10.eastmoney.com/ccmx_000001.html

描述: 天天基金网-基金档案-投资组合-债券持仓

限量: 单次返回指定 symbol 和 date 的所有持仓数据

输入参数

| 名称 | 类型 | 描述 |
|--------|-----|----------------------------------------------------------|
| symbol | str | symbol="000001"; 基金代码, 可以通过调用 **ak.fund_name_em()** 接口获取 |
| date | str | date="2021"; 指定年份 |

输出参数

| 名称 | 类型 | 描述 |
|-------|---------|----------|
| 序号 | int64 | - |
| 债券代码 | object | - |
| 债券名称 | object | - |
| 占净值比例 | float64 | 注意单位: % |
| 持仓市值 | float64 | 注意单位: 万元 |
| 季度 | object | - |

接口示例

```python
import akshare as ak

fund_portfolio_bond_hold_em_df = ak.fund_portfolio_bond_hold_em(symbol="000001", date="2021")
print(fund_portfolio_bond_hold_em_df)
```

数据示例

```
序号 债券代码 债券名称 占净值比例 持仓市值 季度
0 1 200207 20国开07 3.28 12100.80 2021年4季度债券投资明细
1 2 190308 19进出08 3.01 11077.00 2021年4季度债券投资明细
2 3 101564021 15华能集MTN002 2.80 10304.00 2021年4季度债券投资明细
3 4 200312 20进出12 2.72 10035.00 2021年4季度债券投资明细
4 5 200302 20进出02 2.71 9998.00 2021年4季度债券投资明细
5 6 123107 温氏转债 0.49 1796.07 2021年4季度债券投资明细
6 7 128113 比音转债 0.37 1354.46 2021年4季度债券投资明细
7 8 113582 火炬转债 0.35 1295.03 2021年4季度债券投资明细
8 9 123114 三角转债 0.17 610.91 2021年4季度债券投资明细
9 10 113563 柳药转债 0.05 194.07 2021年4季度债券投资明细
10 11 123117 健帆转债 0.04 131.21 2021年4季度债券投资明细
11 12 128134 鸿路转债 0.02 85.00 2021年4季度债券投资明细
12 13 200207 20国开07 3.11 12072.00 2021年3季度债券投资明细
13 14 190308 19进出08 2.86 11088.00 2021年3季度债券投资明细
14 15 101564021 15华能集MTN002 2.62 10173.00 2021年3季度债券投资明细
15 16 200312 20进出12 2.59 10047.00 2021年3季度债券投资明细
16 17 200302 20进出02 2.57 9983.00 2021年3季度债券投资明细
17 18 128113 比音转债 0.34 1320.19 2021年3季度债券投资明细
18 19 113563 柳药转债 0.05 175.48 2021年3季度债券投资明细
19 20 128134 鸿路转债 0.02 72.00 2021年3季度债券投资明细
20 21 200207 20国开07 2.72 12033.60 2021年2季度债券投资明细
21 22 190308 19进出08 2.50 11074.80 2021年2季度债券投资明细
22 23 101564021 15华能集MTN002 2.28 10089.00 2021年2季度债券投资明细
23 24 200312 20进出12 2.27 10040.00 2021年2季度债券投资明细
24 25 200302 20进出02 2.25 9967.00 2021年2季度债券投资明细
25 26 128113 比音转债 0.28 1245.90 2021年2季度债券投资明细
26 27 113563 柳药转债 0.04 179.29 2021年2季度债券投资明细
27 28 128134 鸿路转债 0.02 76.56 2021年2季度债券投资明细
28 29 180208 18国开08 3.99 17027.20 2021年1季度债券投资明细
29 30 200207 20国开07 2.80 11966.40 2021年1季度债券投资明细
30 31 190308 19进出08 2.59 11042.90 2021年1季度债券投资明细
31 32 101564021 15华能集MTN002 2.36 10079.00 2021年1季度债券投资明细
32 33 200312 20进出12 2.34 10007.00 2021年1季度债券投资明细
33 34 128113 比音转债 0.23 987.33 2021年1季度债券投资明细
34 35 113563 柳药转债 0.04 182.08 2021年1季度债券投资明细
35 36 123058 欣旺转债 0.00 14.11 2021年1季度债券投资明细
```

### 重大变动

接口: fund_portfolio_change_em
Expand Down
1 change: 1 addition & 0 deletions docs/tutorial.md
Original file line number Diff line number Diff line change
Expand Up @@ -1027,6 +1027,7 @@
"stock_lhb_jgmmtj_em" # 东方财富网-数据中心-龙虎榜单-机构买卖每日统计
# 投资组合-基金持仓
"fund_portfolio_hold_em" # 天天基金网-基金档案-投资组合-基金持仓
"fund_portfolio_bond_hold_em" # 天天基金网-基金档案-投资组合-债券持仓
# 投资组合-重大变动
"fund_portfolio_change_em" # 天天基金网-基金档案-投资组合-重大变动
```
Expand Down

0 comments on commit 0475f86

Please sign in to comment.