Files
MoFin/venv/lib/python3.12/site-packages/akshare/fund/fund_amac.py
T
知微 fa45d8aa5f fix: 小果地址统一node122(兼容LAN+EasyTier)
- health_checklist.json: 192.168.1.122→node122
- ocr_client.py: docstring IP→node122
- docs/market-data-requirements.md: IP→node122
- 所有API调用通过ProxyHandler({})绕过系统代理
  Privoxy对node122:18003返回500,直连正常
2026-06-30 02:56:35 +08:00

912 lines
33 KiB
Python

#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
Date: 2024/4/29 16:00
Desc: 中国证券投资基金业协会-信息公示数据
中国证券投资基金业协会-新版: https://gs.amac.org.cn
"""
import pandas as pd
import requests
from akshare.utils.tqdm import get_tqdm
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/123.0.0.0 Safari/537.36",
"Content-Type": "application/json",
}
def _get_pages(url: str = "", payload: str = "") -> pd.DataFrame:
"""
中国证券投资基金业协会-信息公示-私募基金管理人公示 页数
暂时不使用本函数, 直接可以获取所有数据
"""
res = requests.post(url=url, json=payload, headers=headers)
res.encoding = "utf-8"
json_df = res.json()
return json_df["totalPages"]
def get_data(url: str = "", payload: str = "") -> pd.DataFrame:
"""
中国证券投资基金业协会-信息公示-私募基金管理人公示
"""
res = requests.post(url=url, json=payload, headers=headers)
res.encoding = "utf-8"
json_df = res.json()
return json_df
# 中国证券投资基金业协会-信息公示-会员信息
# 中国证券投资基金业协会-信息公示-会员信息-会员机构综合查询
def amac_member_info() -> pd.DataFrame:
"""
中国证券投资基金业协会-信息公示-会员信息-会员机构综合查询
https://gs.amac.org.cn/amac-infodisc/res/pof/member/index.html
:return: 会员机构综合查询
:rtype: pandas.DataFrame
"""
url = "https://gs.amac.org.cn/amac-infodisc/api/pof/pofMember"
params = {
"rand": "0.7665138514630696",
"page": "1",
"size": "20",
}
r = requests.post(url, params=params, json={}, headers=headers)
data_json = r.json()
total_page = data_json["totalPages"]
big_df = pd.DataFrame()
tqdm = get_tqdm()
for page in tqdm(range(0, int(total_page)), leave=False):
params.update({"page": page})
r = requests.post(url, params=params, json={}, headers=headers)
data_json = r.json()
temp_df = pd.DataFrame(data_json["content"])
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
keys_list = [
"managerName",
"memberBehalf",
"memberType",
"memberCode",
"memberDate",
"primaryInvestType",
"markStar",
] # 定义要取的 value 的 keys
manager_data_out = pd.DataFrame(big_df)
manager_data_out = manager_data_out[keys_list]
manager_data_out.columns = [
"机构(会员)名称",
"会员代表",
"会员类型",
"会员编号",
"入会时间",
"机构类型",
"是否星标",
]
manager_data_out["入会时间"] = pd.to_datetime(
manager_data_out["入会时间"], unit="ms"
).dt.date
return manager_data_out
# 中国证券投资基金业协会-信息公示-从业人员信息
# 中国证券投资基金业协会-信息公示-从业人员信息-基金从业人员资格注册信息
def amac_person_fund_org_list(symbol: str = "公募基金管理公司") -> pd.DataFrame:
"""
中国证券投资基金业协会-信息公示-从业人员信息-基金从业人员资格注册信息
https://gs.amac.org.cn/amac-infodisc/res/pof/person/personOrgList.html
:param symbol: choice of {"公募基金管理公司", "公募基金管理公司资管子公司", "商业银行", "证券公司", "证券公司子公司",
"私募基金管理人", "保险公司子公司", "保险公司", "外包服务机构", "期货公司", "期货公司资管子公司", "媒体机构",
"证券投资咨询机构", "评价机构", "外资私募证券基金管理人", "支付结算", "独立服务机构", "地方自律组织", "境外机构",
"律师事务所", "会计师事务所", "交易所", "独立第三方销售机构", "证券公司资管子公司", "证券公司私募基金子公司", "其他"}
:type symbol: str
:return: 基金从业人员资格注册信息
:rtype: pandas.DataFrame
"""
symbol_map = {
"保险公司子公司": "bxgszgs",
"期货公司资管子公司": "qhgszgzgs",
"公募基金管理公司资管子公司": "gmjjglgszgzgs",
"商业银行": "syyh",
"交易所": "jys",
"证券公司私募基金子公司": "zqgssmjjzgs",
"地方自律组织": "dfzlzz",
"证券公司": "zqgs",
"评价机构": "pjjg",
"独立第三方销售机构": "dldsfxsjg",
"证券投资咨询机构": "zqtzzxjg",
"外资私募证券基金管理人": "wzsmzqjjglr",
"境外机构": "jwjg",
"证券公司子公司": "zqgszgs",
"公募基金管理公司": "gmjjglgs",
"媒体机构": "mtjg",
"支付结算": "zfjs",
"证券公司资管子公司": "zqgszgzgs",
"会计师事务所": "kjssws",
"独立服务机构": "dlfwjg",
"律师事务所": "lssws",
"期货公司": "qhgs",
"保险公司": "bxgs",
"其他": "qt",
"外包服务机构": "wbfwjg",
"私募基金管理人": "smjjglr",
}
url = "https://gs.amac.org.cn/amac-infodisc/api/pof/personOrg"
params = {
"rand": "0.7665138514630696",
"page": "1",
"size": "20",
}
r = requests.post(
url,
params=params,
json={"orgType": symbol_map[symbol], "page": "1"},
headers=headers,
)
data_json = r.json()
total_page = data_json["totalPages"]
big_df = pd.DataFrame()
tqdm = get_tqdm()
for page in tqdm(range(0, int(total_page)), leave=False):
params.update({"page": page})
r = requests.post(
url,
params=params,
json={"orgType": symbol_map[symbol], "page": "1"},
verify=False,
headers=headers,
)
data_json = r.json()
temp_df = pd.DataFrame(data_json["content"])
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
keys_list = [
"orgName",
"orgType",
"workerTotalNum",
"operNum",
"salesmanNum",
"investmentManagerNum",
"fundManagerNum",
] # 定义要取的 value 的 keys
manager_data_out = pd.DataFrame(big_df)
manager_data_out = manager_data_out[keys_list]
manager_data_out.reset_index(inplace=True)
manager_data_out["index"] = manager_data_out.index + 1
manager_data_out.columns = [
"序号",
"机构名称",
"机构类型",
"员工人数",
"基金从业资格",
"基金销售业务资格",
"基金经理",
"投资经理",
]
manager_data_out["员工人数"] = pd.to_numeric(manager_data_out["员工人数"])
manager_data_out["基金从业资格"] = pd.to_numeric(manager_data_out["基金从业资格"])
manager_data_out["基金销售业务资格"] = pd.to_numeric(
manager_data_out["基金销售业务资格"]
)
manager_data_out["基金经理"] = pd.to_numeric(manager_data_out["基金经理"])
manager_data_out["投资经理"] = pd.to_numeric(manager_data_out["投资经理"])
return manager_data_out
# 中国证券投资基金业协会-信息公示-从业人员信息-债券投资交易相关人员公示
def amac_person_bond_org_list() -> pd.DataFrame:
"""
中国证券投资基金业协会-信息公示-从业人员信息-债券投资交易相关人员公示
https://human.amac.org.cn/web/org/personPublicity.html
:return: 债券投资交易相关人员公示
:rtype: pandas.DataFrame
"""
import urllib3
import ssl
ctx = ssl.create_default_context()
ctx.options |= ssl.OP_LEGACY_SERVER_CONNECT
# 使用自定义的 SSL 上下文发起 HTTPS 请求
http = urllib3.PoolManager(ssl_context=ctx)
url = "https://human.amac.org.cn/web/api/publicityAddress?rand=0.6288001872566391&pageNum=1&pageSize=5000"
r = http.request(method="GET", url=url)
data_json = r.json()
temp_df = pd.DataFrame(data_json["list"])
temp_df.reset_index(inplace=True)
temp_df["index"] = range(1, len(temp_df) + 1)
temp_df.columns = [
"序号",
"_",
"_",
"机构名称",
"机构类型",
"公示网址",
]
temp_df = temp_df[
[
"序号",
"机构类型",
"机构名称",
"公示网址",
]
]
return temp_df
# 中国证券投资基金业协会-信息公示-私募基金管理人公示
# 中国证券投资基金业协会-信息公示-私募基金管理人公示-私募基金管理人综合查询
def amac_manager_info() -> pd.DataFrame:
"""
中国证券投资基金业协会-信息公示-私募基金管理人公示-私募基金管理人综合查询
https://gs.amac.org.cn/amac-infodisc/res/pof/manager/index.html
:return: 私募基金管理人综合查询
:rtype: pandas.DataFrame
"""
url = "https://gs.amac.org.cn/amac-infodisc/api/pof/manager"
params = {
"rand": "0.7665138514630696",
"page": "1",
"size": "100",
}
r = requests.post(url, params=params, json={}, verify=False, headers=headers)
data_json = r.json()
total_page = data_json["totalPages"]
big_df = pd.DataFrame()
tqdm = get_tqdm()
for page in tqdm(range(0, int(total_page)), leave=False):
params.update({"page": page})
r = requests.post(url, params=params, json={}, verify=False, headers=headers)
data_json = r.json()
temp_df = pd.DataFrame(data_json["content"])
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
keys_list = [
"managerName",
"artificialPersonName",
"primaryInvestType",
"registerProvince",
"registerNo",
"establishDate",
"registerDate",
] # 定义要取的 value 的 keys
manager_data_out = pd.DataFrame(big_df)
manager_data_out = manager_data_out[keys_list]
manager_data_out.columns = [
"私募基金管理人名称",
"法定代表人/执行事务合伙人(委派代表)姓名",
"机构类型",
"注册地",
"登记编号",
"成立时间",
"登记时间",
]
manager_data_out["成立时间"] = pd.to_datetime(
manager_data_out["成立时间"], unit="ms"
).dt.date
manager_data_out["登记时间"] = pd.to_datetime(
manager_data_out["登记时间"], unit="ms"
).dt.date
return manager_data_out
# 中国证券投资基金业协会-信息公示-私募基金管理人公示-私募基金管理人分类公示
def amac_manager_classify_info() -> pd.DataFrame:
"""
中国证券投资基金业协会-信息公示-私募基金管理人公示-私募基金管理人分类公示
https://gs.amac.org.cn/amac-infodisc/res/pof/manager/managerList.html
:return: 私募基金管理人分类公示
:rtype: pandas.DataFrame
"""
url = "https://gs.amac.org.cn/amac-infodisc/api/pof/manager"
params = {
"rand": "0.7665138514630696",
"page": "1",
"size": "100",
}
r = requests.post(url, params=params, json={}, verify=False, headers=headers)
data_json = r.json()
total_page = data_json["totalPages"]
big_df = pd.DataFrame()
tqdm = get_tqdm()
for page in tqdm(range(0, int(total_page)), leave=False):
params.update({"page": page})
r = requests.post(url, params=params, json={}, verify=False, headers=headers)
data_json = r.json()
temp_df = pd.DataFrame(data_json["content"])
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
keys_list = [
"managerName",
"artificialPersonName",
"primaryInvestType",
"registerNo",
"registerProvince",
"officeAdrAgg",
"establishDate",
"registerDate",
"fundCount",
"memberType",
"hasSpecialTips",
"hasCreditTips",
] # 定义要取的 value 的 keys
manager_data_out = pd.DataFrame(big_df)
manager_data_out = manager_data_out[keys_list]
manager_data_out.columns = [
"私募基金管理人名称",
"法定代表人/执行事务合伙人(委派代表)姓名",
"机构类型",
"登记编号",
"注册地",
"办公地",
"成立时间",
"登记时间",
"在管基金数量",
"会员类型",
"是否有提示信息",
"是否有诚信信息",
]
manager_data_out["成立时间"] = pd.to_datetime(
manager_data_out["成立时间"], unit="ms"
).dt.date
manager_data_out["登记时间"] = pd.to_datetime(
manager_data_out["登记时间"], unit="ms"
).dt.date
manager_data_out["在管基金数量"] = pd.to_numeric(manager_data_out["在管基金数量"])
manager_data_out["是否有提示信息"] = manager_data_out["是否有提示信息"].map(
{True: "", False: ""}
)
manager_data_out["是否有诚信信息"] = manager_data_out["是否有诚信信息"].map(
{True: "", False: ""}
)
return manager_data_out
# 中国证券投资基金业协会-信息公示-私募基金管理人公示-证券公司私募基金子公司管理人信息公示
def amac_member_sub_info() -> pd.DataFrame:
"""
中国证券投资基金业协会-信息公示-私募基金管理人公示-证券公司私募基金子公司管理人信息公示
https://gs.amac.org.cn/amac-infodisc/res/pof/member/index.html?primaryInvestType=private
:return: 证券公司私募基金子公司管理人信息公示
:rtype: pandas.DataFrame
"""
url = "https://gs.amac.org.cn/amac-infodisc/api/pof/pofMember"
params = {
"rand": "0.7665138514630696",
"page": "1",
"size": "100",
}
r = requests.post(url, params=params, json={}, verify=False, headers=headers)
data_json = r.json()
total_page = data_json["totalPages"]
big_df = pd.DataFrame()
tqdm = get_tqdm()
for page in tqdm(range(0, int(total_page)), leave=False):
params.update({"page": page})
r = requests.post(url, params=params, json={}, verify=False, headers=headers)
data_json = r.json()
temp_df = pd.DataFrame(data_json["content"])
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
keys_list = [
"managerName",
"memberBehalf",
"memberType",
"memberCode",
"memberDate",
"primaryInvestType",
] # 定义要取的 value 的 keys
manager_data_out = pd.DataFrame(big_df)
manager_data_out = manager_data_out[keys_list]
manager_data_out.columns = [
"机构(会员)名称",
"会员代表",
"会员类型",
"会员编号",
"入会时间",
"公司类型",
]
manager_data_out["入会时间"] = pd.to_datetime(
manager_data_out["入会时间"], unit="ms"
).dt.date
return manager_data_out
# 中国证券投资基金业协会-信息公示-基金产品
# 中国证券投资基金业协会-信息公示-基金产品-私募基金管理人基金产品
def amac_fund_info(start_page: str = "1", end_page: str = "2000") -> pd.DataFrame:
"""
中国证券投资基金业协会-信息公示-基金产品-私募基金管理人基金产品
https://gs.amac.org.cn/amac-infodisc/res/pof/fund/index.html
:param start_page: 开始页码, 获取指定页码直接的数据
:type start_page: str
:param end_page: 结束页码, 获取指定页码直接的数据
:type end_page: str
:return: 私募基金管理人基金产品
:rtype: pandas.DataFrame
"""
url = "https://gs.amac.org.cn/amac-infodisc/api/pof/fund"
params = {
"rand": "0.7665138514630696",
"page": "1",
"size": "100",
}
r = requests.post(url, params=params, json={}, verify=False, headers=headers)
data_json = r.json()
total_page = int(data_json["totalPages"])
if total_page > int(end_page):
real_end_page = int(end_page)
else:
real_end_page = total_page
big_df = pd.DataFrame()
tqdm = get_tqdm()
for page in tqdm(range(int(start_page) - 1, real_end_page), leave=False):
params.update({"page": page})
r = requests.post(url, params=params, json={}, verify=False, headers=headers)
data_json = r.json()
temp_df = pd.DataFrame(data_json["content"])
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
keys_list = [
"fundName",
"managerName",
"managerType",
"workingState",
"putOnRecordDate",
"establishDate",
"mandatorName",
] # 定义要取的 value 的 keys
manager_data_out = big_df[keys_list].copy()
manager_data_out.columns = [
"基金名称",
"私募基金管理人名称",
"私募基金管理人类型",
"运行状态",
"备案时间",
"建立时间",
"托管人名称",
]
manager_data_out["建立时间"] = pd.to_datetime(
manager_data_out["建立时间"], unit="ms"
).dt.date
manager_data_out["备案时间"] = pd.to_datetime(
manager_data_out["备案时间"], unit="ms"
).dt.date
return manager_data_out
# 中国证券投资基金业协会-信息公示-基金产品-证券公司集合资管产品公示
def amac_securities_info() -> pd.DataFrame:
"""
中国证券投资基金业协会-信息公示-基金产品公示-证券公司集合资管产品公示
https://gs.amac.org.cn/amac-infodisc/res/pof/securities/index.html
:return: 证券公司集合资管产品公示
:rtype: pandas.DataFrame
"""
url = "https://gs.amac.org.cn/amac-infodisc/api/pof/securities"
params = {
"rand": "0.7665138514630696",
"page": "1",
"size": "100",
}
r = requests.post(url, params=params, json={}, verify=False, headers=headers)
data_json = r.json()
total_page = data_json["totalPages"]
big_df = pd.DataFrame()
tqdm = get_tqdm()
for page in tqdm(range(0, int(total_page)), leave=False):
params.update({"page": page})
r = requests.post(url, params=params, json={}, verify=False, headers=headers)
data_json = r.json()
temp_df = pd.DataFrame(data_json["content"])
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
keys_list = [
"cpmc",
"cpbm",
"gljg",
"slrq",
"dqr",
"tzlx",
"sffj",
"tgjg",
"barq",
"yzzt",
] # 定义要取的 value 的 keys
manager_data_out = pd.DataFrame(big_df)
manager_data_out = manager_data_out[keys_list]
manager_data_out.columns = [
"产品名称",
"产品编码",
"管理人名称",
"成立日期",
"到期时间",
"投资类型",
"是否分级",
"托管人名称",
"备案日期",
"运作状态",
]
return manager_data_out
# 中国证券投资基金业协会-信息公示-基金产品-证券公司直投基金
def amac_aoin_info() -> pd.DataFrame:
"""
中国证券投资基金业协会-信息公示-基金产品公示-证券公司直投基金
https://gs.amac.org.cn/amac-infodisc/res/aoin/product/index.html
:return: 证券公司直投基金
:rtype: pandas.DataFrame
"""
url = "https://gs.amac.org.cn/amac-infodisc/api/aoin/product"
params = {
"rand": "0.7665138514630696",
"page": "1",
"size": "100",
}
r = requests.post(url, params=params, json={}, verify=False, headers=headers)
data_json = r.json()
total_page = data_json["totalPages"]
big_df = pd.DataFrame()
tqdm = get_tqdm()
for page in tqdm(range(0, int(total_page)), leave=False):
params.update({"page": page})
r = requests.post(url, params=params, json={}, verify=False, headers=headers)
data_json = r.json()
temp_df = pd.DataFrame(data_json["content"])
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
keys_list = [
"code",
"name",
"aoinName",
"managerName",
"createDate",
] # 定义要取的 value 的 keys
manager_data_out = pd.DataFrame(big_df)
manager_data_out = manager_data_out[keys_list]
manager_data_out.columns = [
"产品编码",
"产品名称",
"直投子公司",
"管理机构",
"设立日期",
]
manager_data_out["设立日期"] = pd.to_datetime(
manager_data_out["设立日期"], unit="ms"
).dt.date
return manager_data_out
# 中国证券投资基金业协会-信息公示-基金产品公示-证券公司私募投资基金
def amac_fund_sub_info() -> pd.DataFrame:
"""
中国证券投资基金业协会-信息公示-基金产品公示-证券公司私募投资基金
https://gs.amac.org.cn/amac-infodisc/res/pof/subfund/index.html
:return: 证券公司私募投资基金
:rtype: pandas.DataFrame
"""
url = "https://gs.amac.org.cn/amac-infodisc/api/pof/subfund"
params = {
"rand": "0.7665138514630696",
"page": "1",
"size": "100",
}
r = requests.post(url, params=params, json={}, verify=False, headers=headers)
data_json = r.json()
total_page = data_json["totalPages"]
big_df = pd.DataFrame()
tqdm = get_tqdm()
for page in tqdm(range(0, int(total_page)), leave=False):
params.update({"page": page})
r = requests.post(url, params=params, json={}, verify=False, headers=headers)
data_json = r.json()
temp_df = pd.DataFrame(data_json["content"])
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
keys_list = [
"productCode",
"productName",
"mgrName",
"trustee",
"foundDate",
"registeredDate",
] # 定义要取的 value 的 keys
manager_data_out = pd.DataFrame(big_df)
manager_data_out = manager_data_out[keys_list]
manager_data_out.columns = [
"产品编码",
"产品名称",
"私募基金管理人名称",
"托管人名称",
"成立日期",
"备案日期",
]
manager_data_out["备案日期"] = pd.to_datetime(
manager_data_out["备案日期"], unit="ms"
).dt.date
manager_data_out["成立日期"] = pd.to_datetime(
manager_data_out["成立日期"], unit="ms"
).dt.date
return manager_data_out
# 中国证券投资基金业协会-信息公示-基金产品公示-基金公司及子公司集合资管产品公示
def amac_fund_account_info() -> pd.DataFrame:
"""
中国证券投资基金业协会-信息公示-基金产品公示-基金公司及子公司集合资管产品公示
https://gs.amac.org.cn/amac-infodisc/res/fund/account/index.html
:return: 基金公司及子公司集合资管产品公示
:rtype: pandas.DataFrame
"""
import warnings
warnings.filterwarnings(action="ignore", category=FutureWarning)
url = "https://gs.amac.org.cn/amac-infodisc/api/fund/account"
params = {
"rand": "0.7665138514630696",
"page": "1",
"size": "100",
}
r = requests.post(url, params=params, json={}, verify=False, headers=headers)
data_json = r.json()
total_page = data_json["totalPages"]
big_df = pd.DataFrame()
tqdm = get_tqdm()
for page in tqdm(range(0, int(total_page)), leave=False):
params.update({"page": page})
r = requests.post(url, params=params, json={}, verify=False, headers=headers)
data_json = r.json()
temp_df = pd.DataFrame(data_json["content"])
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
keys_list = [
"registerDate",
"registerCode",
"name",
"manager",
] # 定义要取的 value 的 keys
manager_data_out = pd.DataFrame(big_df)
manager_data_out = manager_data_out[keys_list]
manager_data_out.columns = [
"成立日期",
"产品编码",
"产品名称",
"管理人名称",
]
manager_data_out["成立日期"] = pd.to_datetime(
manager_data_out["成立日期"], unit="ms"
).dt.date
return manager_data_out
# 中国证券投资基金业协会-信息公示-基金产品公示-资产支持专项计划
def amac_fund_abs() -> pd.DataFrame:
"""
中国证券投资基金业协会-信息公示-基金产品公示-资产支持专项计划公示信息
https://gs.amac.org.cn/amac-infodisc/res/fund/abs/index.html
:return: 资产支持专项计划公示信息
:rtype: pandas.DataFrame
"""
url = "https://gs.amac.org.cn/amac-infodisc/api/fund/abs"
params = {
"rand": "0.7665138514630696",
"page": "1",
"size": "100",
}
r = requests.post(url, params=params, json={}, verify=False, headers=headers)
data_json = r.json()
total_page = data_json["totalPages"]
big_df = pd.DataFrame()
tqdm = get_tqdm()
for page in tqdm(range(0, int(total_page)), leave=False):
params.update({"page": page})
r = requests.post(url, params=params, json={}, verify=False, headers=headers)
data_json = r.json()
temp_df = pd.DataFrame(data_json["content"])
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
big_df.reset_index(inplace=True)
big_df["index"] = range(1, len(big_df) + 1)
big_df.columns = [
"编号",
"_",
"_",
"专项计划全称",
"备案编号",
"管理人",
"托管人",
"备案通过时间",
"成立日期",
"预期到期时间",
]
big_df["备案通过时间"] = pd.to_datetime(big_df["备案通过时间"], unit="ms").dt.date
big_df["成立日期"] = pd.to_datetime(big_df["成立日期"], unit="ms").dt.date
big_df["预期到期时间"] = pd.to_datetime(
big_df["预期到期时间"], unit="ms", errors="coerce"
).dt.date
big_df = big_df[
[
"编号",
"备案编号",
"专项计划全称",
"管理人",
"托管人",
"成立日期",
"预期到期时间",
"备案通过时间",
]
]
return big_df
# 中国证券投资基金业协会-信息公示-基金产品公示-期货公司集合资管产品公示
def amac_futures_info() -> pd.DataFrame:
"""
中国证券投资基金业协会-信息公示-基金产品公示-期货公司集合资管产品公示
https://gs.amac.org.cn/amac-infodisc/res/pof/futures/index.html
:return: 期货公司集合资管产品公示
:rtype: pandas.DataFrame
"""
url = "https://gs.amac.org.cn/amac-infodisc/api/pof/futures"
params = {
"rand": "0.7665138514630696",
"page": "1",
"size": "100",
}
r = requests.post(url, params=params, json={}, verify=False, headers=headers)
data_json = r.json()
total_page = data_json["totalPages"]
big_df = pd.DataFrame()
tqdm = get_tqdm()
for page in tqdm(range(0, int(total_page)), leave=False):
params.update({"page": page})
r = requests.post(url, params=params, json={}, verify=False, headers=headers)
data_json = r.json()
temp_df = pd.DataFrame(data_json["content"])
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
keys_list = [
"mpiName",
"mpiProductCode",
"aoiName",
"mpiTrustee",
"mpiCreateDate",
"tzlx",
"sfjgh",
"registeredDate",
"dueDate",
"fundStatus",
] # 定义要取的 value 的 keys
manager_data_out = pd.DataFrame(big_df)
manager_data_out = manager_data_out[keys_list]
manager_data_out.columns = [
"产品名称",
"产品编码",
"管理人名称",
"托管人名称",
"成立日期",
"投资类型",
"是否分级",
"备案日期",
"到期日",
"运作状态",
]
return manager_data_out
# 中国证券投资基金业协会-信息公示-诚信信息
# 中国证券投资基金业协会-信息公示-诚信信息-已注销私募基金管理人名单
def amac_manager_cancelled_info() -> pd.DataFrame:
"""
中国证券投资基金业协会-信息公示-诚信信息公示-已注销私募基金管理人名单
https://gs.amac.org.cn/amac-infodisc/res/cancelled/manager/index.html
主动注销: 100
依公告注销: 200
协会注销: 300
:return: 已注销私募基金管理人名单
:rtype: pandas.DataFrame
"""
url = "https://gs.amac.org.cn/amac-infodisc/api/cancelled/manager"
params = {
"rand": "0.7665138514630696",
"page": "1",
"size": "100",
}
r = requests.post(url, params=params, json={}, verify=False, headers=headers)
data_json = r.json()
total_page = data_json["totalPages"]
big_df = pd.DataFrame()
tqdm = get_tqdm()
for page in tqdm(range(0, int(total_page)), leave=False):
params.update({"page": page})
r = requests.post(url, params=params, json={}, verify=False, headers=headers)
data_json = r.json()
temp_df = pd.DataFrame(data_json["content"])
big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)
keys_list = [
"orgName",
"orgCode",
"orgSignDate",
"cancelDate",
"status",
] # 定义要取的 value 的 keys
manager_data_out = pd.DataFrame(big_df)
manager_data_out = manager_data_out[keys_list]
manager_data_out.columns = [
"管理人名称",
"统一社会信用代码",
"登记时间",
"注销时间",
"注销类型",
]
manager_data_out["登记时间"] = pd.to_datetime(
manager_data_out["登记时间"], unit="ms"
).dt.date
manager_data_out["注销时间"] = pd.to_datetime(
manager_data_out["注销时间"], unit="ms"
).dt.date
manager_data_out.sort_values(["注销时间"], ignore_index=True, inplace=True)
return manager_data_out
if __name__ == "__main__":
# 中国证券投资基金业协会-信息公示-会员信息
# 中国证券投资基金业协会-信息公示-会员信息-会员机构综合查询
amac_member_info_df = amac_member_info()
print(amac_member_info_df)
# 中国证券投资基金业协会-信息公示-从业人员信息
# 中国证券投资基金业协会-信息公示-从业人员信息-基金从业人员资格注册信息
amac_person_fund_org_list_df = amac_person_fund_org_list(symbol="公募基金管理公司")
print(amac_person_fund_org_list_df)
# 中国证券投资基金业协会-信息公示-从业人员信息
# 中国证券投资基金业协会-信息公示-从业人员信息-债券投资交易相关人员公示
amac_person_bond_org_list_df = amac_person_bond_org_list()
print(amac_person_bond_org_list_df)
# 中国证券投资基金业协会-信息公示-私募基金管理人公示
# 中国证券投资基金业协会-信息公示-私募基金管理人公示-私募基金管理人综合查询
amac_manager_info_df = amac_manager_info()
print(amac_manager_info_df)
# 中国证券投资基金业协会-信息公示-私募基金管理人公示-私募基金管理人分类公示
amac_manager_classify_info_df = amac_manager_classify_info()
print(amac_manager_classify_info_df)
# 中国证券投资基金业协会-信息公示-私募基金管理人公示-证券公司私募基金子公司管理人信息公示
amac_member_sub_info_df = amac_member_sub_info()
print(amac_member_sub_info_df)
# 中国证券投资基金业协会-信息公示-基金产品
# 中国证券投资基金业协会-信息公示-基金产品-私募基金管理人基金产品
amac_fund_info_df = amac_fund_info(start_page="1", end_page="100")
print(amac_fund_info_df)
example_df = amac_fund_info_df[
amac_fund_info_df["私募基金管理人名称"].str.contains("聚宽")
]
print(example_df)
# 中国证券投资基金业协会-信息公示-基金产品-证券公司集合资管产品公示
amac_securities_info_df = amac_securities_info()
print(amac_securities_info_df)
# 中国证券投资基金业协会-信息公示-基金产品-证券公司直投基金
amac_aoin_info_df = amac_aoin_info()
print(amac_aoin_info_df)
# 中国证券投资基金业协会-信息公示-基金产品公示-证券公司私募投资基金
amac_fund_sub_info_df = amac_fund_sub_info()
print(amac_fund_sub_info_df)
# 中国证券投资基金业协会-信息公示-基金产品公示-基金公司及子公司集合资管产品公示
amac_fund_account_info_df = amac_fund_account_info()
print(amac_fund_account_info_df)
# 中国证券投资基金业协会-信息公示-基金产品公示-资产支持专项计划
amac_fund_abs_df = amac_fund_abs()
print(amac_fund_abs_df)
# 中国证券投资基金业协会-信息公示-基金产品公示-期货公司集合资管产品公示
amac_futures_info_df = amac_futures_info()
print(amac_futures_info_df)
# 中国证券投资基金业协会-信息公示-诚信信息
# 中国证券投资基金业协会-信息公示-诚信信息-已注销私募基金管理人名单
amac_manager_cancelled_info_df = amac_manager_cancelled_info()
print(amac_manager_cancelled_info_df)