{"name": "amac_fund_info", "tool_from": "akshare", "description": "中国证券投资基金业协会-信息公示-基金产品-私募基金管理人基金产品\nhttps://gs.amac.org.cn/amac-infodisc/res/pof/fund/index.html\n:param start_page: 开始页码, 获取指定页码直接的数据\n:type start_page: str\n:param end_page: 结束页码, 获取指定页码直接的数据\n:type end_page: str\n:return: 私募基金管理人基金产品\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"start_page": {"type": "string", "description": "开始页码, 获取指定页码直接的数据"}, "end_page": {"type": "string", "description": "结束页码, 获取指定页码直接的数据"}}, "required": []}, "python_code": "def amac_fund_info(start_page: str = \"1\", end_page: str = \"2000\") -> pd.DataFrame:\n \"\"\"\n 中国证券投资基金业协会-信息公示-基金产品-私募基金管理人基金产品\n https://gs.amac.org.cn/amac-infodisc/res/pof/fund/index.html\n :param start_page: 开始页码, 获取指定页码直接的数据\n :type start_page: str\n :param end_page: 结束页码, 获取指定页码直接的数据\n :type end_page: str\n :return: 私募基金管理人基金产品\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://gs.amac.org.cn/amac-infodisc/api/pof/fund\"\n params = {\n \"rand\": \"0.7665138514630696\",\n \"page\": \"1\",\n \"size\": \"100\",\n }\n r = requests.post(url, params=params, json={}, verify=False, headers=headers)\n data_json = r.json()\n total_page = int(data_json[\"totalPages\"])\n if total_page > int(end_page):\n real_end_page = int(end_page)\n else:\n real_end_page = total_page\n big_df = pd.DataFrame()\n tqdm = get_tqdm()\n for page in tqdm(range(int(start_page) - 1, real_end_page), leave=False):\n params.update({\"page\": page})\n r = requests.post(url, params=params, json={}, verify=False, headers=headers)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"content\"])\n big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)\n keys_list = [\n \"fundName\",\n \"managerName\",\n \"managerType\",\n \"workingState\",\n \"putOnRecordDate\",\n \"establishDate\",\n \"mandatorName\",\n ] # 定义要取的 value 的 keys\n manager_data_out = big_df[keys_list].copy()\n manager_data_out.columns = [\n \"基金名称\",\n \"私募基金管理人名称\",\n \"私募基金管理人类型\",\n \"运行状态\",\n \"备案时间\",\n \"建立时间\",\n \"托管人名称\",\n ]\n manager_data_out[\"建立时间\"] = pd.to_datetime(\n manager_data_out[\"建立时间\"], unit=\"ms\"\n ).dt.date\n manager_data_out[\"备案时间\"] = pd.to_datetime(\n manager_data_out[\"备案时间\"], unit=\"ms\"\n ).dt.date\n return manager_data_out\n", "financial_tags": {"timeliness": "as_filed", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "amac_person_fund_org_list", "tool_from": "akshare", "description": "中国证券投资基金业协会-信息公示-从业人员信息-基金从业人员资格注册信息\nhttps://gs.amac.org.cn/amac-infodisc/res/pof/person/personOrgList.html\n:param symbol: choice of {\"公募基金管理公司\", \"公募基金管理公司资管子公司\", \"商业银行\", \"证券公司\", \"证券公司子公司\",\n\"私募基金管理人\", \"保险公司子公司\", \"保险公司\", \"外包服务机构\", \"期货公司\", \"期货公司资管子公司\", \"媒体机构\",\n\"证券投资咨询机构\", \"评价机构\", \"外资私募证券基金管理人\", \"支付结算\", \"独立服务机构\", \"地方自律组织\", \"境外机构\",\n\"律师事务所\", \"会计师事务所\", \"交易所\", \"独立第三方销售机构\", \"证券公司资管子公司\", \"证券公司私募基金子公司\", \"其他\"}\n:type symbol: str\n:return: 基金从业人员资格注册信息\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "choice of {\"公募基金管理公司\", \"公募基金管理公司资管子公司\", \"商业银行\", \"证券公司\", \"证券公司子公司\","}}, "required": []}, "python_code": "def amac_person_fund_org_list(symbol: str = \"公募基金管理公司\") -> pd.DataFrame:\n \"\"\"\n 中国证券投资基金业协会-信息公示-从业人员信息-基金从业人员资格注册信息\n https://gs.amac.org.cn/amac-infodisc/res/pof/person/personOrgList.html\n :param symbol: choice of {\"公募基金管理公司\", \"公募基金管理公司资管子公司\", \"商业银行\", \"证券公司\", \"证券公司子公司\",\n \"私募基金管理人\", \"保险公司子公司\", \"保险公司\", \"外包服务机构\", \"期货公司\", \"期货公司资管子公司\", \"媒体机构\",\n \"证券投资咨询机构\", \"评价机构\", \"外资私募证券基金管理人\", \"支付结算\", \"独立服务机构\", \"地方自律组织\", \"境外机构\",\n \"律师事务所\", \"会计师事务所\", \"交易所\", \"独立第三方销售机构\", \"证券公司资管子公司\", \"证券公司私募基金子公司\", \"其他\"}\n :type symbol: str\n :return: 基金从业人员资格注册信息\n :rtype: pandas.DataFrame\n \"\"\"\n symbol_map = {\n \"保险公司子公司\": \"bxgszgs\",\n \"期货公司资管子公司\": \"qhgszgzgs\",\n \"公募基金管理公司资管子公司\": \"gmjjglgszgzgs\",\n \"商业银行\": \"syyh\",\n \"交易所\": \"jys\",\n \"证券公司私募基金子公司\": \"zqgssmjjzgs\",\n \"地方自律组织\": \"dfzlzz\",\n \"证券公司\": \"zqgs\",\n \"评价机构\": \"pjjg\",\n \"独立第三方销售机构\": \"dldsfxsjg\",\n \"证券投资咨询机构\": \"zqtzzxjg\",\n \"外资私募证券基金管理人\": \"wzsmzqjjglr\",\n \"境外机构\": \"jwjg\",\n \"证券公司子公司\": \"zqgszgs\",\n \"公募基金管理公司\": \"gmjjglgs\",\n \"媒体机构\": \"mtjg\",\n \"支付结算\": \"zfjs\",\n \"证券公司资管子公司\": \"zqgszgzgs\",\n \"会计师事务所\": \"kjssws\",\n \"独立服务机构\": \"dlfwjg\",\n \"律师事务所\": \"lssws\",\n \"期货公司\": \"qhgs\",\n \"保险公司\": \"bxgs\",\n \"其他\": \"qt\",\n \"外包服务机构\": \"wbfwjg\",\n \"私募基金管理人\": \"smjjglr\",\n }\n url = \"https://gs.amac.org.cn/amac-infodisc/api/pof/personOrg\"\n params = {\n \"rand\": \"0.7665138514630696\",\n \"page\": \"1\",\n \"size\": \"20\",\n }\n r = requests.post(\n url,\n params=params,\n json={\"orgType\": symbol_map[symbol], \"page\": \"1\"},\n headers=headers,\n )\n data_json = r.json()\n total_page = data_json[\"totalPages\"]\n big_df = pd.DataFrame()\n tqdm = get_tqdm()\n for page in tqdm(range(0, int(total_page)), leave=False):\n params.update({\"page\": page})\n r = requests.post(\n url,\n params=params,\n json={\"orgType\": symbol_map[symbol], \"page\": \"1\"},\n verify=False,\n headers=headers,\n )\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"content\"])\n big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)\n keys_list = [\n \"orgName\",\n \"orgType\",\n \"workerTotalNum\",\n \"operNum\",\n \"salesmanNum\",\n \"investmentManagerNum\",\n \"fundManagerNum\",\n ] # 定义要取的 value 的 keys\n manager_data_out = pd.DataFrame(big_df)\n manager_data_out = manager_data_out[keys_list]\n manager_data_out.reset_index(inplace=True)\n manager_data_out[\"index\"] = manager_data_out.index + 1\n manager_data_out.columns = [\n \"序号\",\n \"机构名称\",\n \"机构类型\",\n \"员工人数\",\n \"基金从业资格\",\n \"基金销售业务资格\",\n \"基金经理\",\n \"投资经理\",\n ]\n manager_data_out[\"员工人数\"] = pd.to_numeric(manager_data_out[\"员工人数\"])\n manager_data_out[\"基金从业资格\"] = pd.to_numeric(manager_data_out[\"基金从业资格\"])\n manager_data_out[\"基金销售业务资格\"] = pd.to_numeric(\n manager_data_out[\"基金销售业务资格\"]\n )\n manager_data_out[\"基金经理\"] = pd.to_numeric(manager_data_out[\"基金经理\"])\n manager_data_out[\"投资经理\"] = pd.to_numeric(manager_data_out[\"投资经理\"])\n return manager_data_out\n", "financial_tags": {"timeliness": "as_filed", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "article_epu_index", "tool_from": "akshare", "description": "经济政策不确定性指数\nhttps://www.policyuncertainty.com/index.html\n:param symbol: 指定的国家名称, e.g. “China”\n:type symbol: str\n:return: 经济政策不确定性指数数据\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "指定的国家名称, e.g. “China”"}}, "required": []}, "python_code": "def article_epu_index(symbol: str = \"China\") -> pd.DataFrame:\n \"\"\"\n 经济政策不确定性指数\n https://www.policyuncertainty.com/index.html\n :param symbol: 指定的国家名称, e.g. “China”\n :type symbol: str\n :return: 经济政策不确定性指数数据\n :rtype: pandas.DataFrame\n \"\"\"\n # 切勿修改 http 否则会读取不到 csv 文件\n if symbol == \"China New\":\n symbol = \"SCMP_China\"\n if symbol == \"China\":\n symbol = \"SCMP_China\"\n if symbol == \"USA\":\n symbol = \"US\"\n if symbol == \"Hong Kong\":\n symbol = \"HK\"\n epu_df = pd.read_excel(\n io=f\"http://www.policyuncertainty.com/media/{symbol}_EPU_Data_Annotated.xlsx\",\n engine=\"openpyxl\",\n )\n return epu_df\n if symbol in [\"Germany\", \"France\", \"Italy\"]: # 欧洲\n symbol = \"Europe\"\n if symbol == \"South Korea\":\n symbol = \"Korea\"\n if symbol == \"Spain New\":\n symbol = \"Spain\"\n if symbol in [\"Ireland\", \"Chile\", \"Colombia\", \"Netherlands\", \"Singapore\", \"Sweden\"]:\n epu_df = pd.read_excel(\n io=f\"http://www.policyuncertainty.com/media/{symbol}_Policy_Uncertainty_Data.xlsx\",\n engine=\"openpyxl\",\n )\n return epu_df\n if symbol == \"Greece\":\n epu_df = pd.read_excel(\n io=f\"http://www.policyuncertainty.com/media/FKT_{symbol}_Policy_Uncertainty_Data.xlsx\",\n engine=\"openpyxl\",\n )\n return epu_df\n url = f\"http://www.policyuncertainty.com/media/{symbol}_Policy_Uncertainty_Data.csv\"\n epu_df = pd.read_csv(url)\n return epu_df\n", "financial_tags": {"timeliness": "monthly", "intent_type": "informational", "regulatory_domains": ["macro", "economic_policy"]}} {"name": "bank_fjcf_table_detail", "tool_from": "akshare", "description": "获取 首页-政务信息-行政处罚-银保监分局本级-XXXX行政处罚信息公开表 数据\n:param page: 需要获取前 page 页的内容, 总页数请通过 ak.bank_fjcf_total_page() 获取\n:type page: int\n:param item: choice of {\"机关\", \"本级\", \"分局本级\"}\n:type item: str\n:param begin: 开始页面\n:type begin: int\n:return: 返回所有行政处罚信息公开表的集合, 按第一页到最后一页的顺序排列\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"page": {"type": "integer", "description": "需要获取前 page 页的内容, 总页数请通过 ak.bank_fjcf_total_page() 获取"}, "item": {"type": "string", "description": "choice of {\"机关\", \"本级\", \"分局本级\"}"}, "begin": {"type": "integer", "description": "开始页面"}}, "required": []}, "python_code": "def bank_fjcf_table_detail(\n page: int = 5, item: str = \"分局本级\", begin: int = 1\n) -> pd.DataFrame:\n \"\"\"\n 获取 首页-政务信息-行政处罚-银保监分局本级-XXXX行政处罚信息公开表 数据\n :param page: 需要获取前 page 页的内容, 总页数请通过 ak.bank_fjcf_total_page() 获取\n :type page: int\n :param item: choice of {\"机关\", \"本级\", \"分局本级\"}\n :type item: str\n :param begin: 开始页面\n :type begin: int\n :return: 返回所有行政处罚信息公开表的集合, 按第一页到最后一页的顺序排列\n :rtype: pandas.DataFrame\n \"\"\"\n id_list = bank_fjcf_page_url(page=page, item=item, begin=begin)[\"docId\"]\n big_df = pd.DataFrame()\n for item in id_list:\n url = f\"https://www.nfra.gov.cn/cn/static/data/DocInfo/SelectByDocId/data_docId={item}.json\"\n res = requests.get(url)\n try:\n table_list = pd.read_html(StringIO(res.json()[\"data\"][\"docClob\"]))[0]\n if table_list.shape[1] == 2:\n table_list = table_list.iloc[:, 1].values.tolist()\n else:\n table_list = table_list.iloc[:, 3:].values.tolist()\n # 部分旧表缺少字段,所以填充\n if len(table_list) == 7:\n table_list.insert(2, pd.NA)\n table_list.insert(3, pd.NA)\n table_list.insert(4, pd.NA)\n elif len(table_list) == 8:\n table_list.insert(1, pd.NA)\n table_list.insert(2, pd.NA)\n elif len(table_list) == 9:\n table_list.insert(2, pd.NA)\n elif len(table_list) == 11:\n table_list = table_list[2:]\n table_list.insert(2, pd.NA)\n else:\n print(\n f\"{item} 异常,请通过 https://www.nfra.gov.cn/cn/view/pages/ItemDetail.html?docId={item} 查看\"\n )\n continue\n\n # 部分会变成嵌套列表, 这里还原\n table_list = [\n item[0] if isinstance(item, list) else item for item in table_list\n ]\n table_list.append(str(item))\n table_list.append(res.json()[\"data\"][\"publishDate\"])\n table_df = pd.DataFrame(table_list)\n table_df.columns = [\"内容\"]\n big_df = pd.concat(objs=[big_df, table_df.T], ignore_index=True)\n # 解决有些页面缺少字段的问题, 都放到 try 里面\n except: # noqa: E722\n warnings.warn(f\"{item} 不是表格型数据,将跳过采集\")\n continue\n if big_df.empty:\n return pd.DataFrame()\n big_df.columns = [\n \"行政处罚决定书文号\",\n \"姓名\",\n \"单位\", # 20200108 新增\n \"单位名称\",\n \"主要负责人姓名\",\n \"主要违法违规事实(案由)\",\n \"行政处罚依据\",\n \"行政处罚决定\",\n \"作出处罚决定的机关名称\",\n \"作出处罚决定的日期\",\n \"处罚ID\",\n \"处罚公布日期\",\n ]\n return big_df\n", "financial_tags": {"timeliness": "as_filed", "intent_type": "informational", "regulatory_domains": ["economic_policy"]}} {"name": "bond_buy_back_hist_em", "tool_from": "akshare", "description": "东方财富网-行情中心-债券市场-质押式回购-历史数据\nhttps://quote.eastmoney.com/center/gridlist.html#bond_sh_buyback\n:param symbol: 质押式回购代码\n:type symbol: str\n:return: 历史数据\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "质押式回购代码"}}, "required": []}, "python_code": "def bond_buy_back_hist_em(symbol: str = \"204001\"):\n \"\"\"\n 东方财富网-行情中心-债券市场-质押式回购-历史数据\n https://quote.eastmoney.com/center/gridlist.html#bond_sh_buyback\n :param symbol: 质押式回购代码\n :type symbol: str\n :return: 历史数据\n :rtype: pandas.DataFrame\n \"\"\"\n if symbol.startswith(\"1\"):\n market_id = \"0\"\n else:\n market_id = \"1\"\n url = \"https://push2his.eastmoney.com/api/qt/stock/kline/get\"\n params = {\n \"secid\": f\"{market_id}.{symbol}\",\n \"klt\": \"101\",\n \"fqt\": \"1\",\n \"lmt\": \"10000\",\n \"end\": \"20500000\",\n \"iscca\": \"1\",\n \"fields1\": \"f1,f2,f3,f4,f5,f6,f7,f8\",\n \"fields2\": \"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64\",\n \"forcect\": \"1\"\n }\n r = requests.get(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame([item.split(',') for item in data_json['data']['klines']])\n temp_df.columns = [\n \"日期\",\n \"开盘\",\n \"收盘\",\n \"最高\",\n \"最低\",\n \"成交量\",\n \"成交额\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n ]\n temp_df = temp_df[[\n \"日期\",\n \"开盘\",\n \"收盘\",\n \"最高\",\n \"最低\",\n \"成交量\",\n \"成交额\",\n ]]\n temp_df[\"日期\"] = pd.to_datetime(temp_df[\"日期\"], errors=\"coerce\").dt.date\n temp_df[\"开盘\"] = pd.to_numeric(temp_df[\"开盘\"], errors=\"coerce\")\n temp_df[\"收盘\"] = pd.to_numeric(temp_df[\"收盘\"], errors=\"coerce\")\n temp_df[\"最高\"] = pd.to_numeric(temp_df[\"最高\"], errors=\"coerce\")\n temp_df[\"最低\"] = pd.to_numeric(temp_df[\"最低\"], errors=\"coerce\")\n temp_df[\"成交量\"] = pd.to_numeric(temp_df[\"成交量\"], errors=\"coerce\")\n temp_df[\"成交额\"] = pd.to_numeric(temp_df[\"成交额\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["bond"]}} {"name": "bond_cash_summary_sse", "tool_from": "akshare", "description": "上登债券信息网-市场数据-市场统计-市场概览-债券现券市场概览\nhttp://bond.sse.com.cn/data/statistics/overview/bondow/\n:param date: 指定日期\n:type date: str\n:return: 债券成交概览\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "指定日期"}}, "required": []}, "python_code": "def bond_cash_summary_sse(date: str = \"20210111\") -> pd.DataFrame:\n \"\"\"\n 上登债券信息网-市场数据-市场统计-市场概览-债券现券市场概览\n http://bond.sse.com.cn/data/statistics/overview/bondow/\n :param date: 指定日期\n :type date: str\n :return: 债券成交概览\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"http://query.sse.com.cn/commonExcelDd.do\"\n headers = {\n \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\",\n \"Referer\": \"http://bond.sse.com.cn/\",\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36\",\n }\n params = {\n \"sqlId\": \"COMMON_SSEBOND_SCSJ_SCTJ_SCGL_ZQXQSCGL_CX_L\",\n \"TRADE_DATE\": f\"{date[:4]}-{date[4:6]}-{date[6:]}\",\n }\n r = requests.get(url, params=params, headers=headers)\n temp_df = pd.read_excel(BytesIO(r.content), engine=\"xlrd\")\n temp_df.columns = [\n \"债券现货\",\n \"托管只数\",\n \"托管市值\",\n \"托管面值\",\n \"数据日期\",\n ]\n temp_df[\"托管只数\"] = pd.to_numeric(temp_df[\"托管只数\"])\n temp_df[\"托管市值\"] = pd.to_numeric(temp_df[\"托管市值\"])\n temp_df[\"托管面值\"] = pd.to_numeric(temp_df[\"托管面值\"])\n temp_df[\"数据日期\"] = pd.to_datetime(temp_df[\"数据日期\"]).dt.date\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["bond"]}} {"name": "bond_cb_adj_logs_jsl", "tool_from": "akshare", "description": "集思录-可转债转股价-调整记录\nhttps://www.jisilu.cn/data/cbnew/#cb\n:param symbol: 可转债代码\n:type symbol: str\n:return: 转股价调整记录\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "可转债代码"}}, "required": []}, "python_code": "def bond_cb_adj_logs_jsl(symbol: str = \"128013\") -> pd.DataFrame:\n \"\"\"\n 集思录-可转债转股价-调整记录\n https://www.jisilu.cn/data/cbnew/#cb\n :param symbol: 可转债代码\n :type symbol: str\n :return: 转股价调整记录\n :rtype: pandas.DataFrame\n \"\"\"\n url = f\"https://www.jisilu.cn/data/cbnew/adj_logs/?bond_id={symbol}\"\n r = requests.get(url)\n data_text = r.text\n if \"\" not in data_text:\n # 1. 该可转债没有转股价调整记录,服务端返回文本 '暂无数据'\n # 2. 无效可转债代码,服务端返回 {\"timestamp\":1639565628,\"isError\":1,\"msg\":\"无效代码格式\"}\n # 以上两种情况,返回空的 DataFrame\n return pd.DataFrame()\n else:\n temp_df = pd.read_html(StringIO(data_text), parse_dates=True)[0]\n temp_df.columns = [item.replace(\" \", \"\") for item in temp_df.columns]\n temp_df[\"下修前转股价\"] = pd.to_numeric(\n temp_df[\"下修前转股价\"], errors=\"coerce\"\n )\n temp_df[\"下修后转股价\"] = pd.to_numeric(\n temp_df[\"下修后转股价\"], errors=\"coerce\"\n )\n temp_df[\"下修底价\"] = pd.to_numeric(temp_df[\"下修底价\"], errors=\"coerce\")\n temp_df[\"股东大会日\"] = pd.to_datetime(\n temp_df[\"股东大会日\"], format=\"%Y-%m-%d\", errors=\"coerce\"\n ).dt.date\n temp_df[\"新转股价生效日期\"] = pd.to_datetime(\n temp_df[\"新转股价生效日期\"], format=\"%Y-%m-%d\", errors=\"coerce\"\n ).dt.date\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["bond"]}} {"name": "bond_cb_jsl", "tool_from": "akshare", "description": "集思录可转债\nhttps://www.jisilu.cn/data/cbnew/#cb\n:param cookie: 输入获取到的游览器 cookie\n:type cookie: str\n:return: 集思录可转债\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"cookie": {"type": "string", "description": "输入获取到的游览器 cookie"}}, "required": []}, "python_code": "def bond_cb_jsl(cookie: str = None) -> pd.DataFrame:\n \"\"\"\n 集思录可转债\n https://www.jisilu.cn/data/cbnew/#cb\n :param cookie: 输入获取到的游览器 cookie\n :type cookie: str\n :return: 集思录可转债\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://www.jisilu.cn/data/cbnew/cb_list_new/\"\n headers = {\n \"accept\": \"application/json, text/javascript, */*; q=0.01\",\n \"accept-encoding\": \"gzip, deflate, br\",\n \"accept-language\": \"zh-CN,zh;q=0.9,en;q=0.8\",\n \"cache-control\": \"no-cache\",\n \"content-length\": \"220\",\n \"content-type\": \"application/x-www-form-urlencoded; charset=UTF-8\",\n \"cookie\": cookie,\n \"origin\": \"https://www.jisilu.cn\",\n \"pragma\": \"no-cache\",\n \"referer\": \"https://www.jisilu.cn/data/cbnew/\",\n \"sec-ch-ua\": '\" Not;A Brand\";v=\"99\", \"Google Chrome\";v=\"91\", \"Chromium\";v=\"91\"',\n \"sec-ch-ua-mobile\": \"?0\",\n \"sec-fetch-dest\": \"empty\",\n \"sec-fetch-mode\": \"cors\",\n \"sec-fetch-site\": \"same-origin\",\n \"user-agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/91.0.4472.164 Safari/537.36\",\n \"x-requested-with\": \"XMLHttpRequest\",\n }\n params = {\n \"___jsl\": f\"LST___t={int(time.time() * 1000)}\",\n }\n payload = {\n \"fprice\": \"\",\n \"tprice\": \"\",\n \"curr_iss_amt\": \"\",\n \"volume\": \"\",\n \"svolume\": \"\",\n \"premium_rt\": \"\",\n \"ytm_rt\": \"\",\n \"market\": \"\",\n \"rating_cd\": \"\",\n \"is_search\": \"N\",\n \"market_cd[]\": \"shmb\", # noqa: F601\n \"market_cd[]\": \"shkc\", # noqa: F601\n \"market_cd[]\": \"szmb\", # noqa: F601\n \"market_cd[]\": \"szcy\", # noqa: F601\n \"btype\": \"\",\n \"listed\": \"Y\",\n \"qflag\": \"N\",\n \"sw_cd\": \"\",\n \"bond_ids\": \"\",\n \"rp\": \"50\",\n }\n r = requests.post(url, params=params, json=payload, headers=headers)\n data_json = r.json()\n temp_df = pd.DataFrame([item[\"cell\"] for item in data_json[\"rows\"]])\n temp_df.rename(\n columns={\n \"bond_id\": \"代码\",\n \"bond_nm\": \"转债名称\",\n \"price\": \"现价\",\n \"increase_rt\": \"涨跌幅\",\n \"stock_id\": \"正股代码\",\n \"stock_nm\": \"正股名称\",\n \"sprice\": \"正股价\",\n \"sincrease_rt\": \"正股涨跌\",\n \"pb\": \"正股PB\",\n \"convert_price\": \"转股价\",\n \"convert_value\": \"转股价值\",\n \"premium_rt\": \"转股溢价率\",\n \"dblow\": \"双低\",\n \"rating_cd\": \"债券评级\",\n \"put_convert_price\": \"回售触发价\",\n \"force_redeem_price\": \"强赎触发价\",\n \"convert_amt_ratio\": \"转债占比\",\n \"maturity_dt\": \"到期时间\",\n \"year_left\": \"剩余年限\",\n \"curr_iss_amt\": \"剩余规模\",\n \"volume\": \"成交额\",\n \"turnover_rt\": \"换手率\",\n \"ytm_rt\": \"到期税前收益\",\n },\n inplace=True,\n )\n\n temp_df = temp_df[\n [\n \"代码\",\n \"转债名称\",\n \"现价\",\n \"涨跌幅\",\n \"正股代码\",\n \"正股名称\",\n \"正股价\",\n \"正股涨跌\",\n \"正股PB\",\n \"转股价\",\n \"转股价值\",\n \"转股溢价率\",\n \"债券评级\",\n \"回售触发价\",\n \"强赎触发价\",\n \"转债占比\",\n \"到期时间\",\n \"剩余年限\",\n \"剩余规模\",\n \"成交额\",\n \"换手率\",\n \"到期税前收益\",\n \"双低\",\n ]\n ]\n temp_df[\"到期时间\"] = pd.to_datetime(temp_df[\"到期时间\"], errors=\"coerce\").dt.date\n temp_df[\"现价\"] = pd.to_numeric(temp_df[\"现价\"], errors=\"coerce\")\n temp_df[\"涨跌幅\"] = pd.to_numeric(temp_df[\"涨跌幅\"], errors=\"coerce\")\n temp_df[\"正股价\"] = pd.to_numeric(temp_df[\"正股价\"], errors=\"coerce\")\n temp_df[\"正股涨跌\"] = pd.to_numeric(temp_df[\"正股涨跌\"], errors=\"coerce\")\n temp_df[\"正股PB\"] = pd.to_numeric(temp_df[\"正股PB\"], errors=\"coerce\")\n temp_df[\"转股价\"] = pd.to_numeric(temp_df[\"转股价\"], errors=\"coerce\")\n temp_df[\"转股价值\"] = pd.to_numeric(temp_df[\"转股价值\"], errors=\"coerce\")\n temp_df[\"转股溢价率\"] = pd.to_numeric(temp_df[\"转股溢价率\"], errors=\"coerce\")\n temp_df[\"回售触发价\"] = pd.to_numeric(temp_df[\"回售触发价\"], errors=\"coerce\")\n temp_df[\"强赎触发价\"] = pd.to_numeric(temp_df[\"强赎触发价\"], errors=\"coerce\")\n temp_df[\"转债占比\"] = pd.to_numeric(temp_df[\"转债占比\"], errors=\"coerce\")\n temp_df[\"剩余年限\"] = pd.to_numeric(temp_df[\"剩余年限\"], errors=\"coerce\")\n temp_df[\"剩余规模\"] = pd.to_numeric(temp_df[\"剩余规模\"], errors=\"coerce\")\n temp_df[\"成交额\"] = pd.to_numeric(temp_df[\"成交额\"], errors=\"coerce\")\n temp_df[\"换手率\"] = pd.to_numeric(temp_df[\"换手率\"], errors=\"coerce\")\n temp_df[\"到期税前收益\"] = pd.to_numeric(temp_df[\"到期税前收益\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "realtime", "intent_type": "informational", "regulatory_domains": ["bond"]}} {"name": "bond_cb_profile_sina", "tool_from": "akshare", "description": "新浪财经-债券-可转债-详情资料\nhttps://money.finance.sina.com.cn/bond/info/sz128039.html\n:param symbol: 带市场标识的转债代码\n:type symbol: str\n:return: 可转债-详情资料\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "带市场标识的转债代码"}}, "required": []}, "python_code": "def bond_cb_profile_sina(symbol: str = \"sz128039\") -> pd.DataFrame:\n \"\"\"\n 新浪财经-债券-可转债-详情资料\n https://money.finance.sina.com.cn/bond/info/sz128039.html\n :param symbol: 带市场标识的转债代码\n :type symbol: str\n :return: 可转债-详情资料\n :rtype: pandas.DataFrame\n \"\"\"\n url = f\"https://money.finance.sina.com.cn/bond/info/{symbol}.html\"\n r = requests.get(url)\n temp_df = pd.read_html(StringIO(r.text))[0]\n temp_df.columns = [\"item\", \"value\"]\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["bond"]}} {"name": "bond_cb_summary_sina", "tool_from": "akshare", "description": "新浪财经-债券-可转债-债券概况\nhttps://money.finance.sina.com.cn/bond/quotes/sh155255.html\n:param symbol: 带市场标识的转债代码\n:type symbol: str\n:return: 可转债-债券概况\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "带市场标识的转债代码"}}, "required": []}, "python_code": "def bond_cb_summary_sina(symbol: str = \"sh155255\") -> pd.DataFrame:\n \"\"\"\n 新浪财经-债券-可转债-债券概况\n https://money.finance.sina.com.cn/bond/quotes/sh155255.html\n :param symbol: 带市场标识的转债代码\n :type symbol: str\n :return: 可转债-债券概况\n :rtype: pandas.DataFrame\n \"\"\"\n url = f\"https://money.finance.sina.com.cn/bond/quotes/{symbol}.html\"\n r = requests.get(url)\n temp_df = pd.read_html(StringIO(r.text))[10]\n part1 = temp_df.iloc[:, 0:2].copy()\n part1.columns = [\"item\", \"value\"]\n part2 = temp_df.iloc[:, 2:4].copy()\n part2.columns = [\"item\", \"value\"]\n part3 = temp_df.iloc[:, 4:6].copy()\n part3.columns = [\"item\", \"value\"]\n big_df = pd.concat(objs=[part1, part2, part3], ignore_index=True)\n return big_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["bond"]}} {"name": "bond_china_close_return", "tool_from": "akshare", "description": "收盘收益率曲线历史数据\nhttps://www.chinamoney.com.cn/chinese/bkcurvclosedyhis/?bondType=CYCC000&reference=1\n:param symbol: 需要获取的指标\n:type period: choice of {'0.1', '0.5', '1'}\n:param period: 期限间隔\n:type symbol: str\n:param start_date: 开始日期, 结束日期和开始日期不要超过 1 个月\n:type start_date: str\n:param end_date: 结束日期, 结束日期和开始日期不要超过 1 个月\n:type end_date: str\n:return: 收盘收益率曲线历史数据\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "需要获取的指标"}, "period": {"type": "string", "description": "期限间隔"}, "start_date": {"type": "string", "description": "开始日期, 结束日期和开始日期不要超过 1 个月"}, "end_date": {"type": "string", "description": "结束日期, 结束日期和开始日期不要超过 1 个月"}}, "required": []}, "python_code": "def bond_china_close_return(\n symbol: str = \"国债\",\n period: str = \"1\",\n start_date: str = \"20231101\",\n end_date: str = \"20231101\",\n) -> pd.DataFrame:\n \"\"\"\n 收盘收益率曲线历史数据\n https://www.chinamoney.com.cn/chinese/bkcurvclosedyhis/?bondType=CYCC000&reference=1\n :param symbol: 需要获取的指标\n :type period: choice of {'0.1', '0.5', '1'}\n :param period: 期限间隔\n :type symbol: str\n :param start_date: 开始日期, 结束日期和开始日期不要超过 1 个月\n :type start_date: str\n :param end_date: 结束日期, 结束日期和开始日期不要超过 1 个月\n :type end_date: str\n :return: 收盘收益率曲线历史数据\n :rtype: pandas.DataFrame\n \"\"\"\n name_code_df = bond_china_close_return_map()\n symbol_code = name_code_df[name_code_df[\"cnLabel\"] == symbol][\"value\"].values[0]\n url = \"https://www.chinamoney.com.cn/ags/ms/cm-u-bk-currency/ClsYldCurvHis\"\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/108.0.0.0 Safari/537.36\",\n }\n params = {\n \"lang\": \"CN\",\n \"reference\": \"1,2,3\",\n \"bondType\": symbol_code,\n \"startDate\": \"-\".join([start_date[:4], start_date[4:6], start_date[6:]]),\n \"endDate\": \"-\".join([end_date[:4], end_date[4:6], end_date[6:]]),\n \"termId\": period,\n \"pageNum\": \"1\",\n \"pageSize\": \"50\",\n }\n r = requests.get(url, params=params, headers=headers)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"records\"])\n del temp_df[\"newDateValue\"]\n temp_df.columns = [\n \"日期\",\n \"期限\",\n \"到期收益率\",\n \"即期收益率\",\n \"远期收益率\",\n ]\n temp_df = temp_df[\n [\n \"日期\",\n \"期限\",\n \"到期收益率\",\n \"即期收益率\",\n \"远期收益率\",\n ]\n ]\n temp_df[\"日期\"] = pd.to_datetime(temp_df[\"日期\"], errors=\"coerce\").dt.date\n temp_df[\"期限\"] = pd.to_numeric(temp_df[\"期限\"], errors=\"coerce\")\n temp_df[\"到期收益率\"] = pd.to_numeric(temp_df[\"到期收益率\"], errors=\"coerce\")\n temp_df[\"即期收益率\"] = pd.to_numeric(temp_df[\"即期收益率\"], errors=\"coerce\")\n temp_df[\"远期收益率\"] = pd.to_numeric(temp_df[\"远期收益率\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["bond"]}} {"name": "bond_china_yield", "tool_from": "akshare", "description": "中国债券信息网-国债及其他债券收益率曲线\nhttps://www.chinabond.com.cn/\nhttps://yield.chinabond.com.cn/cbweb-pbc-web/pbc/historyQuery?startDate=2019-02-07&endDate=2020-02-04&gjqx=0&qxId=ycqx&locale=cn_ZH\n注意: end_date - start_date 应该小于一年\n:param start_date: 需要查询的日期, 返回在该日期之后一年内的数据\n:type start_date: str\n:param end_date: 需要查询的日期, 返回在该日期之前一年内的数据\n:type end_date: str\n:return: 返回在指定日期之间之前一年内的数据\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"start_date": {"type": "string", "description": "需要查询的日期, 返回在该日期之后一年内的数据"}, "end_date": {"type": "string", "description": "需要查询的日期, 返回在该日期之前一年内的数据"}}, "required": []}, "python_code": "def bond_china_yield(\n start_date: str = \"20200204\", end_date: str = \"20210124\"\n) -> pd.DataFrame:\n \"\"\"\n 中国债券信息网-国债及其他债券收益率曲线\n https://www.chinabond.com.cn/\n https://yield.chinabond.com.cn/cbweb-pbc-web/pbc/historyQuery?startDate=2019-02-07&endDate=2020-02-04&gjqx=0&qxId=ycqx&locale=cn_ZH\n 注意: end_date - start_date 应该小于一年\n :param start_date: 需要查询的日期, 返回在该日期之后一年内的数据\n :type start_date: str\n :param end_date: 需要查询的日期, 返回在该日期之前一年内的数据\n :type end_date: str\n :return: 返回在指定日期之间之前一年内的数据\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://yield.chinabond.com.cn/cbweb-pbc-web/pbc/historyQuery\"\n params = {\n \"startDate\": \"-\".join([start_date[:4], start_date[4:6], start_date[6:]]),\n \"endDate\": \"-\".join([end_date[:4], end_date[4:6], end_date[6:]]),\n \"gjqx\": \"0\",\n \"qxId\": \"ycqx\",\n \"locale\": \"cn_ZH\",\n }\n res = requests.get(url, params=params, headers=headers)\n data_text = res.text.replace(\" \", \"\")\n data_df = pd.read_html(StringIO(data_text), header=0)[1]\n data_df[\"日期\"] = pd.to_datetime(data_df[\"日期\"], errors=\"coerce\").dt.date\n data_df[\"3月\"] = pd.to_numeric(data_df[\"3月\"], errors=\"coerce\")\n data_df[\"6月\"] = pd.to_numeric(data_df[\"6月\"], errors=\"coerce\")\n data_df[\"1年\"] = pd.to_numeric(data_df[\"1年\"], errors=\"coerce\")\n data_df[\"3年\"] = pd.to_numeric(data_df[\"3年\"], errors=\"coerce\")\n data_df[\"5年\"] = pd.to_numeric(data_df[\"5年\"], errors=\"coerce\")\n data_df[\"7年\"] = pd.to_numeric(data_df[\"7年\"], errors=\"coerce\")\n data_df[\"10年\"] = pd.to_numeric(data_df[\"10年\"], errors=\"coerce\")\n data_df[\"30年\"] = pd.to_numeric(data_df[\"30年\"], errors=\"coerce\")\n data_df.sort_values(by=\"日期\", inplace=True)\n data_df.reset_index(inplace=True, drop=True)\n return data_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["bond", "macro"]}} {"name": "bond_composite_index_cbond", "tool_from": "akshare", "description": "中国债券信息网-中债指数-中债指数族系-总指数-综合类指数-中债-综合指数\nhttps://yield.chinabond.com.cn/cbweb-mn/indices/single_index_query\n:param indicator: choice of {\"全价\", \"净价\", \"财富\", \"平均市值法久期\", \"平均现金流法久期\", \"平均市值法凸性\", \"平均现金流法凸性\", \"平均现金流法到期收益率\", \"平均市值法到期收益率\", \"平均基点价值\", \"平均待偿期\", \"平均派息率\", \"指数上日总市值\", \"财富指数涨跌幅\", \"全价指数涨跌幅\", \"净价指数涨跌幅\", \"现券结算量\"}\n:type indicator: str\n:param period: choice of {\"总值\", \"1年以下\", \"1-3年\", \"3-5年\", \"5-7年\", \"7-10年\", \"10年以上\", \"0-3个月\", \"3-6个月\", \"6-9个月\", \"9-12个月\", \"0-6个月\", \"6-12个月\"}\n:type period: str\n:return: 新综合指数\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"indicator": {"type": "string", "description": "choice of {\"全价\", \"净价\", \"财富\", \"平均市值法久期\", \"平均现金流法久期\", \"平均市值法凸性\", \"平均现金流法凸性\", \"平均现金流法到期收益率\", \"平均市值法到期收益率\", \"平均基点价值\", \"平均待偿期\", \"平均派息率\", \"指数上日总市值\", \"财富指数涨跌幅\", \"全价指数涨跌幅\", \"净价指数涨跌幅\", \"现券结算量\"}"}, "period": {"type": "string", "description": "choice of {\"总值\", \"1年以下\", \"1-3年\", \"3-5年\", \"5-7年\", \"7-10年\", \"10年以上\", \"0-3个月\", \"3-6个月\", \"6-9个月\", \"9-12个月\", \"0-6个月\", \"6-12个月\"}"}}, "required": []}, "python_code": "def bond_composite_index_cbond(\n indicator: str = \"财富\", period: str = \"总值\"\n) -> pd.DataFrame:\n \"\"\"\n 中国债券信息网-中债指数-中债指数族系-总指数-综合类指数-中债-综合指数\n https://yield.chinabond.com.cn/cbweb-mn/indices/single_index_query\n :param indicator: choice of {\"全价\", \"净价\", \"财富\", \"平均市值法久期\", \"平均现金流法久期\", \"平均市值法凸性\", \"平均现金流法凸性\", \"平均现金流法到期收益率\", \"平均市值法到期收益率\", \"平均基点价值\", \"平均待偿期\", \"平均派息率\", \"指数上日总市值\", \"财富指数涨跌幅\", \"全价指数涨跌幅\", \"净价指数涨跌幅\", \"现券结算量\"}\n :type indicator: str\n :param period: choice of {\"总值\", \"1年以下\", \"1-3年\", \"3-5年\", \"5-7年\", \"7-10年\", \"10年以上\", \"0-3个月\", \"3-6个月\", \"6-9个月\", \"9-12个月\", \"0-6个月\", \"6-12个月\"}\n :type period: str\n :return: 新综合指数\n :rtype: pandas.DataFrame\n \"\"\"\n indicator_map = {\n \"全价\": \"QJZS\",\n \"净价\": \"JJZS\",\n \"财富\": \"CFZS\",\n \"平均市值法久期\": \"PJSZFJQ\",\n \"平均现金流法久期\": \"PJXJLFJQ\",\n \"平均市值法凸性\": \"PJSZFTX\",\n \"平均现金流法凸性\": \"PJXJLFTX\",\n \"平均现金流法到期收益率\": \"PJDQSYL\",\n \"平均市值法到期收益率\": \"PJSZFDQSYL\",\n \"平均基点价值\": \"PJJDJZ\",\n \"平均待偿期\": \"PJDCQ\",\n \"平均派息率\": \"PJPXL\",\n \"指数上日总市值\": \"ZSZSZ\",\n \"财富指数涨跌幅\": \"CFZSZDF\",\n \"全价指数涨跌幅\": \"QJZSZDF\",\n \"净价指数涨跌幅\": \"JJZSZDF\",\n \"现券结算量\": \"XQJSL\",\n }\n period_map = {\n \"总值\": \"00\",\n \"1年以下\": \"01\",\n \"1-3年\": \"02\",\n \"3-5年\": \"03\",\n \"5-7年\": \"04\",\n \"7-10年\": \"05\",\n \"10年以上\": \"06\",\n \"0-3个月\": \"07\",\n \"3-6个月\": \"08\",\n \"6-9个月\": \"09\",\n \"9-12个月\": \"10\",\n \"0-6个月\": \"11\",\n \"6-12个月\": \"12\",\n }\n url = \"https://yield.chinabond.com.cn/cbweb-mn/indices/singleIndexQuery\"\n params = {\n \"indexid\": \"2c90818811afed8d0111c0c672b31578\",\n \"\": \"\", # noqa: F601\n \"qxlxt\": period_map[period],\n \"\": \"\", # noqa: F601\n \"zslxt\": indicator_map[indicator],\n \"\": \"\", # noqa: F601\n \"lx\": \"1\",\n \"\": \"\", # noqa: F601\n \"locale\": \"\",\n }\n r = requests.post(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame.from_dict(\n data_json[f\"{indicator_map[indicator]}_{period_map[period]}\"],\n orient=\"index\",\n )\n temp_df.reset_index(inplace=True)\n temp_df.columns = [\"date\", \"value\"]\n temp_df[\"date\"] = pd.to_datetime(temp_df[\"date\"], unit=\"ms\").dt.date\n temp_df[\"value\"] = pd.to_numeric(temp_df[\"value\"])\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["bond"]}} {"name": "bond_corporate_issue_cninfo", "tool_from": "akshare", "description": "巨潮资讯-数据中心-专题统计-债券报表-债券发行-企业债发行\nhttp://webapi.cninfo.com.cn/#/thematicStatistics\n:param start_date: 开始统计时间\n:type start_date: str\n:param end_date: 开始统计时间\n:type end_date: str\n:return: 企业债发行\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"start_date": {"type": "string", "description": "开始统计时间"}, "end_date": {"type": "string", "description": "开始统计时间"}}, "required": []}, "python_code": "def bond_corporate_issue_cninfo(\n start_date: str = \"20210911\", end_date: str = \"20211110\"\n) -> pd.DataFrame:\n \"\"\"\n 巨潮资讯-数据中心-专题统计-债券报表-债券发行-企业债发行\n http://webapi.cninfo.com.cn/#/thematicStatistics\n :param start_date: 开始统计时间\n :type start_date: str\n :param end_date: 开始统计时间\n :type end_date: str\n :return: 企业债发行\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"http://webapi.cninfo.com.cn/api/sysapi/p_sysapi1122\"\n js_code = py_mini_racer.MiniRacer()\n js_content = _get_file_content_cninfo(\"cninfo.js\")\n js_code.eval(js_content)\n mcode = js_code.call(\"getResCode1\")\n headers = {\n \"Accept\": \"*/*\",\n \"Accept-Enckey\": mcode,\n \"Accept-Encoding\": \"gzip, deflate\",\n \"Accept-Language\": \"zh-CN,zh;q=0.9,en;q=0.8\",\n \"Cache-Control\": \"no-cache\",\n \"Content-Length\": \"0\",\n \"Host\": \"webapi.cninfo.com.cn\",\n \"Origin\": \"http://webapi.cninfo.com.cn\",\n \"Pragma\": \"no-cache\",\n \"Proxy-Connection\": \"keep-alive\",\n \"Referer\": \"http://webapi.cninfo.com.cn/\",\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/93.0.4577.63 Safari/537.36\",\n \"X-Requested-With\": \"XMLHttpRequest\",\n }\n params = {\n \"sdate\": \"-\".join([start_date[:4], start_date[4:6], start_date[6:]]),\n \"edate\": \"-\".join([end_date[:4], end_date[4:6], end_date[6:]]),\n }\n r = requests.post(url, headers=headers, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"records\"])\n temp_df.rename(\n columns={\n \"SECNAME\": \"债券简称\",\n \"DECLAREDATE\": \"公告日期\",\n \"F004D\": \"交易所网上发行终止日\",\n \"F003D\": \"交易所网上发行起始日\",\n \"F008N\": \"发行面值\",\n \"SECCODE\": \"债券代码\",\n \"F007N\": \"发行价格\",\n \"F006N\": \"实际发行总量\",\n \"F005N\": \"计划发行总量\",\n \"F022N\": \"最小认购单位\",\n \"F017V\": \"承销方式\",\n \"F052N\": \"最低认购额\",\n \"F015V\": \"发行范围\",\n \"BONDNAME\": \"债券名称\",\n \"F014V\": \"发行对象\",\n \"F013V\": \"发行方式\",\n \"F023V\": \"募资用途说明\",\n },\n inplace=True,\n )\n temp_df = temp_df[\n [\n \"债券代码\",\n \"债券简称\",\n \"公告日期\",\n \"交易所网上发行起始日\",\n \"交易所网上发行终止日\",\n \"计划发行总量\",\n \"实际发行总量\",\n \"发行面值\",\n \"发行价格\",\n \"发行方式\",\n \"发行对象\",\n \"发行范围\",\n \"承销方式\",\n \"最小认购单位\",\n \"募资用途说明\",\n \"最低认购额\",\n \"债券名称\",\n ]\n ]\n temp_df[\"公告日期\"] = pd.to_datetime(temp_df[\"公告日期\"], errors=\"coerce\").dt.date\n temp_df[\"交易所网上发行起始日\"] = pd.to_datetime(\n temp_df[\"交易所网上发行起始日\"], errors=\"coerce\"\n ).dt.date\n temp_df[\"交易所网上发行终止日\"] = pd.to_datetime(\n temp_df[\"交易所网上发行终止日\"], errors=\"coerce\"\n ).dt.date\n temp_df[\"计划发行总量\"] = pd.to_numeric(temp_df[\"计划发行总量\"], errors=\"coerce\")\n temp_df[\"实际发行总量\"] = pd.to_numeric(temp_df[\"实际发行总量\"], errors=\"coerce\")\n temp_df[\"发行面值\"] = pd.to_numeric(temp_df[\"发行面值\"], errors=\"coerce\")\n temp_df[\"发行价格\"] = pd.to_numeric(temp_df[\"发行价格\"], errors=\"coerce\")\n temp_df[\"最小认购单位\"] = pd.to_numeric(temp_df[\"最小认购单位\"], errors=\"coerce\")\n temp_df[\"最低认购额\"] = pd.to_numeric(temp_df[\"最低认购额\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "as_filed", "intent_type": "informational", "regulatory_domains": ["bond"]}} {"name": "bond_cov_issue_cninfo", "tool_from": "akshare", "description": "巨潮资讯-数据中心-专题统计-债券报表-债券发行-可转债发行\nhttp://webapi.cninfo.com.cn/#/thematicStatistics\n:param start_date: 开始统计时间\n:type start_date: str\n:param end_date: 开始统计时间\n:type end_date: str\n:return: 可转债发行\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"start_date": {"type": "string", "description": "开始统计时间"}, "end_date": {"type": "string", "description": "开始统计时间"}}, "required": []}, "python_code": "def bond_cov_issue_cninfo(\n start_date: str = \"20210913\", end_date: str = \"20211112\"\n) -> pd.DataFrame:\n \"\"\"\n 巨潮资讯-数据中心-专题统计-债券报表-债券发行-可转债发行\n http://webapi.cninfo.com.cn/#/thematicStatistics\n :param start_date: 开始统计时间\n :type start_date: str\n :param end_date: 开始统计时间\n :type end_date: str\n :return: 可转债发行\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"http://webapi.cninfo.com.cn/api/sysapi/p_sysapi1123\"\n js_code = py_mini_racer.MiniRacer()\n js_content = _get_file_content_cninfo(\"cninfo.js\")\n js_code.eval(js_content)\n mcode = js_code.call(\"getResCode1\")\n headers = {\n \"Accept\": \"*/*\",\n \"Accept-Enckey\": mcode,\n \"Accept-Encoding\": \"gzip, deflate\",\n \"Accept-Language\": \"zh-CN,zh;q=0.9,en;q=0.8\",\n \"Cache-Control\": \"no-cache\",\n \"Content-Length\": \"0\",\n \"Host\": \"webapi.cninfo.com.cn\",\n \"Origin\": \"http://webapi.cninfo.com.cn\",\n \"Pragma\": \"no-cache\",\n \"Proxy-Connection\": \"keep-alive\",\n \"Referer\": \"http://webapi.cninfo.com.cn/\",\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/93.0.4577.63 Safari/537.36\",\n \"X-Requested-With\": \"XMLHttpRequest\",\n }\n params = {\n \"sdate\": \"-\".join([start_date[:4], start_date[4:6], start_date[6:]]),\n \"edate\": \"-\".join([end_date[:4], end_date[4:6], end_date[6:]]),\n }\n r = requests.post(url, headers=headers, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"records\"])\n temp_df.rename(\n columns={\n \"F029D\": \"发行起始日\",\n \"SECNAME\": \"债券简称\",\n \"F027D\": \"转股开始日期\",\n \"F003D\": \"发行终止日\",\n \"F007N\": \"发行面值\",\n \"F053D\": \"转股终止日期\",\n \"F005N\": \"计划发行总量\",\n \"F051D\": \"网上申购日期\",\n \"F026N\": \"初始转股价格\",\n \"F066N\": \"网上申购数量下限\",\n \"F052N\": \"发行价格\",\n \"BONDNAME\": \"债券名称\",\n \"F014V\": \"发行对象\",\n \"F002V\": \"交易市场\",\n \"F032V\": \"网上申购简称\",\n \"F086V\": \"转股代码\",\n \"DECLAREDATE\": \"公告日期\",\n \"F028D\": \"债权登记日\",\n \"F004D\": \"优先申购日\",\n \"F068D\": \"网上申购中签结果公告日及退款日\",\n \"F054D\": \"优先申购缴款日\",\n \"F008N\": \"网上申购数量上限\",\n \"SECCODE\": \"债券代码\",\n \"F006N\": \"实际发行总量\",\n \"F067N\": \"网上申购单位\",\n \"F065N\": \"配售价格\",\n \"F017V\": \"承销方式\",\n \"F015V\": \"发行范围\",\n \"F013V\": \"发行方式\",\n \"F021V\": \"募资用途说明\",\n \"F031V\": \"网上申购代码\",\n },\n inplace=True,\n )\n temp_df = temp_df[\n [\n \"债券代码\",\n \"债券简称\",\n \"公告日期\",\n \"发行起始日\",\n \"发行终止日\",\n \"计划发行总量\",\n \"实际发行总量\",\n \"发行面值\",\n \"发行价格\",\n \"发行方式\",\n \"发行对象\",\n \"发行范围\",\n \"承销方式\",\n \"募资用途说明\",\n \"初始转股价格\",\n \"转股开始日期\",\n \"转股终止日期\",\n \"网上申购日期\",\n \"网上申购代码\",\n \"网上申购简称\",\n \"网上申购数量上限\",\n \"网上申购数量下限\",\n \"网上申购单位\",\n \"网上申购中签结果公告日及退款日\",\n \"优先申购日\",\n \"配售价格\",\n \"债权登记日\",\n \"优先申购缴款日\",\n \"转股代码\",\n \"交易市场\",\n \"债券名称\",\n ]\n ]\n temp_df[\"公告日期\"] = pd.to_datetime(temp_df[\"公告日期\"], errors=\"coerce\").dt.date\n temp_df[\"发行起始日\"] = pd.to_datetime(\n temp_df[\"发行起始日\"], errors=\"coerce\"\n ).dt.date\n temp_df[\"发行终止日\"] = pd.to_datetime(\n temp_df[\"发行终止日\"], errors=\"coerce\"\n ).dt.date\n temp_df[\"转股开始日期\"] = pd.to_datetime(\n temp_df[\"转股开始日期\"], errors=\"coerce\"\n ).dt.date\n temp_df[\"转股终止日期\"] = pd.to_datetime(\n temp_df[\"转股终止日期\"], errors=\"coerce\"\n ).dt.date\n temp_df[\"转股终止日期\"] = pd.to_datetime(\n temp_df[\"转股终止日期\"], errors=\"coerce\"\n ).dt.date\n temp_df[\"网上申购日期\"] = pd.to_datetime(\n temp_df[\"网上申购日期\"], errors=\"coerce\"\n ).dt.date\n temp_df[\"网上申购中签结果公告日及退款日\"] = pd.to_datetime(\n temp_df[\"网上申购中签结果公告日及退款日\"], errors=\"coerce\"\n ).dt.date\n temp_df[\"债权登记日\"] = pd.to_datetime(\n temp_df[\"债权登记日\"], errors=\"coerce\"\n ).dt.date\n temp_df[\"优先申购日\"] = pd.to_datetime(\n temp_df[\"优先申购日\"], errors=\"coerce\"\n ).dt.date\n temp_df[\"优先申购缴款日\"] = pd.to_datetime(\n temp_df[\"优先申购缴款日\"], errors=\"coerce\"\n ).dt.date\n temp_df[\"计划发行总量\"] = pd.to_numeric(temp_df[\"计划发行总量\"], errors=\"coerce\")\n temp_df[\"实际发行总量\"] = pd.to_numeric(temp_df[\"实际发行总量\"], errors=\"coerce\")\n temp_df[\"发行面值\"] = pd.to_numeric(temp_df[\"发行面值\"], errors=\"coerce\")\n temp_df[\"发行价格\"] = pd.to_numeric(temp_df[\"发行价格\"], errors=\"coerce\")\n temp_df[\"初始转股价格\"] = pd.to_numeric(temp_df[\"初始转股价格\"], errors=\"coerce\")\n temp_df[\"网上申购数量上限\"] = pd.to_numeric(\n temp_df[\"网上申购数量上限\"], errors=\"coerce\"\n )\n temp_df[\"网上申购数量下限\"] = pd.to_numeric(\n temp_df[\"网上申购数量下限\"], errors=\"coerce\"\n )\n temp_df[\"网上申购单位\"] = pd.to_numeric(temp_df[\"网上申购单位\"], errors=\"coerce\")\n temp_df[\"配售价格\"] = pd.to_numeric(temp_df[\"配售价格\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "as_filed", "intent_type": "informational", "regulatory_domains": ["bond"]}} {"name": "bond_deal_summary_sse", "tool_from": "akshare", "description": "上登债券信息网-市场数据-市场统计-市场概览-债券成交概览\nhttp://bond.sse.com.cn/data/statistics/overview/turnover/\n:param date: 指定日期\n:type date: str\n:return: 债券成交概览\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "指定日期"}}, "required": []}, "python_code": "def bond_deal_summary_sse(date: str = \"20210104\") -> pd.DataFrame:\n \"\"\"\n 上登债券信息网-市场数据-市场统计-市场概览-债券成交概览\n http://bond.sse.com.cn/data/statistics/overview/turnover/\n :param date: 指定日期\n :type date: str\n :return: 债券成交概览\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"http://query.sse.com.cn/commonExcelDd.do\"\n headers = {\n \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\",\n \"Referer\": \"http://bond.sse.com.cn/\",\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36\",\n }\n params = {\n \"sqlId\": \"COMMON_SSEBOND_SCSJ_SCTJ_SCGL_ZQCJGL_CX_L\",\n \"TRADE_DATE\": f\"{date[:4]}-{date[4:6]}-{date[6:]}\",\n }\n r = requests.get(url, params=params, headers=headers)\n temp_df = pd.read_excel(BytesIO(r.content))\n temp_df.columns = [\n \"债券类型\",\n \"当日成交笔数\",\n \"当日成交金额\",\n \"当年成交笔数\",\n \"当年成交金额\",\n \"数据日期\",\n ]\n temp_df[\"当日成交笔数\"] = pd.to_numeric(temp_df[\"当日成交笔数\"])\n temp_df[\"当日成交金额\"] = pd.to_numeric(temp_df[\"当日成交金额\"])\n temp_df[\"当年成交笔数\"] = pd.to_numeric(temp_df[\"当年成交笔数\"])\n temp_df[\"当年成交金额\"] = pd.to_numeric(temp_df[\"当年成交金额\"])\n temp_df[\"数据日期\"] = pd.to_datetime(temp_df[\"数据日期\"]).dt.date\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["bond"]}} {"name": "bond_debt_nafmii", "tool_from": "akshare", "description": "中国银行间市场交易商协会-非金融企业债务融资工具注册信息系统\nhttp://zhuce.nafmii.org.cn/fans/publicQuery/manager\n:param page: 输入数字页码\n:type page: int\n:return: 指定 sector 和 indicator 的数据\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"page": {"type": "string", "description": "输入数字页码"}}, "required": []}, "python_code": "def bond_debt_nafmii(page: str = \"1\") -> pd.DataFrame:\n \"\"\"\n 中国银行间市场交易商协会-非金融企业债务融资工具注册信息系统\n http://zhuce.nafmii.org.cn/fans/publicQuery/manager\n :param page: 输入数字页码\n :type page: int\n :return: 指定 sector 和 indicator 的数据\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"http://zhuce.nafmii.org.cn/fans/publicQuery/releFileProjDataGrid\"\n payload = {\n \"regFileName\": \"\",\n \"itemType\": \"\",\n \"startTime\": \"\",\n \"endTime\": \"\",\n \"entityName\": \"\",\n \"leadManager\": \"\",\n \"regPrdtType\": \"\",\n \"page\": page,\n \"rows\": 50,\n }\n payload.update({\"page\": page})\n r = requests.post(url, data=payload)\n data_json = r.json() # 数据类型为 json 格式\n temp_df = pd.DataFrame(data_json[\"rows\"])\n temp_df.rename(\n columns={\n \"firstIssueAmount\": \"金额\",\n \"isReg\": \"注册或备案\",\n \"regFileName\": \"债券名称\",\n \"regNoticeNo\": \"注册通知书文号\",\n \"regPrdtType\": \"品种\",\n \"releaseTime\": \"更新日期\",\n \"projPhase\": \"项目状态\",\n },\n inplace=True,\n )\n if \"注册通知书文号\" not in temp_df.columns:\n temp_df[\"注册通知书文号\"] = pd.NA\n temp_df = temp_df[\n [\n \"债券名称\",\n \"品种\",\n \"注册或备案\",\n \"金额\",\n \"注册通知书文号\",\n \"更新日期\",\n \"项目状态\",\n ]\n ]\n temp_df[\"金额\"] = pd.to_numeric(temp_df[\"金额\"], errors=\"coerce\")\n temp_df[\"更新日期\"] = pd.to_datetime(temp_df[\"更新日期\"], errors=\"coerce\").dt.date\n return temp_df\n", "financial_tags": {"timeliness": "as_filed", "intent_type": "informational", "regulatory_domains": ["bond"]}} {"name": "bond_info_cm", "tool_from": "akshare", "description": "中国外汇交易中心暨全国银行间同业拆借中心-数据-债券信息-信息查询\nhttps://www.chinamoney.com.cn/chinese/scsjzqxx/\n:param bond_name: 债券名称\n:type bond_name: str\n:param bond_code: 债券代码\n:type bond_code: str\n:param bond_issue: 发行人/受托机构\n:type bond_issue: str\n:param bond_type: 债券类型\n:type bond_type: str\n:param coupon_type: 息票类型\n:type coupon_type: str\n:param issue_year: 发行年份\n:type issue_year: str\n:param underwriter: 主承销商\n:type underwriter: str\n:param grade: 评级等级\n:type grade: str\n:return: 信息查询结果\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"bond_name": {"type": "string", "description": "债券名称"}, "bond_code": {"type": "string", "description": "债券代码"}, "bond_issue": {"type": "string", "description": "发行人/受托机构"}, "bond_type": {"type": "string", "description": "债券类型"}, "coupon_type": {"type": "string", "description": "息票类型"}, "issue_year": {"type": "string", "description": "发行年份"}, "underwriter": {"type": "string", "description": "主承销商"}, "grade": {"type": "string", "description": "评级等级"}}, "required": []}, "python_code": "@functools.lru_cache()\ndef bond_info_cm(\n bond_name: str = \"\",\n bond_code: str = \"\",\n bond_issue: str = \"\",\n bond_type: str = \"\",\n coupon_type: str = \"\",\n issue_year: str = \"\",\n underwriter: str = \"\",\n grade: str = \"\",\n) -> pd.DataFrame:\n \"\"\"\n 中国外汇交易中心暨全国银行间同业拆借中心-数据-债券信息-信息查询\n https://www.chinamoney.com.cn/chinese/scsjzqxx/\n :param bond_name: 债券名称\n :type bond_name: str\n :param bond_code: 债券代码\n :type bond_code: str\n :param bond_issue: 发行人/受托机构\n :type bond_issue: str\n :param bond_type: 债券类型\n :type bond_type: str\n :param coupon_type: 息票类型\n :type coupon_type: str\n :param issue_year: 发行年份\n :type issue_year: str\n :param underwriter: 主承销商\n :type underwriter: str\n :param grade: 评级等级\n :type grade: str\n :return: 信息查询结果\n :rtype: pandas.DataFrame\n \"\"\"\n bond_china_close_return_map()\n if bond_type:\n bond_type_df = bond_info_cm_query(symbol=\"债券类型\")\n bond_type_df_value = bond_type_df[bond_type_df[\"name\"] == bond_type][\n \"code\"\n ].values[0]\n else:\n bond_type_df_value = \"\"\n\n if coupon_type:\n coupon_type_df = bond_info_cm_query(symbol=\"息票类型\")\n coupon_type_df_value = coupon_type_df[coupon_type_df[\"name\"] == coupon_type][\n \"code\"\n ].values[0]\n else:\n coupon_type_df_value = \"\"\n\n if underwriter:\n underwriter_df = bond_info_cm_query(symbol=\"主承销商\")\n underwriter_value = underwriter_df[underwriter_df[\"name\"] == underwriter][\n \"code\"\n ].values[0]\n else:\n underwriter_value = \"\"\n\n url = \"https://www.chinamoney.com.cn/ags/ms/cm-u-bond-md/BondMarketInfoList2\"\n payload = {\n \"pageNo\": \"1\",\n \"pageSize\": \"15\",\n \"bondName\": bond_name,\n \"bondCode\": bond_code,\n \"issueEnty\": bond_issue,\n \"bondType\": bond_type_df_value if bond_type_df_value else \"\",\n \"bondSpclPrjctVrty\": \"\",\n \"couponType\": coupon_type_df_value if coupon_type_df_value else \"\",\n \"issueYear\": issue_year,\n \"entyDefinedCode\": underwriter_value if underwriter_value else \"\",\n \"rtngShrt\": grade,\n }\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/109.0.0.0 Safari/537.36\"\n }\n r = requests.post(url, data=payload, headers=headers)\n data_json = r.json()\n total_page = data_json[\"data\"][\"pageTotal\"]\n big_df = pd.DataFrame()\n tqdm = get_tqdm()\n for page in tqdm(range(1, total_page + 1), leave=False):\n payload.update({\"pageNo\": page})\n r = requests.post(url, data=payload, headers=headers)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"data\"][\"resultList\"])\n big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)\n big_df.rename(\n columns={\n \"bondDefinedCode\": \"查询代码\",\n \"bondName\": \"债券简称\",\n \"bondCode\": \"债券代码\",\n \"issueStartDate\": \"发行日期\",\n \"issueEndDate\": \"-\",\n \"bondTypeCode\": \"-\",\n \"bondType\": \"债券类型\",\n \"entyFullName\": \"发行人/受托机构\",\n \"entyDefinedCode\": \"-\",\n \"debtRtng\": \"最新债项评级\",\n \"isin\": \"-\",\n \"inptTp\": \"-\",\n },\n inplace=True,\n )\n big_df = big_df[\n [\n \"债券简称\",\n \"债券代码\",\n \"发行人/受托机构\",\n \"债券类型\",\n \"发行日期\",\n \"最新债项评级\",\n \"查询代码\",\n ]\n ]\n return big_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["bond"]}} {"name": "bond_info_cm_query", "tool_from": "akshare", "description": "中国外汇交易中心暨全国银行间同业拆借中心-查询相关指标的参数\nhttps://www.chinamoney.com.cn/chinese/scsjzqxx/\n:param symbol: choice of {\"主承销商\", \"债券类型\", \"息票类型\", \"发行年份\", \"评级等级\"}\n:type symbol: str\n:return: 查询相关指标的参数\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "choice of {\"主承销商\", \"债券类型\", \"息票类型\", \"发行年份\", \"评级等级\"}"}}, "required": []}, "python_code": "@functools.lru_cache()\ndef bond_info_cm_query(symbol: str = \"评级等级\") -> pd.DataFrame:\n \"\"\"\n 中国外汇交易中心暨全国银行间同业拆借中心-查询相关指标的参数\n https://www.chinamoney.com.cn/chinese/scsjzqxx/\n :param symbol: choice of {\"主承销商\", \"债券类型\", \"息票类型\", \"发行年份\", \"评级等级\"}\n :type symbol: str\n :return: 查询相关指标的参数\n :rtype: pandas.DataFrame\n \"\"\"\n bond_china_close_return_map()\n if symbol == \"主承销商\":\n url = \"https://www.chinamoney.com.cn/ags/ms/cm-u-bond-md/EntyFullNameSearchCondition\"\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/109.0.0.0 Safari/537.36\"\n }\n r = requests.post(url, headers=headers)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"data\"][\"enty\"])\n temp_df.columns = [\"code\", \"name\"]\n temp_df = temp_df[[\"name\", \"code\"]]\n return temp_df\n else:\n symbol_map = {\n \"债券类型\": \"bondType\",\n \"息票类型\": \"couponType\",\n \"发行年份\": \"issueYear\",\n \"评级等级\": \"bondRtngShrt\",\n }\n url = \"https://www.chinamoney.com.cn/ags/ms/cm-u-bond-md/BondBaseInfoSearchCondition\"\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/109.0.0.0 Safari/537.36\"\n }\n r = requests.post(url, headers=headers)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"data\"][f\"{symbol_map[symbol]}\"])\n if temp_df.shape[1] == 1:\n temp_df.columns = [\"name\"]\n temp_df[\"code\"] = temp_df[\"name\"]\n temp_df.columns = [\"code\", \"name\"]\n temp_df = temp_df[[\"name\", \"code\"]]\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["bond"]}} {"name": "bond_info_detail_cm", "tool_from": "akshare", "description": "中国外汇交易中心暨全国银行间同业拆借中心-数据-债券信息-信息查询-债券详情\nhttps://www.chinamoney.com.cn/chinese/zqjc/?bondDefinedCode=egfjh08154\n:param symbol: 债券简称\n:type symbol: str\n:return: 债券详情\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "债券简称"}}, "required": []}, "python_code": "@functools.lru_cache()\ndef bond_info_detail_cm(symbol: str = \"淮安农商行CDSD2022021012\") -> pd.DataFrame:\n \"\"\"\n 中国外汇交易中心暨全国银行间同业拆借中心-数据-债券信息-信息查询-债券详情\n https://www.chinamoney.com.cn/chinese/zqjc/?bondDefinedCode=egfjh08154\n :param symbol: 债券简称\n :type symbol: str\n :return: 债券详情\n :rtype: pandas.DataFrame\n \"\"\"\n bond_china_close_return_map()\n url = \"https://www.chinamoney.com.cn/ags/ms/cm-u-bond-md/BondDetailInfo\"\n inner_bond_info_cm_df = bond_info_cm(bond_name=symbol)\n bond_code = inner_bond_info_cm_df[\"查询代码\"].values[0]\n payload = {\"bondDefinedCode\": bond_code}\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/109.0.0.0 Safari/537.36\"\n }\n r = requests.post(url, data=payload, headers=headers)\n data_json = r.json()\n data_dict = data_json[\"data\"][\"bondBaseInfo\"]\n if data_dict[\"creditRateEntyList\"]:\n del data_dict[\"creditRateEntyList\"]\n if data_dict[\"exerciseInfoList\"]:\n del data_dict[\"exerciseInfoList\"]\n temp_df = pd.DataFrame.from_dict(data_dict, orient=\"index\")\n temp_df.reset_index(inplace=True)\n temp_df.columns = [\"name\", \"value\"]\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["bond"]}} {"name": "bond_local_government_issue_cninfo", "tool_from": "akshare", "description": "巨潮资讯-数据中心-专题统计-债券报表-债券发行-地方债发行\nhttp://webapi.cninfo.com.cn/#/thematicStatistics\n:param start_date: 开始统计时间\n:type start_date: str\n:param end_date: 开始统计时间\n:type end_date: str\n:return: 地方债发行\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"start_date": {"type": "string", "description": "开始统计时间"}, "end_date": {"type": "string", "description": "开始统计时间"}}, "required": []}, "python_code": "def bond_local_government_issue_cninfo(\n start_date: str = \"20210911\", end_date: str = \"20211110\"\n) -> pd.DataFrame:\n \"\"\"\n 巨潮资讯-数据中心-专题统计-债券报表-债券发行-地方债发行\n http://webapi.cninfo.com.cn/#/thematicStatistics\n :param start_date: 开始统计时间\n :type start_date: str\n :param end_date: 开始统计时间\n :type end_date: str\n :return: 地方债发行\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"http://webapi.cninfo.com.cn/api/sysapi/p_sysapi1121\"\n js_code = py_mini_racer.MiniRacer()\n js_content = _get_file_content_cninfo(\"cninfo.js\")\n js_code.eval(js_content)\n mcode = js_code.call(\"getResCode1\")\n headers = {\n \"Accept\": \"*/*\",\n \"Accept-Enckey\": mcode,\n \"Accept-Encoding\": \"gzip, deflate\",\n \"Accept-Language\": \"zh-CN,zh;q=0.9,en;q=0.8\",\n \"Cache-Control\": \"no-cache\",\n \"Content-Length\": \"0\",\n \"Host\": \"webapi.cninfo.com.cn\",\n \"Origin\": \"http://webapi.cninfo.com.cn\",\n \"Pragma\": \"no-cache\",\n \"Proxy-Connection\": \"keep-alive\",\n \"Referer\": \"http://webapi.cninfo.com.cn/\",\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/93.0.4577.63 Safari/537.36\",\n \"X-Requested-With\": \"XMLHttpRequest\",\n }\n params = {\n \"sdate\": \"-\".join([start_date[:4], start_date[4:6], start_date[6:]]),\n \"edate\": \"-\".join([end_date[:4], end_date[4:6], end_date[6:]]),\n }\n r = requests.post(url, headers=headers, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"records\"])\n temp_df.rename(\n columns={\n \"F009D\": \"缴款日\",\n \"SECNAME\": \"债券简称\",\n \"DECLAREDATE\": \"公告日期\",\n \"F004D\": \"发行起始日\",\n \"F003D\": \"发行终止日\",\n \"F008N\": \"单位面值\",\n \"SECCODE\": \"债券代码\",\n \"F007N\": \"发行价格\",\n \"F006N\": \"计划发行总量\",\n \"F005N\": \"实际发行总量\",\n \"F028N\": \"增发次数\",\n \"BONDNAME\": \"债券名称\",\n \"F014V\": \"发行对象\",\n \"F002V\": \"交易市场\",\n \"F013V\": \"发行方式\",\n },\n inplace=True,\n )\n temp_df = temp_df[\n [\n \"债券代码\",\n \"债券简称\",\n \"发行起始日\",\n \"发行终止日\",\n \"计划发行总量\",\n \"实际发行总量\",\n \"发行价格\",\n \"单位面值\",\n \"缴款日\",\n \"增发次数\",\n \"交易市场\",\n \"发行方式\",\n \"发行对象\",\n \"公告日期\",\n \"债券名称\",\n ]\n ]\n temp_df[\"发行起始日\"] = pd.to_datetime(\n temp_df[\"发行起始日\"], errors=\"coerce\"\n ).dt.date\n temp_df[\"发行终止日\"] = pd.to_datetime(\n temp_df[\"发行终止日\"], errors=\"coerce\"\n ).dt.date\n temp_df[\"缴款日\"] = pd.to_datetime(temp_df[\"缴款日\"], errors=\"coerce\").dt.date\n temp_df[\"公告日期\"] = pd.to_datetime(temp_df[\"公告日期\"], errors=\"coerce\").dt.date\n temp_df[\"计划发行总量\"] = pd.to_numeric(temp_df[\"计划发行总量\"], errors=\"coerce\")\n temp_df[\"实际发行总量\"] = pd.to_numeric(temp_df[\"实际发行总量\"], errors=\"coerce\")\n temp_df[\"发行价格\"] = pd.to_numeric(temp_df[\"发行价格\"], errors=\"coerce\")\n temp_df[\"单位面值\"] = pd.to_numeric(temp_df[\"单位面值\"], errors=\"coerce\")\n temp_df[\"增发次数\"] = pd.to_numeric(temp_df[\"增发次数\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "as_filed", "intent_type": "informational", "regulatory_domains": ["bond", "economic_policy"]}} {"name": "bond_new_composite_index_cbond", "tool_from": "akshare", "description": "中国债券信息网-中债指数-中债指数族系-总指数-综合类指数-中债-新综合指数\nhttps://yield.chinabond.com.cn/cbweb-mn/indices/single_index_query\n:param indicator: choice of {\"全价\", \"净价\", \"财富\", \"平均市值法久期\", \"平均现金流法久期\", \"平均市值法凸性\", \"平均现金流法凸性\", \"平均现金流法到期收益率\", \"平均市值法到期收益率\", \"平均基点价值\", \"平均待偿期\", \"平均派息率\", \"指数上日总市值\", \"财富指数涨跌幅\", \"全价指数涨跌幅\", \"净价指数涨跌幅\", \"现券结算量\"}\n:type indicator: str\n:param period: choice of {\"总值\", \"1年以下\", \"1-3年\", \"3-5年\", \"5-7年\", \"7-10年\", \"10年以上\", \"0-3个月\", \"3-6个月\", \"6-9个月\", \"9-12个月\", \"0-6个月\", \"6-12个月\"}\n:type period: str\n:return: 新综合指数\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"indicator": {"type": "string", "description": "choice of {\"全价\", \"净价\", \"财富\", \"平均市值法久期\", \"平均现金流法久期\", \"平均市值法凸性\", \"平均现金流法凸性\", \"平均现金流法到期收益率\", \"平均市值法到期收益率\", \"平均基点价值\", \"平均待偿期\", \"平均派息率\", \"指数上日总市值\", \"财富指数涨跌幅\", \"全价指数涨跌幅\", \"净价指数涨跌幅\", \"现券结算量\"}"}, "period": {"type": "string", "description": "choice of {\"总值\", \"1年以下\", \"1-3年\", \"3-5年\", \"5-7年\", \"7-10年\", \"10年以上\", \"0-3个月\", \"3-6个月\", \"6-9个月\", \"9-12个月\", \"0-6个月\", \"6-12个月\"}"}}, "required": []}, "python_code": "def bond_new_composite_index_cbond(\n indicator: str = \"财富\", period: str = \"总值\"\n) -> pd.DataFrame:\n \"\"\"\n 中国债券信息网-中债指数-中债指数族系-总指数-综合类指数-中债-新综合指数\n https://yield.chinabond.com.cn/cbweb-mn/indices/single_index_query\n :param indicator: choice of {\"全价\", \"净价\", \"财富\", \"平均市值法久期\", \"平均现金流法久期\", \"平均市值法凸性\", \"平均现金流法凸性\", \"平均现金流法到期收益率\", \"平均市值法到期收益率\", \"平均基点价值\", \"平均待偿期\", \"平均派息率\", \"指数上日总市值\", \"财富指数涨跌幅\", \"全价指数涨跌幅\", \"净价指数涨跌幅\", \"现券结算量\"}\n :type indicator: str\n :param period: choice of {\"总值\", \"1年以下\", \"1-3年\", \"3-5年\", \"5-7年\", \"7-10年\", \"10年以上\", \"0-3个月\", \"3-6个月\", \"6-9个月\", \"9-12个月\", \"0-6个月\", \"6-12个月\"}\n :type period: str\n :return: 新综合指数\n :rtype: pandas.DataFrame\n \"\"\"\n indicator_map = {\n \"全价\": \"QJZS\",\n \"净价\": \"JJZS\",\n \"财富\": \"CFZS\",\n \"平均市值法久期\": \"PJSZFJQ\",\n \"平均现金流法久期\": \"PJXJLFJQ\",\n \"平均市值法凸性\": \"PJSZFTX\",\n \"平均现金流法凸性\": \"PJXJLFTX\",\n \"平均现金流法到期收益率\": \"PJDQSYL\",\n \"平均市值法到期收益率\": \"PJSZFDQSYL\",\n \"平均基点价值\": \"PJJDJZ\",\n \"平均待偿期\": \"PJDCQ\",\n \"平均派息率\": \"PJPXL\",\n \"指数上日总市值\": \"ZSZSZ\",\n \"财富指数涨跌幅\": \"CFZSZDF\",\n \"全价指数涨跌幅\": \"QJZSZDF\",\n \"净价指数涨跌幅\": \"JJZSZDF\",\n \"现券结算量\": \"XQJSL\",\n }\n period_map = {\n \"总值\": \"00\",\n \"1年以下\": \"01\",\n \"1-3年\": \"02\",\n \"3-5年\": \"03\",\n \"5-7年\": \"04\",\n \"7-10年\": \"05\",\n \"10年以上\": \"06\",\n \"0-3个月\": \"07\",\n \"3-6个月\": \"08\",\n \"6-9个月\": \"09\",\n \"9-12个月\": \"10\",\n \"0-6个月\": \"11\",\n \"6-12个月\": \"12\",\n }\n url = \"https://yield.chinabond.com.cn/cbweb-mn/indices/singleIndexQuery\"\n params = {\n \"indexid\": \"8a8b2ca0332abed20134ea76d8885831\",\n \"\": \"\", # noqa: F601\n \"qxlxt\": period_map[period],\n \"\": \"\", # noqa: F601\n \"ltcslx\": \"\",\n \"\": \"\", # noqa: F601\n \"zslxt\": indicator_map[indicator], # noqa: F601\n \"\": \"\", # noqa: F601\n \"zslxt\": indicator_map[indicator], # noqa: F601\n \"\": \"\", # noqa: F601\n \"lx\": \"1\",\n \"\": \"\", # noqa: F601\n \"locale\": \"\",\n }\n r = requests.post(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame.from_dict(\n data_json[f\"{indicator_map[indicator]}_{period_map[period]}\"],\n orient=\"index\",\n )\n temp_df.reset_index(inplace=True)\n temp_df.columns = [\"date\", \"value\"]\n temp_df[\"date\"] = temp_df[\"date\"].astype(float)\n temp_df[\"date\"] = (\n pd.to_datetime(temp_df[\"date\"], unit=\"ms\", errors=\"coerce\", utc=True)\n .dt.tz_convert(\"Asia/Shanghai\")\n .dt.date\n )\n temp_df[\"value\"] = pd.to_numeric(temp_df[\"value\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["bond"]}} {"name": "bond_treasure_issue_cninfo", "tool_from": "akshare", "description": "巨潮资讯-数据中心-专题统计-债券报表-债券发行-国债发行\nhttp://webapi.cninfo.com.cn/#/thematicStatistics\n:param start_date: 开始统计时间\n:type start_date: str\n:param end_date: 结束统计数据\n:type end_date: str\n:return: 国债发行\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"start_date": {"type": "string", "description": "开始统计时间"}, "end_date": {"type": "string", "description": "结束统计数据"}}, "required": []}, "python_code": "def bond_treasure_issue_cninfo(\n start_date: str = \"20210910\", end_date: str = \"20211109\"\n) -> pd.DataFrame:\n \"\"\"\n 巨潮资讯-数据中心-专题统计-债券报表-债券发行-国债发行\n http://webapi.cninfo.com.cn/#/thematicStatistics\n :param start_date: 开始统计时间\n :type start_date: str\n :param end_date: 结束统计数据\n :type end_date: str\n :return: 国债发行\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"http://webapi.cninfo.com.cn/api/sysapi/p_sysapi1120\"\n js_code = py_mini_racer.MiniRacer()\n js_content = _get_file_content_cninfo(\"cninfo.js\")\n js_code.eval(js_content)\n mcode = js_code.call(\"getResCode1\")\n headers = {\n \"Accept\": \"*/*\",\n \"Accept-Enckey\": mcode,\n \"Accept-Encoding\": \"gzip, deflate\",\n \"Accept-Language\": \"zh-CN,zh;q=0.9,en;q=0.8\",\n \"Cache-Control\": \"no-cache\",\n \"Content-Length\": \"0\",\n \"Host\": \"webapi.cninfo.com.cn\",\n \"Origin\": \"http://webapi.cninfo.com.cn\",\n \"Pragma\": \"no-cache\",\n \"Proxy-Connection\": \"keep-alive\",\n \"Referer\": \"http://webapi.cninfo.com.cn/\",\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/93.0.4577.63 Safari/537.36\",\n \"X-Requested-With\": \"XMLHttpRequest\",\n }\n params = {\n \"sdate\": \"-\".join([start_date[:4], start_date[4:6], start_date[6:]]),\n \"edate\": \"-\".join([end_date[:4], end_date[4:6], end_date[6:]]),\n }\n r = requests.post(url, headers=headers, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"records\"])\n temp_df.rename(\n columns={\n \"F009D\": \"缴款日\",\n \"SECNAME\": \"债券简称\",\n \"DECLAREDATE\": \"公告日期\",\n \"F004D\": \"发行起始日\",\n \"F003D\": \"发行终止日\",\n \"F008N\": \"单位面值\",\n \"SECCODE\": \"债券代码\",\n \"F007N\": \"发行价格\",\n \"F006N\": \"计划发行总量\",\n \"F005N\": \"实际发行总量\",\n \"F028N\": \"增发次数\",\n \"BONDNAME\": \"债券名称\",\n \"F014V\": \"发行对象\",\n \"F002V\": \"交易市场\",\n \"F013V\": \"发行方式\",\n },\n inplace=True,\n )\n temp_df = temp_df[\n [\n \"债券代码\",\n \"债券简称\",\n \"发行起始日\",\n \"发行终止日\",\n \"计划发行总量\",\n \"实际发行总量\",\n \"发行价格\",\n \"单位面值\",\n \"缴款日\",\n \"增发次数\",\n \"交易市场\",\n \"发行方式\",\n \"发行对象\",\n \"公告日期\",\n \"债券名称\",\n ]\n ]\n temp_df[\"发行起始日\"] = pd.to_datetime(\n temp_df[\"发行起始日\"], errors=\"coerce\"\n ).dt.date\n temp_df[\"发行终止日\"] = pd.to_datetime(\n temp_df[\"发行终止日\"], errors=\"coerce\"\n ).dt.date\n temp_df[\"缴款日\"] = pd.to_datetime(temp_df[\"缴款日\"], errors=\"coerce\").dt.date\n temp_df[\"公告日期\"] = pd.to_datetime(temp_df[\"公告日期\"], errors=\"coerce\").dt.date\n temp_df[\"计划发行总量\"] = pd.to_numeric(temp_df[\"计划发行总量\"], errors=\"coerce\")\n temp_df[\"实际发行总量\"] = pd.to_numeric(temp_df[\"实际发行总量\"], errors=\"coerce\")\n temp_df[\"发行价格\"] = pd.to_numeric(temp_df[\"发行价格\"], errors=\"coerce\")\n temp_df[\"单位面值\"] = pd.to_numeric(temp_df[\"单位面值\"], errors=\"coerce\")\n temp_df[\"增发次数\"] = pd.to_numeric(temp_df[\"增发次数\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "as_filed", "intent_type": "informational", "regulatory_domains": ["bond", "macro"]}} {"name": "bond_zh_cov_info", "tool_from": "akshare", "description": "https://data.eastmoney.com/kzz/detail/123121.html\n东方财富网-数据中心-新股数据-可转债详情\n:param symbol: 可转债代码\n:type symbol: str\n:param indicator: choice of {\"基本信息\", \"中签号\", \"筹资用途\", \"重要日期\"}\n:type indicator: str\n:return: 可转债详情\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "可转债代码"}, "indicator": {"type": "string", "description": "choice of {\"基本信息\", \"中签号\", \"筹资用途\", \"重要日期\"}"}}, "required": []}, "python_code": "def bond_zh_cov_info(\n symbol: str = \"123121\", indicator: str = \"基本信息\"\n) -> pd.DataFrame:\n \"\"\"\n https://data.eastmoney.com/kzz/detail/123121.html\n 东方财富网-数据中心-新股数据-可转债详情\n :param symbol: 可转债代码\n :type symbol: str\n :param indicator: choice of {\"基本信息\", \"中签号\", \"筹资用途\", \"重要日期\"}\n :type indicator: str\n :return: 可转债详情\n :rtype: pandas.DataFrame\n \"\"\"\n indicator_map = {\n \"基本信息\": \"RPT_BOND_CB_LIST\",\n \"中签号\": \"RPT_CB_BALLOTNUM\",\n \"筹资用途\": \"RPT_BOND_BS_OPRFINVESTITEM\",\n \"重要日期\": \"RPT_CB_IMPORTANTDATE\",\n }\n url = \"https://datacenter-web.eastmoney.com/api/data/v1/get\"\n params = {\n \"reportName\": \"RPT_BOND_CB_LIST\",\n \"columns\": \"ALL\",\n \"quoteColumns\": \"f2~01~CONVERT_STOCK_CODE~CONVERT_STOCK_PRICE,f235~10~SECURITY_CODE~TRANSFER_PRICE,\"\n \"f236~10~SECURITY_CODE~TRANSFER_VALUE,f2~10~SECURITY_CODE~CURRENT_BOND_PRICE,\"\n \"f237~10~SECURITY_CODE~TRANSFER_PREMIUM_RATIO,f239~10~SECURITY_CODE~RESALE_TRIG_PRICE,\"\n \"f240~10~SECURITY_CODE~REDEEM_TRIG_PRICE,f23~01~CONVERT_STOCK_CODE~PBV_RATIO\",\n \"quoteType\": \"0\",\n \"source\": \"WEB\",\n \"client\": \"WEB\",\n \"filter\": f'(SECURITY_CODE=\"{symbol}\")',\n }\n if indicator == \"基本信息\":\n params.update(\n {\n \"reportName\": indicator_map[indicator],\n \"quoteColumns\": \"f2~01~CONVERT_STOCK_CODE~CONVERT_STOCK_PRICE,f235~10~SECURITY_CODE~TRANSFER_PRICE,\"\n \"f236~10~SECURITY_CODE~TRANSFER_VALUE,f2~10~SECURITY_CODE~CURRENT_BOND_PRICE,\"\n \"f237~10~SECURITY_CODE~TRANSFER_PREMIUM_RATIO,f239~10~SECURITY_CODE~RESALE_TRIG_PRICE,\"\n \"f240~10~SECURITY_CODE~REDEEM_TRIG_PRICE,f23~01~CONVERT_STOCK_CODE~PBV_RATIO\",\n }\n )\n r = requests.get(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame.from_dict(data_json[\"result\"][\"data\"])\n return temp_df\n elif indicator == \"中签号\":\n params.update(\n {\n \"reportName\": indicator_map[indicator],\n \"quoteColumns\": \"\",\n }\n )\n r = requests.get(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame.from_dict(data_json[\"result\"][\"data\"])\n return temp_df\n elif indicator == \"筹资用途\":\n params.update(\n {\n \"reportName\": indicator_map[indicator],\n \"quoteColumns\": \"\",\n \"sortColumns\": \"SORT\",\n \"sortTypes\": \"1\",\n }\n )\n r = requests.get(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame.from_dict(data_json[\"result\"][\"data\"])\n return temp_df\n elif indicator == \"重要日期\":\n params.update(\n {\n \"reportName\": indicator_map[indicator],\n \"quoteColumns\": \"\",\n }\n )\n r = requests.get(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame.from_dict(data_json[\"result\"][\"data\"])\n return temp_df\n else:\n return pd.DataFrame()\n", "financial_tags": {"timeliness": "as_filed", "intent_type": "informational", "regulatory_domains": ["bond"]}} {"name": "bond_zh_cov_value_analysis", "tool_from": "akshare", "description": "https://data.eastmoney.com/kzz/detail/113527.html\n东方财富网-数据中心-新股数据-可转债数据-价值分析-溢价率分析\n:param symbol: 可转债代码\n:type symbol: str\n:return: 可转债价值分析\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "可转债代码"}}, "required": []}, "python_code": "def bond_zh_cov_value_analysis(symbol: str = \"113527\") -> pd.DataFrame:\n \"\"\"\n https://data.eastmoney.com/kzz/detail/113527.html\n 东方财富网-数据中心-新股数据-可转债数据-价值分析-溢价率分析\n :param symbol: 可转债代码\n :type symbol: str\n :return: 可转债价值分析\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://datacenter-web.eastmoney.com/api/data/get\"\n params = {\n \"sty\": \"ALL\",\n \"token\": \"894050c76af8597a853f5b408b759f5d\",\n \"st\": \"date\",\n \"sr\": \"1\",\n \"source\": \"WEB\",\n \"type\": \"RPTA_WEB_KZZ_LS\",\n \"filter\": f'(zcode=\"{symbol}\")',\n \"p\": \"1\",\n \"ps\": \"8000\",\n }\n r = requests.get(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"result\"][\"data\"])\n temp_df.columns = [\n \"日期\",\n \"-\",\n \"-\",\n \"转股价值\",\n \"纯债价值\",\n \"纯债溢价率\",\n \"转股溢价率\",\n \"收盘价\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n ]\n temp_df = temp_df[\n [\n \"日期\",\n \"收盘价\",\n \"纯债价值\",\n \"转股价值\",\n \"纯债溢价率\",\n \"转股溢价率\",\n ]\n ]\n temp_df[\"收盘价\"] = pd.to_numeric(temp_df[\"收盘价\"], errors=\"coerce\")\n temp_df[\"纯债价值\"] = pd.to_numeric(temp_df[\"纯债价值\"], errors=\"coerce\")\n temp_df[\"转股价值\"] = pd.to_numeric(temp_df[\"转股价值\"], errors=\"coerce\")\n temp_df[\"纯债溢价率\"] = pd.to_numeric(temp_df[\"纯债溢价率\"], errors=\"coerce\")\n temp_df[\"转股溢价率\"] = pd.to_numeric(temp_df[\"转股溢价率\"], errors=\"coerce\")\n temp_df[\"日期\"] = pd.to_datetime(temp_df[\"日期\"], errors=\"coerce\").dt.date\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["bond"]}} {"name": "bond_zh_hs_cov_daily", "tool_from": "akshare", "description": "新浪财经-债券-沪深可转债的历史行情数据, 大量抓取容易封 IP\nhttps://vip.stock.finance.sina.com.cn/mkt/#hskzz_z\n:param symbol: 沪深可转债代码; e.g., sh010107\n:type symbol: str\n:return: 指定沪深可转债代码的日 K 线数据\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "沪深可转债代码; e.g., sh010107"}}, "required": []}, "python_code": "def bond_zh_hs_cov_daily(symbol: str = \"sh010107\") -> pd.DataFrame:\n \"\"\"\n 新浪财经-债券-沪深可转债的历史行情数据, 大量抓取容易封 IP\n https://vip.stock.finance.sina.com.cn/mkt/#hskzz_z\n :param symbol: 沪深可转债代码; e.g., sh010107\n :type symbol: str\n :return: 指定沪深可转债代码的日 K 线数据\n :rtype: pandas.DataFrame\n \"\"\"\n r = requests.get(\n zh_sina_bond_hs_cov_hist_url.format(\n symbol, datetime.datetime.now().strftime(\"%Y_%m_%d\")\n )\n )\n js_code = py_mini_racer.MiniRacer()\n js_code.eval(hk_js_decode)\n dict_list = js_code.call(\n \"d\", r.text.split(\"=\")[1].split(\";\")[0].replace('\"', \"\")\n ) # 执行js解密代码\n data_df = pd.DataFrame(dict_list)\n data_df[\"date\"] = pd.to_datetime(data_df[\"date\"]).dt.date\n return data_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["bond"]}} {"name": "bond_zh_hs_cov_min", "tool_from": "akshare", "description": "东方财富网-可转债-分时行情\nhttps://quote.eastmoney.com/concept/sz128039.html\n:param symbol: 转债代码\n:type symbol: str\n:param period: choice of {'1', '5', '15', '30', '60'}\n:type period: str\n:param adjust: choice of {'', 'qfq', 'hfq'}\n:type adjust: str\n:param start_date: 开始日期\n:type start_date: str\n:param end_date: 结束日期\n:type end_date: str\n:return: 分时行情\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "转债代码"}, "period": {"type": "string", "description": "choice of {'1', '5', '15', '30', '60'}"}, "adjust": {"type": "string", "description": "choice of {'', 'qfq', 'hfq'}"}, "start_date": {"type": "string", "description": "开始日期"}, "end_date": {"type": "string", "description": "结束日期"}}, "required": []}, "python_code": "def bond_zh_hs_cov_min(\n symbol: str = \"sz128039\",\n period: str = \"15\",\n adjust: str = \"\",\n start_date: str = \"1979-09-01 09:32:00\",\n end_date: str = \"2222-01-01 09:32:00\",\n) -> pd.DataFrame:\n \"\"\"\n 东方财富网-可转债-分时行情\n https://quote.eastmoney.com/concept/sz128039.html\n :param symbol: 转债代码\n :type symbol: str\n :param period: choice of {'1', '5', '15', '30', '60'}\n :type period: str\n :param adjust: choice of {'', 'qfq', 'hfq'}\n :type adjust: str\n :param start_date: 开始日期\n :type start_date: str\n :param end_date: 结束日期\n :type end_date: str\n :return: 分时行情\n :rtype: pandas.DataFrame\n \"\"\"\n market_type = {\"sh\": \"1\", \"sz\": \"0\"}\n if period == \"1\":\n url = \"https://push2.eastmoney.com/api/qt/stock/trends2/get\"\n params = {\n \"secid\": f\"{market_type[symbol[:2]]}.{symbol[2:]}\",\n \"fields1\": \"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13\",\n \"fields2\": \"f51,f52,f53,f54,f55,f56,f57,f58\",\n \"iscr\": \"0\",\n \"iscca\": \"0\",\n \"ut\": \"f057cbcbce2a86e2866ab8877db1d059\",\n \"ndays\": \"1\",\n }\n r = requests.get(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(\n [item.split(\",\") for item in data_json[\"data\"][\"trends\"]]\n )\n temp_df.columns = [\n \"时间\",\n \"开盘\",\n \"收盘\",\n \"最高\",\n \"最低\",\n \"成交量\",\n \"成交额\",\n \"最新价\",\n ]\n temp_df.index = pd.to_datetime(temp_df[\"时间\"])\n temp_df = temp_df[start_date:end_date]\n temp_df.reset_index(drop=True, inplace=True)\n temp_df[\"开盘\"] = pd.to_numeric(temp_df[\"开盘\"], errors=\"coerce\")\n temp_df[\"收盘\"] = pd.to_numeric(temp_df[\"收盘\"], errors=\"coerce\")\n temp_df[\"最高\"] = pd.to_numeric(temp_df[\"最高\"], errors=\"coerce\")\n temp_df[\"最低\"] = pd.to_numeric(temp_df[\"最低\"], errors=\"coerce\")\n temp_df[\"成交量\"] = pd.to_numeric(temp_df[\"成交量\"], errors=\"coerce\")\n temp_df[\"成交额\"] = pd.to_numeric(temp_df[\"成交额\"], errors=\"coerce\")\n temp_df[\"最新价\"] = pd.to_numeric(temp_df[\"最新价\"], errors=\"coerce\")\n temp_df[\"时间\"] = pd.to_datetime(temp_df[\"时间\"]).astype(\n str\n ) # show datatime here\n return temp_df\n else:\n adjust_map = {\n \"\": \"0\",\n \"qfq\": \"1\",\n \"hfq\": \"2\",\n }\n url = \"https://push2his.eastmoney.com/api/qt/stock/kline/get\"\n params = {\n \"secid\": f\"{market_type[symbol[:2]]}.{symbol[2:]}\",\n \"klt\": period,\n \"fqt\": adjust_map[adjust],\n \"lmt\": \"66\",\n \"end\": \"20500000\",\n \"iscca\": \"1\",\n \"fields1\": \"f1,f2,f3,f4,f5\",\n \"fields2\": \"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61\",\n \"ut\": \"7eea3edcaed734bea9cbfc24409ed989\",\n \"forcect\": \"1\",\n }\n r = requests.get(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(\n [item.split(\",\") for item in data_json[\"data\"][\"klines\"]]\n )\n temp_df.columns = [\n \"时间\",\n \"开盘\",\n \"收盘\",\n \"最高\",\n \"最低\",\n \"成交量\",\n \"成交额\",\n \"振幅\",\n \"涨跌幅\",\n \"涨跌额\",\n \"换手率\",\n ]\n temp_df.index = pd.to_datetime(temp_df[\"时间\"])\n temp_df = temp_df[start_date:end_date]\n temp_df.reset_index(drop=True, inplace=True)\n temp_df[\"开盘\"] = pd.to_numeric(temp_df[\"开盘\"], errors=\"coerce\")\n temp_df[\"收盘\"] = pd.to_numeric(temp_df[\"收盘\"], errors=\"coerce\")\n temp_df[\"最高\"] = pd.to_numeric(temp_df[\"最高\"], errors=\"coerce\")\n temp_df[\"最低\"] = pd.to_numeric(temp_df[\"最低\"], errors=\"coerce\")\n temp_df[\"成交量\"] = pd.to_numeric(temp_df[\"成交量\"], errors=\"coerce\")\n temp_df[\"成交额\"] = pd.to_numeric(temp_df[\"成交额\"], errors=\"coerce\")\n temp_df[\"振幅\"] = pd.to_numeric(temp_df[\"振幅\"], errors=\"coerce\")\n temp_df[\"涨跌幅\"] = pd.to_numeric(temp_df[\"涨跌幅\"], errors=\"coerce\")\n temp_df[\"涨跌额\"] = pd.to_numeric(temp_df[\"涨跌额\"], errors=\"coerce\")\n temp_df[\"换手率\"] = pd.to_numeric(temp_df[\"换手率\"], errors=\"coerce\")\n temp_df[\"时间\"] = pd.to_datetime(temp_df[\"时间\"]).astype(str)\n temp_df = temp_df[\n [\n \"时间\",\n \"开盘\",\n \"收盘\",\n \"最高\",\n \"最低\",\n \"涨跌幅\",\n \"涨跌额\",\n \"成交量\",\n \"成交额\",\n \"振幅\",\n \"换手率\",\n ]\n ]\n return temp_df\n", "financial_tags": {"timeliness": "realtime", "intent_type": "informational", "regulatory_domains": ["bond"]}} {"name": "bond_zh_hs_cov_pre_min", "tool_from": "akshare", "description": "东方财富网-可转债-分时行情-盘前\nhttps://quote.eastmoney.com/concept/sz128039.html\n:param symbol: 转债代码\n:type symbol: str\n:return: 分时行情-盘前\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "转债代码"}}, "required": []}, "python_code": "def bond_zh_hs_cov_pre_min(symbol: str = \"sh113570\") -> pd.DataFrame:\n \"\"\"\n 东方财富网-可转债-分时行情-盘前\n https://quote.eastmoney.com/concept/sz128039.html\n :param symbol: 转债代码\n :type symbol: str\n :return: 分时行情-盘前\n :rtype: pandas.DataFrame\n \"\"\"\n market_type = {\"sh\": \"1\", \"sz\": \"0\"}\n url = \"https://push2.eastmoney.com/api/qt/stock/trends2/get\"\n params = {\n \"fields1\": \"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13\",\n \"fields2\": \"f51,f52,f53,f54,f55,f56,f57,f58\",\n \"ndays\": \"1\",\n \"iscr\": \"1\",\n \"iscca\": \"0\",\n \"secid\": f\"{market_type[symbol[:2]]}.{symbol[2:]}\",\n }\n r = requests.get(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame([item.split(\",\") for item in data_json[\"data\"][\"trends\"]])\n temp_df.columns = [\n \"时间\",\n \"开盘\",\n \"收盘\",\n \"最高\",\n \"最低\",\n \"成交量\",\n \"成交额\",\n \"最新价\",\n ]\n temp_df.index = pd.to_datetime(temp_df[\"时间\"])\n temp_df.reset_index(drop=True, inplace=True)\n temp_df[\"开盘\"] = pd.to_numeric(temp_df[\"开盘\"], errors=\"coerce\")\n temp_df[\"收盘\"] = pd.to_numeric(temp_df[\"收盘\"], errors=\"coerce\")\n temp_df[\"最高\"] = pd.to_numeric(temp_df[\"最高\"], errors=\"coerce\")\n temp_df[\"最低\"] = pd.to_numeric(temp_df[\"最低\"], errors=\"coerce\")\n temp_df[\"成交量\"] = pd.to_numeric(temp_df[\"成交量\"], errors=\"coerce\")\n temp_df[\"成交额\"] = pd.to_numeric(temp_df[\"成交额\"], errors=\"coerce\")\n temp_df[\"最新价\"] = pd.to_numeric(temp_df[\"最新价\"], errors=\"coerce\")\n temp_df[\"时间\"] = pd.to_datetime(temp_df[\"时间\"]).astype(str)\n return temp_df\n", "financial_tags": {"timeliness": "realtime", "intent_type": "informational", "regulatory_domains": ["bond"]}} {"name": "bond_zh_hs_daily", "tool_from": "akshare", "description": "新浪财经-债券-沪深债券-历史行情数据, 大量抓取容易封 IP\nhttps://vip.stock.finance.sina.com.cn/mkt/#hs_z\n:param symbol: 沪深债券代码; e.g., sh010107\n:type symbol: str\n:return: 指定沪深债券代码的日 K 线数据\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "沪深债券代码; e.g., sh010107"}}, "required": []}, "python_code": "def bond_zh_hs_daily(symbol: str = \"sh010107\") -> pd.DataFrame:\n \"\"\"\n 新浪财经-债券-沪深债券-历史行情数据, 大量抓取容易封 IP\n https://vip.stock.finance.sina.com.cn/mkt/#hs_z\n :param symbol: 沪深债券代码; e.g., sh010107\n :type symbol: str\n :return: 指定沪深债券代码的日 K 线数据\n :rtype: pandas.DataFrame\n \"\"\"\n r = requests.get(\n zh_sina_bond_hs_hist_url.format(\n symbol, datetime.datetime.now().strftime(\"%Y_%m_%d\")\n )\n )\n js_code = py_mini_racer.MiniRacer()\n js_code.eval(hk_js_decode)\n dict_list = js_code.call(\n \"d\", r.text.split(\"=\")[1].split(\";\")[0].replace('\"', \"\")\n ) # 执行 js 解密代码\n data_df = pd.DataFrame(dict_list)\n data_df[\"date\"] = pd.to_datetime(data_df[\"date\"], errors=\"coerce\").dt.date\n data_df[\"open\"] = pd.to_numeric(data_df[\"open\"], errors=\"coerce\")\n data_df[\"high\"] = pd.to_numeric(data_df[\"high\"], errors=\"coerce\")\n data_df[\"low\"] = pd.to_numeric(data_df[\"low\"], errors=\"coerce\")\n data_df[\"close\"] = pd.to_numeric(data_df[\"close\"], errors=\"coerce\")\n return data_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["bond"]}} {"name": "bond_zh_hs_spot", "tool_from": "akshare", "description": "新浪财经-债券-沪深债券-实时行情数据, 大量抓取容易封IP\nhttps://vip.stock.finance.sina.com.cn/mkt/#hs_z\n:param start_page: 分页起始页\n:type start_page: str\n:param end_page: 分页结束页\n:type end_page: str\n:return: 所有沪深债券在当前时刻的实时行情数据\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"start_page": {"type": "string", "description": "分页起始页"}, "end_page": {"type": "string", "description": "分页结束页"}}, "required": []}, "python_code": "def bond_zh_hs_spot(start_page: str = \"1\", end_page: str = \"10\") -> pd.DataFrame:\n \"\"\"\n 新浪财经-债券-沪深债券-实时行情数据, 大量抓取容易封IP\n https://vip.stock.finance.sina.com.cn/mkt/#hs_z\n :param start_page: 分页起始页\n :type start_page: str\n :param end_page: 分页结束页\n :type end_page: str\n :return: 所有沪深债券在当前时刻的实时行情数据\n :rtype: pandas.DataFrame\n \"\"\"\n page_count = get_zh_bond_hs_page_count()\n page_count = int(page_count)\n zh_sina_bond_hs_payload_copy = zh_sina_bond_hs_payload.copy()\n tqdm = get_tqdm()\n big_df = pd.DataFrame()\n start_page = int(start_page)\n end_page = int(end_page) + 1 if int(end_page) + 1 <= page_count else page_count\n for page in tqdm(range(start_page, end_page), leave=False):\n zh_sina_bond_hs_payload_copy.update({\"page\": page})\n r = requests.get(zh_sina_bond_hs_url, params=zh_sina_bond_hs_payload_copy)\n data_json = demjson.decode(r.text)\n temp_df = pd.DataFrame(data_json)\n big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)\n big_df.columns = [\n \"代码\",\n \"-\",\n \"名称\",\n \"最新价\",\n \"涨跌额\",\n \"涨跌幅\",\n \"买入\",\n \"卖出\",\n \"昨收\",\n \"今开\",\n \"最高\",\n \"最低\",\n \"成交量\",\n \"成交额\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n ]\n big_df = big_df[\n [\n \"代码\",\n \"名称\",\n \"最新价\",\n \"涨跌额\",\n \"涨跌幅\",\n \"买入\",\n \"卖出\",\n \"昨收\",\n \"今开\",\n \"最高\",\n \"最低\",\n \"成交量\",\n \"成交额\",\n ]\n ]\n big_df[\"买入\"] = pd.to_numeric(big_df[\"买入\"], errors=\"coerce\")\n big_df[\"卖出\"] = pd.to_numeric(big_df[\"卖出\"], errors=\"coerce\")\n big_df[\"昨收\"] = pd.to_numeric(big_df[\"昨收\"], errors=\"coerce\")\n big_df[\"今开\"] = pd.to_numeric(big_df[\"今开\"], errors=\"coerce\")\n big_df[\"最高\"] = pd.to_numeric(big_df[\"最高\"], errors=\"coerce\")\n big_df[\"最低\"] = pd.to_numeric(big_df[\"最低\"], errors=\"coerce\")\n big_df[\"最新价\"] = pd.to_numeric(big_df[\"最新价\"], errors=\"coerce\")\n return big_df\n", "financial_tags": {"timeliness": "realtime", "intent_type": "informational", "regulatory_domains": ["bond"]}} {"name": "bond_zh_us_rate", "tool_from": "akshare", "description": "东方财富网-数据中心-经济数据-中美国债收益率\nhttps://data.eastmoney.com/cjsj/zmgzsyl.html\n:param start_date: 开始统计时间\n:type start_date: str\n:return: 中美国债收益率\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"start_date": {"type": "string", "description": "开始统计时间"}}, "required": []}, "python_code": "def bond_zh_us_rate(start_date: str = \"19901219\") -> pd.DataFrame:\n \"\"\"\n 东方财富网-数据中心-经济数据-中美国债收益率\n https://data.eastmoney.com/cjsj/zmgzsyl.html\n :param start_date: 开始统计时间\n :type start_date: str\n :return: 中美国债收益率\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://datacenter.eastmoney.com/api/data/get\"\n params = {\n \"type\": \"RPTA_WEB_TREASURYYIELD\",\n \"sty\": \"ALL\",\n \"st\": \"SOLAR_DATE\",\n \"sr\": \"-1\",\n \"token\": \"894050c76af8597a853f5b408b759f5d\",\n \"p\": \"1\",\n \"ps\": \"500\",\n \"pageNo\": \"1\",\n \"pageNum\": \"1\",\n }\n r = requests.get(url, params=params)\n data_json = r.json()\n total_page = data_json[\"result\"][\"pages\"]\n big_df = pd.DataFrame()\n tqdm = get_tqdm()\n for page in tqdm(range(1, total_page + 1), leave=False):\n params = {\n \"type\": \"RPTA_WEB_TREASURYYIELD\",\n \"sty\": \"ALL\",\n \"st\": \"SOLAR_DATE\",\n \"sr\": \"-1\",\n \"token\": \"894050c76af8597a853f5b408b759f5d\",\n \"p\": page,\n \"ps\": \"500\",\n \"pageNo\": page,\n \"pageNum\": page,\n }\n r = requests.get(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"result\"][\"data\"])\n for col in temp_df.columns:\n if temp_df[col].isnull().all(): # 检查列是否包含 None 或 NaN\n temp_df[col] = pd.to_numeric(temp_df[col], errors=\"coerce\")\n if big_df.empty:\n big_df = temp_df\n else:\n big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)\n\n temp_date_list = pd.to_datetime(big_df[\"SOLAR_DATE\"]).dt.date.to_list()\n if pd.to_datetime(start_date) in pd.date_range(\n temp_date_list[-1], temp_date_list[0]\n ):\n break\n\n big_df.rename(\n columns={\n \"SOLAR_DATE\": \"日期\",\n \"EMM00166462\": \"中国国债收益率5年\",\n \"EMM00166466\": \"中国国债收益率10年\",\n \"EMM00166469\": \"中国国债收益率30年\",\n \"EMM00588704\": \"中国国债收益率2年\",\n \"EMM01276014\": \"中国国债收益率10年-2年\",\n \"EMG00001306\": \"美国国债收益率2年\",\n \"EMG00001308\": \"美国国债收益率5年\",\n \"EMG00001310\": \"美国国债收益率10年\",\n \"EMG00001312\": \"美国国债收益率30年\",\n \"EMG01339436\": \"美国国债收益率10年-2年\",\n \"EMM00000024\": \"中国GDP年增率\",\n \"EMG00159635\": \"美国GDP年增率\",\n },\n inplace=True,\n )\n big_df = big_df[\n [\n \"日期\",\n \"中国国债收益率2年\",\n \"中国国债收益率5年\",\n \"中国国债收益率10年\",\n \"中国国债收益率30年\",\n \"中国国债收益率10年-2年\",\n \"中国GDP年增率\",\n \"美国国债收益率2年\",\n \"美国国债收益率5年\",\n \"美国国债收益率10年\",\n \"美国国债收益率30年\",\n \"美国国债收益率10年-2年\",\n \"美国GDP年增率\",\n ]\n ]\n big_df[\"日期\"] = pd.to_datetime(big_df[\"日期\"], errors=\"coerce\")\n big_df[\"中国国债收益率2年\"] = pd.to_numeric(\n big_df[\"中国国债收益率2年\"], errors=\"coerce\"\n )\n big_df[\"中国国债收益率5年\"] = pd.to_numeric(\n big_df[\"中国国债收益率5年\"], errors=\"coerce\"\n )\n big_df[\"中国国债收益率10年\"] = pd.to_numeric(\n big_df[\"中国国债收益率10年\"], errors=\"coerce\"\n )\n big_df[\"中国国债收益率30年\"] = pd.to_numeric(\n big_df[\"中国国债收益率30年\"], errors=\"coerce\"\n )\n big_df[\"中国国债收益率10年-2年\"] = pd.to_numeric(\n big_df[\"中国国债收益率10年-2年\"], errors=\"coerce\"\n )\n big_df[\"中国GDP年增率\"] = pd.to_numeric(big_df[\"中国GDP年增率\"], errors=\"coerce\")\n big_df[\"美国国债收益率2年\"] = pd.to_numeric(\n big_df[\"美国国债收益率2年\"], errors=\"coerce\"\n )\n big_df[\"美国国债收益率5年\"] = pd.to_numeric(\n big_df[\"美国国债收益率5年\"], errors=\"coerce\"\n )\n big_df[\"美国国债收益率10年\"] = pd.to_numeric(\n big_df[\"美国国债收益率10年\"], errors=\"coerce\"\n )\n big_df[\"美国国债收益率30年\"] = pd.to_numeric(\n big_df[\"美国国债收益率30年\"], errors=\"coerce\"\n )\n big_df[\"美国国债收益率10年-2年\"] = pd.to_numeric(\n big_df[\"美国国债收益率10年-2年\"], errors=\"coerce\"\n )\n big_df[\"美国GDP年增率\"] = pd.to_numeric(big_df[\"美国GDP年增率\"], errors=\"coerce\")\n big_df.sort_values(\"日期\", inplace=True)\n big_df.set_index([\"日期\"], inplace=True)\n big_df = big_df[pd.to_datetime(start_date) :]\n big_df.reset_index(inplace=True)\n big_df[\"日期\"] = pd.to_datetime(big_df[\"日期\"]).dt.date\n return big_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["bond", "macro"]}} {"name": "crypto_bitcoin_cme", "tool_from": "akshare", "description": "芝加哥商业交易所-比特币成交量报告\nhttps://datacenter.jin10.com/reportType/dc_cme_btc_report\n:param date: Specific date, e.g., \"20230830\"\n:type date: str\n:return: 比特币成交量报告\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "Specific date, e.g., \"20230830\""}}, "required": []}, "python_code": "def crypto_bitcoin_cme(date: str = \"20230830\") -> pd.DataFrame:\n \"\"\"\n 芝加哥商业交易所-比特币成交量报告\n https://datacenter.jin10.com/reportType/dc_cme_btc_report\n :param date: Specific date, e.g., \"20230830\"\n :type date: str\n :return: 比特币成交量报告\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://datacenter-api.jin10.com/reports/list\"\n params = {\n \"category\": \"cme\",\n \"date\": \"-\".join([date[:4], date[4:6], date[6:]]),\n \"attr_id\": \"4\",\n }\n headers = {\n \"accept\": \"*/*\",\n \"accept-encoding\": \"gzip, deflate, br\",\n \"accept-language\": \"zh-CN,zh;q=0.9,en;q=0.8\",\n \"cache-control\": \"no-cache\",\n \"origin\": \"https://datacenter.jin10.com\",\n \"pragma\": \"no-cache\",\n \"referer\": \"https://datacenter.jin10.com/\",\n \"sec-ch-ua\": '\" Not;A Brand\";v=\"99\", \"Google Chrome\";v=\"91\", \"Chromium\";v=\"91\"',\n \"sec-ch-ua-mobile\": \"?0\",\n \"sec-fetch-dest\": \"empty\",\n \"sec-fetch-mode\": \"cors\",\n \"sec-fetch-site\": \"same-site\",\n \"user-agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.106 Safari/537.36\",\n \"x-app-id\": \"rU6QIu7JHe2gOUeR\",\n \"x-csrf-token\": \"\",\n \"x-version\": \"1.0.0\",\n }\n r = requests.get(url, params=params, headers=headers)\n data_json = r.json()\n temp_df = pd.DataFrame(\n [item for item in data_json[\"data\"][\"values\"]],\n columns=[item[\"name\"] for item in data_json[\"data\"][\"keys\"]],\n )\n temp_df[\"电子交易合约\"] = pd.to_numeric(temp_df[\"电子交易合约\"], errors=\"coerce\")\n temp_df[\"场内成交合约\"] = pd.to_numeric(temp_df[\"场内成交合约\"], errors=\"coerce\")\n temp_df[\"场外成交合约\"] = pd.to_numeric(temp_df[\"场外成交合约\"], errors=\"coerce\")\n temp_df[\"成交量\"] = pd.to_numeric(temp_df[\"成交量\"], errors=\"coerce\")\n temp_df[\"未平仓合约\"] = pd.to_numeric(temp_df[\"未平仓合约\"], errors=\"coerce\")\n temp_df[\"持仓变化\"] = pd.to_numeric(temp_df[\"持仓变化\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["crypto", "derivatives"]}} {"name": "currency_boc_sina", "tool_from": "akshare", "description": "新浪财经-中行人民币牌价历史数据查询\nhttps://biz.finance.sina.com.cn/forex/forex.php?startdate=2012-01-01&enddate=2021-06-14&money_code=EUR&type=0\n:param symbol: choice of {'美元', '英镑', '欧元', '澳门元', '泰国铢', '菲律宾比索', '港币', '瑞士法郎', '新加坡元', '瑞典克朗', '丹麦克朗', '挪威克朗', '日元', '加拿大元', '澳大利亚元', '新西兰元', '韩国元'}\n:type symbol: str\n:param start_date: 开始交易日\n:type start_date: str\n:param end_date: 结束交易日\n:type end_date: str\n:return: 中行人民币牌价历史数据查询\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "choice of {'美元', '英镑', '欧元', '澳门元', '泰国铢', '菲律宾比索', '港币', '瑞士法郎', '新加坡元', '瑞典克朗', '丹麦克朗', '挪威克朗', '日元', '加拿大元', '澳大利亚元', '新西兰元', '韩国元'}"}, "start_date": {"type": "string", "description": "开始交易日"}, "end_date": {"type": "string", "description": "结束交易日"}}, "required": []}, "python_code": "def currency_boc_sina(\n symbol: str = \"美元\", start_date: str = \"20230304\", end_date: str = \"20231110\"\n) -> pd.DataFrame:\n \"\"\"\n 新浪财经-中行人民币牌价历史数据查询\n https://biz.finance.sina.com.cn/forex/forex.php?startdate=2012-01-01&enddate=2021-06-14&money_code=EUR&type=0\n :param symbol: choice of {'美元', '英镑', '欧元', '澳门元', '泰国铢', '菲律宾比索', '港币', '瑞士法郎', '新加坡元', '瑞典克朗', '丹麦克朗', '挪威克朗', '日元', '加拿大元', '澳大利亚元', '新西兰元', '韩国元'}\n :type symbol: str\n :param start_date: 开始交易日\n :type start_date: str\n :param end_date: 结束交易日\n :type end_date: str\n :return: 中行人民币牌价历史数据查询\n :rtype: pandas.DataFrame\n \"\"\"\n data_dict = _currency_boc_sina_map(start_date=start_date, end_date=end_date)\n url = \"http://biz.finance.sina.com.cn/forex/forex.php\"\n params = {\n \"money_code\": data_dict[symbol],\n \"type\": \"0\",\n \"startdate\": \"-\".join([start_date[:4], start_date[4:6], start_date[6:]]),\n \"enddate\": \"-\".join([end_date[:4], end_date[4:6], end_date[6:]]),\n \"page\": \"1\",\n \"call_type\": \"ajax\",\n }\n r = requests.get(url, params=params)\n soup = BeautifulSoup(r.text, features=\"lxml\")\n soup.find(attrs={\"id\": \"money_code\"})\n page_element_list = soup.find_all(\"a\", attrs={\"class\": \"page\"})\n page_num = int(page_element_list[-2].text) if len(page_element_list) != 0 else 1\n big_df = pd.DataFrame()\n for page in tqdm(range(1, page_num + 1), leave=False):\n params.update({\"page\": page})\n r = requests.get(url, params=params)\n temp_df = pd.read_html(StringIO(r.text), header=0)[0]\n big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)\n big_df.columns = [\n \"日期\",\n \"中行汇买价\",\n \"中行钞买价\",\n \"中行钞卖价/汇卖价\",\n \"央行中间价\",\n \"中行折算价\",\n ]\n big_df[\"日期\"] = pd.to_datetime(big_df[\"日期\"], errors=\"coerce\").dt.date\n big_df[\"中行汇买价\"] = pd.to_numeric(big_df[\"中行汇买价\"], errors=\"coerce\")\n big_df[\"中行钞买价\"] = pd.to_numeric(big_df[\"中行钞买价\"], errors=\"coerce\")\n big_df[\"中行钞卖价/汇卖价\"] = pd.to_numeric(\n big_df[\"中行钞卖价/汇卖价\"], errors=\"coerce\"\n )\n big_df[\"央行中间价\"] = pd.to_numeric(big_df[\"央行中间价\"], errors=\"coerce\")\n big_df[\"中行折算价\"] = pd.to_numeric(big_df[\"中行折算价\"], errors=\"coerce\")\n big_df.sort_values(by=[\"日期\"], inplace=True, ignore_index=True)\n return big_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["forex"]}} {"name": "currency_convert", "tool_from": "akshare", "description": "currencies data from currencyscoop.com\nhttps://currencyscoop.com/api-documentation\n:param base: The base currency you would like to use for your rates\n:type base: str\n:param to: The currency you would like to use for your rates\n:type to: str\n:param amount: The amount of base currency\n:type amount: str\n:param api_key: Account -> Account Details -> API KEY (use as password in external tools)\n:type api_key: str\n:return: Latest data of base currency\n:rtype: pandas.Series", "parameters": {"type": "object", "properties": {"base": {"type": "string", "description": "The base currency you would like to use for your rates"}, "to": {"type": "string", "description": "The currency you would like to use for your rates"}, "amount": {"type": "string", "description": "The amount of base currency"}, "api_key": {"type": "string", "description": "Account -> Account Details -> API KEY (use as password in external tools)"}}, "required": []}, "python_code": "def currency_convert(\n base: str = \"USD\",\n to: str = \"CNY\",\n amount: str = \"10000\",\n api_key: str = \"\",\n) -> pd.DataFrame:\n \"\"\"\n currencies data from currencyscoop.com\n https://currencyscoop.com/api-documentation\n :param base: The base currency you would like to use for your rates\n :type base: str\n :param to: The currency you would like to use for your rates\n :type to: str\n :param amount: The amount of base currency\n :type amount: str\n :param api_key: Account -> Account Details -> API KEY (use as password in external tools)\n :type api_key: str\n :return: Latest data of base currency\n :rtype: pandas.Series\n \"\"\"\n params = {\n \"from\": base,\n \"to\": to,\n \"amount\": amount,\n \"api_key\": api_key,\n }\n url = \"https://api.currencyscoop.com/v1/convert\"\n r = requests.get(url, params=params)\n temp_se = pd.Series(r.json()[\"response\"])\n temp_se[\"timestamp\"] = pd.to_datetime(temp_se[\"timestamp\"], unit=\"s\")\n temp_df = temp_se.to_frame()\n temp_df.reset_index(inplace=True)\n temp_df.columns = [\"item\", \"value\"]\n return temp_df\n", "financial_tags": {"timeliness": "realtime", "intent_type": "informational", "regulatory_domains": ["forex"]}} {"name": "currency_currencies", "tool_from": "akshare", "description": "currencies data from currencyscoop.com\nhttps://currencyscoop.com/api-documentation\n:param c_type: now only \"fiat\" can return data\n:type c_type: str\n:param api_key: Account -> Account Details -> API KEY (use as password in external tools)\n:type api_key: str\n:return: Latest data of base currency\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"c_type": {"type": "string", "description": "now only \"fiat\" can return data"}, "api_key": {"type": "string", "description": "Account -> Account Details -> API KEY (use as password in external tools)"}}, "required": []}, "python_code": "def currency_currencies(c_type: str = \"fiat\", api_key: str = \"\") -> pd.DataFrame:\n \"\"\"\n currencies data from currencyscoop.com\n https://currencyscoop.com/api-documentation\n :param c_type: now only \"fiat\" can return data\n :type c_type: str\n :param api_key: Account -> Account Details -> API KEY (use as password in external tools)\n :type api_key: str\n :return: Latest data of base currency\n :rtype: pandas.DataFrame\n \"\"\"\n params = {\"type\": c_type, \"api_key\": api_key}\n url = \"https://api.currencyscoop.com/v1/currencies\"\n r = requests.get(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"response\"])\n return temp_df\n", "financial_tags": {"timeliness": "realtime", "intent_type": "informational", "regulatory_domains": ["forex"]}} {"name": "currency_history", "tool_from": "akshare", "description": "Latest data from currencyscoop.com\nhttps://currencyscoop.com/api-documentation\n:param base: The base currency you would like to use for your rates\n:type base: str\n:param date: Specific date, e.g., \"2020-02-03\"\n:type date: str\n:param symbols: A list of currencies you will like to see the rates for. You can refer to a list all supported currencies here\n:type symbols: str\n:param api_key: Account -> Account Details -> API KEY (use as password in external tools)\n:type api_key: str\n:return: Latest data of base currency\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"base": {"type": "string", "description": "The base currency you would like to use for your rates"}, "date": {"type": "string", "description": "Specific date, e.g., \"2020-02-03\""}, "symbols": {"type": "string", "description": "A list of currencies you will like to see the rates for. You can refer to a list all supported currencies here"}, "api_key": {"type": "string", "description": "Account -> Account Details -> API KEY (use as password in external tools)"}}, "required": []}, "python_code": "def currency_history(\n base: str = \"USD\", date: str = \"2023-02-03\", symbols: str = \"\", api_key: str = \"\"\n) -> pd.DataFrame:\n \"\"\"\n Latest data from currencyscoop.com\n https://currencyscoop.com/api-documentation\n :param base: The base currency you would like to use for your rates\n :type base: str\n :param date: Specific date, e.g., \"2020-02-03\"\n :type date: str\n :param symbols: A list of currencies you will like to see the rates for. You can refer to a list all supported currencies here\n :type symbols: str\n :param api_key: Account -> Account Details -> API KEY (use as password in external tools)\n :type api_key: str\n :return: Latest data of base currency\n :rtype: pandas.DataFrame\n \"\"\"\n params = {\"base\": base, \"date\": date, \"symbols\": symbols, \"api_key\": api_key}\n url = \"https://api.currencyscoop.com/v1/historical\"\n r = requests.get(url, params=params)\n temp_df = pd.DataFrame.from_dict(r.json()[\"response\"])\n temp_df[\"date\"] = pd.to_datetime(temp_df[\"date\"]).dt.date\n temp_df.reset_index(inplace=True)\n temp_df.rename(columns={\"index\": \"currency\"}, inplace=True)\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["forex"]}} {"name": "currency_latest", "tool_from": "akshare", "description": "Latest data from currencyscoop.com\nhttps://currencyscoop.com/api-documentation\n:param base: The base currency you would like to use for your rates\n:type base: str\n:param symbols: A list of currencies you will like to see the rates for. You can refer to a list all supported currencies here\n:type symbols: str\n:param api_key: Account -> Account Details -> API KEY (use as password in external tools)\n:type api_key: str\n:return: Latest data of base currency\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"base": {"type": "string", "description": "The base currency you would like to use for your rates"}, "symbols": {"type": "string", "description": "A list of currencies you will like to see the rates for. You can refer to a list all supported currencies here"}, "api_key": {"type": "string", "description": "Account -> Account Details -> API KEY (use as password in external tools)"}}, "required": []}, "python_code": "def currency_latest(\n base: str = \"USD\", symbols: str = \"\", api_key: str = \"\"\n) -> pd.DataFrame:\n \"\"\"\n Latest data from currencyscoop.com\n https://currencyscoop.com/api-documentation\n :param base: The base currency you would like to use for your rates\n :type base: str\n :param symbols: A list of currencies you will like to see the rates for. You can refer to a list all supported currencies here\n :type symbols: str\n :param api_key: Account -> Account Details -> API KEY (use as password in external tools)\n :type api_key: str\n :return: Latest data of base currency\n :rtype: pandas.DataFrame\n \"\"\"\n params = {\"base\": base, \"symbols\": symbols, \"api_key\": api_key}\n url = \"https://api.currencyscoop.com/v1/latest\"\n r = requests.get(url, params=params)\n temp_df = pd.DataFrame.from_dict(r.json()[\"response\"])\n temp_df[\"date\"] = pd.to_datetime(temp_df[\"date\"])\n temp_df.reset_index(inplace=True)\n temp_df.rename(columns={\"index\": \"currency\"}, inplace=True)\n return temp_df\n", "financial_tags": {"timeliness": "realtime", "intent_type": "informational", "regulatory_domains": ["forex"]}} {"name": "currency_pair_map", "tool_from": "akshare", "description": "指定货币的所有可获取货币对的数据\nhttps://cn.investing.com/currencies/cny-jmd\n:param symbol: 指定货币\n:type symbol: str\n:return: 指定货币的所有可获取货币对的数据\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "指定货币"}}, "required": []}, "python_code": "def currency_pair_map(symbol: str = \"美元\") -> pd.DataFrame:\n \"\"\"\n 指定货币的所有可获取货币对的数据\n https://cn.investing.com/currencies/cny-jmd\n :param symbol: 指定货币\n :type symbol: str\n :return: 指定货币的所有可获取货币对的数据\n :rtype: pandas.DataFrame\n \"\"\"\n region_code = []\n region_name = []\n headers = {\n \"Accept\": \"application/json, text/javascript, */*; q=0.01\",\n # \"Accept-Encoding\": \"gzip, deflate, br\",\n \"Accept-Language\": \"zh-CN,zh;q=0.9,en;q=0.8\",\n \"Cache-Control\": \"no-cache\",\n \"Connection\": \"keep-alive\",\n \"Host\": \"cn.investing.com\",\n \"Pragma\": \"no-cache\",\n \"Referer\": \"https://cn.investing.com/currencies/single-currency-crosses\",\n \"Sec-Fetch-Mode\": \"cors\",\n \"Sec-Fetch-Site\": \"same-origin\",\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/79.0.3945.130 Safari/537.36\",\n \"X-Requested-With\": \"XMLHttpRequest\",\n }\n\n def has_data_sml_id_but_no_id(tag):\n return tag.has_attr(\"data-sml-id\") and not tag.has_attr(\"title\")\n\n tqdm = get_tqdm()\n for region_id in tqdm([\"4\", \"1\", \"8\", \"7\", \"6\"], leave=False):\n url = \"https://cn.investing.com/currencies/Service/region\"\n params = {\"region_ID\": region_id, \"currency_ID\": \"false\"}\n\n r = requests.get(url, params=params, headers=headers)\n soup = BeautifulSoup(r.text, features=\"lxml\")\n region_code.extend(\n [\n item[\"continentid\"] + \"-\" + region_id\n for item in soup.find_all(has_data_sml_id_but_no_id)\n ]\n )\n region_name.extend(\n [item.find(\"i\").text for item in soup.find_all(has_data_sml_id_but_no_id)]\n )\n\n name_id_map = dict(zip(region_name, region_code))\n url = \"https://cn.investing.com/currencies/Service/currency\"\n params = {\n \"region_ID\": name_id_map[symbol].split(\"-\")[1],\n \"currency_ID\": name_id_map[symbol].split(\"-\")[0],\n }\n r = requests.get(url, params=params, headers=headers)\n soup = BeautifulSoup(r.text, features=\"lxml\")\n\n temp_code = [item[\"href\"].split(\"/\")[-1] for item in soup.find_all(\"a\")] # need\n temp_name = [item[\"title\"].replace(\" \", \"-\") for item in soup.find_all(\"a\")]\n temp_df = pd.DataFrame(data=[temp_name, temp_code], index=[\"name\", \"code\"]).T\n return temp_df\n", "financial_tags": {"timeliness": "realtime", "intent_type": "informational", "regulatory_domains": ["forex"]}} {"name": "currency_time_series", "tool_from": "akshare", "description": "Time-series data from currencyscoop.com\nP.S. need special authority\nhttps://currencyscoop.com/api-documentation\n:param base: The base currency you would like to use for your rates\n:type base: str\n:param start_date: Specific date, e.g., \"2020-02-03\"\n:type start_date: str\n:param end_date: Specific date, e.g., \"2020-02-03\"\n:type end_date: str\n:param symbols: A list of currencies you will like to see the rates for. You can refer to a list all supported currencies here\n:type symbols: str\n:param api_key: Account -> Account Details -> API KEY (use as password in external tools)\n:type api_key: str\n:return: Latest data of base currency\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"base": {"type": "string", "description": "The base currency you would like to use for your rates"}, "start_date": {"type": "string", "description": "Specific date, e.g., \"2020-02-03\""}, "end_date": {"type": "string", "description": "Specific date, e.g., \"2020-02-03\""}, "symbols": {"type": "string", "description": "A list of currencies you will like to see the rates for. You can refer to a list all supported currencies here"}, "api_key": {"type": "string", "description": "Account -> Account Details -> API KEY (use as password in external tools)"}}, "required": []}, "python_code": "def currency_time_series(\n base: str = \"USD\",\n start_date: str = \"2023-02-03\",\n end_date: str = \"2023-03-04\",\n symbols: str = \"\",\n api_key: str = \"\",\n) -> pd.DataFrame:\n \"\"\"\n Time-series data from currencyscoop.com\n P.S. need special authority\n https://currencyscoop.com/api-documentation\n :param base: The base currency you would like to use for your rates\n :type base: str\n :param start_date: Specific date, e.g., \"2020-02-03\"\n :type start_date: str\n :param end_date: Specific date, e.g., \"2020-02-03\"\n :type end_date: str\n :param symbols: A list of currencies you will like to see the rates for. You can refer to a list all supported currencies here\n :type symbols: str\n :param api_key: Account -> Account Details -> API KEY (use as password in external tools)\n :type api_key: str\n :return: Latest data of base currency\n :rtype: pandas.DataFrame\n \"\"\"\n params = {\n \"base\": base,\n \"api_key\": api_key,\n \"start_date\": start_date,\n \"end_date\": end_date,\n \"symbols\": symbols,\n }\n url = \"https://api.currencyscoop.com/v1/timeseries\"\n r = requests.get(url, params=params)\n temp_df = pd.DataFrame.from_dict(r.json()[\"response\"])\n temp_df = temp_df.T\n temp_df.reset_index(inplace=True)\n temp_df.rename(columns={\"index\": \"date\"}, inplace=True)\n temp_df[\"date\"] = pd.to_datetime(temp_df[\"date\"]).dt.date\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["forex"]}} {"name": "drewry_wci_index", "tool_from": "akshare", "description": "Drewry 集装箱指数\nhttps://infogram.com/world-container-index-1h17493095xl4zj\n:param symbol: choice of {\"composite\", \"shanghai-rotterdam\", \"rotterdam-shanghai\", \"shanghai-los angeles\",\n\"los angeles-shanghai\", \"shanghai-genoa\", \"new york-rotterdam\", \"rotterdam-new york\"}\n:type symbol: str\n:return: Drewry 集装箱指数\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "choice of {\"composite\", \"shanghai-rotterdam\", \"rotterdam-shanghai\", \"shanghai-los angeles\","}}, "required": []}, "python_code": "def drewry_wci_index(symbol: str = \"composite\") -> pd.DataFrame:\n \"\"\"\n Drewry 集装箱指数\n https://infogram.com/world-container-index-1h17493095xl4zj\n :param symbol: choice of {\"composite\", \"shanghai-rotterdam\", \"rotterdam-shanghai\", \"shanghai-los angeles\",\n \"los angeles-shanghai\", \"shanghai-genoa\", \"new york-rotterdam\", \"rotterdam-new york\"}\n :type symbol: str\n :return: Drewry 集装箱指数\n :rtype: pandas.DataFrame\n \"\"\"\n symbol_map = {\n \"composite\": 0,\n \"shanghai-rotterdam\": 1,\n \"rotterdam-shanghai\": 2,\n \"shanghai-los angeles\": 3,\n \"los angeles-shanghai\": 4,\n \"shanghai-genoa\": 5,\n \"new york-rotterdam\": 6,\n \"rotterdam-new york\": 7,\n }\n url = \"https://infogram.com/world-container-index-1h17493095xl4zj\"\n r = requests.get(url)\n soup = BeautifulSoup(r.text, features=\"lxml\")\n data_text = soup.find_all(\"script\")[-4].string.strip(\"window.infographicData=\")[:-1]\n data_json = demjson.decode(data_text)\n data_json_need = data_json[\"elements\"][\"content\"][\"content\"][\"entities\"][\n \"7a55585f-3fb3-44e6-9b54-beea1cd20b4d\"\n ][\"data\"][symbol_map[symbol]]\n date_list = [item[0][\"value\"] for item in data_json_need[1:]]\n try:\n value_list = [item[1][\"value\"] for item in data_json_need[1:]]\n except TypeError:\n value_list = [item[1][\"value\"] for item in data_json_need[1:-1]]\n temp_df = pd.DataFrame([date_list, value_list]).T\n temp_df.columns = [\"date\", \"wci\"]\n temp_df[\"date\"] = pd.to_datetime(\n temp_df[\"date\"], format=\"%d-%b-%y\", errors=\"coerce\"\n ).dt.date\n temp_df[\"wci\"] = pd.to_numeric(temp_df[\"wci\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "weekly", "intent_type": "informational", "regulatory_domains": ["macro", "economic_policy"]}} {"name": "fund_announcement_dividend_em", "tool_from": "akshare", "description": "东方财富网站-天天基金网-基金档案-基金公告-分红配送\nhttps://fundf10.eastmoney.com/jjgg_000001_2.html\n:param symbol: 基金代码; 可以通过调用 ak.fund_name_em() 接口获取\n:type symbol: str\n:return: 分红配送-公告列表\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "基金代码; 可以通过调用 ak.fund_name_em() 接口获取"}}, "required": []}, "python_code": "def fund_announcement_dividend_em(symbol: str = \"000001\") -> pd.DataFrame:\n \"\"\"\n 东方财富网站-天天基金网-基金档案-基金公告-分红配送\n https://fundf10.eastmoney.com/jjgg_000001_2.html\n :param symbol: 基金代码; 可以通过调用 ak.fund_name_em() 接口获取\n :type symbol: str\n :return: 分红配送-公告列表\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"http://api.fund.eastmoney.com/f10/JJGG\"\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/80.0.3987.149 Safari/537.36\",\n \"Referer\": f\"http://fundf10.eastmoney.com/jjgg_{symbol}_2.html\",\n }\n params = {\n \"fundcode\": symbol,\n \"pageIndex\": \"1\",\n \"pageSize\": \"1000\",\n \"type\": \"2\",\n \"_\": round(time.time() * 1000),\n }\n r = requests.get(url, params=params, headers=headers)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"Data\"])\n temp_df.columns = [\n \"基金代码\",\n \"公告标题\",\n \"基金名称\",\n \"_\",\n \"_\",\n \"公告日期\",\n \"_\",\n \"报告ID\",\n ]\n temp_df = temp_df[[\"基金代码\", \"公告标题\", \"基金名称\", \"公告日期\", \"报告ID\"]]\n temp_df.sort_values(by=[\"公告日期\"], inplace=True, ignore_index=True)\n temp_df[\"公告日期\"] = pd.to_datetime(temp_df[\"公告日期\"], errors=\"coerce\").dt.date\n return temp_df\n", "financial_tags": {"timeliness": "as_filed", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_announcement_personnel_em", "tool_from": "akshare", "description": "东方财富网站-天天基金网-基金档案-基金公告-人事调整\nhttps://fundf10.eastmoney.com/jjgg_000001_4.html\n:param symbol: 基金代码; 可以通过调用 ak.fund_name_em() 接口获取\n:type symbol: str\n:return: 人事调整-公告列表\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "基金代码; 可以通过调用 ak.fund_name_em() 接口获取"}}, "required": []}, "python_code": "def fund_announcement_personnel_em(symbol: str = \"000001\") -> pd.DataFrame:\n \"\"\"\n 东方财富网站-天天基金网-基金档案-基金公告-人事调整\n https://fundf10.eastmoney.com/jjgg_000001_4.html\n :param symbol: 基金代码; 可以通过调用 ak.fund_name_em() 接口获取\n :type symbol: str\n :return: 人事调整-公告列表\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"http://api.fund.eastmoney.com/f10/JJGG\"\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.149 Safari/537.36\",\n \"Referer\": f\"http://fundf10.eastmoney.com/jjgg_{symbol}_4.html\",\n }\n params = {\n \"fundcode\": symbol,\n \"pageIndex\": \"1\",\n \"pageSize\": \"1000\",\n \"type\": \"4\",\n \"_\": round(time.time() * 1000),\n }\n r = requests.get(url, params=params, headers=headers)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"Data\"])\n temp_df.columns = [\n \"基金代码\",\n \"公告标题\",\n \"基金名称\",\n \"_\",\n \"_\",\n \"公告日期\",\n \"_\",\n \"报告ID\",\n ]\n temp_df = temp_df[[\"基金代码\", \"公告标题\", \"基金名称\", \"公告日期\", \"报告ID\"]]\n temp_df.sort_values(by=[\"公告日期\"], inplace=True, ignore_index=True)\n temp_df[\"公告日期\"] = pd.to_datetime(temp_df[\"公告日期\"], errors=\"coerce\").dt.date\n return temp_df\n", "financial_tags": {"timeliness": "as_filed", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_announcement_report_em", "tool_from": "akshare", "description": "东方财富网站-天天基金网-基金档案-基金公告-定期报告\nhttps://fundf10.eastmoney.com/jjgg_000001_3.html\n:param symbol: 基金代码; 可以通过调用 ak.fund_name_em() 接口获取\n:type symbol: str\n:return: 定期报告-公告列表\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "基金代码; 可以通过调用 ak.fund_name_em() 接口获取"}}, "required": []}, "python_code": "def fund_announcement_report_em(symbol: str = \"000001\") -> pd.DataFrame:\n \"\"\"\n 东方财富网站-天天基金网-基金档案-基金公告-定期报告\n https://fundf10.eastmoney.com/jjgg_000001_3.html\n :param symbol: 基金代码; 可以通过调用 ak.fund_name_em() 接口获取\n :type symbol: str\n :return: 定期报告-公告列表\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"http://api.fund.eastmoney.com/f10/JJGG\"\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/80.0.3987.149 Safari/537.36\",\n \"Referer\": f\"http://fundf10.eastmoney.com/jjgg_{symbol}_3.html\",\n }\n params = {\n \"fundcode\": symbol,\n \"pageIndex\": \"1\",\n \"pageSize\": \"1000\",\n \"type\": \"3\",\n \"_\": round(time.time() * 1000),\n }\n r = requests.get(url, params=params, headers=headers)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"Data\"])\n temp_df.columns = [\n \"基金代码\",\n \"公告标题\",\n \"基金名称\",\n \"_\",\n \"_\",\n \"公告日期\",\n \"_\",\n \"报告ID\",\n ]\n temp_df = temp_df[[\"基金代码\", \"公告标题\", \"基金名称\", \"公告日期\", \"报告ID\"]]\n temp_df.sort_values(by=[\"公告日期\"], inplace=True, ignore_index=True)\n temp_df[\"公告日期\"] = pd.to_datetime(temp_df[\"公告日期\"], errors=\"coerce\").dt.date\n return temp_df\n", "financial_tags": {"timeliness": "as_filed", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_aum_hist_em", "tool_from": "akshare", "description": "东方财富-基金-基金公司历年管理规模排行列表\nhttps://fund.eastmoney.com/Company/lsgm.html\n:param year: query year\n:type year: str\n:return: 基金公司历年管理规模排行列表\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"year": {"type": "string", "description": "query year"}}, "required": []}, "python_code": "def fund_aum_hist_em(year: str = \"2023\") -> pd.DataFrame:\n \"\"\"\n 东方财富-基金-基金公司历年管理规模排行列表\n https://fund.eastmoney.com/Company/lsgm.html\n :param year: query year\n :type year: str\n :return: 基金公司历年管理规模排行列表\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://fund.eastmoney.com/Company/home/HistoryScaleTable\"\n params = {\"year\": year}\n r = requests.get(url, params=params)\n temp_df = pd.read_html(StringIO(r.text))[0]\n temp_df.columns = [\n \"序号\",\n \"基金公司\",\n \"总规模\",\n \"股票型\",\n \"混合型\",\n \"债券型\",\n \"指数型\",\n \"QDII\",\n \"货币型\",\n ]\n temp_df[\"总规模\"] = pd.to_numeric(temp_df[\"总规模\"], errors=\"coerce\")\n temp_df[\"股票型\"] = pd.to_numeric(temp_df[\"股票型\"], errors=\"coerce\")\n temp_df[\"混合型\"] = pd.to_numeric(temp_df[\"混合型\"], errors=\"coerce\")\n temp_df[\"债券型\"] = pd.to_numeric(temp_df[\"债券型\"], errors=\"coerce\")\n temp_df[\"指数型\"] = pd.to_numeric(temp_df[\"指数型\"], errors=\"coerce\")\n temp_df[\"QDII\"] = pd.to_numeric(temp_df[\"QDII\"], errors=\"coerce\")\n temp_df[\"货币型\"] = pd.to_numeric(temp_df[\"货币型\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "as_filed", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_cf_em", "tool_from": "akshare", "description": "天天基金网-基金数据-分红送配-基金拆分\nhttps://fund.eastmoney.com/data/fundchaifen.html#FSRQ,desc,1,,,\n:param year: 查询年份\n:type year: str\n:return: 基金拆分\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"year": {"type": "string", "description": "查询年份"}}, "required": []}, "python_code": "def fund_cf_em(year: str = \"2025\") -> pd.DataFrame:\n \"\"\"\n 天天基金网-基金数据-分红送配-基金拆分\n https://fund.eastmoney.com/data/fundchaifen.html#FSRQ,desc,1,,,\n :param year: 查询年份\n :type year: str\n :return: 基金拆分\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://fund.eastmoney.com/Data/funddataIndex_Interface.aspx\"\n params = {\n \"dt\": \"9\",\n \"page\": \"1\",\n \"rank\": \"FSRQ\",\n \"sort\": \"desc\",\n \"gs\": \"\",\n \"ftype\": \"\",\n \"year\": year,\n }\n r = requests.get(url, params=params)\n data_text = r.text\n total_page = eval(data_text[data_text.find(\"=\") + 1: data_text.find(\";\")])[0]\n big_df = pd.DataFrame()\n for page in tqdm(range(1, total_page + 1), leave=False):\n params.update({\"page\": str(page)})\n r = requests.get(url, params=params)\n data_text = r.text\n temp_str = data_text[data_text.find(\"[[\"): data_text.find(\";var jjcf_jjgs\")]\n if temp_str:\n temp_list = eval(temp_str)\n temp_df = pd.DataFrame(temp_list)\n big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)\n\n big_df.reset_index(inplace=True)\n big_df.loc[:, \"index\"] = big_df[\"index\"] + 1\n big_df.columns = [\n \"序号\",\n \"基金代码\",\n \"基金简称\",\n \"拆分折算日\",\n \"拆分类型\",\n \"拆分折算\",\n \"-\",\n ]\n big_df = big_df[\n [\"序号\", \"基金代码\", \"基金简称\", \"拆分折算日\", \"拆分类型\", \"拆分折算\"]\n ]\n big_df[\"拆分折算日\"] = pd.to_datetime(big_df[\"拆分折算日\"]).dt.date\n big_df[\"拆分折算\"] = pd.to_numeric(big_df[\"拆分折算\"], errors=\"coerce\")\n return big_df\n", "financial_tags": {"timeliness": "as_filed", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_etf_category_sina", "tool_from": "akshare", "description": "新浪财经-基金列表\nhttps://vip.stock.finance.sina.com.cn/fund_center/index.html#jjhqetf\n:param symbol: choice of {\"封闭式基金\", \"ETF基金\", \"LOF基金\"}\n:type symbol: str\n:return: 指定 symbol 的基金列表\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "choice of {\"封闭式基金\", \"ETF基金\", \"LOF基金\"}"}}, "required": []}, "python_code": "def fund_etf_category_sina(symbol: str = \"LOF基金\") -> pd.DataFrame:\n \"\"\"\n 新浪财经-基金列表\n https://vip.stock.finance.sina.com.cn/fund_center/index.html#jjhqetf\n :param symbol: choice of {\"封闭式基金\", \"ETF基金\", \"LOF基金\"}\n :type symbol: str\n :return: 指定 symbol 的基金列表\n :rtype: pandas.DataFrame\n \"\"\"\n fund_map = {\n \"封闭式基金\": \"close_fund\",\n \"ETF基金\": \"etf_hq_fund\",\n \"LOF基金\": \"lof_hq_fund\",\n }\n url = (\n \"https://vip.stock.finance.sina.com.cn/quotes_service/api/jsonp.php/\"\n \"IO.XSRV2.CallbackList['da_yPT46_Ll7K6WD']/Market_Center.getHQNodeDataSimple\"\n )\n params = {\n \"page\": \"1\",\n \"num\": \"5000\",\n \"sort\": \"symbol\",\n \"asc\": \"0\",\n \"node\": fund_map[symbol],\n \"[object HTMLDivElement]\": \"qvvne\",\n }\n r = requests.get(url, params=params)\n data_text = r.text\n data_json = demjson.decode(data_text[data_text.find(\"([\") + 1: -2])\n temp_df = pd.DataFrame(data_json)\n if symbol == \"封闭式基金\":\n temp_df.columns = [\n \"代码\",\n \"名称\",\n \"最新价\",\n \"涨跌额\",\n \"涨跌幅\",\n \"买入\",\n \"卖出\",\n \"昨收\",\n \"今开\",\n \"最高\",\n \"最低\",\n \"成交量\",\n \"成交额\",\n \"_\",\n \"_\",\n ]\n else:\n temp_df.columns = [\n \"代码\",\n \"名称\",\n \"最新价\",\n \"涨跌额\",\n \"涨跌幅\",\n \"买入\",\n \"卖出\",\n \"昨收\",\n \"今开\",\n \"最高\",\n \"最低\",\n \"成交量\",\n \"成交额\",\n \"_\",\n \"_\",\n \"_\",\n \"_\",\n ]\n temp_df = temp_df[\n [\n \"代码\",\n \"名称\",\n \"最新价\",\n \"涨跌额\",\n \"涨跌幅\",\n \"买入\",\n \"卖出\",\n \"昨收\",\n \"今开\",\n \"最高\",\n \"最低\",\n \"成交量\",\n \"成交额\",\n ]\n ]\n temp_df[\"最新价\"] = pd.to_numeric(temp_df[\"最新价\"], errors=\"coerce\")\n temp_df[\"涨跌额\"] = pd.to_numeric(temp_df[\"涨跌额\"], errors=\"coerce\")\n temp_df[\"涨跌幅\"] = pd.to_numeric(temp_df[\"涨跌幅\"], errors=\"coerce\")\n temp_df[\"买入\"] = pd.to_numeric(temp_df[\"买入\"], errors=\"coerce\")\n temp_df[\"卖出\"] = pd.to_numeric(temp_df[\"卖出\"], errors=\"coerce\")\n temp_df[\"昨收\"] = pd.to_numeric(temp_df[\"昨收\"], errors=\"coerce\")\n temp_df[\"今开\"] = pd.to_numeric(temp_df[\"今开\"], errors=\"coerce\")\n temp_df[\"最高\"] = pd.to_numeric(temp_df[\"最高\"], errors=\"coerce\")\n temp_df[\"最低\"] = pd.to_numeric(temp_df[\"最低\"], errors=\"coerce\")\n temp_df[\"成交量\"] = pd.to_numeric(temp_df[\"成交量\"], errors=\"coerce\")\n temp_df[\"成交额\"] = pd.to_numeric(temp_df[\"成交额\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_etf_dividend_sina", "tool_from": "akshare", "description": "新浪财经-基金-ETF 基金-累计分红\nhttps://finance.sina.com.cn/fund/quotes/510050/bc.shtml\n:param symbol: 基金名称, 可以通过 ak.fund_etf_category_sina() 函数获取\n:type symbol: str\n:return: 累计分红\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "基金名称, 可以通过 ak.fund_etf_category_sina() 函数获取"}}, "required": []}, "python_code": "def fund_etf_dividend_sina(symbol: str = \"sh510050\") -> pd.DataFrame:\n \"\"\"\n 新浪财经-基金-ETF 基金-累计分红\n https://finance.sina.com.cn/fund/quotes/510050/bc.shtml\n :param symbol: 基金名称, 可以通过 ak.fund_etf_category_sina() 函数获取\n :type symbol: str\n :return: 累计分红\n :rtype: pandas.DataFrame\n \"\"\"\n # 构建复权数据URL\n factor_url = f\"https://finance.sina.com.cn/realstock/company/{symbol}/hfq.js\"\n r = requests.get(factor_url)\n text = r.text\n if text.startswith(\"var\"):\n json_str = text.split(\"=\")[1].strip().rsplit(\"}\", maxsplit=1)[0].strip()\n data = eval(json_str + \"}\") # 这里使用eval而不是json.loads因为数据格式特殊\n\n if isinstance(data, dict) and \"data\" in data:\n df = pd.DataFrame(data[\"data\"])\n # 重命名列\n df.columns = [\"date\", \"f\", \"s\", \"u\"] if len(df.columns) == 4 else df.columns\n # 移除1900-01-01的数据\n df = df[df[\"date\"] != \"1900-01-01\"]\n # 转换日期\n df[\"date\"] = pd.to_datetime(df[\"date\"])\n # 转换数值类型\n df[[\"f\", \"s\", \"u\"]] = df[[\"f\", \"s\", \"u\"]].astype(float)\n # 按日期排序\n df = df.sort_values(by=\"date\", ascending=True, ignore_index=True)\n temp_df = df[[\"date\", \"u\"]].copy()\n temp_df.columns = [\"日期\", \"累计分红\"]\n temp_df[\"日期\"] = pd.to_datetime(temp_df[\"日期\"], errors=\"coerce\").dt.date\n return temp_df\n else:\n return pd.DataFrame()\n else:\n return pd.DataFrame()\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_etf_fund_info_em", "tool_from": "akshare", "description": "东方财富网站-天天基金网-基金数据-场内交易基金-历史净值明细\nhttps://fundf10.eastmoney.com/jjjz_511280.html\n:param fund: 场内交易基金代码, 可以通过 fund_etf_fund_daily_em 来获取\n:type fund: str\n:param start_date: 开始统计时间\n:type start_date: str\n:param end_date: 结束统计时间\n:type end_date: str\n:return: 东方财富网站-天天基金网-基金数据-场内交易基金-历史净值明细\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"fund": {"type": "string", "description": "场内交易基金代码, 可以通过 fund_etf_fund_daily_em 来获取"}, "start_date": {"type": "string", "description": "开始统计时间"}, "end_date": {"type": "string", "description": "结束统计时间"}}, "required": []}, "python_code": "def fund_etf_fund_info_em(\n fund: str = \"511280\",\n start_date: str = \"20000101\",\n end_date: str = \"20500101\",\n) -> pd.DataFrame:\n \"\"\"\n 东方财富网站-天天基金网-基金数据-场内交易基金-历史净值明细\n https://fundf10.eastmoney.com/jjjz_511280.html\n :param fund: 场内交易基金代码, 可以通过 fund_etf_fund_daily_em 来获取\n :type fund: str\n :param start_date: 开始统计时间\n :type start_date: str\n :param end_date: 结束统计时间\n :type end_date: str\n :return: 东方财富网站-天天基金网-基金数据-场内交易基金-历史净值明细\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://api.fund.eastmoney.com/f10/lsjz\"\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/80.0.3987.149 Safari/537.36\",\n \"Referer\": f\"https://fundf10.eastmoney.com/jjjz_{fund}.html\",\n }\n params = {\n \"fundCode\": fund,\n \"pageIndex\": \"1\",\n \"pageSize\": \"20\",\n \"startDate\": \"-\".join([start_date[:4], start_date[4:6], start_date[6:]]),\n \"endDate\": \"-\".join([end_date[:4], end_date[4:6], end_date[6:]]),\n \"_\": round(time.time() * 1000),\n }\n r = requests.get(url, params=params, headers=headers)\n data_json = r.json()\n total_page = math.ceil(data_json[\"TotalCount\"] / 20)\n df_list = []\n tqdm = get_tqdm()\n for page in tqdm(range(1, total_page + 1), leave=False):\n params.update({\"pageIndex\": page})\n r = requests.get(url, params=params, headers=headers)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"Data\"][\"LSJZList\"])\n df_list.append(temp_df)\n big_df = pd.concat(df_list)\n big_df.columns = [\n \"净值日期\",\n \"单位净值\",\n \"累计净值\",\n \"_\",\n \"_\",\n \"_\",\n \"日增长率\",\n \"申购状态\",\n \"赎回状态\",\n \"_\",\n \"_\",\n \"_\",\n \"_\",\n ]\n big_df = big_df[\n [\"净值日期\", \"单位净值\", \"累计净值\", \"日增长率\", \"申购状态\", \"赎回状态\"]\n ]\n big_df[\"净值日期\"] = pd.to_datetime(big_df[\"净值日期\"], errors=\"coerce\").dt.date\n big_df[\"单位净值\"] = pd.to_numeric(big_df[\"单位净值\"], errors=\"coerce\")\n big_df[\"累计净值\"] = pd.to_numeric(big_df[\"累计净值\"], errors=\"coerce\")\n big_df[\"日增长率\"] = pd.to_numeric(big_df[\"日增长率\"], errors=\"coerce\")\n big_df.sort_values([\"净值日期\"], inplace=True, ignore_index=True)\n return big_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_etf_hist_em", "tool_from": "akshare", "description": "东方财富-ETF行情\nhttps://quote.eastmoney.com/sz159707.html\n:param symbol: ETF 代码\n:type symbol: str\n:param period: choice of {'daily', 'weekly', 'monthly'}\n:type period: str\n:param start_date: 开始日期\n:type start_date: str\n:param end_date: 结束日期\n:type end_date: str\n:param adjust: choice of {\"qfq\": \"前复权\", \"hfq\": \"后复权\", \"\": \"不复权\"}\n:type adjust: str\n:return: 每日行情\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "ETF 代码"}, "period": {"type": "string", "description": "choice of {'daily', 'weekly', 'monthly'}"}, "start_date": {"type": "string", "description": "开始日期"}, "end_date": {"type": "string", "description": "结束日期"}, "adjust": {"type": "string", "description": "choice of {\"qfq\": \"前复权\", \"hfq\": \"后复权\", \"\": \"不复权\"}"}}, "required": []}, "python_code": "def fund_etf_hist_em(\n symbol: str = \"159707\",\n period: str = \"daily\",\n start_date: str = \"19700101\",\n end_date: str = \"20500101\",\n adjust: str = \"\",\n) -> pd.DataFrame:\n \"\"\"\n 东方财富-ETF行情\n https://quote.eastmoney.com/sz159707.html\n :param symbol: ETF 代码\n :type symbol: str\n :param period: choice of {'daily', 'weekly', 'monthly'}\n :type period: str\n :param start_date: 开始日期\n :type start_date: str\n :param end_date: 结束日期\n :type end_date: str\n :param adjust: choice of {\"qfq\": \"前复权\", \"hfq\": \"后复权\", \"\": \"不复权\"}\n :type adjust: str\n :return: 每日行情\n :rtype: pandas.DataFrame\n \"\"\"\n # code_id_dict = _fund_etf_code_id_map_em()\n adjust_dict = {\"qfq\": \"1\", \"hfq\": \"2\", \"\": \"0\"}\n period_dict = {\"daily\": \"101\", \"weekly\": \"102\", \"monthly\": \"103\"}\n url = \"https://push2his.eastmoney.com/api/qt/stock/kline/get\"\n params = {\n \"fields1\": \"f1,f2,f3,f4,f5,f6\",\n \"fields2\": \"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f116\",\n \"ut\": \"7eea3edcaed734bea9cbfc24409ed989\",\n \"klt\": period_dict[period],\n \"fqt\": adjust_dict[adjust],\n \"beg\": start_date,\n \"end\": end_date,\n }\n try:\n # market_id = code_id_dict[symbol]\n market_id = get_market_id(symbol)\n params.update({\"secid\": f\"{market_id}.{symbol}\"})\n r = requests.get(url, timeout=15, params=params)\n data_json = r.json()\n except KeyError:\n market_id = 1\n params.update({\"secid\": f\"{market_id}.{symbol}\"})\n r = requests.get(url, timeout=15, params=params)\n data_json = r.json()\n if not data_json[\"data\"]:\n market_id = 0\n params.update({\"secid\": f\"{market_id}.{symbol}\"})\n r = requests.get(url, timeout=15, params=params)\n data_json = r.json()\n if not (data_json[\"data\"] and data_json[\"data\"][\"klines\"]):\n return pd.DataFrame()\n temp_df = pd.DataFrame([item.split(\",\") for item in data_json[\"data\"][\"klines\"]])\n temp_df.columns = [\n \"日期\",\n \"开盘\",\n \"收盘\",\n \"最高\",\n \"最低\",\n \"成交量\",\n \"成交额\",\n \"振幅\",\n \"涨跌幅\",\n \"涨跌额\",\n \"换手率\",\n ]\n temp_df.index = pd.to_datetime(temp_df[\"日期\"], errors=\"coerce\")\n temp_df.reset_index(inplace=True, drop=True)\n temp_df[\"开盘\"] = pd.to_numeric(temp_df[\"开盘\"], errors=\"coerce\")\n temp_df[\"收盘\"] = pd.to_numeric(temp_df[\"收盘\"], errors=\"coerce\")\n temp_df[\"最高\"] = pd.to_numeric(temp_df[\"最高\"], errors=\"coerce\")\n temp_df[\"最低\"] = pd.to_numeric(temp_df[\"最低\"], errors=\"coerce\")\n temp_df[\"成交量\"] = pd.to_numeric(temp_df[\"成交量\"], errors=\"coerce\")\n temp_df[\"成交额\"] = pd.to_numeric(temp_df[\"成交额\"], errors=\"coerce\")\n temp_df[\"振幅\"] = pd.to_numeric(temp_df[\"振幅\"], errors=\"coerce\")\n temp_df[\"涨跌幅\"] = pd.to_numeric(temp_df[\"涨跌幅\"], errors=\"coerce\")\n temp_df[\"涨跌额\"] = pd.to_numeric(temp_df[\"涨跌额\"], errors=\"coerce\")\n temp_df[\"换手率\"] = pd.to_numeric(temp_df[\"换手率\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_etf_hist_min_em", "tool_from": "akshare", "description": "东方财富-ETF 行情\nhttps://quote.eastmoney.com/sz159707.html\n:param symbol: ETF 代码\n:type symbol: str\n:param start_date: 开始日期\n:type start_date: str\n:param end_date: 结束日期\n:type end_date: str\n:param period: choice of {\"1\", \"5\", \"15\", \"30\", \"60\"}\n:type period: str\n:param adjust: choice of {'', 'qfq', 'hfq'}\n:type adjust: str\n:return: 每日分时行情\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "ETF 代码"}, "start_date": {"type": "string", "description": "开始日期"}, "end_date": {"type": "string", "description": "结束日期"}, "period": {"type": "string", "description": "choice of {\"1\", \"5\", \"15\", \"30\", \"60\"}"}, "adjust": {"type": "string", "description": "choice of {'', 'qfq', 'hfq'}"}}, "required": []}, "python_code": "def fund_etf_hist_min_em(\n symbol: str = \"159707\",\n start_date: str = \"1979-09-01 09:32:00\",\n end_date: str = \"2222-01-01 09:32:00\",\n period: str = \"5\",\n adjust: str = \"\",\n) -> pd.DataFrame:\n \"\"\"\n 东方财富-ETF 行情\n https://quote.eastmoney.com/sz159707.html\n :param symbol: ETF 代码\n :type symbol: str\n :param start_date: 开始日期\n :type start_date: str\n :param end_date: 结束日期\n :type end_date: str\n :param period: choice of {\"1\", \"5\", \"15\", \"30\", \"60\"}\n :type period: str\n :param adjust: choice of {'', 'qfq', 'hfq'}\n :type adjust: str\n :return: 每日分时行情\n :rtype: pandas.DataFrame\n \"\"\"\n #code_id_dict = _fund_etf_code_id_map_em()\n # 商品期货类 ETF\n # code_id_dict.update(\n # {\n # \"159980\": \"0\",\n # \"159981\": \"0\",\n # \"159985\": \"0\",\n # \"511090\": \"1\",\n # \"511220\": \"1\",\n # \"511380\": \"1\",\n # }\n # )\n adjust_map = {\n \"\": \"0\",\n \"qfq\": \"1\",\n \"hfq\": \"2\",\n }\n if period == \"1\":\n url = \"https://push2his.eastmoney.com/api/qt/stock/trends2/get\"\n params = {\n \"fields1\": \"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13\",\n \"fields2\": \"f51,f52,f53,f54,f55,f56,f57,f58\",\n \"ut\": \"7eea3edcaed734bea9cbfc24409ed989\",\n \"ndays\": \"5\",\n \"iscr\": \"0\",\n \"secid\": f\"{get_market_id(symbol)}.{symbol}\",\n }\n r = requests.get(url, timeout=15, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(\n [item.split(\",\") for item in data_json[\"data\"][\"trends\"]]\n )\n temp_df.columns = [\n \"时间\",\n \"开盘\",\n \"收盘\",\n \"最高\",\n \"最低\",\n \"成交量\",\n \"成交额\",\n \"均价\",\n ]\n temp_df.index = pd.to_datetime(temp_df[\"时间\"])\n temp_df = temp_df[start_date:end_date]\n temp_df.reset_index(drop=True, inplace=True)\n temp_df[\"开盘\"] = pd.to_numeric(temp_df[\"开盘\"], errors=\"coerce\")\n temp_df[\"收盘\"] = pd.to_numeric(temp_df[\"收盘\"], errors=\"coerce\")\n temp_df[\"最高\"] = pd.to_numeric(temp_df[\"最高\"], errors=\"coerce\")\n temp_df[\"最低\"] = pd.to_numeric(temp_df[\"最低\"], errors=\"coerce\")\n temp_df[\"成交量\"] = pd.to_numeric(temp_df[\"成交量\"], errors=\"coerce\")\n temp_df[\"成交额\"] = pd.to_numeric(temp_df[\"成交额\"], errors=\"coerce\")\n temp_df[\"均价\"] = pd.to_numeric(temp_df[\"均价\"], errors=\"coerce\")\n temp_df[\"时间\"] = pd.to_datetime(temp_df[\"时间\"]).astype(str)\n return temp_df\n else:\n url = \"https://push2his.eastmoney.com/api/qt/stock/kline/get\"\n params = {\n \"fields1\": \"f1,f2,f3,f4,f5,f6\",\n \"fields2\": \"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61\",\n \"ut\": \"7eea3edcaed734bea9cbfc24409ed989\",\n \"klt\": period,\n \"fqt\": adjust_map[adjust],\n \"secid\": f\"{get_market_id(symbol)}.{symbol}\",\n \"beg\": \"0\",\n \"end\": \"20500000\",\n }\n r = requests.get(url, timeout=15, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(\n [item.split(\",\") for item in data_json[\"data\"][\"klines\"]]\n )\n temp_df.columns = [\n \"时间\",\n \"开盘\",\n \"收盘\",\n \"最高\",\n \"最低\",\n \"成交量\",\n \"成交额\",\n \"振幅\",\n \"涨跌幅\",\n \"涨跌额\",\n \"换手率\",\n ]\n temp_df.index = pd.to_datetime(temp_df[\"时间\"])\n temp_df = temp_df[start_date:end_date]\n temp_df.reset_index(drop=True, inplace=True)\n temp_df[\"开盘\"] = pd.to_numeric(temp_df[\"开盘\"], errors=\"coerce\")\n temp_df[\"收盘\"] = pd.to_numeric(temp_df[\"收盘\"], errors=\"coerce\")\n temp_df[\"最高\"] = pd.to_numeric(temp_df[\"最高\"], errors=\"coerce\")\n temp_df[\"最低\"] = pd.to_numeric(temp_df[\"最低\"], errors=\"coerce\")\n temp_df[\"成交量\"] = pd.to_numeric(temp_df[\"成交量\"], errors=\"coerce\")\n temp_df[\"成交额\"] = pd.to_numeric(temp_df[\"成交额\"], errors=\"coerce\")\n temp_df[\"振幅\"] = pd.to_numeric(temp_df[\"振幅\"], errors=\"coerce\")\n temp_df[\"涨跌幅\"] = pd.to_numeric(temp_df[\"涨跌幅\"], errors=\"coerce\")\n temp_df[\"涨跌额\"] = pd.to_numeric(temp_df[\"涨跌额\"], errors=\"coerce\")\n temp_df[\"换手率\"] = pd.to_numeric(temp_df[\"换手率\"], errors=\"coerce\")\n temp_df[\"时间\"] = pd.to_datetime(temp_df[\"时间\"]).astype(str)\n temp_df = temp_df[\n [\n \"时间\",\n \"开盘\",\n \"收盘\",\n \"最高\",\n \"最低\",\n \"涨跌幅\",\n \"涨跌额\",\n \"成交量\",\n \"成交额\",\n \"振幅\",\n \"换手率\",\n ]\n ]\n return temp_df\n", "financial_tags": {"timeliness": "realtime", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_etf_hist_sina", "tool_from": "akshare", "description": "新浪财经-基金-ETF 基金-日行情数据\nhttps://finance.sina.com.cn/fund/quotes/159996/bc.shtml\n:param symbol: 基金名称, 可以通过 ak.fund_etf_category_sina() 函数获取\n:type symbol: str\n:return: 日行情数据\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "基金名称, 可以通过 ak.fund_etf_category_sina() 函数获取"}}, "required": []}, "python_code": "def fund_etf_hist_sina(symbol: str = \"sh510050\") -> pd.DataFrame:\n \"\"\"\n 新浪财经-基金-ETF 基金-日行情数据\n https://finance.sina.com.cn/fund/quotes/159996/bc.shtml\n :param symbol: 基金名称, 可以通过 ak.fund_etf_category_sina() 函数获取\n :type symbol: str\n :return: 日行情数据\n :rtype: pandas.DataFrame\n \"\"\"\n url = f\"https://finance.sina.com.cn/realstock/company/{symbol}/hisdata_klc2/klc_kl.js\"\n r = requests.get(url)\n js_code = py_mini_racer.MiniRacer()\n js_code.eval(hk_js_decode)\n dict_list = js_code.call(\n \"d\", r.text.split(\"=\")[1].split(\";\")[0].replace('\"', \"\")\n ) # 执行js解密代码\n temp_df = pd.DataFrame(dict_list)\n if temp_df.empty: # 处理获取数据为空的问题\n return pd.DataFrame()\n temp_df[\"date\"] = pd.to_datetime(temp_df[\"date\"], errors=\"coerce\").dt.tz_localize(\n None\n )\n temp_df[\"open\"] = pd.to_numeric(temp_df[\"open\"], errors=\"coerce\")\n temp_df[\"high\"] = pd.to_numeric(temp_df[\"high\"], errors=\"coerce\")\n temp_df[\"low\"] = pd.to_numeric(temp_df[\"low\"], errors=\"coerce\")\n temp_df[\"close\"] = pd.to_numeric(temp_df[\"close\"], errors=\"coerce\")\n temp_df[\"volume\"] = pd.to_numeric(temp_df[\"volume\"], errors=\"coerce\")\n\n # 转换日期列为日期类型\n temp_df[\"date\"] = temp_df[\"date\"].dt.date\n temp_df = temp_df.sort_values(by=\"date\", ascending=True)\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_etf_spot_ths", "tool_from": "akshare", "description": "同花顺理财-基金数据-每日净值-ETF-实时行情\nhttps://fund.10jqka.com.cn/datacenter/jz/kfs/etf/\n:param date: 查询日期\n:type date: str\n:return: ETF 实时行情\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "查询日期"}}, "required": []}, "python_code": "def fund_etf_spot_ths(date: str = \"\") -> pd.DataFrame:\n \"\"\"\n 同花顺理财-基金数据-每日净值-ETF-实时行情\n https://fund.10jqka.com.cn/datacenter/jz/kfs/etf/\n :param date: 查询日期\n :type date: str\n :return: ETF 实时行情\n :rtype: pandas.DataFrame\n \"\"\"\n inner_date = \"-\".join([date[:4], date[4:6], date[6:]]) if date != \"\" else 0\n url = f\"https://fund.10jqka.com.cn/data/Net/info/ETF_rate_desc_{inner_date}_0_1_9999_0_0_0_jsonp_g.html\"\n r = requests.get(url, timeout=15)\n data_text = r.text[2:-1]\n data_json = json.loads(data_text)\n temp_df = pd.DataFrame(data_json[\"data\"][\"data\"]).T\n temp_df.reset_index(inplace=True, drop=True)\n temp_df.reset_index(inplace=True)\n temp_df[\"index\"] = temp_df[\"index\"] + 1\n temp_df.rename(\n columns={\n \"index\": \"序号\",\n \"code\": \"基金代码\",\n \"typename\": \"基金类型\",\n \"net\": \"当前-单位净值\",\n \"name\": \"基金名称\",\n \"totalnet\": \"当前-累计净值\",\n \"newnet\": \"最新-单位净值\",\n \"newtotalnet\": \"最新-累计净值\",\n \"newdate\": \"最新-交易日\",\n \"net1\": \"前一日-单位净值\",\n \"totalnet1\": \"前一日-累计净值\",\n \"ranges\": \"增长值\",\n \"rate\": \"增长率\",\n \"shstat\": \"赎回状态\",\n \"sgstat\": \"申购状态\",\n },\n inplace=True,\n )\n temp_df = temp_df[\n [\n \"序号\",\n \"基金代码\",\n \"基金名称\",\n \"当前-单位净值\",\n \"当前-累计净值\",\n \"前一日-单位净值\",\n \"前一日-累计净值\",\n \"增长值\",\n \"增长率\",\n \"赎回状态\",\n \"申购状态\",\n \"最新-交易日\",\n \"最新-单位净值\",\n \"最新-累计净值\",\n \"基金类型\",\n ]\n ]\n query_date = inner_date if inner_date != 0 else temp_df[\"最新-交易日\"][0]\n temp_df[\"查询日期\"] = query_date\n temp_df[\"查询日期\"] = pd.to_datetime(temp_df[\"查询日期\"], errors=\"coerce\").dt.date\n temp_df[\"当前-单位净值\"] = pd.to_numeric(temp_df[\"当前-单位净值\"], errors=\"coerce\")\n temp_df[\"当前-累计净值\"] = pd.to_numeric(temp_df[\"当前-累计净值\"], errors=\"coerce\")\n temp_df[\"前一日-单位净值\"] = pd.to_numeric(\n temp_df[\"前一日-单位净值\"], errors=\"coerce\"\n )\n temp_df[\"前一日-累计净值\"] = pd.to_numeric(\n temp_df[\"前一日-累计净值\"], errors=\"coerce\"\n )\n temp_df[\"增长值\"] = pd.to_numeric(temp_df[\"增长值\"], errors=\"coerce\")\n temp_df[\"增长率\"] = pd.to_numeric(temp_df[\"增长率\"], errors=\"coerce\")\n temp_df[\"最新-单位净值\"] = pd.to_numeric(temp_df[\"最新-单位净值\"], errors=\"coerce\")\n temp_df[\"最新-累计净值\"] = pd.to_numeric(temp_df[\"最新-累计净值\"], errors=\"coerce\")\n temp_df[\"最新-交易日\"] = pd.to_datetime(\n temp_df[\"最新-交易日\"], errors=\"coerce\"\n ).dt.date\n return temp_df\n", "financial_tags": {"timeliness": "realtime", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_fee_em", "tool_from": "akshare", "description": "天天基金-基金档案-购买信息\nhttps://fundf10.eastmoney.com/jjfl_015641.html\n:param symbol: 基金代码\n:type symbol: str\n:param indicator: choice of {\"交易状态\", \"申购与赎回金额\", \"交易确认日\", \"运作费用\", \"认购费率\", \"申购费率\", \"赎回费率\"}\n:type indicator: str\n:return: 交易规则\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "基金代码"}, "indicator": {"type": "string", "description": "choice of {\"交易状态\", \"申购与赎回金额\", \"交易确认日\", \"运作费用\", \"认购费率\", \"申购费率\", \"赎回费率\"}"}}, "required": []}, "python_code": "def fund_fee_em(symbol: str = \"015641\", indicator: str = \"认购费率\") -> pd.DataFrame:\n \"\"\"\n 天天基金-基金档案-购买信息\n https://fundf10.eastmoney.com/jjfl_015641.html\n :param symbol: 基金代码\n :type symbol: str\n :param indicator: choice of {\"交易状态\", \"申购与赎回金额\", \"交易确认日\", \"运作费用\", \"认购费率\", \"申购费率\", \"赎回费率\"}\n :type indicator: str\n :return: 交易规则\n :rtype: pandas.DataFrame\n \"\"\"\n url = f\"https://fundf10.eastmoney.com/jjfl_{symbol}.html\"\n r = requests.get(url)\n # 使用BeautifulSoup解析HTML\n soup = BeautifulSoup(r.text, \"html.parser\")\n # 创建一个字典,将标题文本映射到对应的表格\n tables_dict = {}\n # 找到所有具有class=\"t\"的h4标签\n title_elements = soup.find_all(name=\"h4\", class_=\"t\")\n for title_elem in title_elements:\n # 获取标题文本\n title_text = title_elem.get_text(strip=True)\n title_text = re.sub(r'\\s+', ' ', title_text).strip()\n\n # 获取标题后面的表格\n if title_text == \"申购与赎回金额\":\n next_table = title_elem.find_all_next(\"table\")[0]\n next_next_table = title_elem.find_all_next(\"table\")[1]\n table_html = str(next_table)\n next_table_html = str(next_next_table)\n df_1 = pd.read_html(StringIO(table_html))[0]\n df_2 = pd.read_html(StringIO(next_table_html))[0]\n df = pd.concat(objs=[df_1, df_2], ignore_index=True)\n tables_dict[title_text] = df\n continue\n else:\n next_table = title_elem.find_next(\"table\")\n\n if next_table:\n try:\n # 将表格转换为HTML字符串,然后使用pd.read_html读取\n table_html = str(next_table)\n df = pd.read_html(StringIO(table_html))[0]\n tables_dict[title_text] = df\n except Exception as e:\n continue\n\n if indicator == \"交易状态\":\n temp_df = tables_dict[indicator]\n elif indicator == \"申购与赎回金额\":\n temp_df = tables_dict[indicator]\n elif indicator == \"交易确认日\":\n temp_df = tables_dict[indicator]\n elif indicator == \"运作费用\":\n temp_df = tables_dict[indicator]\n elif indicator == \"认购费率(前端)\":\n temp_df = tables_dict[indicator]\n temp_df[\"原费率\"] = temp_df[\"原费率|天天基金优惠费率\"].str.split(\n \"|\", expand=True\n )[0]\n temp_df[\"天天基金优惠费率\"] = temp_df[\"原费率|天天基金优惠费率\"].str.split(\n \"|\", expand=True\n )[1]\n del temp_df[\"原费率|天天基金优惠费率\"]\n temp_df.loc[3, \"天天基金优惠费率\"] = temp_df.loc[3, \"原费率\"]\n temp_df[\"原费率\"] = temp_df[\"原费率\"].str.strip()\n temp_df[\"天天基金优惠费率\"] = temp_df[\"天天基金优惠费率\"].str.strip()\n elif indicator == \"申购费率(前端)\":\n temp_df = tables_dict[indicator]\n if temp_df[\n \"原费率|天天基金优惠费率 银行卡购买|活期宝购买\"\n ].str.split(\"|\", expand=True).shape == (1, 1):\n temp_df[\"原费率\"] = temp_df[\n \"原费率|天天基金优惠费率 银行卡购买|活期宝购买\"\n ].str.split(\"|\", expand=True)[0]\n temp_df[\"天天基金优惠费率-银行卡购买\"] = temp_df[\n \"原费率|天天基金优惠费率 银行卡购买|活期宝购买\"\n ].str.split(\"|\", expand=True)[0]\n temp_df[\"天天基金优惠费率-活期宝购买\"] = temp_df[\n \"原费率|天天基金优惠费率 银行卡购买|活期宝购买\"\n ].str.split(\"|\", expand=True)[0]\n del temp_df[\"原费率|天天基金优惠费率 银行卡购买|活期宝购买\"]\n elif temp_df[\n \"原费率|天天基金优惠费率 银行卡购买|活期宝购买\"\n ].str.split(\"|\", expand=True).shape == (3, 3):\n temp_df[\"原费率\"] = temp_df[\n \"原费率|天天基金优惠费率 银行卡购买|活期宝购买\"\n ].str.split(\"|\", expand=True)[0]\n temp_df[\"天天基金优惠费率-银行卡购买\"] = temp_df[\n \"原费率|天天基金优惠费率 银行卡购买|活期宝购买\"\n ].str.split(\"|\", expand=True)[1]\n temp_df[\"天天基金优惠费率-活期宝购买\"] = temp_df[\n \"原费率|天天基金优惠费率 银行卡购买|活期宝购买\"\n ].str.split(\"|\", expand=True)[2]\n temp_df.loc[2, \"天天基金优惠费率-银行卡购买\"] = temp_df.loc[2, \"原费率\"]\n temp_df.loc[2, \"天天基金优惠费率-活期宝购买\"] = temp_df.loc[2, \"原费率\"]\n del temp_df[\"原费率|天天基金优惠费率 银行卡购买|活期宝购买\"]\n else:\n temp_df[\"原费率\"] = temp_df[\n \"原费率|天天基金优惠费率 银行卡购买|活期宝购买\"\n ].str.split(\"|\", expand=True)[0]\n temp_df[\"天天基金优惠费率-银行卡购买\"] = temp_df[\n \"原费率|天天基金优惠费率 银行卡购买|活期宝购买\"\n ].str.split(\"|\", expand=True)[1]\n temp_df[\"天天基金优惠费率-活期宝购买\"] = temp_df[\n \"原费率|天天基金优惠费率 银行卡购买|活期宝购买\"\n ].str.split(\"|\", expand=True)[2]\n del temp_df[\"原费率|天天基金优惠费率 银行卡购买|活期宝购买\"]\n temp_df.loc[3, \"天天基金优惠费率-银行卡购买\"] = temp_df.loc[3, \"原费率\"]\n temp_df.loc[3, \"天天基金优惠费率-活期宝购买\"] = temp_df.loc[3, \"原费率\"]\n temp_df[\"原费率\"] = temp_df[\"原费率\"].str.strip()\n temp_df[\"天天基金优惠费率-银行卡购买\"] = temp_df[\n \"天天基金优惠费率-银行卡购买\"\n ].str.strip()\n temp_df[\"天天基金优惠费率-活期宝购买\"] = temp_df[\n \"天天基金优惠费率-活期宝购买\"\n ].str.strip()\n elif indicator == \"赎回费率\":\n temp_df = tables_dict[indicator]\n else:\n temp_df = pd.DataFrame([])\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_fh_em", "tool_from": "akshare", "description": "天天基金网-基金数据-分红送配-基金分红\nhttps://fund.eastmoney.com/data/fundfenhong.html#DJR,desc,1,,,\n:param year: 查询年份\n:type year: str\n:return: 基金分红\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"year": {"type": "string", "description": "查询年份"}}, "required": []}, "python_code": "def fund_fh_em(year: str = \"2025\") -> pd.DataFrame:\n \"\"\"\n 天天基金网-基金数据-分红送配-基金分红\n https://fund.eastmoney.com/data/fundfenhong.html#DJR,desc,1,,,\n :param year: 查询年份\n :type year: str\n :return: 基金分红\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://fund.eastmoney.com/Data/funddataIndex_Interface.aspx\"\n params = {\n \"dt\": \"8\",\n \"page\": \"1\",\n \"rank\": \"BZDM\",\n \"sort\": \"asc\",\n \"gs\": \"\",\n \"ftype\": \"\",\n \"year\": year,\n }\n r = requests.get(url, params=params)\n data_text = r.text\n total_page = eval(data_text[data_text.find(\"=\") + 1: data_text.find(\";\")])[0]\n big_df = pd.DataFrame()\n for page in tqdm(range(1, total_page + 1), leave=False):\n params.update({\"page\": str(page)})\n r = requests.get(url, params=params)\n data_text = r.text\n temp_list = eval(\n data_text[data_text.find(\"[[\"): data_text.find(\";var jjfh_jjgs\")]\n )\n temp_df = pd.DataFrame(temp_list)\n big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)\n big_df.reset_index(inplace=True)\n big_df[\"index\"] = big_df.index + 1\n big_df.columns = [\n \"序号\",\n \"基金代码\",\n \"基金简称\",\n \"权益登记日\",\n \"除息日期\",\n \"分红\",\n \"分红发放日\",\n \"-\",\n ]\n big_df = big_df[\n [\"序号\", \"基金代码\", \"基金简称\", \"权益登记日\", \"除息日期\", \"分红\", \"分红发放日\"]\n ]\n big_df[\"权益登记日\"] = pd.to_datetime(big_df[\"权益登记日\"]).dt.date\n big_df[\"除息日期\"] = pd.to_datetime(big_df[\"除息日期\"]).dt.date\n big_df[\"分红发放日\"] = pd.to_datetime(big_df[\"分红发放日\"]).dt.date\n big_df[\"分红\"] = pd.to_numeric(big_df[\"分红\"])\n return big_df\n", "financial_tags": {"timeliness": "as_filed", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_financial_fund_info_em", "tool_from": "akshare", "description": "东方财富网站-天天基金网-基金数据-理财型基金收益-历史净值明细\nhttps://fundf10.eastmoney.com/jjjz_000791.html\n:param symbol: 理财型基金代码, 可以通过 ak.fund_financial_fund_daily_em() 来获取\n:type symbol: str\n:return: 东方财富网站-天天基金网-基金数据-理财型基金收益-历史净值明细\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "理财型基金代码, 可以通过 ak.fund_financial_fund_daily_em() 来获取"}}, "required": []}, "python_code": "def fund_financial_fund_info_em(symbol: str = \"000134\") -> pd.DataFrame:\n \"\"\"\n 东方财富网站-天天基金网-基金数据-理财型基金收益-历史净值明细\n https://fundf10.eastmoney.com/jjjz_000791.html\n :param symbol: 理财型基金代码, 可以通过 ak.fund_financial_fund_daily_em() 来获取\n :type symbol: str\n :return: 东方财富网站-天天基金网-基金数据-理财型基金收益-历史净值明细\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://api.fund.eastmoney.com/f10/lsjz\"\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/80.0.3987.149 Safari/537.36\",\n \"Referer\": f\"https://fundf10.eastmoney.com/jjjz_{symbol}.html\",\n }\n params = {\n \"callback\": \"jQuery18307915911837995662_1588249228826\",\n \"fundCode\": symbol,\n \"pageIndex\": \"1\",\n \"pageSize\": \"10000\",\n \"startDate\": \"\",\n \"endDate\": \"\",\n \"_\": round(time.time() * 1000),\n }\n r = requests.get(url, params=params, headers=headers)\n text_data = r.text\n data_json = demjson.decode(text_data[text_data.find(\"{\") : -1])\n temp_df = pd.DataFrame(data_json[\"Data\"][\"LSJZList\"])\n temp_df.columns = [\n \"净值日期\",\n \"单位净值\",\n \"累计净值\",\n \"_\",\n \"_\",\n \"_\",\n \"日增长率\",\n \"申购状态\",\n \"赎回状态\",\n \"_\",\n \"_\",\n \"_\",\n \"分红送配\",\n ]\n temp_df = temp_df[\n [\n \"净值日期\",\n \"单位净值\",\n \"累计净值\",\n \"日增长率\",\n \"申购状态\",\n \"赎回状态\",\n \"分红送配\",\n ]\n ]\n temp_df.sort_values([\"净值日期\"], inplace=True, ignore_index=True)\n temp_df[\"净值日期\"] = pd.to_datetime(temp_df[\"净值日期\"]).dt.date\n temp_df[\"单位净值\"] = pd.to_numeric(temp_df[\"单位净值\"], errors=\"coerce\")\n temp_df[\"累计净值\"] = pd.to_numeric(temp_df[\"累计净值\"], errors=\"coerce\")\n temp_df[\"日增长率\"] = pd.to_numeric(temp_df[\"日增长率\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_graded_fund_info_em", "tool_from": "akshare", "description": "东方财富网站-天天基金网-基金数据-分级基金净值-历史净值明细\nhttps://fundf10.eastmoney.com/jjjz_150232.html\n:param symbol: 分级基金代码, 可以通过 ak.fund_money_fund_daily_em() 来获取\n:type symbol: str\n:return: 东方财富网站-天天基金网-基金数据-分级基金净值-历史净值明细\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "分级基金代码, 可以通过 ak.fund_money_fund_daily_em() 来获取"}}, "required": []}, "python_code": "def fund_graded_fund_info_em(symbol: str = \"150232\") -> pd.DataFrame:\n \"\"\"\n 东方财富网站-天天基金网-基金数据-分级基金净值-历史净值明细\n https://fundf10.eastmoney.com/jjjz_150232.html\n :param symbol: 分级基金代码, 可以通过 ak.fund_money_fund_daily_em() 来获取\n :type symbol: str\n :return: 东方财富网站-天天基金网-基金数据-分级基金净值-历史净值明细\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://api.fund.eastmoney.com/f10/lsjz\"\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/80.0.3987.149 Safari/537.36\",\n \"Referer\": f\"https://fundf10.eastmoney.com/jjjz_{symbol}.html\",\n }\n params = {\n \"fundCode\": symbol,\n \"pageIndex\": \"1\",\n \"pageSize\": \"20\",\n \"startDate\": \"\",\n \"endDate\": \"\",\n \"_\": round(time.time() * 1000),\n }\n r = requests.get(url, params=params, headers=headers)\n data_json = r.json()\n total_page = math.ceil(int(data_json[\"TotalCount\"]) / 20)\n tqdm = get_tqdm()\n big_list = []\n for page in tqdm(range(1, total_page + 1), leave=False):\n params.update({\"pageIndex\": page})\n r = requests.get(url, params=params, headers=headers)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"Data\"][\"LSJZList\"])\n big_list.append(temp_df)\n big_df = pd.concat(big_list, ignore_index=True)\n big_df.columns = [\n \"净值日期\",\n \"单位净值\",\n \"累计净值\",\n \"_\",\n \"_\",\n \"_\",\n \"日增长率\",\n \"申购状态\",\n \"赎回状态\",\n \"_\",\n \"_\",\n \"_\",\n \"_\",\n ]\n big_df.sort_values(by=[\"净值日期\"], inplace=True, ignore_index=True)\n big_df = big_df[\n [\"净值日期\", \"单位净值\", \"累计净值\", \"日增长率\", \"申购状态\", \"赎回状态\"]\n ]\n big_df[\"净值日期\"] = pd.to_datetime(big_df[\"净值日期\"], errors=\"coerce\").dt.date\n big_df[\"单位净值\"] = pd.to_numeric(big_df[\"单位净值\"], errors=\"coerce\")\n big_df[\"累计净值\"] = pd.to_numeric(big_df[\"累计净值\"], errors=\"coerce\")\n big_df[\"日增长率\"] = pd.to_numeric(big_df[\"日增长率\"], errors=\"coerce\")\n return big_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_hk_fund_hist_em", "tool_from": "akshare", "description": "东方财富网-天天基金网-基金数据-香港基金-历史净值明细(分红送配详情)\nhttps://overseas.1234567.com.cn/f10/FundJz/968092#FHPS\n:param code: 通过 ak.fund_em_hk_rank() 获取\n:type code: str\n:param symbol: choice of {\"历史净值明细\", \"分红送配详情\"}\n:type symbol: str\n:return: 香港基金-历史净值明细(分红送配详情)\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"code": {"type": "string", "description": "通过 ak.fund_em_hk_rank() 获取"}, "symbol": {"type": "string", "description": "choice of {\"历史净值明细\", \"分红送配详情\"}"}}, "required": []}, "python_code": "def fund_hk_fund_hist_em(\n code: str = \"1002200683\", symbol: str = \"历史净值明细\"\n) -> pd.DataFrame:\n \"\"\"\n 东方财富网-天天基金网-基金数据-香港基金-历史净值明细(分红送配详情)\n https://overseas.1234567.com.cn/f10/FundJz/968092#FHPS\n :param code: 通过 ak.fund_em_hk_rank() 获取\n :type code: str\n :param symbol: choice of {\"历史净值明细\", \"分红送配详情\"}\n :type symbol: str\n :return: 香港基金-历史净值明细(分红送配详情)\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://overseas.1234567.com.cn/overseasapi/OpenApiHander.ashx\"\n if symbol == \"历史净值明细\":\n params = {\n \"api\": \"HKFDApi\",\n \"m\": \"MethodJZ\",\n \"hkfcode\": f\"{code}\",\n \"action\": \"2\",\n \"pageindex\": \"0\",\n \"pagesize\": \"1000\",\n \"date1\": \"\",\n \"date2\": \"\",\n }\n r = requests.get(url, params=params, headers=headers)\n data_json = r.json()\n temp_one_df = pd.DataFrame(data_json[\"Data\"])\n temp_one_df.columns = [\n \"_\",\n \"_\",\n \"_\",\n \"净值日期\",\n \"单位净值\",\n \"_\",\n \"日增长值\",\n \"日增长率\",\n \"_\",\n \"单位\",\n \"_\",\n ]\n temp_one_df = temp_one_df[\n [\n \"净值日期\",\n \"单位净值\",\n \"日增长值\",\n \"日增长率\",\n \"单位\",\n ]\n ]\n else:\n params = {\n \"api\": \"HKFDApi\",\n \"m\": \"MethodJZ\",\n \"hkfcode\": f\"{code}\",\n \"action\": \"3\",\n \"pageindex\": \"0\",\n \"pagesize\": \"1000\",\n \"date1\": \"\",\n \"date2\": \"\",\n }\n r = requests.get(url, params=params, headers=headers)\n data_json = r.json()\n temp_one_df = pd.DataFrame(data_json[\"Data\"])\n temp_one_df.columns = [\n \"_\",\n \"_\",\n \"_\",\n \"_\",\n \"_\",\n \"年份\",\n \"分红金额\",\n \"除息日\",\n \"权益登记日\",\n \"分红发放日\",\n \"_\",\n \"单位\",\n \"_\",\n \"_\",\n ]\n temp_one_df = temp_one_df[\n [\n \"年份\",\n \"权益登记日\",\n \"除息日\",\n \"分红发放日\",\n \"分红金额\",\n \"单位\",\n ]\n ]\n return temp_one_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_individual_achievement_xq", "tool_from": "akshare", "description": "雪球基金-基金业绩\nhttps://danjuanfunds.com/djapi/fundx/base/fund/achievement/675091\n:param symbol: 基金代码\n:type symbol: str\n:param timeout: choice of None or a positive float number\n:type timeout: float\n:return: 基金业绩\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "基金代码"}, "timeout": {"type": "number", "description": "choice of None or a positive float number"}}, "required": []}, "python_code": "def fund_individual_achievement_xq(\n symbol: str = \"000001\", timeout: float = None\n) -> pd.DataFrame:\n \"\"\"\n 雪球基金-基金业绩\n https://danjuanfunds.com/djapi/fundx/base/fund/achievement/675091\n :param symbol: 基金代码\n :type symbol: str\n :param timeout: choice of None or a positive float number\n :type timeout: float\n :return: 基金业绩\n :rtype: pandas.DataFrame\n \"\"\"\n url = f\"https://danjuanfunds.com/djapi/fundx/base/fund/achievement/{symbol}\"\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/80.0.3987.149 Safari/537.36\"\n }\n r = requests.get(url, headers=headers, timeout=timeout)\n json_data = r.json()[\"data\"]\n combined_df = None\n type_dict = {\n \"annual_performance_list\": \"年度业绩\",\n \"stage_performance_list\": \"阶段业绩\",\n }\n for k, v in type_dict.items():\n temp_df = pd.DataFrame.from_dict(json_data[k], orient=\"columns\")\n temp_df[\"type\"] = v\n temp_df = temp_df[\n [\n \"type\",\n \"period_time\",\n \"self_nav\",\n \"self_max_draw_down\",\n \"self_nav_rank\",\n ]\n ]\n temp_df.columns = [\n \"业绩类型\",\n \"周期\",\n \"本产品区间收益\",\n \"本产品最大回撒\",\n \"周期收益同类排名\",\n ]\n combined_df = pd.concat([combined_df, temp_df], ignore_index=True)\n combined_df = combined_df.map(\n lambda x: x if \"%\" not in str(x) else x.replace(\"%\", \"\")\n )\n combined_df[[\"本产品区间收益\", \"本产品最大回撒\"]] = combined_df[\n [\"本产品区间收益\", \"本产品最大回撒\"]\n ].astype(float)\n return combined_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_individual_analysis_xq", "tool_from": "akshare", "description": "雪球基金-基金数据分析\nhttps://danjuanfunds.com/djapi/fund/base/quote/data/index/analysis/675091\n:param symbol: 基金代码\n:type symbol: str\n:param timeout: choice of None or a positive float number\n:type timeout: float\n:return: 基金数据分析\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "基金代码"}, "timeout": {"type": "number", "description": "choice of None or a positive float number"}}, "required": []}, "python_code": "def fund_individual_analysis_xq(\n symbol: str = \"000001\", timeout: float = None\n) -> pd.DataFrame:\n \"\"\"\n 雪球基金-基金数据分析\n https://danjuanfunds.com/djapi/fund/base/quote/data/index/analysis/675091\n :param symbol: 基金代码\n :type symbol: str\n :param timeout: choice of None or a positive float number\n :type timeout: float\n :return: 基金数据分析\n :rtype: pandas.DataFrame\n \"\"\"\n url = f\"https://danjuanfunds.com/djapi/fund/base/quote/data/index/analysis/{symbol}\"\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/80.0.3987.149 Safari/537.36\"\n }\n r = requests.get(url, headers=headers, timeout=timeout)\n json_data = r.json()[\"data\"][\"index_data_list\"]\n temp_df = pd.json_normalize(json_data)\n temp_df = temp_df[\n [\n \"index_time_period\",\n \"investment_cost_performance\",\n \"risk_control\",\n \"self_index.volatility_rank\",\n \"self_index.sharpe_rank\",\n \"self_index.max_draw_down\",\n ]\n ]\n temp_df.columns = [\n \"周期\",\n \"较同类风险收益比\",\n \"较同类抗风险波动\",\n \"年化波动率\",\n \"年化夏普比率\",\n \"最大回撤\",\n ]\n temp_df = temp_df.map(lambda x: x if \"%\" not in str(x) else x.replace(\"%\", \"\"))\n temp_df[[\"年化波动率\", \"最大回撤\"]] *= 100\n temp_df[\"较同类风险收益比\"] = pd.to_numeric(\n temp_df[\"较同类风险收益比\"], errors=\"coerce\"\n )\n temp_df[\"较同类抗风险波动\"] = pd.to_numeric(\n temp_df[\"较同类抗风险波动\"], errors=\"coerce\"\n )\n temp_df[\"年化波动率\"] = pd.to_numeric(temp_df[\"年化波动率\"], errors=\"coerce\")\n temp_df[\"年化夏普比率\"] = pd.to_numeric(temp_df[\"年化夏普比率\"], errors=\"coerce\")\n temp_df[\"最大回撤\"] = pd.to_numeric(temp_df[\"最大回撤\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_individual_basic_info_xq", "tool_from": "akshare", "description": "雪球基金-基金详情\nhttps://danjuanfunds.com/djapi/fund/675091\n:param symbol: 基金代码\n:type symbol: str\n:param timeout: choice of None or a positive float number\n:type timeout: float\n:return: 基金信息\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "基金代码"}, "timeout": {"type": "number", "description": "choice of None or a positive float number"}}, "required": []}, "python_code": "def fund_individual_basic_info_xq(\n symbol: str = \"000001\", timeout: float = None\n) -> pd.DataFrame:\n \"\"\"\n 雪球基金-基金详情\n https://danjuanfunds.com/djapi/fund/675091\n :param symbol: 基金代码\n :type symbol: str\n :param timeout: choice of None or a positive float number\n :type timeout: float\n :return: 基金信息\n :rtype: pandas.DataFrame\n \"\"\"\n url = f\"https://danjuanfunds.com/djapi/fund/{symbol}\"\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/80.0.3987.149 Safari/537.36\"\n }\n r = requests.get(url, headers=headers, timeout=timeout)\n json_data = r.json()[\"data\"]\n temp_df = pd.json_normalize(json_data)\n temp_df.rename(\n columns={\n \"fd_code\": \"基金代码\",\n \"fd_name\": \"基金名称\",\n \"fd_full_name\": \"基金全称\",\n \"found_date\": \"成立时间\",\n \"totshare\": \"最新规模\",\n \"keeper_name\": \"基金公司\",\n \"manager_name\": \"基金经理\",\n \"trup_name\": \"托管银行\",\n \"type_desc\": \"基金类型\",\n \"rating_source\": \"评级机构\",\n \"rating_desc\": \"基金评级\",\n \"invest_orientation\": \"投资策略\",\n \"invest_target\": \"投资目标\",\n \"performance_bench_mark\": \"业绩比较基准\",\n },\n inplace=True,\n )\n if \"评级机构\" not in temp_df.columns:\n temp_df[\"评级机构\"] = pd.NA\n temp_df = temp_df[\n [\n \"基金代码\",\n \"基金名称\",\n \"基金全称\",\n \"成立时间\",\n \"最新规模\",\n \"基金公司\",\n \"基金经理\",\n \"托管银行\",\n \"基金类型\",\n \"评级机构\",\n \"基金评级\",\n \"投资策略\",\n \"投资目标\",\n \"业绩比较基准\",\n ]\n ]\n temp_df = temp_df.T.reset_index()\n temp_df.columns = [\"item\", \"value\"]\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_individual_detail_hold_xq", "tool_from": "akshare", "description": "雪球基金-持仓\nhttps://danjuanfunds.com/rn/fund-detail/archive?id=103&code=002804\n:param symbol: 基金代码\n:type symbol: str\n:param date: 财报日期\n:type date: str\n:param timeout: choice of None or a positive float number\n:type timeout: float\n:return: 雪球基金-持仓\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "基金代码"}, "date": {"type": "string", "description": "财报日期"}, "timeout": {"type": "number", "description": "choice of None or a positive float number"}}, "required": []}, "python_code": "def fund_individual_detail_hold_xq(\n symbol: str = \"002804\", date: str = \"20231231\", timeout: float = None\n) -> pd.DataFrame:\n \"\"\"\n 雪球基金-持仓\n https://danjuanfunds.com/rn/fund-detail/archive?id=103&code=002804\n :param symbol: 基金代码\n :type symbol: str\n :param date: 财报日期\n :type date: str\n :param timeout: choice of None or a positive float number\n :type timeout: float\n :return: 雪球基金-持仓\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://danjuanfunds.com/djapi/fundx/base/fund/record/asset/percent\"\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/80.0.3987.149 Safari/537.36\"\n }\n params = {\n \"fund_code\": f\"{symbol}\",\n \"report_date\": f\"{'-'.join([date[:4], date[4:6], date[6:]])}\",\n }\n r = requests.get(url, headers=headers, params=params, timeout=timeout)\n data_json = r.json()\n temp_df = pd.DataFrame.from_dict(data_json[\"data\"][\"chart_list\"], orient=\"columns\")\n temp_df = temp_df[\n [\n \"type_desc\",\n \"percent\",\n ]\n ]\n temp_df.columns = [\n \"资产类型\",\n \"仓位占比\",\n ]\n temp_df[\"仓位占比\"] = pd.to_numeric(temp_df[\"仓位占比\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "as_filed", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_individual_detail_info_xq", "tool_from": "akshare", "description": "雪球基金-交易规则\nhttps://danjuanfunds.com/djapi/fund/detail/675091\n:param symbol: 基金代码\n:type symbol: str\n:param timeout: choice of None or a positive float number\n:type timeout: float\n:return: 交易规则\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "基金代码"}, "timeout": {"type": "number", "description": "choice of None or a positive float number"}}, "required": []}, "python_code": "def fund_individual_detail_info_xq(\n symbol: str = \"000001\", timeout: float = None\n) -> pd.DataFrame:\n \"\"\"\n 雪球基金-交易规则\n https://danjuanfunds.com/djapi/fund/detail/675091\n :param symbol: 基金代码\n :type symbol: str\n :param timeout: choice of None or a positive float number\n :type timeout: float\n :return: 交易规则\n :rtype: pandas.DataFrame\n \"\"\"\n url = f\"https://danjuanfunds.com/djapi/fund/detail/{symbol}\"\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/80.0.3987.149 Safari/537.36\"\n }\n r = requests.get(url, headers=headers, timeout=timeout)\n json_data = r.json()[\"data\"]\n combined_df = None\n rate_type_dict = {\n \"declare_rate_table\": \"买入规则\",\n \"withdraw_rate_table\": \"卖出规则\",\n \"other_rate_table\": \"其他费用\",\n }\n for k, v in rate_type_dict.items():\n temp_df = pd.DataFrame.from_dict(json_data[\"fund_rates\"][k], orient=\"columns\")\n temp_df[\"rate_type\"] = v\n temp_df = temp_df[\n [\n \"rate_type\",\n \"name\",\n \"value\",\n ]\n ]\n temp_df.columns = [\n \"费用类型\",\n \"条件或名称\",\n \"费用\",\n ]\n combined_df = pd.concat(objs=[combined_df, temp_df], ignore_index=True)\n combined_df[\"费用\"] = pd.to_numeric(combined_df[\"费用\"], errors=\"coerce\")\n return combined_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_individual_profit_probability_xq", "tool_from": "akshare", "description": "雪球基金-盈利概率-历史任意时点买入,持有满 X 年,盈利概率 Y%\nhttps://danjuanfunds.com/djapi/fundx/base/fund/profit/ratio/675091\n:param symbol: 基金代码\n:type symbol: str\n:param timeout: choice of None or a positive float number\n:type timeout: float\n:return: 盈利概率\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "基金代码"}, "timeout": {"type": "number", "description": "choice of None or a positive float number"}}, "required": []}, "python_code": "def fund_individual_profit_probability_xq(\n symbol: str = \"000001\", timeout: float = None\n) -> pd.DataFrame:\n \"\"\"\n 雪球基金-盈利概率-历史任意时点买入,持有满 X 年,盈利概率 Y%\n https://danjuanfunds.com/djapi/fundx/base/fund/profit/ratio/675091\n :param symbol: 基金代码\n :type symbol: str\n :param timeout: choice of None or a positive float number\n :type timeout: float\n :return: 盈利概率\n :rtype: pandas.DataFrame\n \"\"\"\n url = f\"https://danjuanfunds.com/djapi/fundx/base/fund/profit/ratio/{symbol}\"\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/80.0.3987.149 Safari/537.36\"\n }\n r = requests.get(url, headers=headers, timeout=timeout)\n json_data = r.json()[\"data\"][\"data_list\"]\n temp_df = pd.DataFrame.from_dict(json_data, orient=\"columns\")\n temp_df = temp_df[\n [\n \"holding_time\",\n \"profit_ratio\",\n \"average_income\",\n ]\n ]\n temp_df.columns = [\n \"持有时长\",\n \"盈利概率\",\n \"平均收益\",\n ]\n temp_df = temp_df.map(lambda x: x if \"%\" not in str(x) else x.replace(\"%\", \"\"))\n temp_df[\"盈利概率\"] = pd.to_numeric(temp_df[\"盈利概率\"], errors=\"coerce\")\n temp_df[\"平均收益\"] = pd.to_numeric(temp_df[\"平均收益\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "advisory", "regulatory_domains": ["fund"]}} {"name": "fund_info_index_em", "tool_from": "akshare", "description": "东方财富网站-天天基金网-基金数据-基金信息-指数型\nhttps://fund.eastmoney.com/trade/zs.html\n:param symbol: choice of {\"全部\", \"沪深指数\", \"行业主题\", \"大盘指数\", \"中盘指数\", \"小盘指数\", \"股票指数\", \"债券指数\"}\n:type symbol: str\n:param indicator: choice of {\"全部\", \"被动指数型\", \"增强指数型\"}\n:type indicator: str\n:return: 基金信息-指数型\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "choice of {\"全部\", \"沪深指数\", \"行业主题\", \"大盘指数\", \"中盘指数\", \"小盘指数\", \"股票指数\", \"债券指数\"}"}, "indicator": {"type": "string", "description": "choice of {\"全部\", \"被动指数型\", \"增强指数型\"}"}}, "required": []}, "python_code": "def fund_info_index_em(\n symbol: str = \"沪深指数\", indicator: str = \"被动指数型\"\n) -> pd.DataFrame:\n \"\"\"\n 东方财富网站-天天基金网-基金数据-基金信息-指数型\n https://fund.eastmoney.com/trade/zs.html\n :param symbol: choice of {\"全部\", \"沪深指数\", \"行业主题\", \"大盘指数\", \"中盘指数\", \"小盘指数\", \"股票指数\", \"债券指数\"}\n :type symbol: str\n :param indicator: choice of {\"全部\", \"被动指数型\", \"增强指数型\"}\n :type indicator: str\n :return: 基金信息-指数型\n :rtype: pandas.DataFrame\n \"\"\"\n symbol_map = {\n \"全部\": \"\",\n \"沪深指数\": \"053\",\n \"行业主题\": \"054\",\n \"大盘指数\": \"01\",\n \"中盘指数\": \"02\",\n \"小盘指数\": \"03\",\n \"股票指数\": \"050|001\",\n \"债券指数\": \"050|003\",\n }\n indicator_map = {\n \"全部\": \"\",\n \"被动指数型\": \"051\",\n \"增强指数型\": \"052\",\n }\n url = \"https://api.fund.eastmoney.com/FundTradeRank/GetRankList\"\n if symbol in {\"股票指数\", \"债券指数\"}:\n params = {\n \"ft\": \"zs\",\n \"sc\": \"1n\",\n \"st\": \"desc\",\n \"pi\": \"1\",\n \"pn\": \"10000\",\n \"cp\": \"\",\n \"ct\": \"\",\n \"cd\": \"\",\n \"ms\": \"\",\n \"fr\": symbol_map[symbol].split(\"|\")[0],\n \"plevel\": \"\",\n \"fst\": \"\",\n \"ftype\": symbol_map[symbol].split(\"|\")[1],\n \"fr1\": indicator_map[indicator],\n \"fl\": \"0\",\n \"isab\": \"1\",\n }\n else:\n params = {\n \"ft\": \"zs\",\n \"sc\": \"1n\",\n \"st\": \"desc\",\n \"pi\": \"1\",\n \"pn\": \"10000\",\n \"cp\": \"\",\n \"ct\": \"\",\n \"cd\": \"\",\n \"ms\": \"\",\n \"fr\": symbol_map[symbol].split(\"|\")[0],\n \"plevel\": \"\",\n \"fst\": \"\",\n \"ftype\": \"\",\n \"fr1\": indicator_map[indicator],\n \"fl\": \"0\",\n \"isab\": \"1\",\n }\n headers = {\n \"Accept\": \"*/*\",\n \"Accept-Encoding\": \"gzip, deflate\",\n \"Accept-Language\": \"zh-CN,zh;q=0.9,en;q=0.8\",\n \"Cache-Control\": \"no-cache\",\n \"Host\": \"api.fund.eastmoney.com\",\n \"Pragma\": \"no-cache\",\n \"Proxy-Connection\": \"keep-alive\",\n \"Referer\": \"https://fund.eastmoney.com/\",\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/103.0.0.0 Safari/537.36\",\n }\n r = requests.get(url, params=params, headers=headers)\n data_json = r.json()\n data_json = json.loads(data_json[\"Data\"])\n temp_df = pd.DataFrame([item.split(\"|\") for item in data_json[\"datas\"]])\n temp_df.columns = [\n \"基金代码\",\n \"基金名称\",\n \"-\",\n \"日期\",\n \"单位净值\",\n \"日增长率\",\n \"近1周\",\n \"近1月\",\n \"近3月\",\n \"近6月\",\n \"近1年\",\n \"近2年\",\n \"近3年\",\n \"今年来\",\n \"成立来\",\n \"-\",\n \"-\",\n \"-\",\n \"手续费\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n \"起购金额\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n ]\n temp_df = temp_df[\n [\n \"基金代码\",\n \"基金名称\",\n \"单位净值\",\n \"日期\",\n \"日增长率\",\n \"近1周\",\n \"近1月\",\n \"近3月\",\n \"近6月\",\n \"近1年\",\n \"近2年\",\n \"近3年\",\n \"今年来\",\n \"成立来\",\n \"手续费\",\n \"起购金额\",\n ]\n ]\n temp_df[\"跟踪标的\"] = symbol\n temp_df[\"跟踪方式\"] = indicator\n\n temp_df[\"单位净值\"] = pd.to_numeric(temp_df[\"单位净值\"], errors=\"coerce\")\n temp_df[\"日增长率\"] = pd.to_numeric(temp_df[\"日增长率\"], errors=\"coerce\")\n temp_df[\"近1周\"] = pd.to_numeric(temp_df[\"近1周\"], errors=\"coerce\")\n temp_df[\"近1月\"] = pd.to_numeric(temp_df[\"近1月\"], errors=\"coerce\")\n temp_df[\"近3月\"] = pd.to_numeric(temp_df[\"近3月\"], errors=\"coerce\")\n temp_df[\"近6月\"] = pd.to_numeric(temp_df[\"近6月\"], errors=\"coerce\")\n temp_df[\"近1年\"] = pd.to_numeric(temp_df[\"近1年\"], errors=\"coerce\")\n temp_df[\"近2年\"] = pd.to_numeric(temp_df[\"近2年\"], errors=\"coerce\")\n temp_df[\"近3年\"] = pd.to_numeric(temp_df[\"近3年\"], errors=\"coerce\")\n temp_df[\"今年来\"] = pd.to_numeric(temp_df[\"今年来\"], errors=\"coerce\")\n temp_df[\"成立来\"] = pd.to_numeric(temp_df[\"成立来\"], errors=\"coerce\")\n temp_df[\"手续费\"] = pd.to_numeric(temp_df[\"手续费\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["fund", "equity"]}} {"name": "fund_lof_hist_em", "tool_from": "akshare", "description": "东方财富-LOF 行情\nhttps://quote.eastmoney.com/sz166009.html\n:param symbol: LOF 代码\n:type symbol: str\n:param period: choice of {'daily', 'weekly', 'monthly'}\n:type period: str\n:param start_date: 开始日期\n:type start_date: str\n:param end_date: 结束日期\n:type end_date: str\n:param adjust: choice of {\"qfq\": \"前复权\", \"hfq\": \"后复权\", \"\": \"不复权\"}\n:type adjust: str\n:return: 每日行情\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "LOF 代码"}, "period": {"type": "string", "description": "choice of {'daily', 'weekly', 'monthly'}"}, "start_date": {"type": "string", "description": "开始日期"}, "end_date": {"type": "string", "description": "结束日期"}, "adjust": {"type": "string", "description": "choice of {\"qfq\": \"前复权\", \"hfq\": \"后复权\", \"\": \"不复权\"}"}}, "required": []}, "python_code": "def fund_lof_hist_em(\n symbol: str = \"166009\",\n period: str = \"daily\",\n start_date: str = \"19700101\",\n end_date: str = \"20500101\",\n adjust: str = \"\",\n) -> pd.DataFrame:\n \"\"\"\n 东方财富-LOF 行情\n https://quote.eastmoney.com/sz166009.html\n :param symbol: LOF 代码\n :type symbol: str\n :param period: choice of {'daily', 'weekly', 'monthly'}\n :type period: str\n :param start_date: 开始日期\n :type start_date: str\n :param end_date: 结束日期\n :type end_date: str\n :param adjust: choice of {\"qfq\": \"前复权\", \"hfq\": \"后复权\", \"\": \"不复权\"}\n :type adjust: str\n :return: 每日行情\n :rtype: pandas.DataFrame\n \"\"\"\n code_id_dict = _fund_lof_code_id_map_em()\n adjust_dict = {\"qfq\": \"1\", \"hfq\": \"2\", \"\": \"0\"}\n period_dict = {\"daily\": \"101\", \"weekly\": \"102\", \"monthly\": \"103\"}\n url = \"https://push2his.eastmoney.com/api/qt/stock/kline/get\"\n params = {\n \"fields1\": \"f1,f2,f3,f4,f5,f6\",\n \"fields2\": \"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f116\",\n \"ut\": \"7eea3edcaed734bea9cbfc24409ed989\",\n \"klt\": period_dict[period],\n \"fqt\": adjust_dict[adjust],\n \"secid\": f\"{code_id_dict[symbol]}.{symbol}\",\n \"beg\": start_date,\n \"end\": end_date,\n }\n r = requests.get(url, params=params)\n data_json = r.json()\n if not (data_json[\"data\"] and data_json[\"data\"][\"klines\"]):\n return pd.DataFrame()\n temp_df = pd.DataFrame([item.split(\",\") for item in data_json[\"data\"][\"klines\"]])\n temp_df.columns = [\n \"日期\",\n \"开盘\",\n \"收盘\",\n \"最高\",\n \"最低\",\n \"成交量\",\n \"成交额\",\n \"振幅\",\n \"涨跌幅\",\n \"涨跌额\",\n \"换手率\",\n ]\n temp_df.index = pd.to_datetime(temp_df[\"日期\"])\n temp_df.reset_index(inplace=True, drop=True)\n temp_df[\"开盘\"] = pd.to_numeric(temp_df[\"开盘\"], errors=\"coerce\")\n temp_df[\"收盘\"] = pd.to_numeric(temp_df[\"收盘\"], errors=\"coerce\")\n temp_df[\"最高\"] = pd.to_numeric(temp_df[\"最高\"], errors=\"coerce\")\n temp_df[\"最低\"] = pd.to_numeric(temp_df[\"最低\"], errors=\"coerce\")\n temp_df[\"成交量\"] = pd.to_numeric(temp_df[\"成交量\"], errors=\"coerce\")\n temp_df[\"成交额\"] = pd.to_numeric(temp_df[\"成交额\"], errors=\"coerce\")\n temp_df[\"振幅\"] = pd.to_numeric(temp_df[\"振幅\"], errors=\"coerce\")\n temp_df[\"涨跌幅\"] = pd.to_numeric(temp_df[\"涨跌幅\"], errors=\"coerce\")\n temp_df[\"涨跌额\"] = pd.to_numeric(temp_df[\"涨跌额\"], errors=\"coerce\")\n temp_df[\"换手率\"] = pd.to_numeric(temp_df[\"换手率\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_lof_hist_min_em", "tool_from": "akshare", "description": "东方财富-LOF 分时行情\nhttps://quote.eastmoney.com/sz166009.html\n:param symbol: LOF 代码\n:type symbol: str\n:param start_date: 开始日期时间\n:type start_date: str\n:param end_date: 结束日期时间\n:type end_date: str\n:param period: choice of {\"1\", \"5\", \"15\", \"30\", \"60\"}\n:type period: str\n:param adjust: choice of {'', 'qfq', 'hfq'}\n:type adjust: str\n:return: 每日分时行情\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "LOF 代码"}, "start_date": {"type": "string", "description": "开始日期时间"}, "end_date": {"type": "string", "description": "结束日期时间"}, "period": {"type": "string", "description": "choice of {\"1\", \"5\", \"15\", \"30\", \"60\"}"}, "adjust": {"type": "string", "description": "choice of {'', 'qfq', 'hfq'}"}}, "required": []}, "python_code": "def fund_lof_hist_min_em(\n symbol: str = \"166009\",\n start_date: str = \"1979-09-01 09:32:00\",\n end_date: str = \"2222-01-01 09:32:00\",\n period: str = \"5\",\n adjust: str = \"\",\n) -> pd.DataFrame:\n \"\"\"\n 东方财富-LOF 分时行情\n https://quote.eastmoney.com/sz166009.html\n :param symbol: LOF 代码\n :type symbol: str\n :param start_date: 开始日期时间\n :type start_date: str\n :param end_date: 结束日期时间\n :type end_date: str\n :param period: choice of {\"1\", \"5\", \"15\", \"30\", \"60\"}\n :type period: str\n :param adjust: choice of {'', 'qfq', 'hfq'}\n :type adjust: str\n :return: 每日分时行情\n :rtype: pandas.DataFrame\n \"\"\"\n code_id_dict = _fund_lof_code_id_map_em()\n adjust_map = {\n \"\": \"0\",\n \"qfq\": \"1\",\n \"hfq\": \"2\",\n }\n if period == \"1\":\n url = \"https://push2his.eastmoney.com/api/qt/stock/trends2/get\"\n params = {\n \"fields1\": \"f1,f2,f3,f4,f5,f6,f7,f8,f9,f10,f11,f12,f13\",\n \"fields2\": \"f51,f52,f53,f54,f55,f56,f57,f58\",\n \"ut\": \"7eea3edcaed734bea9cbfc24409ed989\",\n \"ndays\": \"5\",\n \"iscr\": \"0\",\n \"secid\": f\"{code_id_dict[symbol]}.{symbol}\",\n }\n r = requests.get(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(\n [item.split(\",\") for item in data_json[\"data\"][\"trends\"]]\n )\n temp_df.columns = [\n \"时间\",\n \"开盘\",\n \"收盘\",\n \"最高\",\n \"最低\",\n \"成交量\",\n \"成交额\",\n \"均价\",\n ]\n temp_df.index = pd.to_datetime(temp_df[\"时间\"])\n temp_df = temp_df[start_date:end_date]\n temp_df.reset_index(drop=True, inplace=True)\n temp_df[\"开盘\"] = pd.to_numeric(temp_df[\"开盘\"], errors=\"coerce\")\n temp_df[\"收盘\"] = pd.to_numeric(temp_df[\"收盘\"], errors=\"coerce\")\n temp_df[\"最高\"] = pd.to_numeric(temp_df[\"最高\"], errors=\"coerce\")\n temp_df[\"最低\"] = pd.to_numeric(temp_df[\"最低\"], errors=\"coerce\")\n temp_df[\"成交量\"] = pd.to_numeric(temp_df[\"成交量\"], errors=\"coerce\")\n temp_df[\"成交额\"] = pd.to_numeric(temp_df[\"成交额\"], errors=\"coerce\")\n temp_df[\"均价\"] = pd.to_numeric(temp_df[\"均价\"], errors=\"coerce\")\n temp_df[\"时间\"] = pd.to_datetime(temp_df[\"时间\"]).astype(str)\n return temp_df\n else:\n url = \"https://push2his.eastmoney.com/api/qt/stock/kline/get\"\n params = {\n \"fields1\": \"f1,f2,f3,f4,f5,f6\",\n \"fields2\": \"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61\",\n \"ut\": \"7eea3edcaed734bea9cbfc24409ed989\",\n \"klt\": period,\n \"fqt\": adjust_map[adjust],\n \"secid\": f\"{code_id_dict[symbol]}.{symbol}\",\n \"beg\": \"0\",\n \"end\": \"20500000\",\n }\n r = requests.get(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(\n [item.split(\",\") for item in data_json[\"data\"][\"klines\"]]\n )\n temp_df.columns = [\n \"时间\",\n \"开盘\",\n \"收盘\",\n \"最高\",\n \"最低\",\n \"成交量\",\n \"成交额\",\n \"振幅\",\n \"涨跌幅\",\n \"涨跌额\",\n \"换手率\",\n ]\n temp_df.index = pd.to_datetime(temp_df[\"时间\"])\n temp_df = temp_df[start_date:end_date]\n temp_df.reset_index(drop=True, inplace=True)\n temp_df[\"开盘\"] = pd.to_numeric(temp_df[\"开盘\"], errors=\"coerce\")\n temp_df[\"收盘\"] = pd.to_numeric(temp_df[\"收盘\"], errors=\"coerce\")\n temp_df[\"最高\"] = pd.to_numeric(temp_df[\"最高\"], errors=\"coerce\")\n temp_df[\"最低\"] = pd.to_numeric(temp_df[\"最低\"], errors=\"coerce\")\n temp_df[\"成交量\"] = pd.to_numeric(temp_df[\"成交量\"], errors=\"coerce\")\n temp_df[\"成交额\"] = pd.to_numeric(temp_df[\"成交额\"], errors=\"coerce\")\n temp_df[\"振幅\"] = pd.to_numeric(temp_df[\"振幅\"], errors=\"coerce\")\n temp_df[\"涨跌幅\"] = pd.to_numeric(temp_df[\"涨跌幅\"], errors=\"coerce\")\n temp_df[\"涨跌额\"] = pd.to_numeric(temp_df[\"涨跌额\"], errors=\"coerce\")\n temp_df[\"换手率\"] = pd.to_numeric(temp_df[\"换手率\"], errors=\"coerce\")\n temp_df[\"时间\"] = pd.to_datetime(temp_df[\"时间\"]).astype(str)\n temp_df = temp_df[\n [\n \"时间\",\n \"开盘\",\n \"收盘\",\n \"最高\",\n \"最低\",\n \"涨跌幅\",\n \"涨跌额\",\n \"成交量\",\n \"成交额\",\n \"振幅\",\n \"换手率\",\n ]\n ]\n return temp_df\n", "financial_tags": {"timeliness": "realtime", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_money_fund_info_em", "tool_from": "akshare", "description": "东方财富网-天天基金网-基金数据-货币型基金收益-历史净值数据\nhttps://fundf10.eastmoney.com/jjjz_004186.html\n:param symbol: 货币型基金代码, 可以通过 fund_money_fund_daily_em 来获取\n:type symbol: str\n:return: 东方财富网站-天天基金网-基金数据-货币型基金收益-历史净值数据\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "货币型基金代码, 可以通过 fund_money_fund_daily_em 来获取"}}, "required": []}, "python_code": "def fund_money_fund_info_em(symbol: str = \"000009\") -> pd.DataFrame:\n \"\"\"\n 东方财富网-天天基金网-基金数据-货币型基金收益-历史净值数据\n https://fundf10.eastmoney.com/jjjz_004186.html\n :param symbol: 货币型基金代码, 可以通过 fund_money_fund_daily_em 来获取\n :type symbol: str\n :return: 东方财富网站-天天基金网-基金数据-货币型基金收益-历史净值数据\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://api.fund.eastmoney.com/f10/lsjz\"\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/80.0.3987.149 Safari/537.36\",\n \"Referer\": f\"https://fundf10.eastmoney.com/jjjz_{symbol}.html\",\n \"Host\": \"api.fund.eastmoney.com\",\n }\n params = {\n \"fundCode\": symbol,\n \"pageIndex\": \"1\",\n \"pageSize\": \"20\",\n \"startDate\": \"\",\n \"endDate\": \"\",\n \"_\": round(time.time() * 1000),\n }\n r = requests.get(url, params=params, headers=headers)\n data_json = r.json()\n total_page = math.ceil(int(data_json[\"TotalCount\"]) / 20)\n tqdm = get_tqdm()\n big_list = []\n for page in tqdm(range(1, total_page + 1), leave=False):\n params.update({\"pageIndex\": page})\n r = requests.get(url, params=params, headers=headers)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"Data\"][\"LSJZList\"])\n big_list.append(temp_df)\n big_df = pd.concat(big_list, ignore_index=True)\n big_df.columns = [\n \"净值日期\",\n \"每万份收益\",\n \"7日年化收益率\",\n \"_\",\n \"_\",\n \"_\",\n \"_\",\n \"申购状态\",\n \"赎回状态\",\n \"_\",\n \"_\",\n \"_\",\n \"_\",\n ]\n big_df.sort_values(by=[\"净值日期\"], inplace=True, ignore_index=True)\n big_df = big_df[[\"净值日期\", \"每万份收益\", \"7日年化收益率\", \"申购状态\", \"赎回状态\"]]\n big_df[\"净值日期\"] = pd.to_datetime(big_df[\"净值日期\"], errors=\"coerce\").dt.date\n big_df[\"每万份收益\"] = pd.to_numeric(big_df[\"每万份收益\"], errors=\"coerce\")\n big_df[\"7日年化收益率\"] = pd.to_numeric(big_df[\"7日年化收益率\"], errors=\"coerce\")\n return big_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_open_fund_info_em", "tool_from": "akshare", "description": "东方财富网-天天基金网-基金数据-开放式基金净值\nhttps://fund.eastmoney.com/fund.html\n:param symbol: 基金代码; 可以通过调用 ak.fund_open_fund_daily_em() 获取所有开放式基金代码\n:type symbol: str\n:param indicator: 需要获取的指标\n:type indicator: str\n:param period: \"成立来\"; choice of {\"1月\", \"3月\", \"6月\", \"1年\", \"3年\", \"5年\", \"今年来\", \"成立来\"}\n:type period: str\n:return: 指定基金指定指标的数据\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "基金代码; 可以通过调用 ak.fund_open_fund_daily_em() 获取所有开放式基金代码"}, "indicator": {"type": "string", "description": "需要获取的指标"}, "period": {"type": "string", "description": "\"成立来\"; choice of {\"1月\", \"3月\", \"6月\", \"1年\", \"3年\", \"5年\", \"今年来\", \"成立来\"}"}}, "required": []}, "python_code": "def fund_open_fund_info_em(\n symbol: str = \"710001\", indicator: str = \"单位净值走势\", period: str = \"成立来\"\n) -> pd.DataFrame:\n \"\"\"\n 东方财富网-天天基金网-基金数据-开放式基金净值\n https://fund.eastmoney.com/fund.html\n :param symbol: 基金代码; 可以通过调用 ak.fund_open_fund_daily_em() 获取所有开放式基金代码\n :type symbol: str\n :param indicator: 需要获取的指标\n :type indicator: str\n :param period: \"成立来\"; choice of {\"1月\", \"3月\", \"6月\", \"1年\", \"3年\", \"5年\", \"今年来\", \"成立来\"}\n :type period: str\n :return: 指定基金指定指标的数据\n :rtype: pandas.DataFrame\n \"\"\"\n from akshare.utils.cons import headers\n\n url = f\"https://fund.eastmoney.com/pingzhongdata/{symbol}.js\" # 各类数据都在里面\n r = requests.get(url, headers=headers)\n data_text = r.text\n\n js_code = py_mini_racer.MiniRacer()\n js_code.eval(data_text)\n\n # 单位净值走势\n if indicator == \"单位净值走势\":\n data_json = js_code.execute(\"Data_netWorthTrend\")\n temp_df = pd.DataFrame(data_json)\n if temp_df.empty:\n return pd.DataFrame()\n temp_df[\"x\"] = pd.to_datetime(temp_df[\"x\"], unit=\"ms\", utc=True).dt.tz_convert(\n \"Asia/Shanghai\"\n )\n temp_df[\"x\"] = temp_df[\"x\"].dt.date\n temp_df.columns = [\n \"净值日期\",\n \"单位净值\",\n \"日增长率\",\n \"_\",\n ]\n temp_df = temp_df[\n [\n \"净值日期\",\n \"单位净值\",\n \"日增长率\",\n ]\n ]\n temp_df[\"净值日期\"] = pd.to_datetime(\n temp_df[\"净值日期\"], errors=\"coerce\"\n ).dt.date\n temp_df[\"单位净值\"] = pd.to_numeric(temp_df[\"单位净值\"], errors=\"coerce\")\n temp_df[\"日增长率\"] = pd.to_numeric(temp_df[\"日增长率\"], errors=\"coerce\")\n return temp_df\n\n # 累计净值走势\n if indicator == \"累计净值走势\":\n data_json = js_code.execute(\"Data_ACWorthTrend\")\n temp_df = pd.DataFrame(data_json)\n if temp_df.empty:\n return pd.DataFrame()\n temp_df.columns = [\"x\", \"y\"]\n temp_df[\"x\"] = pd.to_datetime(temp_df[\"x\"], unit=\"ms\", utc=True).dt.tz_convert(\n \"Asia/Shanghai\"\n )\n temp_df[\"x\"] = temp_df[\"x\"].dt.date\n temp_df.columns = [\n \"净值日期\",\n \"累计净值\",\n ]\n temp_df = temp_df[\n [\n \"净值日期\",\n \"累计净值\",\n ]\n ]\n temp_df[\"净值日期\"] = pd.to_datetime(\n temp_df[\"净值日期\"], errors=\"coerce\"\n ).dt.date\n temp_df[\"累计净值\"] = pd.to_numeric(temp_df[\"累计净值\"], errors=\"coerce\")\n return temp_df\n\n # 累计收益率走势\n if indicator == \"累计收益率走势\":\n url = \"https://api.fund.eastmoney.com/pinzhong/LJSYLZS\"\n headers = {\"Referer\": \"https://fund.eastmoney.com/\"}\n period_map = {\n \"1月\": \"m\",\n \"3月\": \"q\",\n \"6月\": \"hy\",\n \"1年\": \"y\",\n \"3年\": \"try\",\n \"5年\": \"fiy\",\n \"今年来\": \"sy\",\n \"成立来\": \"se\",\n }\n params = {\n \"fundCode\": symbol,\n \"indexcode\": \"000300\",\n \"type\": period_map[period],\n }\n r = requests.get(url, params=params, headers=headers)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"Data\"][0][\"data\"])\n temp_df.columns = [\"日期\", \"累计收益率\"]\n temp_df[\"日期\"] = pd.to_datetime(\n temp_df[\"日期\"], unit=\"ms\", utc=True\n ).dt.tz_convert(\"Asia/Shanghai\")\n temp_df[\"日期\"] = pd.to_datetime(temp_df[\"日期\"], errors=\"coerce\").dt.date\n temp_df[\"累计收益率\"] = pd.to_numeric(temp_df[\"累计收益率\"], errors=\"coerce\")\n return temp_df\n\n # 同类排名走势\n if indicator == \"同类排名走势\":\n data_json = js_code.execute(\"Data_rateInSimilarType\")\n temp_df = pd.DataFrame(data_json)\n temp_df[\"x\"] = pd.to_datetime(temp_df[\"x\"], unit=\"ms\", utc=True).dt.tz_convert(\n \"Asia/Shanghai\"\n )\n temp_df[\"x\"] = temp_df[\"x\"].dt.date\n temp_df.columns = [\n \"报告日期\",\n \"同类型排名-每日近三月排名\",\n \"总排名-每日近三月排名\",\n ]\n temp_df = temp_df[\n [\n \"报告日期\",\n \"同类型排名-每日近三月排名\",\n \"总排名-每日近三月排名\",\n ]\n ]\n temp_df[\"报告日期\"] = pd.to_datetime(\n temp_df[\"报告日期\"], errors=\"coerce\"\n ).dt.date\n temp_df[\"同类型排名-每日近三月排名\"] = pd.to_numeric(\n temp_df[\"同类型排名-每日近三月排名\"], errors=\"coerce\"\n )\n temp_df[\"总排名-每日近三月排名\"] = pd.to_numeric(\n temp_df[\"总排名-每日近三月排名\"], errors=\"coerce\"\n )\n return temp_df\n\n # 同类排名百分比\n if indicator == \"同类排名百分比\":\n data_json = js_code.execute(\"Data_rateInSimilarPersent\")\n temp_df = pd.DataFrame(data_json)\n temp_df.columns = [\"x\", \"y\"]\n temp_df[\"x\"] = pd.to_datetime(temp_df[\"x\"], unit=\"ms\", utc=True).dt.tz_convert(\n \"Asia/Shanghai\"\n )\n temp_df[\"x\"] = temp_df[\"x\"].dt.date\n temp_df.columns = [\n \"报告日期\",\n \"同类型排名-每日近3月收益排名百分比\",\n ]\n temp_df = temp_df[\n [\n \"报告日期\",\n \"同类型排名-每日近3月收益排名百分比\",\n ]\n ]\n temp_df[\"报告日期\"] = pd.to_datetime(\n temp_df[\"报告日期\"], errors=\"coerce\"\n ).dt.date\n temp_df[\"同类型排名-每日近3月收益排名百分比\"] = pd.to_numeric(\n temp_df[\"同类型排名-每日近3月收益排名百分比\"], errors=\"coerce\"\n )\n return temp_df\n\n # 分红送配详情\n if indicator == \"分红送配详情\":\n url = f\"https://fundf10.eastmoney.com/fhsp_{symbol}.html\"\n r = requests.get(url, headers=headers)\n table_num = len(pd.read_html(StringIO(r.text)))\n if table_num == 3:\n temp_df = pd.read_html(StringIO(r.text))[1]\n else:\n temp_df = pd.read_html(StringIO(r.text))[0]\n if temp_df.iloc[0, 1] == \"暂无分红信息!\":\n return pd.DataFrame()\n else:\n return temp_df\n\n # 拆分详情\n if indicator == \"拆分详情\":\n url = f\"https://fundf10.eastmoney.com/fhsp_{symbol}.html\"\n r = requests.get(url, headers=headers)\n table_num = len(pd.read_html(StringIO(r.text)))\n if table_num == 3:\n temp_df = pd.read_html(StringIO(r.text))[2]\n else:\n temp_df = pd.read_html(StringIO(r.text))[1]\n if temp_df.iloc[0, 1] == \"暂无拆分信息!\":\n return pd.DataFrame()\n else:\n return temp_df\n return pd.DataFrame()\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_open_fund_rank_em", "tool_from": "akshare", "description": "东方财富网-数据中心-开放基金排行\nhttps://fund.eastmoney.com/data/fundranking.html\n:param symbol: choice of {\"全部\", \"股票型\", \"混合型\", \"债券型\", \"指数型\", \"QDII\", \"FOF\"}\n:type symbol: str\n:return: 开放基金排行\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "choice of {\"全部\", \"股票型\", \"混合型\", \"债券型\", \"指数型\", \"QDII\", \"FOF\"}"}}, "required": []}, "python_code": "def fund_open_fund_rank_em(symbol: str = \"全部\") -> pd.DataFrame:\n \"\"\"\n 东方财富网-数据中心-开放基金排行\n https://fund.eastmoney.com/data/fundranking.html\n :param symbol: choice of {\"全部\", \"股票型\", \"混合型\", \"债券型\", \"指数型\", \"QDII\", \"FOF\"}\n :type symbol: str\n :return: 开放基金排行\n :rtype: pandas.DataFrame\n \"\"\"\n current_date = datetime.now().date().isoformat()\n last_date = __one_year_ago(current_date.replace(\"-\", \"\")).isoformat()\n url = \"https://fund.eastmoney.com/data/rankhandler.aspx\"\n type_map = {\n \"全部\": [\"all\", \"1nzf\"],\n \"股票型\": [\"gp\", \"1nzf\"],\n \"混合型\": [\"hh\", \"1nzf\"],\n \"债券型\": [\"zq\", \"1nzf\"],\n \"指数型\": [\"zs\", \"1nzf\"],\n \"QDII\": [\"qdii\", \"1nzf\"],\n \"LOF\": [\"lof\", \"1nzf\"],\n \"FOF\": [\"fof\", \"1nzf\"],\n }\n params = {\n \"op\": \"ph\",\n \"dt\": \"kf\",\n \"ft\": type_map[symbol][0],\n \"rs\": \"\",\n \"gs\": \"0\",\n \"sc\": type_map[symbol][1],\n \"st\": \"desc\",\n \"sd\": last_date,\n \"ed\": current_date,\n \"qdii\": \"\",\n \"tabSubtype\": \",,,,,\",\n \"pi\": \"1\",\n \"pn\": \"30000\",\n \"dx\": \"1\",\n \"v\": \"0.1591891419018292\",\n }\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/81.0.4044.138 Safari/537.36\",\n \"Referer\": \"https://fund.eastmoney.com/fundguzhi.html\",\n }\n r = requests.get(url, params=params, headers=headers)\n data_text = r.text\n data_json = demjson.decode(data_text[data_text.find(\"{\") : -1])\n temp_df = pd.DataFrame(data_json[\"datas\"])\n temp_df = temp_df.iloc[:, 0].str.split(\",\", expand=True)\n temp_df.reset_index(inplace=True)\n temp_df[\"index\"] = list(range(1, len(temp_df) + 1))\n temp_df.columns = [\n \"序号\",\n \"基金代码\",\n \"基金简称\",\n \"_\",\n \"日期\",\n \"单位净值\",\n \"累计净值\",\n \"日增长率\",\n \"近1周\",\n \"近1月\",\n \"近3月\",\n \"近6月\",\n \"近1年\",\n \"近2年\",\n \"近3年\",\n \"今年来\",\n \"成立来\",\n \"_\",\n \"_\",\n \"自定义\",\n \"_\",\n \"手续费\",\n \"_\",\n \"_\",\n \"_\",\n \"_\",\n ]\n temp_df = temp_df[\n [\n \"序号\",\n \"基金代码\",\n \"基金简称\",\n \"日期\",\n \"单位净值\",\n \"累计净值\",\n \"日增长率\",\n \"近1周\",\n \"近1月\",\n \"近3月\",\n \"近6月\",\n \"近1年\",\n \"近2年\",\n \"近3年\",\n \"今年来\",\n \"成立来\",\n \"自定义\",\n \"手续费\",\n ]\n ]\n temp_df[\"日期\"] = pd.to_datetime(temp_df[\"日期\"], errors=\"coerce\").dt.date\n temp_df[\"单位净值\"] = pd.to_numeric(temp_df[\"单位净值\"], errors=\"coerce\")\n temp_df[\"累计净值\"] = pd.to_numeric(temp_df[\"累计净值\"], errors=\"coerce\")\n temp_df[\"日增长率\"] = pd.to_numeric(temp_df[\"日增长率\"], errors=\"coerce\")\n temp_df[\"近1周\"] = pd.to_numeric(temp_df[\"近1周\"], errors=\"coerce\")\n temp_df[\"近1月\"] = pd.to_numeric(temp_df[\"近1月\"], errors=\"coerce\")\n temp_df[\"近3月\"] = pd.to_numeric(temp_df[\"近3月\"], errors=\"coerce\")\n temp_df[\"近6月\"] = pd.to_numeric(temp_df[\"近6月\"], errors=\"coerce\")\n temp_df[\"近1年\"] = pd.to_numeric(temp_df[\"近1年\"], errors=\"coerce\")\n temp_df[\"近2年\"] = pd.to_numeric(temp_df[\"近2年\"], errors=\"coerce\")\n temp_df[\"近3年\"] = pd.to_numeric(temp_df[\"近3年\"], errors=\"coerce\")\n temp_df[\"今年来\"] = pd.to_numeric(temp_df[\"今年来\"], errors=\"coerce\")\n temp_df[\"成立来\"] = pd.to_numeric(temp_df[\"成立来\"], errors=\"coerce\")\n temp_df[\"自定义\"] = pd.to_numeric(temp_df[\"自定义\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_overview_em", "tool_from": "akshare", "description": "天天基金-基金档案-基本概况\nhttps://fundf10.eastmoney.com/jbgk_015641.html\n:param symbol: 基金代码\n:type symbol: str\n:return: 基本概况\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "基金代码"}}, "required": []}, "python_code": "def fund_overview_em(symbol: str = \"015641\") -> pd.DataFrame:\n \"\"\"\n 天天基金-基金档案-基本概况\n https://fundf10.eastmoney.com/jbgk_015641.html\n :param symbol: 基金代码\n :type symbol: str\n :return: 基本概况\n :rtype: pandas.DataFrame\n \"\"\"\n url = f\"https://fundf10.eastmoney.com/jbgk_{symbol}.html\"\n r = requests.get(url)\n html_content = pd.read_html(StringIO(r.text))\n\n if len(html_content) == 0:\n temp_df = pd.DataFrame([])\n else:\n df_dict = {}\n # 最后一个表格的数据是我们想要的,按照Key-Value的形式存储\n for _, row in html_content[-1].iterrows():\n df_dict[row[0]] = row[1]\n df_dict[row[2]] = row[3]\n temp_df = pd.DataFrame([df_dict])\n\n return temp_df\n", "financial_tags": {"timeliness": "as_filed", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_portfolio_bond_hold_em", "tool_from": "akshare", "description": "天天基金网-基金档案-投资组合-债券持仓\nhttps://fundf10.eastmoney.com/ccmx1_000001.html\n:param symbol: 基金代码\n:type symbol: str\n:param date: 查询年份\n:type date: str\n:return: 债券持仓\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "基金代码"}, "date": {"type": "string", "description": "查询年份"}}, "required": []}, "python_code": "def fund_portfolio_bond_hold_em(\n symbol: str = \"000001\", date: str = \"2023\"\n) -> pd.DataFrame:\n \"\"\"\n 天天基金网-基金档案-投资组合-债券持仓\n https://fundf10.eastmoney.com/ccmx1_000001.html\n :param symbol: 基金代码\n :type symbol: str\n :param date: 查询年份\n :type date: str\n :return: 债券持仓\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://fundf10.eastmoney.com/FundArchivesDatas.aspx\"\n params = {\n \"type\": \"zqcc\",\n \"code\": symbol,\n \"year\": date,\n \"rt\": \"0.913877030254846\",\n }\n r = requests.get(url, params=params)\n data_text = r.text\n data_json = demjson.decode(data_text[data_text.find(\"{\") : -1])\n soup = BeautifulSoup(data_json[\"content\"], features=\"lxml\")\n item_label = [\n item.text.split(\"\\xa0\\xa0\")[1]\n for item in soup.find_all(name=\"h4\", attrs={\"class\": \"t\"})\n ]\n big_df = pd.DataFrame()\n for item in range(len(item_label)):\n temp_df = pd.read_html(\n StringIO(data_json[\"content\"]), converters={\"债券代码\": str}\n )[item]\n temp_df[\"占净值比例\"] = (\n temp_df[\"占净值比例\"].str.split(\"%\", expand=True).iloc[:, 0]\n )\n temp_df.rename(columns={\"持仓市值(万元)\": \"持仓市值\"}, inplace=True)\n temp_df[\"季度\"] = item_label[item]\n temp_df = temp_df[\n [\n \"序号\",\n \"债券代码\",\n \"债券名称\",\n \"占净值比例\",\n \"持仓市值\",\n \"季度\",\n ]\n ]\n big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)\n big_df[\"占净值比例\"] = pd.to_numeric(big_df[\"占净值比例\"], errors=\"coerce\")\n big_df[\"持仓市值\"] = pd.to_numeric(big_df[\"持仓市值\"], errors=\"coerce\")\n big_df[\"序号\"] = range(1, len(big_df) + 1)\n return big_df\n", "financial_tags": {"timeliness": "as_filed", "intent_type": "informational", "regulatory_domains": ["fund", "bond"]}} {"name": "fund_portfolio_change_em", "tool_from": "akshare", "description": "天天基金网-基金档案-投资组合-重大变动\nhttps://fundf10.eastmoney.com/ccbd_000001.html\n:param symbol: 基金代码\n:type symbol: str\n:param indicator: choice of {\"累计买入\", \"累计卖出\"}\n:type indicator: str\n:param date: 查询年份\n:type date: str\n:return: 重大变动\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "基金代码"}, "indicator": {"type": "string", "description": "choice of {\"累计买入\", \"累计卖出\"}"}, "date": {"type": "string", "description": "查询年份"}}, "required": []}, "python_code": "def fund_portfolio_change_em(\n symbol: str = \"003567\", indicator: str = \"累计买入\", date: str = \"2023\"\n) -> pd.DataFrame:\n \"\"\"\n 天天基金网-基金档案-投资组合-重大变动\n https://fundf10.eastmoney.com/ccbd_000001.html\n :param symbol: 基金代码\n :type symbol: str\n :param indicator: choice of {\"累计买入\", \"累计卖出\"}\n :type indicator: str\n :param date: 查询年份\n :type date: str\n :return: 重大变动\n :rtype: pandas.DataFrame\n \"\"\"\n indicator_map = {\n \"累计买入\": \"1\",\n \"累计卖出\": \"2\",\n }\n url = \"https://fundf10.eastmoney.com/FundArchivesDatas.aspx\"\n params = {\n \"type\": \"zdbd\",\n \"code\": symbol,\n \"zdbd\": indicator_map[indicator],\n \"year\": date,\n \"rt\": \"0.913877030254846\",\n }\n r = requests.get(url, params=params)\n data_text = r.text\n data_json = demjson.decode(data_text[data_text.find(\"{\") : -1])\n soup = BeautifulSoup(data_json[\"content\"], features=\"lxml\")\n item_label = [\n item.text.split(\"\\xa0\\xa0\")[1]\n for item in soup.find_all(name=\"h4\", attrs={\"class\": \"t\"})\n ]\n big_df = pd.DataFrame()\n for item in range(len(item_label)):\n temp_df = pd.read_html(\n StringIO(data_json[\"content\"]), converters={\"股票代码\": str}\n )[item]\n del temp_df[\"相关资讯\"]\n temp_df[\"占期初基金资产净值比例(%)\"] = (\n temp_df[\"占期初基金资产净值比例(%)\"]\n .str.split(\"%\", expand=True)\n .iloc[:, 0]\n )\n temp_df[\"季度\"] = item_label[item]\n temp_df.columns = [\n \"序号\",\n \"股票代码\",\n \"股票名称\",\n \"本期累计买入金额\",\n \"占期初基金资产净值比例\",\n \"季度\",\n ]\n temp_df = temp_df[\n [\n \"序号\",\n \"股票代码\",\n \"股票名称\",\n \"本期累计买入金额\",\n \"占期初基金资产净值比例\",\n \"季度\",\n ]\n ]\n big_df = pd.concat(objs=[big_df, temp_df], ignore_index=True)\n del big_df[\"序号\"]\n big_df.reset_index(inplace=True)\n big_df[\"index\"] = big_df.index + 1\n big_df.rename(columns={\"index\": \"序号\"}, inplace=True)\n\n big_df[\"本期累计买入金额\"] = pd.to_numeric(\n big_df[\"本期累计买入金额\"], errors=\"coerce\"\n )\n big_df[\"占期初基金资产净值比例\"] = pd.to_numeric(\n big_df[\"占期初基金资产净值比例\"], errors=\"coerce\"\n )\n return big_df\n", "financial_tags": {"timeliness": "as_filed", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_portfolio_hold_em", "tool_from": "akshare", "description": "天天基金网-基金档案-投资组合-基金持仓\nhttps://fundf10.eastmoney.com/ccmx_000001.html\n:param symbol: 基金代码\n:type symbol: str\n:param date: 查询年份\n:type date: str\n:return: 基金持仓\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "基金代码"}, "date": {"type": "string", "description": "查询年份"}}, "required": []}, "python_code": "def fund_portfolio_hold_em(symbol: str = \"000001\", date: str = \"2024\") -> pd.DataFrame:\n \"\"\"\n 天天基金网-基金档案-投资组合-基金持仓\n https://fundf10.eastmoney.com/ccmx_000001.html\n :param symbol: 基金代码\n :type symbol: str\n :param date: 查询年份\n :type date: str\n :return: 基金持仓\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://fundf10.eastmoney.com/FundArchivesDatas.aspx\"\n params = {\n \"type\": \"jjcc\",\n \"code\": symbol,\n \"topline\": \"10000\",\n \"year\": date,\n \"month\": \"\",\n \"rt\": \"0.913877030254846\",\n }\n r = requests.get(url, params=params)\n data_text = r.text\n data_json = demjson.decode(data_text[data_text.find(\"{\") : -1])\n soup = BeautifulSoup(data_json[\"content\"], features=\"lxml\")\n item_label = [\n item.text.split(\"\\xa0\\xa0\")[1]\n for item in soup.find_all(name=\"h4\", attrs={\"class\": \"t\"})\n ]\n\n column_name = [\n \"序号\",\n \"股票代码\",\n \"股票名称\",\n \"占净值比例\",\n \"持股数\",\n \"持仓市值\",\n \"季度\",\n ]\n big_df = pd.DataFrame(columns=column_name)\n\n for item in range(len(item_label)):\n temp_df = pd.read_html(\n StringIO(data_json[\"content\"]), converters={\"股票代码\": str}\n )[item]\n del temp_df[\"相关资讯\"]\n temp_df.rename(columns={\"占净值 比例\": \"占净值比例\"}, inplace=True)\n temp_df[\"占净值比例\"] = (\n temp_df[\"占净值比例\"].str.split(\"%\", expand=True).iloc[:, 0]\n )\n temp_df.rename(\n columns={\"持股数(万股)\": \"持股数\", \"持仓市值(万元)\": \"持仓市值\"},\n inplace=True,\n )\n temp_df.rename(\n columns={\"持股数 (万股)\": \"持股数\", \"持仓市值 (万元)\": \"持仓市值\"},\n inplace=True,\n )\n temp_df.rename(\n columns={\"持股数(万股)\": \"持股数\", \"持仓市值(万元人民币)\": \"持仓市值\"},\n inplace=True,\n )\n temp_df.rename(\n columns={\n \"持股数 (万股)\": \"持股数\",\n \"持仓市值 (万元人民币)\": \"持仓市值\",\n },\n inplace=True,\n )\n\n temp_df[\"季度\"] = item_label[item]\n temp_df = temp_df[column_name]\n big_df = pd.concat(objs=[temp_df, big_df], ignore_index=True) if not big_df.empty else temp_df\n\n if not big_df.empty:\n big_df[\"占净值比例\"] = pd.to_numeric(big_df[\"占净值比例\"], errors=\"coerce\")\n big_df[\"持股数\"] = pd.to_numeric(big_df[\"持股数\"], errors=\"coerce\")\n big_df[\"持仓市值\"] = pd.to_numeric(big_df[\"持仓市值\"], errors=\"coerce\")\n del big_df[\"序号\"]\n big_df.reset_index(inplace=True, drop=False)\n big_df[\"index\"] = big_df[\"index\"] + 1\n big_df.rename(columns={\"index\": \"序号\"}, inplace=True)\n return big_df\n", "financial_tags": {"timeliness": "periodic", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_portfolio_industry_allocation_em", "tool_from": "akshare", "description": "天天基金网-基金档案-投资组合-行业配置\nhttps://fundf10.eastmoney.com/hytz_000001.html\n:param symbol: 基金代码\n:type symbol: str\n:param date: 查询年份\n:type date: str\n:return: 行业配置\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "基金代码"}, "date": {"type": "string", "description": "查询年份"}}, "required": []}, "python_code": "def fund_portfolio_industry_allocation_em(\n symbol: str = \"000001\", date: str = \"2023\"\n) -> pd.DataFrame:\n \"\"\"\n 天天基金网-基金档案-投资组合-行业配置\n https://fundf10.eastmoney.com/hytz_000001.html\n :param symbol: 基金代码\n :type symbol: str\n :param date: 查询年份\n :type date: str\n :return: 行业配置\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://api.fund.eastmoney.com/f10/HYPZ/\"\n headers = {\n \"Accept\": \"*/*\",\n \"Accept-Encoding\": \"gzip, deflate\",\n \"Accept-Language\": \"zh-CN,zh;q=0.9,en;q=0.8\",\n \"Cache-Control\": \"no-cache\",\n \"Connection\": \"keep-alive\",\n \"Host\": \"api.fund.eastmoney.com\",\n \"Pragma\": \"no-cache\",\n \"Referer\": \"https://fundf10.eastmoney.com/\",\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/99.0.4844.82 Safari/537.36\",\n }\n params = {\n \"fundCode\": symbol,\n \"year\": date,\n \"callback\": \"jQuery183006997159478989867_1648016188499\",\n }\n r = requests.get(url, params=params, headers=headers)\n data_text = r.text\n data_json = demjson.decode(data_text[data_text.find(\"{\") : -1])\n temp_list = []\n for item in data_json[\"Data\"][\"QuarterInfos\"]:\n temp_list.extend(item[\"HYPZInfo\"])\n temp_df = pd.DataFrame(temp_list)\n temp_df.reset_index(inplace=True)\n temp_df[\"index\"] = temp_df.index + 1\n temp_df.columns = [\n \"序号\",\n \"-\",\n \"截止时间\",\n \"-\",\n \"行业类别\",\n \"市值\",\n \"-\",\n \"占净值比例\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n ]\n temp_df = temp_df[\n [\n \"序号\",\n \"行业类别\",\n \"占净值比例\",\n \"市值\",\n \"截止时间\",\n ]\n ]\n temp_df[\"市值\"] = pd.to_numeric(temp_df[\"市值\"], errors=\"coerce\")\n temp_df[\"占净值比例\"] = pd.to_numeric(temp_df[\"占净值比例\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "as_filed", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_rating_ja", "tool_from": "akshare", "description": "天天基金网-基金评级-济安金信评级\nhttps://fund.eastmoney.com/data/fundrating_4.html\n:param date: 日期; https://fund.eastmoney.com/data/fundrating_4.html 获取查询日期\n:type date: str\n:return: 济安金信评级\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "日期; https://fund.eastmoney.com/data/fundrating_4.html 获取查询日期"}}, "required": []}, "python_code": "def fund_rating_ja(date: str = \"20230331\") -> pd.DataFrame:\n \"\"\"\n 天天基金网-基金评级-济安金信评级\n https://fund.eastmoney.com/data/fundrating_4.html\n :param date: 日期; https://fund.eastmoney.com/data/fundrating_4.html 获取查询日期\n :type date: str\n :return: 济安金信评级\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://fund.eastmoney.com/data/fundrating_4.html\"\n r = requests.get(url)\n soup = BeautifulSoup(r.text, \"lxml\")\n date_list = [\n item[\"value\"] for item in soup.find(\"select\", attrs={\"id\": \"rqoptions\"})\n ]\n date_format = \"-\".join([date[:4], date[4:6], date[6:]])\n if date_format not in date_list:\n raise \"请访问 http://fund.eastmoney.com/data/fundrating_4.html 获取查询日期\"\n url = f\"https://fund.eastmoney.com/data/fundrating_4_{'-'.join([date[:4], date[4:6], date[6:]])}.html\"\n r = requests.get(url)\n soup = BeautifulSoup(r.text, \"lxml\")\n data_text = soup.find(\"div\", attrs={\"id\": \"fundinfo\"}).find(\"script\").string\n data_content = [\n item.split(\"|\")\n for item in data_text.split(\"var\")[1]\n .split(\"=\")[1]\n .strip()\n .strip(\";\")\n .strip('\"')\n .strip(\"|\")\n .split(\"|_\")\n ]\n temp_df = pd.DataFrame(data_content)\n temp_df.columns = [\n \"代码\",\n \"简称\",\n \"类型\",\n \"基金经理\",\n \"_\",\n \"基金公司\",\n \"_\",\n \"3年期评级-3年评级\",\n \"3年期评级-较上期\",\n \"单位净值\",\n \"日期\",\n \"日增长率\",\n \"近1年涨幅\",\n \"近3年涨幅\",\n \"近5年涨幅\",\n \"手续费\",\n \"_\",\n \"_\",\n \"_\",\n \"_\",\n ]\n temp_df = temp_df[\n [\n \"代码\",\n \"简称\",\n \"基金经理\",\n \"基金公司\",\n \"3年期评级-3年评级\",\n \"3年期评级-较上期\",\n \"单位净值\",\n \"日期\",\n \"日增长率\",\n \"近1年涨幅\",\n \"近3年涨幅\",\n \"近5年涨幅\",\n \"手续费\",\n \"类型\",\n ]\n ]\n temp_df[\"日期\"] = pd.to_datetime(temp_df[\"日期\"], errors=\"coerce\").dt.date\n temp_df[\"3年期评级-3年评级\"] = pd.to_numeric(\n temp_df[\"3年期评级-3年评级\"], errors=\"coerce\"\n )\n temp_df[\"3年期评级-较上期\"] = pd.to_numeric(\n temp_df[\"3年期评级-较上期\"], errors=\"coerce\"\n )\n temp_df[\"单位净值\"] = pd.to_numeric(temp_df[\"单位净值\"], errors=\"coerce\")\n temp_df[\"日增长率\"] = pd.to_numeric(temp_df[\"日增长率\"], errors=\"coerce\")\n temp_df[\"近1年涨幅\"] = pd.to_numeric(temp_df[\"近1年涨幅\"], errors=\"coerce\")\n temp_df[\"近3年涨幅\"] = pd.to_numeric(temp_df[\"近3年涨幅\"], errors=\"coerce\")\n temp_df[\"近5年涨幅\"] = pd.to_numeric(temp_df[\"近5年涨幅\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "as_filed", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_rating_sh", "tool_from": "akshare", "description": "天天基金网-基金评级-上海证券评级\nhttps://fund.eastmoney.com/data/fundrating_3.html\n:param date: 日期; https://fund.eastmoney.com/data/fundrating_3.html 获取查询日期\n:type date: str\n:return: 上海证券评级\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "日期; https://fund.eastmoney.com/data/fundrating_3.html 获取查询日期"}}, "required": []}, "python_code": "def fund_rating_sh(date: str = \"20230630\") -> pd.DataFrame:\n \"\"\"\n 天天基金网-基金评级-上海证券评级\n https://fund.eastmoney.com/data/fundrating_3.html\n :param date: 日期; https://fund.eastmoney.com/data/fundrating_3.html 获取查询日期\n :type date: str\n :return: 上海证券评级\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://fund.eastmoney.com/data/fundrating_3.html\"\n r = requests.get(url)\n soup = BeautifulSoup(r.text, \"lxml\")\n date_list = [\n item[\"value\"] for item in soup.find(\"select\", attrs={\"id\": \"rqoptions\"})\n ]\n date_format = \"-\".join([date[:4], date[4:6], date[6:]])\n if date_format not in date_list:\n raise \"请访问 https://fund.eastmoney.com/data/fundrating_3.html 获取查询日期\"\n url = f\"https://fund.eastmoney.com/data/fundrating_3_{'-'.join([date[:4], date[4:6], date[6:]])}.html\"\n r = requests.get(url)\n soup = BeautifulSoup(r.text, \"lxml\")\n data_text = soup.find(\"div\", attrs={\"id\": \"fundinfo\"}).find(\"script\").string\n data_content = [\n item.split(\"|\")\n for item in data_text.split(\"var\")[1]\n .split(\"=\")[1]\n .strip()\n .strip(\";\")\n .strip('\"')\n .strip(\"|\")\n .split(\"|_\")\n ]\n temp_df = pd.DataFrame(data_content)\n temp_df.columns = [\n \"代码\",\n \"简称\",\n \"类型\",\n \"基金经理\",\n \"_\",\n \"基金公司\",\n \"_\",\n \"3年期评级-3年评级\",\n \"3年期评级-较上期\",\n \"5年期评级-5年评级\",\n \"5年期评级-较上期\",\n \"单位净值\",\n \"日期\",\n \"日增长率\",\n \"近1年涨幅\",\n \"近3年涨幅\",\n \"近5年涨幅\",\n \"手续费\",\n \"_\",\n \"_\",\n \"_\",\n \"_\",\n ]\n temp_df = temp_df[\n [\n \"代码\",\n \"简称\",\n \"基金经理\",\n \"基金公司\",\n \"3年期评级-3年评级\",\n \"3年期评级-较上期\",\n \"5年期评级-5年评级\",\n \"5年期评级-较上期\",\n \"单位净值\",\n \"日期\",\n \"日增长率\",\n \"近1年涨幅\",\n \"近3年涨幅\",\n \"近5年涨幅\",\n \"手续费\",\n \"类型\",\n ]\n ]\n temp_df[\"日期\"] = pd.to_datetime(temp_df[\"日期\"], errors=\"coerce\").dt.date\n temp_df[\"3年期评级-3年评级\"] = pd.to_numeric(\n temp_df[\"3年期评级-3年评级\"], errors=\"coerce\"\n )\n temp_df[\"3年期评级-较上期\"] = pd.to_numeric(\n temp_df[\"3年期评级-较上期\"], errors=\"coerce\"\n )\n temp_df[\"5年期评级-5年评级\"] = pd.to_numeric(\n temp_df[\"5年期评级-5年评级\"], errors=\"coerce\"\n )\n temp_df[\"5年期评级-较上期\"] = pd.to_numeric(\n temp_df[\"5年期评级-较上期\"], errors=\"coerce\"\n )\n temp_df[\"单位净值\"] = pd.to_numeric(temp_df[\"单位净值\"], errors=\"coerce\")\n temp_df[\"日增长率\"] = pd.to_numeric(temp_df[\"日增长率\"], errors=\"coerce\")\n temp_df[\"近1年涨幅\"] = pd.to_numeric(temp_df[\"近1年涨幅\"], errors=\"coerce\")\n temp_df[\"近3年涨幅\"] = pd.to_numeric(temp_df[\"近3年涨幅\"], errors=\"coerce\")\n temp_df[\"近5年涨幅\"] = pd.to_numeric(temp_df[\"近5年涨幅\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "periodic", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_rating_zs", "tool_from": "akshare", "description": "天天基金网-基金评级-招商证券评级\nhttps://fund.eastmoney.com/data/fundrating_2.html\n:param date: 日期; https://fund.eastmoney.com/data/fundrating_2.html 获取查询日期\n:type date: str\n:return: 招商证券评级-混合型\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "日期; https://fund.eastmoney.com/data/fundrating_2.html 获取查询日期"}}, "required": []}, "python_code": "def fund_rating_zs(date: str = \"20230331\") -> pd.DataFrame:\n \"\"\"\n 天天基金网-基金评级-招商证券评级\n https://fund.eastmoney.com/data/fundrating_2.html\n :param date: 日期; https://fund.eastmoney.com/data/fundrating_2.html 获取查询日期\n :type date: str\n :return: 招商证券评级-混合型\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://fund.eastmoney.com/data/fundrating_2.html\"\n r = requests.get(url)\n soup = BeautifulSoup(r.text, \"lxml\")\n date_list = [\n item[\"value\"] for item in soup.find(\"select\", attrs={\"id\": \"rqoptions\"})\n ]\n date_format = \"-\".join([date[:4], date[4:6], date[6:]])\n if date_format not in date_list:\n raise \"请访问 https://fund.eastmoney.com/data/fundrating_2.html 获取查询日期\"\n url = f\"https://fund.eastmoney.com/data/fundrating_2_{'-'.join([date[:4], date[4:6], date[6:]])}.html\"\n r = requests.get(url)\n soup = BeautifulSoup(r.text, \"lxml\")\n data_text = soup.find(\"div\", attrs={\"id\": \"fundinfo\"}).find(\"script\").string\n data_content = [\n item.split(\"|\")\n for item in data_text.split(\"var\")[1]\n .split(\"=\")[1]\n .strip()\n .strip(\";\")\n .strip('\"')\n .strip(\"|\")\n .split(\"|_\")\n ]\n temp_df = pd.DataFrame(data_content)\n temp_df.columns = [\n \"代码\",\n \"简称\",\n \"_\",\n \"基金经理\",\n \"_\",\n \"基金公司\",\n \"_\",\n \"3年期评级-3年评级\",\n \"3年期评级-较上期\",\n \"单位净值\",\n \"日期\",\n \"日增长率\",\n \"近1年涨幅\",\n \"近3年涨幅\",\n \"近5年涨幅\",\n \"手续费\",\n \"_\",\n \"_\",\n \"_\",\n \"_\",\n ]\n temp_df = temp_df[\n [\n \"代码\",\n \"简称\",\n \"基金经理\",\n \"基金公司\",\n \"3年期评级-3年评级\",\n \"3年期评级-较上期\",\n \"单位净值\",\n \"日期\",\n \"日增长率\",\n \"近1年涨幅\",\n \"近3年涨幅\",\n \"近5年涨幅\",\n \"手续费\",\n ]\n ]\n temp_df[\"日期\"] = pd.to_datetime(temp_df[\"日期\"], errors=\"coerce\").dt.date\n temp_df[\"3年期评级-3年评级\"] = pd.to_numeric(\n temp_df[\"3年期评级-3年评级\"], errors=\"coerce\"\n )\n temp_df[\"3年期评级-较上期\"] = pd.to_numeric(\n temp_df[\"3年期评级-较上期\"], errors=\"coerce\"\n )\n temp_df[\"单位净值\"] = pd.to_numeric(temp_df[\"单位净值\"], errors=\"coerce\")\n temp_df[\"日增长率\"] = pd.to_numeric(temp_df[\"日增长率\"], errors=\"coerce\")\n temp_df[\"近1年涨幅\"] = pd.to_numeric(temp_df[\"近1年涨幅\"], errors=\"coerce\")\n temp_df[\"近3年涨幅\"] = pd.to_numeric(temp_df[\"近3年涨幅\"], errors=\"coerce\")\n temp_df[\"近5年涨幅\"] = pd.to_numeric(temp_df[\"近5年涨幅\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "as_filed", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_report_industry_allocation_cninfo", "tool_from": "akshare", "description": "巨潮资讯-数据中心-专题统计-基金报表-基金行业配置\nhttps://webapi.cninfo.com.cn/#/thematicStatistics\n:param date: 报告时间; choice of {\"XXXX0331\", \"XXXX0630\", \"XXXX0930\", \"XXXX1231\"}, 从 2017 年开始\n:type date: str\n:return: 基金行业配置\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "报告时间; choice of {\"XXXX0331\", \"XXXX0630\", \"XXXX0930\", \"XXXX1231\"}, 从 2017 年开始"}}, "required": []}, "python_code": "def fund_report_industry_allocation_cninfo(date: str = \"20210630\") -> pd.DataFrame:\n \"\"\"\n 巨潮资讯-数据中心-专题统计-基金报表-基金行业配置\n https://webapi.cninfo.com.cn/#/thematicStatistics\n :param date: 报告时间; choice of {\"XXXX0331\", \"XXXX0630\", \"XXXX0930\", \"XXXX1231\"}, 从 2017 年开始\n :type date: str\n :return: 基金行业配置\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://webapi.cninfo.com.cn/api/sysapi/p_sysapi1113\"\n js_code = py_mini_racer.MiniRacer()\n js_content = _get_file_content_cninfo(\"cninfo.js\")\n js_code.eval(js_content)\n mcode = js_code.call(\"getResCode1\")\n headers = {\n \"Accept\": \"*/*\",\n \"Accept-Enckey\": mcode,\n \"Accept-Encoding\": \"gzip, deflate\",\n \"Accept-Language\": \"zh-CN,zh;q=0.9,en;q=0.8\",\n \"Cache-Control\": \"no-cache\",\n \"Content-Length\": \"0\",\n \"Host\": \"webapi.cninfo.com.cn\",\n \"Origin\": \"https://webapi.cninfo.com.cn\",\n \"Pragma\": \"no-cache\",\n \"Proxy-Connection\": \"keep-alive\",\n \"Referer\": \"https://webapi.cninfo.com.cn/\",\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/93.0.4577.63 Safari/537.36\",\n \"X-Requested-With\": \"XMLHttpRequest\",\n }\n params = {\n \"rdate\": \"-\".join([date[:4], date[4:6], date[6:]]),\n }\n r = requests.post(url, headers=headers, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"records\"])\n temp_df.rename(\n columns={\n \"F004N\": \"行业规模\",\n \"F003N\": \"基金覆盖家数\",\n \"F002V\": \"证监会行业名称\",\n \"F001V\": \"行业编码\",\n \"ENDDATE\": \"报告期\",\n \"F005N\": \"占净资产比例\",\n },\n inplace=True,\n )\n temp_df = temp_df[\n [\n \"行业编码\",\n \"证监会行业名称\",\n \"报告期\",\n \"基金覆盖家数\",\n \"行业规模\",\n \"占净资产比例\",\n ]\n ]\n temp_df[\"报告期\"] = pd.to_datetime(temp_df[\"报告期\"], errors=\"coerce\").dt.date\n temp_df[\"基金覆盖家数\"] = pd.to_numeric(temp_df[\"基金覆盖家数\"], errors=\"coerce\")\n temp_df[\"行业规模\"] = pd.to_numeric(temp_df[\"行业规模\"], errors=\"coerce\")\n temp_df[\"占净资产比例\"] = pd.to_numeric(temp_df[\"占净资产比例\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "as_filed", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_report_stock_cninfo", "tool_from": "akshare", "description": "巨潮资讯-数据中心-专题统计-基金报表-基金重仓股\nhttps://webapi.cninfo.com.cn/#/thematicStatistics\n:param date: 报告时间; choice of {\"XXXX0331\", \"XXXX0630\", \"XXXX0930\", \"XXXX1231\"}\n:type date: str\n:return: 基金重仓股\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "报告时间; choice of {\"XXXX0331\", \"XXXX0630\", \"XXXX0930\", \"XXXX1231\"}"}}, "required": []}, "python_code": "def fund_report_stock_cninfo(date: str = \"20210630\") -> pd.DataFrame:\n \"\"\"\n 巨潮资讯-数据中心-专题统计-基金报表-基金重仓股\n https://webapi.cninfo.com.cn/#/thematicStatistics\n :param date: 报告时间; choice of {\"XXXX0331\", \"XXXX0630\", \"XXXX0930\", \"XXXX1231\"}\n :type date: str\n :return: 基金重仓股\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://webapi.cninfo.com.cn/api/sysapi/p_sysapi1112\"\n js_code = py_mini_racer.MiniRacer()\n js_content = _get_file_content_cninfo(\"cninfo.js\")\n js_code.eval(js_content)\n mcode = js_code.call(\"getResCode1\")\n headers = {\n \"Accept\": \"*/*\",\n \"Accept-Enckey\": mcode,\n \"Accept-Encoding\": \"gzip, deflate\",\n \"Accept-Language\": \"zh-CN,zh;q=0.9,en;q=0.8\",\n \"Cache-Control\": \"no-cache\",\n \"Content-Length\": \"0\",\n \"Host\": \"webapi.cninfo.com.cn\",\n \"Origin\": \"https://webapi.cninfo.com.cn\",\n \"Pragma\": \"no-cache\",\n \"Proxy-Connection\": \"keep-alive\",\n \"Referer\": \"https://webapi.cninfo.com.cn/\",\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/93.0.4577.63 Safari/537.36\",\n \"X-Requested-With\": \"XMLHttpRequest\",\n }\n params = {\n \"rdate\": \"-\".join([date[:4], date[4:6], date[6:]]),\n }\n r = requests.post(url, headers=headers, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"records\"])\n temp_df.rename(\n columns={\n \"F003N\": \"持股总市值\",\n \"F002N\": \"持股总数\",\n \"F001N\": \"基金覆盖家数\",\n \"SECNAME\": \"股票简称\",\n \"ID\": \"序号\",\n \"SECCODE\": \"股票代码\",\n \"ENDDATE\": \"报告期\",\n },\n inplace=True,\n )\n temp_df = temp_df[\n [\n \"序号\",\n \"股票代码\",\n \"股票简称\",\n \"报告期\",\n \"基金覆盖家数\",\n \"持股总数\",\n \"持股总市值\",\n ]\n ]\n temp_df[\"报告期\"] = pd.to_datetime(temp_df[\"报告期\"], errors=\"coerce\").dt.date\n temp_df[\"持股总数\"] = pd.to_numeric(temp_df[\"持股总数\"], errors=\"coerce\")\n temp_df[\"持股总市值\"] = pd.to_numeric(temp_df[\"持股总市值\"], errors=\"coerce\")\n temp_df[\"基金覆盖家数\"] = pd.to_numeric(temp_df[\"基金覆盖家数\"], errors=\"coerce\")\n temp_df[\"序号\"] = range(1, len(temp_df) + 1)\n return temp_df\n", "financial_tags": {"timeliness": "as_filed", "intent_type": "informational", "regulatory_domains": ["equity", "fund"]}} {"name": "fund_scale_open_sina", "tool_from": "akshare", "description": "新浪财经-基金数据中心-基金规模-开放式基金\nhttps://vip.stock.finance.sina.com.cn/fund_center/index.html#jjhqetf\n:param symbol: choice of {\"股票型基金\", \"混合型基金\", \"债券型基金\", \"货币型基金\", \"QDII基金\"}\n:type symbol: str\n:return: 基金规模\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "choice of {\"股票型基金\", \"混合型基金\", \"债券型基金\", \"货币型基金\", \"QDII基金\"}"}}, "required": []}, "python_code": "def fund_scale_open_sina(symbol: str = \"股票型基金\") -> pd.DataFrame:\n \"\"\"\n 新浪财经-基金数据中心-基金规模-开放式基金\n https://vip.stock.finance.sina.com.cn/fund_center/index.html#jjhqetf\n :param symbol: choice of {\"股票型基金\", \"混合型基金\", \"债券型基金\", \"货币型基金\", \"QDII基金\"}\n :type symbol: str\n :return: 基金规模\n :rtype: pandas.DataFrame\n \"\"\"\n fund_map = {\n \"股票型基金\": \"2\",\n \"混合型基金\": \"1\",\n \"债券型基金\": \"3\",\n \"货币型基金\": \"5\",\n \"QDII基金\": \"6\",\n }\n url = (\n \"http://vip.stock.finance.sina.com.cn/fund_center/data/jsonp.php/IO.XSRV2.\"\n \"CallbackList['J2cW8KXheoWKdSHc']/NetValueReturn_Service.NetValueReturnOpen\"\n )\n params = {\n \"page\": \"1\",\n \"num\": \"10000\",\n \"sort\": \"zmjgm\",\n \"asc\": \"0\",\n \"ccode\": \"\",\n \"type2\": fund_map[symbol],\n \"type3\": \"\",\n }\n r = requests.get(url, params=params)\n data_text = r.text\n data_json = demjson.decode(data_text[data_text.find(\"({\") + 1 : -2])\n temp_df = pd.DataFrame(data_json[\"data\"])\n temp_df.reset_index(inplace=True)\n temp_df[\"index\"] = range(1, len(temp_df) + 1)\n temp_df.rename(\n columns={\n \"index\": \"序号\",\n \"symbol\": \"基金代码\",\n \"sname\": \"基金简称\",\n \"per_nav\": \"-\",\n \"total_nav\": \"-\",\n \"three_month\": \"-\",\n \"six_month\": \"-\",\n \"one_year\": \"-\",\n \"form_year\": \"-\",\n \"form_start\": \"-\",\n \"name\": \"-\",\n \"zmjgm\": \"总募集规模\",\n \"clrq\": \"成立日期\",\n \"jjjl\": \"基金经理\",\n \"dwjz\": \"单位净值\",\n \"ljjz\": \"-\",\n \"jzrq\": \"更新日期\",\n \"zjzfe\": \"最近总份额\",\n \"jjglr_code\": \"-\",\n },\n inplace=True,\n )\n temp_df = temp_df[\n [\n \"序号\",\n \"基金代码\",\n \"基金简称\",\n \"单位净值\",\n \"总募集规模\",\n \"最近总份额\",\n \"成立日期\",\n \"基金经理\",\n \"更新日期\",\n ]\n ]\n temp_df[\"成立日期\"] = pd.to_datetime(temp_df[\"成立日期\"], errors=\"coerce\").dt.date\n temp_df[\"更新日期\"] = pd.to_datetime(temp_df[\"更新日期\"], errors=\"coerce\").dt.date\n temp_df[\"单位净值\"] = pd.to_numeric(temp_df[\"单位净值\"], errors=\"coerce\")\n temp_df[\"总募集规模\"] = pd.to_numeric(temp_df[\"总募集规模\"], errors=\"coerce\")\n temp_df[\"最近总份额\"] = pd.to_numeric(temp_df[\"最近总份额\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "fund_value_estimation_em", "tool_from": "akshare", "description": "东方财富网-数据中心-净值估算\nhttps://fund.eastmoney.com/fundguzhi.html\n:param symbol: choice of {'全部', '股票型', '混合型', '债券型', '指数型', 'QDII', 'ETF联接', 'LOF', '场内交易基金'}\n:type symbol: str\n:return: 近期净值估算数据\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "choice of {'全部', '股票型', '混合型', '债券型', '指数型', 'QDII', 'ETF联接', 'LOF', '场内交易基金'}"}}, "required": []}, "python_code": "def fund_value_estimation_em(symbol: str = \"全部\") -> pd.DataFrame:\n \"\"\"\n 东方财富网-数据中心-净值估算\n https://fund.eastmoney.com/fundguzhi.html\n :param symbol: choice of {'全部', '股票型', '混合型', '债券型', '指数型', 'QDII', 'ETF联接', 'LOF', '场内交易基金'}\n :type symbol: str\n :return: 近期净值估算数据\n :rtype: pandas.DataFrame\n \"\"\"\n symbol_map = {\n \"全部\": 1,\n \"股票型\": 2,\n \"混合型\": 3,\n \"债券型\": 4,\n \"指数型\": 5,\n \"QDII\": 6,\n \"ETF联接\": 7,\n \"LOF\": 8,\n \"场内交易基金\": 9,\n }\n url = \"https://api.fund.eastmoney.com/FundGuZhi/GetFundGZList\"\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/81.0.4044.138 Safari/537.36\",\n \"Referer\": \"https://fund.eastmoney.com/\",\n }\n params = {\n \"type\": symbol_map[symbol],\n \"sort\": \"3\",\n \"orderType\": \"desc\",\n \"canbuy\": \"0\",\n \"pageIndex\": \"1\",\n \"pageSize\": \"20000\",\n \"_\": int(time.time() * 1000),\n }\n r = requests.get(url, params=params, headers=headers)\n json_data = r.json()\n temp_df = pd.DataFrame(json_data[\"Data\"][\"list\"])\n value_day = json_data[\"Data\"][\"gzrq\"]\n cal_day = json_data[\"Data\"][\"gxrq\"]\n temp_df.columns = [\n \"基金代码\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n \"基金类型\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n \"估算日期\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n \"_\",\n \"-\",\n \"-\",\n \"估算偏差\",\n f\"{cal_day}-估算数据-估算值\",\n f\"{cal_day}-估算数据-估算增长率\",\n f\"{cal_day}-公布数据-日增长率\",\n f\"{value_day}-单位净值\",\n f\"{cal_day}-公布数据-单位净值\",\n \"-\",\n \"基金名称\",\n \"-\",\n \"-\",\n \"-\",\n ]\n temp_df = temp_df[\n [\n \"基金代码\",\n \"基金名称\",\n f\"{cal_day}-估算数据-估算值\",\n f\"{cal_day}-估算数据-估算增长率\",\n f\"{cal_day}-公布数据-单位净值\",\n f\"{cal_day}-公布数据-日增长率\",\n \"估算偏差\",\n f\"{value_day}-单位净值\",\n ]\n ]\n temp_df.reset_index(inplace=True)\n temp_df[\"index\"] = range(1, len(temp_df) + 1)\n temp_df.rename(columns={\"index\": \"序号\"}, inplace=True)\n return temp_df\n", "financial_tags": {"timeliness": "realtime", "intent_type": "informational", "regulatory_domains": ["fund"]}} {"name": "futures_comex_inventory", "tool_from": "akshare", "description": "东方财富网-数据中心-期货期权-COMEX库存数据\nhttps://data.eastmoney.com/pmetal/comex/by.html\n:param symbol: choice of {\"黄金\", \"白银\"}\n:type symbol: str\n:return: COMEX库存数据\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "choice of {\"黄金\", \"白银\"}"}}, "required": []}, "python_code": "def futures_comex_inventory(symbol: str = \"黄金\") -> pd.DataFrame:\n \"\"\"\n 东方财富网-数据中心-期货期权-COMEX库存数据\n https://data.eastmoney.com/pmetal/comex/by.html\n :param symbol: choice of {\"黄金\", \"白银\"}\n :type symbol: str\n :return: COMEX库存数据\n :rtype: pandas.DataFrame\n \"\"\"\n symbol_map = {\n \"黄金\": \"EMI00069026\",\n \"白银\": \"EMI00069027\",\n }\n url = \"https://datacenter-web.eastmoney.com/api/data/v1/get\"\n params = {\n \"sortColumns\": \"REPORT_DATE\",\n \"sortTypes\": \"-1\",\n \"pageSize\": \"500\",\n \"pageNumber\": \"1\",\n \"reportName\": \"RPT_FUTUOPT_GOLDSIL\",\n \"columns\": \"ALL\",\n \"quoteColumns\": \"\",\n \"source\": \"WEB\",\n \"client\": \"WEB\",\n \"filter\": f'(INDICATOR_ID1=\"{symbol_map[symbol]}\")(@STORAGE_TON<>\"NULL\")',\n }\n r = requests.get(url, params=params)\n data_json = r.json()\n total_page = data_json[\"result\"][\"pages\"]\n big_df = pd.DataFrame()\n tqdm = get_tqdm()\n for page in tqdm(range(1, total_page + 1), leave=False):\n params.update(\n {\n \"pageNumber\": page,\n }\n )\n r = requests.get(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"result\"][\"data\"])\n big_df = pd.concat(objs=[big_df, temp_df], axis=0, ignore_index=True)\n\n big_df.reset_index(inplace=True)\n big_df[\"index\"] = big_df[\"index\"] + 1\n big_df.rename(\n columns={\n \"index\": \"序号\",\n \"REPORT_DATE\": \"日期\",\n \"INDICATOR_NAME\": \"-\",\n \"INDICATOR_ID1\": \"-\",\n \"STORAGE_TON\": f\"COMEX{symbol}库存量-吨\",\n \"STORAGE_OUNCE\": f\"COMEX{symbol}库存量-盎司\",\n \"INDICATOR_ID2\": \"-\",\n \"NETPOSITION_TON\": \"-\",\n \"NETPOSITION_OUNCE\": \"-\",\n \"NETPOSITION_DOLLAR\": \"-\",\n \"INDICATOR_ID3\": \"-\",\n \"OPENPOSI_STOCK\": \"-\",\n \"OPENPOSTOCK_WECHANGE\": \"-\",\n \"OPENPOSI_STOCK_SUM\": \"-\",\n },\n inplace=True,\n )\n big_df = big_df[\n [\n \"序号\",\n \"日期\",\n f\"COMEX{symbol}库存量-吨\",\n f\"COMEX{symbol}库存量-盎司\",\n ]\n ]\n big_df[f\"COMEX{symbol}库存量-吨\"] = pd.to_numeric(\n big_df[f\"COMEX{symbol}库存量-吨\"], errors=\"coerce\"\n )\n big_df[f\"COMEX{symbol}库存量-盎司\"] = pd.to_numeric(\n big_df[f\"COMEX{symbol}库存量-盎司\"], errors=\"coerce\"\n )\n big_df[\"日期\"] = pd.to_datetime(big_df[\"日期\"], errors=\"coerce\").dt.date\n big_df.sort_values([\"日期\"], inplace=True, ignore_index=True)\n big_df[\"序号\"] = range(1, len(big_df) + 1)\n return big_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_comm_info", "tool_from": "akshare", "description": "九期网-期货手续费\nhttps://www.9qihuo.com/qihuoshouxufei\n:param symbol: choice of {\"所有\", \"上海期货交易所\", \"大连商品交易所\", \"郑州商品交易所\", \"上海国际能源交易中心\", \"中国金融期货交易所\", \"广州期货交易所\"}\n:type symbol: str\n:return: 期货手续费\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "choice of {\"所有\", \"上海期货交易所\", \"大连商品交易所\", \"郑州商品交易所\", \"上海国际能源交易中心\", \"中国金融期货交易所\", \"广州期货交易所\"}"}}, "required": []}, "python_code": "def futures_comm_info(symbol: str = \"所有\") -> pd.DataFrame:\n \"\"\"\n 九期网-期货手续费\n https://www.9qihuo.com/qihuoshouxufei\n :param symbol: choice of {\"所有\", \"上海期货交易所\", \"大连商品交易所\", \"郑州商品交易所\", \"上海国际能源交易中心\", \"中国金融期货交易所\", \"广州期货交易所\"}\n :type symbol: str\n :return: 期货手续费\n :rtype: pandas.DataFrame\n \"\"\"\n import urllib3\n\n urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)\n url = \"https://www.9qihuo.com/qihuoshouxufei\"\n r = requests.get(url, verify=False)\n temp_df = pd.read_html(StringIO(r.text))[0]\n temp_df.columns = [\n \"合约品种\",\n \"现价\",\n \"涨/跌停板\",\n \"保证金-买开\",\n \"保证金-卖开\",\n \"保证金-保证金/每手\",\n \"手续费标准-开仓\",\n \"手续费标准-平昨\",\n \"手续费标准-平今\",\n \"每跳毛利\",\n \"手续费(开+平)\",\n \"每跳净利\",\n \"备注\",\n \"-\",\n \"-\",\n ]\n df_0 = temp_df[temp_df[\"合约品种\"].str.contains(\"上海期货交易所\")].index.values[0]\n df_1 = temp_df[temp_df[\"合约品种\"].str.contains(\"大连商品交易所\")].index.values[0]\n df_2 = temp_df[temp_df[\"合约品种\"].str.contains(\"郑州商品交易所\")].index.values[0]\n df_3 = temp_df[\n temp_df[\"合约品种\"].str.contains(\"上海国际能源交易中心\")\n ].index.values[0]\n df_4 = temp_df[temp_df[\"合约品种\"].str.contains(\"广州期货交易所\")].index.values[0]\n df_5 = temp_df[temp_df[\"合约品种\"].str.contains(\"中国金融期货交易所\")].index.values[\n 0\n ]\n shfe_df = temp_df.iloc[df_0 + 3 : df_1, :].reset_index(drop=True)\n dce_df = temp_df.iloc[df_1 + 3 : df_2, :].reset_index(drop=True)\n czce_df = temp_df.iloc[df_2 + 3 : df_3, :].reset_index(drop=True)\n ine_df = temp_df.iloc[df_3 + 3 : df_4, :].reset_index(drop=True)\n gfex_df = temp_df.iloc[df_4 + 3 : df_5, :].reset_index(drop=True)\n cffex_df = temp_df.iloc[df_5 + 3 :, :].reset_index(drop=True)\n if symbol == \"上海期货交易所\":\n return _futures_comm_qihuo_process(shfe_df, name=\"上海期货交易所\")\n elif symbol == \"大连商品交易所\":\n return _futures_comm_qihuo_process(dce_df, name=\"大连商品交易所\")\n elif symbol == \"郑州商品交易所\":\n return _futures_comm_qihuo_process(czce_df, name=\"郑州商品交易所\")\n elif symbol == \"上海国际能源交易中心\":\n return _futures_comm_qihuo_process(ine_df, name=\"上海国际能源交易中心\")\n elif symbol == \"广州期货交易所\":\n return _futures_comm_qihuo_process(gfex_df, name=\"广州期货交易所\")\n elif symbol == \"中国金融期货交易所\":\n return _futures_comm_qihuo_process(cffex_df, name=\"中国金融期货交易所\")\n else:\n big_df = pd.DataFrame()\n big_df = pd.concat(\n objs=[big_df, _futures_comm_qihuo_process(shfe_df, name=\"上海期货交易所\")],\n ignore_index=True,\n )\n big_df = pd.concat(\n objs=[big_df, _futures_comm_qihuo_process(dce_df, name=\"大连商品交易所\")],\n ignore_index=True,\n )\n big_df = pd.concat(\n objs=[big_df, _futures_comm_qihuo_process(czce_df, name=\"郑州商品交易所\")],\n ignore_index=True,\n )\n big_df = pd.concat(\n objs=[\n big_df,\n _futures_comm_qihuo_process(ine_df, name=\"上海国际能源交易中心\"),\n ],\n ignore_index=True,\n )\n big_df = pd.concat(\n objs=[big_df, _futures_comm_qihuo_process(gfex_df, name=\"广州期货交易所\")],\n ignore_index=True,\n )\n big_df = pd.concat(\n objs=[\n big_df,\n _futures_comm_qihuo_process(cffex_df, name=\"中国金融期货交易所\"),\n ],\n ignore_index=True,\n )\n return big_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_contract_detail", "tool_from": "akshare", "description": "查询期货合约详情\nhttps://finance.sina.com.cn/futures/quotes/V2101.shtml\n:param symbol: 合约\n:type symbol: str\n:return: 期货合约详情\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "合约"}}, "required": []}, "python_code": "def futures_contract_detail(symbol: str = \"AP2101\") -> pd.DataFrame:\n \"\"\"\n 查询期货合约详情\n https://finance.sina.com.cn/futures/quotes/V2101.shtml\n :param symbol: 合约\n :type symbol: str\n :return: 期货合约详情\n :rtype: pandas.DataFrame\n \"\"\"\n url = f\"https://finance.sina.com.cn/futures/quotes/{symbol}.shtml\"\n r = requests.get(url)\n r.encoding = \"gb2312\"\n temp_df = pd.read_html(StringIO(r.text))[6]\n data_one = temp_df.iloc[:, :2]\n data_one.columns = [\"item\", \"value\"]\n data_two = temp_df.iloc[:, 2:4]\n data_two.columns = [\"item\", \"value\"]\n data_three = temp_df.iloc[:, 4:]\n data_three.columns = [\"item\", \"value\"]\n temp_df = pd.concat(\n objs=[data_one, data_two, data_three], axis=0, ignore_index=True\n )\n return temp_df\n", "financial_tags": {"timeliness": "realtime", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_contract_detail_em", "tool_from": "akshare", "description": "查询期货合约详情\nhttps://quote.eastmoney.com/qihuo/v2602F.html\n:param symbol: 合约\n:type symbol: str\n:return: 期货合约详情\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "合约"}}, "required": []}, "python_code": "def futures_contract_detail_em(symbol: str = \"v2602F\") -> pd.DataFrame:\n \"\"\"\n 查询期货合约详情\n https://quote.eastmoney.com/qihuo/v2602F.html\n :param symbol: 合约\n :type symbol: str\n :return: 期货合约详情\n :rtype: pandas.DataFrame\n \"\"\"\n url = f\"https://quote.eastmoney.com/qihuo/{symbol}.html\"\n r = requests.get(url)\n soup = BeautifulSoup(r.text, features=\"lxml\")\n url_text = \\\n soup.find(name=\"div\", attrs={\"class\": \"sidertabbox_tsplit\"}).find(name=\"div\", attrs={\"class\": \"onet\"}).find(\n \"a\")[\n 'href']\n inner_symbol = url_text.split(\"#\")[-1].strip(\"futures_\")\n url = f\"https://futsse-static.eastmoney.com/redis?msgid={inner_symbol}_info\"\n r = requests.get(url)\n data_json = r.json()\n temp_df = pd.DataFrame.from_dict(data_json, orient=\"index\")\n column_mapping = {\n 'vname': '交易品种',\n 'vcode': '交易代码',\n 'jydw': '交易单位',\n 'bjdw': '报价单位',\n 'market': '上市交易所',\n 'zxbddw': '最小变动价格',\n 'zdtbfd': '跌涨停板幅度',\n 'hyjgyf': '合约交割月份',\n 'jysj': '交易时间',\n 'zhjyr': '最后交易日',\n 'zhjgr': '最后交割日',\n 'jgpj': '交割品级',\n 'zcjybzj': '最初交易保证金',\n 'jgfs': '交割方式'\n }\n temp_df.rename(index=column_mapping, inplace=True)\n temp_df.reset_index(drop=False, inplace=True)\n temp_df.columns = ['item', 'value']\n return temp_df\n", "financial_tags": {"timeliness": "realtime", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_contract_info_cffex", "tool_from": "akshare", "description": "中国金融期货交易所-数据-交易参数\nhttp://www.gfex.com.cn/gfex/hyxx/ywcs.shtml\n:param date: 查询日期\n:type date: str\n:return: 交易参数汇总查询\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "查询日期"}}, "required": []}, "python_code": "def futures_contract_info_cffex(date: str = \"20240228\") -> pd.DataFrame:\n \"\"\"\n 中国金融期货交易所-数据-交易参数\n http://www.gfex.com.cn/gfex/hyxx/ywcs.shtml\n :param date: 查询日期\n :type date: str\n :return: 交易参数汇总查询\n :rtype: pandas.DataFrame\n \"\"\"\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36\",\n }\n url = f\"http://www.cffex.com.cn/sj/jycs/{date[:6]}/{date[6:]}/index.xml\"\n r = requests.get(url, headers=headers)\n xml_data = r.text\n # 解析 XML\n tree = ET.ElementTree(ET.fromstring(xml_data))\n root = tree.getroot()\n # 获取所有的记录\n records = root.findall(\".//INDEX\")\n # 解析数据并填充到列表中\n data = []\n for record in records:\n # 对于每个记录,创建一个字典\n row_data = {}\n for field in record:\n row_data[field.tag] = field.text\n # 将字典添加到数据列表中\n data.append(row_data)\n\n temp_df = pd.DataFrame(data)\n temp_df.rename(\n columns={\n \"TRADING_DAY\": \"查询交易日\",\n \"PRODUCT_ID\": \"品种\",\n \"INSTRUMENT_ID\": \"合约代码\",\n \"INSTRUMENT_MONTH\": \"合约月份\",\n \"BASIS_PRICE\": \"挂盘基准价\",\n \"OPEN_DATE\": \"上市日\",\n \"END_TRADING_DAY\": \"最后交易日\",\n \"UPPER_VALUE\": \"涨停板幅度\",\n \"LOWER_VALUE\": \"跌停板幅度\",\n \"UPPERLIMITPRICE\": \"涨停板价位\",\n \"LOWERLIMITPRICE\": \"跌停板价位\",\n \"LONG_LIMIT\": \"持仓限额\",\n },\n inplace=True,\n )\n temp_df[\"挂盘基准价\"] = pd.to_numeric(temp_df[\"挂盘基准价\"], errors=\"coerce\")\n temp_df[\"涨停板价位\"] = pd.to_numeric(temp_df[\"涨停板价位\"], errors=\"coerce\")\n temp_df[\"跌停板价位\"] = pd.to_numeric(temp_df[\"跌停板价位\"], errors=\"coerce\")\n temp_df[\"持仓限额\"] = pd.to_numeric(temp_df[\"持仓限额\"], errors=\"coerce\")\n\n temp_df[\"查询交易日\"] = pd.to_datetime(\n temp_df[\"查询交易日\"], format=\"%Y%m%d\", errors=\"coerce\"\n ).dt.date\n temp_df[\"上市日\"] = pd.to_datetime(\n temp_df[\"上市日\"], format=\"%Y%m%d\", errors=\"coerce\"\n ).dt.date\n temp_df[\"最后交易日\"] = pd.to_datetime(\n temp_df[\"最后交易日\"], format=\"%Y%m%d\", errors=\"coerce\"\n ).dt.date\n temp_df[\"查询交易日\"] = pd.to_datetime(\n temp_df[\"查询交易日\"], format=\"%Y%m%d\", errors=\"coerce\"\n ).dt.date\n temp_df = temp_df[\n [\n \"合约代码\",\n \"合约月份\",\n \"挂盘基准价\",\n \"上市日\",\n \"最后交易日\",\n \"涨停板幅度\",\n \"跌停板幅度\",\n \"涨停板价位\",\n \"跌停板价位\",\n \"持仓限额\",\n \"品种\",\n \"查询交易日\",\n ]\n ]\n temp_df.sort_values([\"合约代码\"], ascending=False, ignore_index=True, inplace=True)\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_contract_info_czce", "tool_from": "akshare", "description": "郑州商品交易所-交易数据-参考数据\nhttp://www.czce.com.cn/cn/jysj/cksj/H770322index_1.htm\n:param date: 查询日期\n:type date: str\n:return: 交易参数汇总查询\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "查询日期"}}, "required": []}, "python_code": "def futures_contract_info_czce(date: str = \"20240228\") -> pd.DataFrame:\n \"\"\"\n 郑州商品交易所-交易数据-参考数据\n http://www.czce.com.cn/cn/jysj/cksj/H770322index_1.htm\n :param date: 查询日期\n :type date: str\n :return: 交易参数汇总查询\n :rtype: pandas.DataFrame\n \"\"\"\n headers = {\n \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,\"\n \"image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\",\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/84.0.4147.89 Safari/537.36\",\n \"Host\": \"www.czce.com.cn\",\n }\n url = f\"http://www.czce.com.cn/cn/DFSStaticFiles/Future/{date[:4]}/{date}/FutureDataReferenceData.xml\"\n r = requests.get(url, headers=headers)\n xml_data = r.text\n # 解析 XML\n tree = ET.ElementTree(ET.fromstring(xml_data))\n root = tree.getroot()\n # 获取所有的记录\n records = root.findall(\".//Contract\")\n # 解析数据并填充到列表中\n data = []\n for record in records:\n # 对于每个记录,创建一个字典\n row_data = {}\n for field in record:\n row_data[field.tag] = field.text\n # 将字典添加到数据列表中\n data.append(row_data)\n\n temp_df = pd.DataFrame(data)\n temp_df.rename(\n columns={\n \"Name\": \"产品名称\",\n \"CtrCd\": \"合约代码\",\n \"PrdCd\": \"产品代码\",\n \"PrdTp\": \"产品类型\",\n \"ExchCd\": \"交易所MIC编码\",\n \"SegTp\": \"交易场所\",\n \"TrdHrs\": \"交易时间节假日除外\",\n \"TrdCtyCd\": \"交易国家ISO编码\",\n \"TrdCcyCd\": \"交易币种ISO编码\",\n \"ClrngCcyCd\": \"结算币种ISO编码\",\n \"ExpiryTime\": \"到期时间待国家公布2025年节假日安排后进行调整\",\n \"SettleTp\": \"结算方式\",\n \"Duration\": \"挂牌频率\",\n \"TckSz\": \"最小变动价位\",\n \"TckVal\": \"最小变动价值\",\n \"CtrSz\": \"交易单位\",\n \"MsrmntUnt\": \"计量单位\",\n \"MaxOrdSz\": \"最大下单量\",\n \"MnthPosLmt\": \"日持仓限额期货公司会员不限仓\",\n \"MinBlckTrdSz\": \"大宗交易最小规模\",\n \"CesrEaaFl\": \"是否受CESR监管\",\n \"FlexElgblFl\": \"是否为灵活合约\",\n \"ListCy\": \"上市周期该产品的所有合约月份\",\n \"DlvryNtcDt\": \"交割通知日\",\n \"FrstTrdDt\": \"第一交易日\",\n \"LstTrdDt\": \"最后交易日待国家公布2025年节假日安排后进行调整\",\n \"DlvrySettleDt\": \"交割结算日\",\n \"MnthCd\": \"月份代码\",\n \"YrCd\": \"年份代码\",\n \"LstDlvryDt\": \"最后交割日\",\n \"LstDlvryDtBoard\": \"车(船)板最后交割日\",\n \"DlvryMnth\": \"合约交割月份本合约交割月份\",\n \"Margin\": \"交易保证金率\",\n \"PxLim\": \"涨跌停板\",\n \"FeeCcy\": \"费用币种ISO编码\",\n \"TrdFee\": \"交易手续费\",\n \"FeeCollectionType\": \"手续费收取方式\",\n \"DlvryFee\": \"交割手续费\",\n \"IntraDayTrdFee\": \"平今仓手续费\",\n \"TradingLimit\": \"交易限额\",\n },\n inplace=True,\n )\n\n temp_df[\"交易手续费\"] = pd.to_numeric(temp_df[\"交易手续费\"], errors=\"coerce\")\n temp_df[\"交割手续费\"] = pd.to_numeric(temp_df[\"交割手续费\"], errors=\"coerce\")\n temp_df[\"平今仓手续费\"] = pd.to_numeric(temp_df[\"平今仓手续费\"], errors=\"coerce\")\n temp_df[\"交易限额\"] = pd.to_numeric(temp_df[\"交易限额\"], errors=\"coerce\")\n temp_df[\"车(船)板最后交割日\"] = pd.to_datetime(\n temp_df[\"车(船)板最后交割日\"], errors=\"coerce\"\n ).dt.date\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_contract_info_ine", "tool_from": "akshare", "description": "上海国际能源交易中心-业务指南-交易参数汇总(期货)\nhttps://www.ine.cn/bourseService/summary/?name=currinstrumentprop\n:param date: 查询日期; 交易日\n:type date: str\n:return: 交易参数汇总查询\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "查询日期; 交易日"}}, "required": []}, "python_code": "def futures_contract_info_ine(date: str = \"20241129\") -> pd.DataFrame:\n \"\"\"\n 上海国际能源交易中心-业务指南-交易参数汇总(期货)\n https://www.ine.cn/bourseService/summary/?name=currinstrumentprop\n :param date: 查询日期; 交易日\n :type date: str\n :return: 交易参数汇总查询\n :rtype: pandas.DataFrame\n \"\"\"\n url = f\"https://www.ine.cn/data/busiparamdata/future/ContractBaseInfo{date}.dat\"\n params = {\"rnd\": \"0.8312696798757147\"}\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/119.0.0.0 Safari/537.36\"\n }\n r = requests.get(url, params=params, headers=headers)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"ContractBaseInfo\"])\n temp_df.rename(\n columns={\n \"BASISPRICE\": \"挂牌基准价\",\n \"ENDDELIVDATE\": \"最后交割日\",\n \"EXPIREDATE\": \"到期日\",\n \"INSTRUMENTID\": \"合约代码\",\n \"OPENDATE\": \"上市日\",\n \"STARTDELIVDATE\": \"开始交割日\",\n \"TRADINGDAY\": \"交易日\",\n },\n inplace=True,\n )\n temp_df = temp_df[\n [\n \"合约代码\",\n \"上市日\",\n \"到期日\",\n \"开始交割日\",\n \"最后交割日\",\n \"挂牌基准价\",\n \"交易日\",\n ]\n ]\n temp_df[\"上市日\"] = pd.to_datetime(temp_df[\"上市日\"], errors=\"coerce\").dt.date\n temp_df[\"到期日\"] = pd.to_datetime(temp_df[\"到期日\"], errors=\"coerce\").dt.date\n temp_df[\"开始交割日\"] = pd.to_datetime(\n temp_df[\"开始交割日\"], errors=\"coerce\"\n ).dt.date\n temp_df[\"最后交割日\"] = pd.to_datetime(\n temp_df[\"最后交割日\"], errors=\"coerce\"\n ).dt.date\n temp_df[\"交易日\"] = pd.to_datetime(temp_df[\"交易日\"], errors=\"coerce\").dt.date\n temp_df[\"挂牌基准价\"] = pd.to_numeric(temp_df[\"挂牌基准价\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_contract_info_shfe", "tool_from": "akshare", "description": "上海期货交易所-交易所服务-业务数据-交易参数汇总查询\nhttps://tsite.shfe.com.cn/bourseService/businessdata/summaryinquiry/\n:param date: 查询日期; 交易日\n:type date: str\n:return: 交易参数汇总查询\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "查询日期; 交易日"}}, "required": []}, "python_code": "def futures_contract_info_shfe(date: str = \"20240513\") -> pd.DataFrame:\n \"\"\"\n 上海期货交易所-交易所服务-业务数据-交易参数汇总查询\n https://tsite.shfe.com.cn/bourseService/businessdata/summaryinquiry/\n :param date: 查询日期; 交易日\n :type date: str\n :return: 交易参数汇总查询\n :rtype: pandas.DataFrame\n \"\"\"\n url = f\"https://www.shfe.com.cn/data/busiparamdata/future/ContractBaseInfo{date}.dat\"\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/119.0.0.0 Safari/537.36\"\n }\n r = requests.get(url, headers=headers)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"ContractBaseInfo\"])\n temp_df.rename(\n columns={\n \"BASISPRICE\": \"挂牌基准价\",\n \"ENDDELIVDATE\": \"最后交割日\",\n \"EXPIREDATE\": \"到期日\",\n \"INSTRUMENTID\": \"合约代码\",\n \"OPENDATE\": \"上市日\",\n \"STARTDELIVDATE\": \"开始交割日\",\n \"TRADINGDAY\": \"交易日\",\n },\n inplace=True,\n )\n temp_df = temp_df[\n [\n \"合约代码\",\n \"上市日\",\n \"到期日\",\n \"开始交割日\",\n \"最后交割日\",\n \"挂牌基准价\",\n \"交易日\",\n ]\n ]\n temp_df[\"上市日\"] = pd.to_datetime(temp_df[\"上市日\"], errors=\"coerce\").dt.date\n temp_df[\"到期日\"] = pd.to_datetime(temp_df[\"到期日\"], errors=\"coerce\").dt.date\n temp_df[\"开始交割日\"] = pd.to_datetime(\n temp_df[\"开始交割日\"], errors=\"coerce\"\n ).dt.date\n temp_df[\"最后交割日\"] = pd.to_datetime(\n temp_df[\"最后交割日\"], errors=\"coerce\"\n ).dt.date\n temp_df[\"交易日\"] = pd.to_datetime(temp_df[\"交易日\"], errors=\"coerce\").dt.date\n temp_df[\"挂牌基准价\"] = pd.to_numeric(temp_df[\"挂牌基准价\"], errors=\"coerce\")\n temp_df[\"更新时间\"] = data_json['update_date']\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_dce_position_rank", "tool_from": "akshare", "description": "大连商品交易所-每日持仓排名-具体合约\nhttp://www.dce.com.cn/dalianshangpin/xqsj/tjsj26/rtj/rcjccpm/index.html\n:param date: 指定交易日; e.g., \"20200511\"\n:type date: str\n:param vars_list: 品种列表\n:type vars_list: list\n:return: 指定日期的持仓排名数据\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "指定交易日; e.g., \"20200511\""}, "vars_list": {"type": "string", "description": "品种列表"}}, "required": []}, "python_code": "def futures_dce_position_rank(\n date: str = \"20160919\", vars_list=cons.contract_symbols\n) -> dict:\n \"\"\"\n 大连商品交易所-每日持仓排名-具体合约\n http://www.dce.com.cn/dalianshangpin/xqsj/tjsj26/rtj/rcjccpm/index.html\n :param date: 指定交易日; e.g., \"20200511\"\n :type date: str\n :param vars_list: 品种列表\n :type vars_list: list\n :return: 指定日期的持仓排名数据\n :rtype: pandas.DataFrame\n \"\"\"\n date = cons.convert_date(date) if date is not None else datetime.date.today()\n if date.strftime(\"%Y%m%d\") not in calendar:\n warnings.warn(\"%s非交易日\" % date.strftime(\"%Y%m%d\"))\n return {}\n date_str = date.strftime(\"%Y%m%d\")\n url = \"http://www.dce.com.cn/dcereport/publicweb/dailystat/memberDealPosi/batchDownload\"\n payload = {\n \"tradeDate\": date_str,\n \"varietyId\": \"a\",\n \"contractId\": \"a2601\",\n \"tradeType\": \"1\",\n \"lang\": \"zh\",\n }\n r = requests.post(url, json=payload)\n big_dict = dict()\n with zipfile.ZipFile(BytesIO(r.content), mode=\"r\") as z:\n for i in z.namelist():\n file_name = i\n if not file_name.startswith(date_str):\n continue\n try:\n data = pd.read_table(z.open(i), header=None, sep=\"\\t\")\n if sum(data.iloc[:, 0].str.find(\"会员类别\") == 0) > 0:\n data = data.iloc[:-6]\n if len(data) < 12: # 处理没有活跃合约的情况\n big_dict[file_name.split(\"_\")[1]] = pd.DataFrame()\n continue\n temp_filter = data[data.iloc[:, 0].str.find(\"名次\") == 0].index.tolist()\n if (\n temp_filter[1] - temp_filter[0] < 5\n ): # 过滤有无成交量但是有买卖持仓的数据, 如 20201105_c2011_成交量_买持仓_卖持仓排名.txt\n big_dict[file_name.split(\"_\")[1]] = pd.DataFrame()\n continue\n start_list = data[data.iloc[:, 0].str.find(\"名次\") == 0].index.tolist()\n data = data.iloc[\n start_list[0] :,\n data.columns[data.iloc[start_list[0], :].notnull()],\n ]\n data.reset_index(inplace=True, drop=True)\n start_list = data[data.iloc[:, 0].str.find(\"名次\") == 0].index.tolist()\n end_list = data[\n data.iloc[:, 0].str.contains(r\"(?:总计|合计)\", na=False)\n ].index.tolist()\n part_one = data[start_list[0] : end_list[0]].iloc[1:, :]\n part_two = data[start_list[1] : end_list[1]].iloc[1:, :]\n part_three = data[start_list[2] : end_list[2]].iloc[1:, :]\n temp_df = pd.concat(\n objs=[\n part_one.reset_index(drop=True),\n part_two.reset_index(drop=True),\n part_three.reset_index(drop=True),\n ],\n axis=1,\n ignore_index=True,\n )\n temp_df.columns = [\n \"名次\",\n \"会员简称\",\n \"成交量\",\n \"增减\",\n \"名次\",\n \"会员简称\",\n \"持买单量\",\n \"增减\",\n \"名次\",\n \"会员简称\",\n \"持卖单量\",\n \"增减\",\n ]\n temp_df[\"rank\"] = range(1, len(temp_df) + 1)\n del temp_df[\"名次\"]\n temp_df.columns = [\n \"vol_party_name\",\n \"vol\",\n \"vol_chg\",\n \"long_party_name\",\n \"long_open_interest\",\n \"long_open_interest_chg\",\n \"short_party_name\",\n \"short_open_interest\",\n \"short_open_interest_chg\",\n \"rank\",\n ]\n temp_df[\"symbol\"] = file_name.split(\"_\")[1].upper()\n temp_df[\"variety\"] = file_name.split(\"_\")[1][:-4].upper()\n temp_df = temp_df[\n [\n \"long_open_interest\",\n \"long_open_interest_chg\",\n \"long_party_name\",\n \"rank\",\n \"short_open_interest\",\n \"short_open_interest_chg\",\n \"short_party_name\",\n \"vol\",\n \"vol_chg\",\n \"vol_party_name\",\n \"symbol\",\n \"variety\",\n ]\n ]\n temp_df = temp_df.map(lambda x: str(x).replace(\",\", \"\"))\n temp_df[\"long_open_interest\"] = pd.to_numeric(\n temp_df[\"long_open_interest\"], errors=\"coerce\"\n )\n temp_df[\"long_open_interest_chg\"] = pd.to_numeric(\n temp_df[\"long_open_interest_chg\"], errors=\"coerce\"\n )\n temp_df[\"rank\"] = pd.to_numeric(temp_df[\"rank\"], errors=\"coerce\")\n temp_df[\"short_open_interest\"] = pd.to_numeric(\n temp_df[\"short_open_interest\"], errors=\"coerce\"\n )\n temp_df[\"short_open_interest_chg\"] = pd.to_numeric(\n temp_df[\"short_open_interest_chg\"], errors=\"coerce\"\n )\n temp_df[\"vol\"] = pd.to_numeric(temp_df[\"vol\"], errors=\"coerce\")\n temp_df[\"vol_chg\"] = pd.to_numeric(temp_df[\"vol_chg\"], errors=\"coerce\")\n big_dict[file_name.split(\"_\")[1]] = temp_df\n except UnicodeDecodeError:\n try:\n data = pd.read_table(\n z.open(i),\n header=None,\n sep=\"\\\\s+\",\n encoding=\"gb2312\",\n skiprows=3,\n )\n except: # noqa: E722\n data = pd.read_table(\n z.open(i),\n header=None,\n sep=\"\\\\s+\",\n encoding=\"gb2312\",\n skiprows=4,\n )\n start_list = data[data.iloc[:, 0].str.find(\"名次\") == 0].index.tolist()\n end_list = data[data.iloc[:, 0].str.find(\"总计\") == 0].index.tolist()\n part_one = data[start_list[0] : end_list[0]].iloc[1:, :]\n part_two = data[start_list[1] : end_list[1]].iloc[1:, :]\n part_three = data[start_list[2] : end_list[2]].iloc[1:, :]\n temp_df = pd.concat(\n objs=[\n part_one.reset_index(drop=True),\n part_two.reset_index(drop=True),\n part_three.reset_index(drop=True),\n ],\n axis=1,\n ignore_index=True,\n )\n temp_df.columns = [\n \"名次\",\n \"会员简称\",\n \"成交量\",\n \"增减\",\n \"名次\",\n \"会员简称\",\n \"持买单量\",\n \"增减\",\n \"名次\",\n \"会员简称\",\n \"持卖单量\",\n \"增减\",\n ]\n temp_df[\"rank\"] = range(1, len(temp_df) + 1)\n del temp_df[\"名次\"]\n temp_df.columns = [\n \"vol_party_name\",\n \"vol\",\n \"vol_chg\",\n \"long_party_name\",\n \"long_open_interest\",\n \"long_open_interest_chg\",\n \"short_party_name\",\n \"short_open_interest\",\n \"short_open_interest_chg\",\n \"rank\",\n ]\n temp_df[\"symbol\"] = file_name.split(\"_\")[1].upper()\n temp_df[\"variety\"] = file_name.split(\"_\")[1][:-4].upper()\n temp_df = temp_df[\n [\n \"long_open_interest\",\n \"long_open_interest_chg\",\n \"long_party_name\",\n \"rank\",\n \"short_open_interest\",\n \"short_open_interest_chg\",\n \"short_party_name\",\n \"vol\",\n \"vol_chg\",\n \"vol_party_name\",\n \"symbol\",\n \"variety\",\n ]\n ]\n temp_df = temp_df.map(lambda x: str(x).replace(\",\", \"\"))\n temp_df[\"long_open_interest\"] = pd.to_numeric(\n temp_df[\"long_open_interest\"], errors=\"coerce\"\n )\n temp_df[\"long_open_interest_chg\"] = pd.to_numeric(\n temp_df[\"long_open_interest_chg\"], errors=\"coerce\"\n )\n temp_df[\"rank\"] = pd.to_numeric(temp_df[\"rank\"], errors=\"coerce\")\n temp_df[\"short_open_interest\"] = pd.to_numeric(\n temp_df[\"short_open_interest\"], errors=\"coerce\"\n )\n temp_df[\"short_open_interest_chg\"] = pd.to_numeric(\n temp_df[\"short_open_interest_chg\"], errors=\"coerce\"\n )\n temp_df[\"vol\"] = pd.to_numeric(temp_df[\"vol\"], errors=\"coerce\")\n temp_df[\"vol_chg\"] = pd.to_numeric(temp_df[\"vol_chg\"], errors=\"coerce\")\n big_dict[file_name.split(\"_\")[1]] = temp_df\n dict_keys = list(big_dict.keys())\n for item in dict_keys:\n result = re.sub(r\"\\d\", \"\", item)\n if result.upper() not in vars_list:\n del big_dict[item]\n filtered_dict = {k: v for k, v in big_dict.items() if len(v) > 1}\n return filtered_dict\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_dce_position_rank_other", "tool_from": "akshare", "description": "大连商品交易所-每日持仓排名-具体合约-补充\nhttp://www.dce.com.cn/dalianshangpin/xqsj/tjsj26/rtj/rcjccpm/index.html\n:param date: 交易日\n:type date: str\n:return: 合约具体名称列表\n:rtype: list", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "交易日"}}, "required": []}, "python_code": "def futures_dce_position_rank_other(date: str = \"20160104\"):\n \"\"\"\n 大连商品交易所-每日持仓排名-具体合约-补充\n http://www.dce.com.cn/dalianshangpin/xqsj/tjsj26/rtj/rcjccpm/index.html\n :param date: 交易日\n :type date: str\n :return: 合约具体名称列表\n :rtype: list\n \"\"\"\n date = cons.convert_date(date) if date is not None else datetime.date.today()\n if date.strftime(\"%Y%m%d\") not in calendar:\n warnings.warn(\"%s非交易日\" % date.strftime(\"%Y%m%d\"))\n return {}\n url = \"http://www.dce.com.cn/publicweb/quotesdata/memberDealPosiQuotes.html\"\n payload = {\n \"memberDealPosiQuotes.variety\": \"c\",\n \"memberDealPosiQuotes.trade_type\": \"0\",\n \"year\": date.year,\n \"month\": date.month - 1,\n \"day\": date.day,\n \"contract.contract_id\": \"all\",\n \"contract.variety_id\": \"c\",\n \"contract\": \"\",\n }\n r = requests.post(url, data=payload)\n soup = BeautifulSoup(r.text, features=\"lxml\")\n symbol_list = [\n item[\"onclick\"].strip(\"javascript:setVariety(\").strip(\"');\")\n for item in soup.find_all(attrs={\"class\": \"selBox\"})[-3].find_all(\"input\")\n ]\n big_df = dict()\n for symbol in symbol_list:\n payload = {\n \"memberDealPosiQuotes.variety\": symbol,\n \"memberDealPosiQuotes.trade_type\": \"0\",\n \"year\": date.year,\n \"month\": date.month - 1,\n \"day\": date.day,\n \"contract.contract_id\": \"all\",\n \"contract.variety_id\": symbol,\n \"contract\": \"\",\n }\n r = requests.post(url, data=payload)\n soup = BeautifulSoup(r.text, features=\"lxml\")\n contract_list = [\n item[\"onclick\"].strip(\"javascript:setContract_id('\").strip(\"');\")\n for item in soup.find_all(attrs={\"name\": \"contract\"})\n ]\n if contract_list:\n if len(contract_list[0]) == 4:\n contract_list = [symbol + item for item in contract_list]\n for contract in contract_list:\n payload = {\n \"memberDealPosiQuotes.variety\": symbol,\n \"memberDealPosiQuotes.trade_type\": \"0\",\n \"year\": date.year,\n \"month\": date.month - 1,\n \"day\": date.day,\n \"contract.contract_id\": contract,\n \"contract.variety_id\": symbol,\n \"contract\": \"\",\n }\n r = requests.post(url, data=payload)\n temp_df = pd.read_html(StringIO(r.text))[1].iloc[:-1, :]\n temp_df.columns = [\n \"rank\",\n \"vol_party_name\",\n \"vol\",\n \"vol_chg\",\n \"_\",\n \"long_party_name\",\n \"long_open_interest\",\n \"long_open_interest_chg\",\n \"_\",\n \"short_party_name\",\n \"short_open_interest\",\n \"short_open_interest_chg\",\n ]\n temp_df[\"variety\"] = symbol.upper()\n temp_df[\"symbol\"] = contract\n temp_df = temp_df[\n [\n \"long_open_interest\",\n \"long_open_interest_chg\",\n \"long_party_name\",\n \"rank\",\n \"short_open_interest\",\n \"short_open_interest_chg\",\n \"short_party_name\",\n \"vol\",\n \"vol_chg\",\n \"vol_party_name\",\n \"symbol\",\n \"variety\",\n ]\n ]\n big_df[contract] = temp_df\n return big_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_delivery_czce", "tool_from": "akshare", "description": "郑州商品交易所-月度交割查询\nhttp://www.czce.com.cn/cn/jysj/ydjgcx/H770316index_1.htm\n:param date: 年月日\n:type date: str\n:return: 郑州商品交易所-月度交割查询\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "年月日"}}, "required": []}, "python_code": "def futures_delivery_czce(date: str = \"20210112\") -> pd.DataFrame:\n \"\"\"\n 郑州商品交易所-月度交割查询\n http://www.czce.com.cn/cn/jysj/ydjgcx/H770316index_1.htm\n :param date: 年月日\n :type date: str\n :return: 郑州商品交易所-月度交割查询\n :rtype: pandas.DataFrame\n \"\"\"\n url = f\"http://www.czce.com.cn/cn/DFSStaticFiles/Future/{date[:4]}/{date}/FutureDataSettlematched.xls\"\n r = requests.get(url)\n r.encoding = \"utf-8\"\n temp_df = pd.read_excel(BytesIO(r.content), skiprows=1)\n temp_df.columns = [\n \"品种\",\n \"交割数量\",\n \"交割额\",\n ]\n temp_df[\"交割数量\"] = temp_df[\"交割数量\"].astype(str).str.replace(\",\", \"\")\n temp_df[\"交割额\"] = temp_df[\"交割额\"].astype(str).str.replace(\",\", \"\")\n temp_df[\"交割数量\"] = pd.to_numeric(temp_df[\"交割数量\"], errors=\"coerce\")\n temp_df[\"交割额\"] = pd.to_numeric(temp_df[\"交割额\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_delivery_dce", "tool_from": "akshare", "description": "大连商品交易所-交割统计\nhttp://www.dce.com.cn/dalianshangpin/xqsj/tjsj26/jgtj/jgsj/index.html\n:param date: 交割日期\n:type date: str\n:return: 大连商品交易所-交割统计\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "交割日期"}}, "required": []}, "python_code": "def futures_delivery_dce(date: str = \"202312\") -> pd.DataFrame:\n \"\"\"\n 大连商品交易所-交割统计\n http://www.dce.com.cn/dalianshangpin/xqsj/tjsj26/jgtj/jgsj/index.html\n :param date: 交割日期\n :type date: str\n :return: 大连商品交易所-交割统计\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"http://www.dce.com.cn/publicweb/quotesdata/delivery.html\"\n params = {\n \"deliveryQuotes.variety\": \"all\",\n \"year\": \"\",\n \"month\": \"\",\n \"deliveryQuotes.begin_month\": date,\n \"deliveryQuotes.end_month\": str(int(date) + 1),\n }\n headers = {\n \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\",\n \"Accept-Encoding\": \"gzip, deflate\",\n \"Accept-Language\": \"zh-CN,zh;q=0.9,en;q=0.8\",\n \"Cache-Control\": \"no-cache\",\n \"Connection\": \"keep-alive\",\n \"Pragma\": \"no-cache\",\n \"Upgrade-Insecure-Requests\": \"1\",\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36\",\n }\n r = requests.post(url, params=params, headers=headers)\n temp_df = pd.read_html(StringIO(r.text))[0]\n temp_df[\"交割日期\"] = (\n temp_df[\"交割日期\"].astype(str).str.split(\".\", expand=True).iloc[:, 0]\n )\n temp_df = temp_df[~temp_df[\"品种\"].str.contains(\"小计|总计\")]\n temp_df.reset_index(inplace=True, drop=True)\n temp_df[\"交割日期\"] = pd.to_datetime(temp_df[\"交割日期\"], errors=\"coerce\").dt.date\n temp_df[\"交割量\"] = pd.to_numeric(temp_df[\"交割量\"], errors=\"coerce\")\n temp_df[\"交割金额\"] = pd.to_numeric(temp_df[\"交割金额\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_delivery_match_czce", "tool_from": "akshare", "description": "郑州商品交易所-交割配对\nhttp://www.czce.com.cn/cn/jysj/jgpd/H770308index_1.htm\n:param date: 年月日\n:type date: str\n:return: 郑州商品交易所-交割配对\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "年月日"}}, "required": []}, "python_code": "def futures_delivery_match_czce(date: str = \"20210106\") -> pd.DataFrame:\n \"\"\"\n 郑州商品交易所-交割配对\n http://www.czce.com.cn/cn/jysj/jgpd/H770308index_1.htm\n :param date: 年月日\n :type date: str\n :return: 郑州商品交易所-交割配对\n :rtype: pandas.DataFrame\n \"\"\"\n url = f\"http://www.czce.com.cn/cn/DFSStaticFiles/Future/{date[:4]}/{date}/FutureDataDelsettle.xls\"\n r = requests.get(url)\n r.encoding = \"utf-8\"\n temp_df = pd.read_excel(BytesIO(r.content), skiprows=0)\n index_flag = temp_df[temp_df.iloc[:, 0].str.contains(\"配对日期\")].index.values\n big_df = pd.DataFrame()\n for i, item in enumerate(index_flag):\n try:\n temp_inner_df = temp_df[index_flag[i] + 1 : index_flag[i + 1]]\n except: # noqa: E722\n temp_inner_df = temp_df[index_flag[i] + 1 :]\n temp_inner_df.columns = temp_inner_df.iloc[0, :]\n temp_inner_df = temp_inner_df.iloc[1:-1, :]\n temp_inner_df.reset_index(drop=True, inplace=True)\n date_contract_str = (\n temp_df[temp_df.iloc[:, 0].str.contains(\"配对日期\")].iloc[:, 0].values[i]\n )\n inner_date = date_contract_str.split(\":\")[1].split(\" \")[0]\n symbol = date_contract_str.split(\":\")[-1]\n temp_inner_df[\"配对日期\"] = inner_date\n temp_inner_df[\"合约代码\"] = symbol\n big_df = pd.concat([big_df, temp_inner_df], ignore_index=True)\n\n big_df.columns = [\n \"卖方会员\",\n \"卖方会员-会员简称\",\n \"买方会员\",\n \"买方会员-会员简称\",\n \"交割量\",\n \"配对日期\",\n \"合约代码\",\n ]\n big_df[\"交割量\"] = big_df[\"交割量\"].str.replace(\",\", \"\")\n big_df[\"交割量\"] = pd.to_numeric(big_df[\"交割量\"])\n return big_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_delivery_match_dce", "tool_from": "akshare", "description": "大连商品交易所-交割配对表\nhttp://www.dce.com.cn/dalianshangpin/xqsj/tjsj26/jgtj/jgsj/index.html\n:param symbol: 交割品种\n:type symbol: str\n:return: 大连商品交易所-交割配对表\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "交割品种"}}, "required": []}, "python_code": "def futures_delivery_match_dce(symbol: str = \"a\") -> pd.DataFrame:\n \"\"\"\n 大连商品交易所-交割配对表\n http://www.dce.com.cn/dalianshangpin/xqsj/tjsj26/jgtj/jgsj/index.html\n :param symbol: 交割品种\n :type symbol: str\n :return: 大连商品交易所-交割配对表\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"http://www.dce.com.cn/publicweb/quotesdata/deliveryMatch.html\"\n params = {\n \"deliveryMatchQuotes.variety\": symbol,\n \"contract.contract_id\": \"all\",\n \"contract.variety_id\": symbol,\n }\n r = requests.post(url, params=params)\n temp_df = pd.read_html(StringIO(r.text))[0]\n temp_df[\"配对日期\"] = (\n temp_df[\"配对日期\"].astype(str).str.split(\".\", expand=True).iloc[:, 0]\n )\n temp_df = temp_df.iloc[:-1, :]\n temp_df[\"配对日期\"] = pd.to_datetime(temp_df[\"配对日期\"], errors=\"coerce\").dt.date\n temp_df[\"配对手数\"] = pd.to_numeric(temp_df[\"配对手数\"], errors=\"coerce\")\n temp_df[\"交割结算价\"] = pd.to_numeric(temp_df[\"交割结算价\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_delivery_shfe", "tool_from": "akshare", "description": "上海期货交易所-交割情况表\nhttps://tsite.shfe.com.cn/statements/dataview.html?paramid=kx\n注意: 日期 -> 月度统计 -> 下拉到交割情况表\n:param date: 年月日\n:type date: str\n:return: 上海期货交易所-交割情况表\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "年月日"}}, "required": []}, "python_code": "def futures_delivery_shfe(date: str = \"202312\") -> pd.DataFrame:\n \"\"\"\n 上海期货交易所-交割情况表\n https://tsite.shfe.com.cn/statements/dataview.html?paramid=kx\n 注意: 日期 -> 月度统计 -> 下拉到交割情况表\n :param date: 年月日\n :type date: str\n :return: 上海期货交易所-交割情况表\n :rtype: pandas.DataFrame\n \"\"\"\n url = f\"https://tsite.shfe.com.cn/data/dailydata/{date}monthvarietystatistics.dat\"\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/100.0.4896.127 Safari/537.36\",\n }\n r = requests.get(url, headers=headers)\n r.encoding = \"utf-8\"\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"o_curdelivery\"])\n temp_df.columns = [\n \"品种\",\n \"品种代码\",\n \"_\",\n \"交割量-本月\",\n \"交割量-比重\",\n \"交割量-本年累计\",\n \"交割量-累计同比\",\n ]\n temp_df = temp_df[\n [\n \"品种\",\n \"交割量-本月\",\n \"交割量-比重\",\n \"交割量-本年累计\",\n \"交割量-累计同比\",\n ]\n ]\n temp_df[\"交割量-本月\"] = pd.to_numeric(temp_df[\"交割量-本月\"], errors=\"coerce\")\n temp_df[\"交割量-比重\"] = pd.to_numeric(temp_df[\"交割量-比重\"], errors=\"coerce\")\n temp_df[\"交割量-本年累计\"] = pd.to_numeric(\n temp_df[\"交割量-本年累计\"], errors=\"coerce\"\n )\n temp_df[\"交割量-累计同比\"] = pd.to_numeric(\n temp_df[\"交割量-累计同比\"], errors=\"coerce\"\n )\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_foreign_commodity_realtime", "tool_from": "akshare", "description": "新浪-外盘期货-行情数据\nhttps://finance.sina.com.cn/money/future/hf.html\n:param symbol: 通过调用 ak.futures_hq_subscribe_exchange_symbol() 函数来获取\n:type symbol: list or str\n:return: 行情数据\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "通过调用 ak.futures_hq_subscribe_exchange_symbol() 函数来获取"}}, "required": []}, "python_code": "def futures_foreign_commodity_realtime(symbol: Union[str, List[str]]) -> pd.DataFrame:\n \"\"\"\n 新浪-外盘期货-行情数据\n https://finance.sina.com.cn/money/future/hf.html\n :param symbol: 通过调用 ak.futures_hq_subscribe_exchange_symbol() 函数来获取\n :type symbol: list or str\n :return: 行情数据\n :rtype: pandas.DataFrame\n \"\"\"\n if isinstance(symbol, list):\n payload = \"?list=\" + \",\".join([\"hf_\" + item for item in symbol])\n else:\n symbol = symbol.split(\",\")\n payload = \"?list=\" + \",\".join([\"hf_\" + item for item in symbol])\n url = \"https://hq.sinajs.cn/\" + payload\n headers = {\n \"Accept\": \"*/*\",\n \"Accept-Encoding\": \"gzip, deflate, br\",\n \"Accept-Language\": \"zh-CN,zh;q=0.9,en;q=0.8\",\n \"Cache-Control\": \"no-cache\",\n \"Connection\": \"keep-alive\",\n \"Host\": \"hq.sinajs.cn\",\n \"Pragma\": \"no-cache\",\n \"Referer\": \"https://finance.sina.com.cn/\",\n \"sec-ch-ua\": '\" Not;A Brand\";v=\"99\", \"Google Chrome\";v=\"97\", \"Chromium\";v=\"97\"',\n \"sec-ch-ua-mobile\": \"?0\",\n \"sec-ch-ua-platform\": '\"Windows\"',\n \"Sec-Fetch-Dest\": \"script\",\n \"Sec-Fetch-Mode\": \"no-cors\",\n \"Sec-Fetch-Site\": \"cross-site\",\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/97.0.4692.71 Safari/537.36\",\n }\n r = requests.get(url, headers=headers)\n data_text = r.text\n data_df = pd.DataFrame(\n [\n item.strip().split(\"=\")[1].split(\",\")\n for item in data_text.split(\";\")\n if item.strip() != \"\"\n ]\n )\n data_df.iloc[:, 0] = data_df.iloc[:, 0].str.replace('\"', \"\")\n data_df.iloc[:, -1] = data_df.iloc[:, -1].str.replace('\"', \"\")\n\n # 处理伦敦金 XAU 的情况\n if len(data_df.columns) == 14:\n data_df[\"temp\"] = None\n\n data_df.columns = [\n \"current_price\",\n \"-\",\n \"bid\",\n \"ask\",\n \"high\",\n \"low\",\n \"time\",\n \"last_settle_price\",\n \"open\",\n \"hold\",\n \"-\",\n \"-\",\n \"date\",\n \"symbol\",\n \"current_price_rmb\",\n ]\n temp_symbol_code_df = futures_hq_subscribe_exchange_symbol()\n temp_symbol_code_dict = dict(\n zip(temp_symbol_code_df[\"code\"], temp_symbol_code_df[\"symbol\"])\n )\n data_df[\"symbol\"] = [temp_symbol_code_dict[subscribe] for subscribe in symbol]\n data_df = data_df[\n [\n \"symbol\",\n \"current_price\",\n \"current_price_rmb\",\n \"bid\",\n \"ask\",\n \"high\",\n \"low\",\n \"time\",\n \"last_settle_price\",\n \"open\",\n \"hold\",\n \"date\",\n ]\n ]\n data_df.columns = [\n \"名称\",\n \"最新价\",\n \"人民币报价\",\n \"买价\",\n \"卖价\",\n \"最高价\",\n \"最低价\",\n \"行情时间\",\n \"昨日结算价\",\n \"开盘价\",\n \"持仓量\",\n \"日期\",\n ]\n data_df.dropna(how=\"all\", inplace=True)\n data_df[\"最新价\"] = pd.to_numeric(data_df[\"最新价\"], errors=\"coerce\")\n data_df[\"人民币报价\"] = pd.to_numeric(data_df[\"人民币报价\"], errors=\"coerce\")\n data_df[\"买价\"] = pd.to_numeric(data_df[\"买价\"], errors=\"coerce\")\n data_df[\"卖价\"] = pd.to_numeric(data_df[\"卖价\"], errors=\"coerce\")\n data_df[\"最高价\"] = pd.to_numeric(data_df[\"最高价\"], errors=\"coerce\")\n data_df[\"最低价\"] = pd.to_numeric(data_df[\"最低价\"], errors=\"coerce\")\n data_df[\"昨日结算价\"] = pd.to_numeric(data_df[\"昨日结算价\"], errors=\"coerce\")\n data_df[\"开盘价\"] = pd.to_numeric(data_df[\"开盘价\"], errors=\"coerce\")\n data_df[\"持仓量\"] = pd.to_numeric(data_df[\"持仓量\"], errors=\"coerce\")\n data_df[\"涨跌额\"] = data_df[\"最新价\"] - data_df[\"昨日结算价\"]\n data_df[\"涨跌幅\"] = (\n (data_df[\"最新价\"] - data_df[\"昨日结算价\"]) / data_df[\"昨日结算价\"] * 100\n )\n data_df = data_df[\n [\n \"名称\",\n \"最新价\",\n \"人民币报价\",\n \"涨跌额\",\n \"涨跌幅\",\n \"开盘价\",\n \"最高价\",\n \"最低价\",\n \"昨日结算价\",\n \"持仓量\",\n \"买价\",\n \"卖价\",\n \"行情时间\",\n \"日期\",\n ]\n ]\n\n # 获取转换比例数据\n url = \"https://finance.sina.com.cn/money/future/hf.html\"\n r = requests.get(url)\n r.encoding = \"utf-8\"\n soup = BeautifulSoup(r.text, features=\"lxml\")\n data_text = soup.find_all(name=\"script\", attrs={\"type\": \"text/javascript\"})[\n -2\n ].string.strip()\n raw_text = data_text[data_text.find(\"oHF_1 = \") : data_text.find(\"oHF_2\")]\n need_text = raw_text[raw_text.find(\"{\") : raw_text.rfind(\"}\") + 1]\n data_json = demjson.decode(need_text)\n price_mul = pd.DataFrame(\n [\n [item[0] for item in data_json.values()],\n [item[1][0] for item in data_json.values()],\n ]\n ).T\n price_mul.columns = [\"symbol\", \"price\"]\n price_mul = price_mul[price_mul[\"symbol\"].isin(data_df[\"名称\"])]\n price_mul.reset_index(inplace=True, drop=True)\n price_mul[\"price\"] = pd.to_numeric(price_mul[\"price\"], errors=\"coerce\")\n\n # 获取汇率数据\n url = \"https://hq.sinajs.cn/?list=USDCNY\"\n r = requests.get(url, headers=headers)\n data_text = r.text\n usd_rmb = float(\n data_text[data_text.find('\"') + 1 : data_text.find(\",美元人民币\")].split(\",\")[\n -1\n ]\n )\n\n # 计算人民币报价\n data_df[\"最新价\"] = pd.to_numeric(data_df[\"最新价\"], errors=\"coerce\")\n data_df[\"人民币报价\"] = data_df[\"最新价\"] * price_mul[\"price\"] * float(usd_rmb)\n data_df.dropna(thresh=4, inplace=True)\n return data_df\n", "financial_tags": {"timeliness": "realtime", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_foreign_detail", "tool_from": "akshare", "description": "foreign futures contract detail data\n:param symbol: futures symbol, you can get it from hf_subscribe_exchange_symbol function\n:type symbol: str\n:return: contract detail\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "futures symbol, you can get it from hf_subscribe_exchange_symbol function"}}, "required": []}, "python_code": "def futures_foreign_detail(symbol: str = \"ZSD\") -> pd.DataFrame:\n \"\"\"\n foreign futures contract detail data\n :param symbol: futures symbol, you can get it from hf_subscribe_exchange_symbol function\n :type symbol: str\n :return: contract detail\n :rtype: pandas.DataFrame\n \"\"\"\n url = f\"https://finance.sina.com.cn/futures/quotes/{symbol}.shtml\"\n r = requests.get(url)\n r.encoding = \"gbk\"\n data_text = r.text\n data_df = pd.read_html(StringIO(data_text))[6]\n return data_df\n", "financial_tags": {"timeliness": "realtime", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_foreign_hist", "tool_from": "akshare", "description": "外盘期货-历史行情数据-日频率\nhttps://finance.sina.com.cn/money/future/hf.html\n:param symbol: 外盘期货代码, 可以通过 ak.futures_foreign_commodity_subscribe_exchange_symbol() 来获取所有品种代码\n:type symbol: str\n:return: 历史行情数据-日频率\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "外盘期货代码, 可以通过 ak.futures_foreign_commodity_subscribe_exchange_symbol() 来获取所有品种代码"}}, "required": []}, "python_code": "def futures_foreign_hist(symbol: str = \"ZSD\") -> pd.DataFrame:\n \"\"\"\n 外盘期货-历史行情数据-日频率\n https://finance.sina.com.cn/money/future/hf.html\n :param symbol: 外盘期货代码, 可以通过 ak.futures_foreign_commodity_subscribe_exchange_symbol() 来获取所有品种代码\n :type symbol: str\n :return: 历史行情数据-日频率\n :rtype: pandas.DataFrame\n \"\"\"\n today = f\"{datetime.today().year}_{datetime.today().month}_{datetime.today().day}\"\n url = (\n f\"https://stock2.finance.sina.com.cn/futures/api/jsonp.php/var%20_S{today}=/\"\n f\"GlobalFuturesService.getGlobalFuturesDailyKLine\"\n )\n params = {\n \"symbol\": symbol,\n \"_\": today,\n \"source\": \"web\",\n }\n r = requests.get(url, params=params)\n data_text = r.text\n data_df = pd.read_json(StringIO(data_text[data_text.find(\"[\") : -2]))\n return data_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_gfex_position_rank", "tool_from": "akshare", "description": "广州期货交易所-日成交持仓排名\nhttp://www.gfex.com.cn/gfex/rcjccpm/hqsj_tjsj.shtml\n:param date: 开始日期; 广州期货交易所的日成交持仓排名从 20231110 开始\n:type date: str\n:param vars_list: 商品代码列表\n:type vars_list: list\n:return: 日成交持仓排名\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "开始日期; 广州期货交易所的日成交持仓排名从 20231110 开始"}, "vars_list": {"type": "string", "description": "商品代码列表"}}, "required": []}, "python_code": "def futures_gfex_position_rank(date: str = \"20231113\", vars_list: list = None):\n \"\"\"\n 广州期货交易所-日成交持仓排名\n http://www.gfex.com.cn/gfex/rcjccpm/hqsj_tjsj.shtml\n :param date: 开始日期; 广州期货交易所的日成交持仓排名从 20231110 开始\n :type date: str\n :param vars_list: 商品代码列表\n :type vars_list: list\n :return: 日成交持仓排名\n :rtype: pandas.DataFrame\n \"\"\"\n date = cons.convert_date(date) if date is not None else datetime.date.today()\n if date.strftime(\"%Y%m%d\") not in calendar:\n warnings.warn(\"%s非交易日\" % date.strftime(\"%Y%m%d\"))\n return {}\n date = date.strftime(\"%Y%m%d\")\n if vars_list is None:\n vars_list = __futures_gfex_vars_list()\n else:\n vars_list = [item.lower() for item in vars_list]\n big_dict = {}\n for item in vars_list:\n try:\n futures_contract_list = __futures_gfex_contract_list(\n symbol=item.lower(), date=date\n )\n except: # noqa: E722\n return big_dict\n for name in futures_contract_list:\n try:\n temp_df = __futures_gfex_contract_data(\n symbol=item.lower(), contract_id=name, date=date\n )\n big_dict[name] = temp_df\n except: # noqa: E722\n return big_dict\n return big_dict\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_gfex_warehouse_receipt", "tool_from": "akshare", "description": "广州期货交易所-行情数据-仓单日报\nhttp://www.gfex.com.cn/gfex/cdrb/hqsj_tjsj.shtml\n:param date: 交易日, e.g., \"20240122\"\n:type date: str\n:return: 指定日期的仓单日报数据\n:rtype: dict", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "交易日, e.g., \"20240122\""}}, "required": []}, "python_code": "def futures_gfex_warehouse_receipt(date: str = \"20240122\") -> dict:\n \"\"\"\n 广州期货交易所-行情数据-仓单日报\n http://www.gfex.com.cn/gfex/cdrb/hqsj_tjsj.shtml\n :param date: 交易日, e.g., \"20240122\"\n :type date: str\n :return: 指定日期的仓单日报数据\n :rtype: dict\n \"\"\"\n url = \"http://www.gfex.com.cn/u/interfacesWebTdWbillWeeklyQuotes/loadList\"\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/83.0.4103.116 Safari/537.36\"\n }\n payload = {\"gen_date\": date}\n r = requests.post(url=url, data=payload, headers=headers)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"data\"])\n symbol_list = list(\n set([item.upper() for item in temp_df[\"varietyOrder\"].tolist() if item != \"\"])\n )\n temp_df.rename(\n columns={\n \"varietyOrder\": \"symbol\",\n \"variety\": \"品种\",\n \"whAbbr\": \"仓库/分库\",\n \"lastWbillQty\": \"昨日仓单量\",\n \"wbillQty\": \"今日仓单量\",\n \"regWbillQty\": \"增减\",\n },\n inplace=True,\n )\n temp_df = temp_df[\n [\n \"symbol\",\n \"whType\",\n \"品种\",\n \"仓库/分库\",\n \"昨日仓单量\",\n \"今日仓单量\",\n \"增减\",\n ]\n ]\n temp_df[\"whType\"] = pd.to_numeric(temp_df[\"whType\"], errors=\"coerce\")\n temp_df.dropna(\n subset=[\"whType\"], how=\"any\", axis=0, ignore_index=True, inplace=True\n )\n big_dict = dict()\n for symbol in symbol_list:\n inner_temp_df = temp_df[temp_df[\"symbol\"] == symbol.lower()].copy()\n inner_temp_df = inner_temp_df[\n [\n \"品种\",\n \"仓库/分库\",\n \"昨日仓单量\",\n \"今日仓单量\",\n \"增减\",\n ]\n ]\n inner_temp_df[\"昨日仓单量\"] = pd.to_numeric(\n inner_temp_df[\"昨日仓单量\"], errors=\"coerce\"\n )\n inner_temp_df[\"今日仓单量\"] = pd.to_numeric(\n inner_temp_df[\"今日仓单量\"], errors=\"coerce\"\n )\n inner_temp_df[\"增减\"] = pd.to_numeric(inner_temp_df[\"增减\"], errors=\"coerce\")\n inner_temp_df.reset_index(inplace=True, drop=True)\n big_dict[symbol] = inner_temp_df\n return big_dict\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_global_hist_em", "tool_from": "akshare", "description": "东方财富网-行情中心-期货市场-国际期货-历史行情数据\nhttps://quote.eastmoney.com/globalfuture/HG25J.html\n:param symbol: 品种代码;可以通过 ak.futures_global_spot_em() 来获取所有可获取历史行情数据的品种代码\n:type symbol: str\n:return: 历史行情数据\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "品种代码;可以通过 ak.futures_global_spot_em() 来获取所有可获取历史行情数据的品种代码"}}, "required": []}, "python_code": "def futures_global_hist_em(symbol: str = \"HG00Y\") -> pd.DataFrame:\n \"\"\"\n 东方财富网-行情中心-期货市场-国际期货-历史行情数据\n https://quote.eastmoney.com/globalfuture/HG25J.html\n :param symbol: 品种代码;可以通过 ak.futures_global_spot_em() 来获取所有可获取历史行情数据的品种代码\n :type symbol: str\n :return: 历史行情数据\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://push2his.eastmoney.com/api/qt/stock/kline/get\"\n market_code = __futures_global_hist_market_code(symbol)\n params = {\n \"secid\": f\"{market_code}.{symbol}\",\n \"klt\": \"101\",\n \"fqt\": \"1\",\n \"lmt\": \"6600\",\n \"end\": \"20500000\",\n \"iscca\": \"1\",\n \"fields1\": \"f1,f2,f3,f4,f5,f6,f7,f8\",\n \"fields2\": \"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64\",\n \"ut\": \"f057cbcbce2a86e2866ab8877db1d059\",\n \"forcect\": \"1\",\n }\n r = requests.get(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame([item.split(\",\") for item in data_json[\"data\"][\"klines\"]])\n temp_df[\"code\"] = data_json[\"data\"][\"code\"]\n temp_df[\"name\"] = data_json[\"data\"][\"name\"]\n temp_df.columns = [\n \"日期\",\n \"开盘\",\n \"最新价\",\n \"最高\",\n \"最低\",\n \"总量\",\n \"-\",\n \"-\",\n \"涨幅\",\n \"-\",\n \"-\",\n \"-\",\n \"持仓\",\n \"日增\",\n \"代码\",\n \"名称\",\n ]\n temp_df = temp_df[\n [\n \"日期\",\n \"代码\",\n \"名称\",\n \"开盘\",\n \"最新价\",\n \"最高\",\n \"最低\",\n \"总量\",\n \"涨幅\",\n \"持仓\",\n \"日增\",\n ]\n ]\n temp_df[\"日期\"] = pd.to_datetime(temp_df[\"日期\"], errors=\"coerce\").dt.date\n temp_df[\"开盘\"] = pd.to_numeric(temp_df[\"开盘\"], errors=\"coerce\")\n temp_df[\"最新价\"] = pd.to_numeric(temp_df[\"最新价\"], errors=\"coerce\")\n temp_df[\"最高\"] = pd.to_numeric(temp_df[\"最高\"], errors=\"coerce\")\n temp_df[\"最低\"] = pd.to_numeric(temp_df[\"最低\"], errors=\"coerce\")\n temp_df[\"总量\"] = pd.to_numeric(temp_df[\"总量\"], errors=\"coerce\")\n temp_df[\"涨幅\"] = pd.to_numeric(temp_df[\"涨幅\"], errors=\"coerce\")\n temp_df[\"日增\"] = pd.to_numeric(temp_df[\"日增\"], errors=\"coerce\")\n # 日增修复为有符号32位整数值\n unsigned_max, signed_max = (2 ** 32) - 1, (2 ** 31) - 1\n mask = temp_df[\"日增\"] > signed_max\n temp_df.loc[mask, \"日增\"] = temp_df.loc[mask, \"日增\"] - (unsigned_max + 1)\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_hist_em", "tool_from": "akshare", "description": "东方财富网-期货行情-行情数据\nhttps://qhweb.eastmoney.com/quote\n:param symbol: 期货代码\n:type symbol: str\n:param period: choice of {'daily', 'weekly', 'monthly'}\n:type period: str\n:param start_date: 开始日期\n:type start_date: str\n:param end_date: 结束日期\n:type end_date: str\n:return: 行情数据\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "期货代码"}, "period": {"type": "string", "description": "choice of {'daily', 'weekly', 'monthly'}"}, "start_date": {"type": "string", "description": "开始日期"}, "end_date": {"type": "string", "description": "结束日期"}}, "required": []}, "python_code": "def futures_hist_em(\n symbol: str = \"热卷主连\",\n period: str = \"daily\",\n start_date: str = \"19900101\",\n end_date: str = \"20500101\",\n) -> pd.DataFrame:\n \"\"\"\n 东方财富网-期货行情-行情数据\n https://qhweb.eastmoney.com/quote\n :param symbol: 期货代码\n :type symbol: str\n :param period: choice of {'daily', 'weekly', 'monthly'}\n :type period: str\n :param start_date: 开始日期\n :type start_date: str\n :param end_date: 结束日期\n :type end_date: str\n :return: 行情数据\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://push2his.eastmoney.com/api/qt/stock/kline/get\"\n period_dict = {\"daily\": \"101\", \"weekly\": \"102\", \"monthly\": \"103\"}\n c_contract_mkt, c_contract_to_e_contract, e_symbol_mkt, c_symbol_mkt = (\n __get_exchange_symbol_map()\n )\n try:\n sec_id = f\"{c_contract_mkt[symbol]}.{c_contract_to_e_contract[symbol]}\"\n except KeyError:\n symbol_char, numbers = __futures_hist_separate_char_and_numbers_em(symbol)\n if re.match(pattern=\"^[\\u4e00-\\u9fa5]+$\", string=symbol_char):\n sec_id = str(c_symbol_mkt[symbol_char]) + \".\" + symbol\n else:\n sec_id = str(e_symbol_mkt[symbol_char]) + \".\" + symbol\n params = {\n \"secid\": sec_id,\n \"klt\": period_dict[period],\n \"fqt\": \"1\",\n \"lmt\": \"10000\",\n \"end\": \"20500000\",\n \"iscca\": \"1\",\n \"fields1\": \"f1,f2,f3,f4,f5,f6,f7,f8\",\n \"fields2\": \"f51,f52,f53,f54,f55,f56,f57,f58,f59,f60,f61,f62,f63,f64\",\n \"ut\": \"7eea3edcaed734bea9cbfc24409ed989\",\n \"forcect\": \"1\",\n }\n r = requests.get(url, timeout=15, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame([item.split(\",\") for item in data_json[\"data\"][\"klines\"]])\n if temp_df.empty: return temp_df\n temp_df.columns = [\n \"时间\",\n \"开盘\",\n \"收盘\",\n \"最高\",\n \"最低\",\n \"成交量\",\n \"成交额\",\n \"-\",\n \"涨跌幅\",\n \"涨跌\",\n \"_\",\n \"_\",\n \"持仓量\",\n \"_\",\n ]\n temp_df = temp_df[\n [\n \"时间\",\n \"开盘\",\n \"最高\",\n \"最低\",\n \"收盘\",\n \"涨跌\",\n \"涨跌幅\",\n \"成交量\",\n \"成交额\",\n \"持仓量\",\n ]\n ]\n temp_df.index = pd.to_datetime(temp_df[\"时间\"])\n temp_df = temp_df[start_date:end_date]\n temp_df.reset_index(drop=True, inplace=True)\n temp_df[\"开盘\"] = pd.to_numeric(temp_df[\"开盘\"], errors=\"coerce\")\n temp_df[\"收盘\"] = pd.to_numeric(temp_df[\"收盘\"], errors=\"coerce\")\n temp_df[\"最高\"] = pd.to_numeric(temp_df[\"最高\"], errors=\"coerce\")\n temp_df[\"最低\"] = pd.to_numeric(temp_df[\"最低\"], errors=\"coerce\")\n temp_df[\"成交量\"] = pd.to_numeric(temp_df[\"成交量\"], errors=\"coerce\")\n temp_df[\"成交额\"] = pd.to_numeric(temp_df[\"成交额\"], errors=\"coerce\")\n temp_df[\"涨跌\"] = pd.to_numeric(temp_df[\"涨跌\"], errors=\"coerce\")\n temp_df[\"涨跌幅\"] = pd.to_numeric(temp_df[\"涨跌幅\"], errors=\"coerce\")\n temp_df[\"持仓量\"] = pd.to_numeric(temp_df[\"持仓量\"], errors=\"coerce\")\n temp_df[\"时间\"] = pd.to_datetime(temp_df[\"时间\"], errors=\"coerce\").dt.date\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_hog_core", "tool_from": "akshare", "description": "玄田数据-核心数据\nhttps://zhujia.zhuwang.com.cn\n:param symbol: choice of {\"外三元\", \"内三元\", \"土杂猪\"}\n:type symbol: str\n:return: 玄田数据-核心数据\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "choice of {\"外三元\", \"内三元\", \"土杂猪\"}"}}, "required": []}, "python_code": "def futures_hog_core(symbol: str = \"外三元\") -> pd.DataFrame:\n \"\"\"\n 玄田数据-核心数据\n https://zhujia.zhuwang.com.cn\n :param symbol: choice of {\"外三元\", \"内三元\", \"土杂猪\"}\n :type symbol: str\n :return: 玄田数据-核心数据\n :rtype: pandas.DataFrame\n \"\"\"\n if symbol == \"外三元\":\n url = \"https://xt.yangzhu.vip/data/getzhujiahitsdata\"\n params = {\"ptype\": \"1\", \"areano\": \"-1\", \"datetype\": \"0\"}\n r = requests.post(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"data\"])\n temp_df.columns = [\"value\", \"date\"]\n temp_df = temp_df[[\"date\", \"value\"]]\n temp_df[\"date\"] = pd.to_datetime(temp_df[\"date\"], errors=\"coerce\").dt.date\n temp_df[\"value\"] = pd.to_numeric(temp_df[\"value\"], errors=\"coerce\")\n return temp_df\n elif symbol == \"内三元\":\n url = \"https://xt.yangzhu.vip/data/getzhujiahitsdata\"\n params = {\"ptype\": \"2\", \"areano\": \"-1\", \"datetype\": \"0\"}\n r = requests.post(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"data\"])\n temp_df.columns = [\"value\", \"date\"]\n temp_df = temp_df[[\"date\", \"value\"]]\n temp_df[\"date\"] = pd.to_datetime(temp_df[\"date\"], errors=\"coerce\").dt.date\n temp_df[\"value\"] = pd.to_numeric(temp_df[\"value\"], errors=\"coerce\")\n return temp_df\n elif symbol == \"土杂猪\":\n url = \"https://xt.yangzhu.vip/data/getzhujiahitsdata\"\n params = {\"ptype\": \"3\", \"areano\": \"-1\", \"datetype\": \"0\"}\n r = requests.post(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"data\"])\n temp_df.columns = [\"value\", \"date\"]\n temp_df = temp_df[[\"date\", \"value\"]]\n temp_df[\"date\"] = pd.to_datetime(temp_df[\"date\"], errors=\"coerce\").dt.date\n temp_df[\"value\"] = pd.to_numeric(temp_df[\"value\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_hog_cost", "tool_from": "akshare", "description": "玄田数据-成本维度\nhttps://zhujia.zhuwang.com.cn\n:param symbol: choice of {\"玉米\", \"豆粕\", \"二元母猪价格\", \"仔猪价格\"}\n:type symbol: str\n:return: 玄田数据-成本维度\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "choice of {\"玉米\", \"豆粕\", \"二元母猪价格\", \"仔猪价格\"}"}}, "required": []}, "python_code": "def futures_hog_cost(symbol: str = \"玉米\") -> pd.DataFrame:\n \"\"\"\n 玄田数据-成本维度\n https://zhujia.zhuwang.com.cn\n :param symbol: choice of {\"玉米\", \"豆粕\", \"二元母猪价格\", \"仔猪价格\"}\n :type symbol: str\n :return: 玄田数据-成本维度\n :rtype: pandas.DataFrame\n \"\"\"\n if symbol == \"玉米\":\n url = \"https://xt.yangzhu.vip/data/getzhujiahitsdata\"\n params = {\"ptype\": \"4\", \"areano\": \"-1\", \"datetype\": \"0\"}\n r = requests.post(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"data\"])\n temp_df.columns = [\"value\", \"date\"]\n temp_df = temp_df[[\"date\", \"value\"]]\n temp_df[\"date\"] = pd.to_datetime(temp_df[\"date\"], errors=\"coerce\").dt.date\n temp_df[\"value\"] = pd.to_numeric(temp_df[\"value\"], errors=\"coerce\")\n return temp_df\n elif symbol == \"豆粕\":\n url = \"https://xt.yangzhu.vip/data/getzhujiahitsdata\"\n params = {\"ptype\": \"5\", \"areano\": \"-1\", \"datetype\": \"0\"}\n r = requests.post(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"data\"])\n temp_df.columns = [\"value\", \"date\"]\n temp_df = temp_df[[\"date\", \"value\"]]\n temp_df[\"date\"] = pd.to_datetime(temp_df[\"date\"], errors=\"coerce\").dt.date\n temp_df[\"value\"] = pd.to_numeric(temp_df[\"value\"], errors=\"coerce\")\n return temp_df\n elif symbol == \"二元母猪价格\":\n url = \"https://xt.yangzhu.vip/data/getmapdata\"\n params = {\n \"ptype\": \"1\",\n \"areano\": \"-1\",\n }\n r = requests.post(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"data\"])\n temp_df.columns = [\"date\", \"value\"]\n temp_df[\"date\"] = pd.to_datetime(temp_df[\"date\"], errors=\"coerce\").dt.date\n temp_df[\"value\"] = pd.to_numeric(temp_df[\"value\"], errors=\"coerce\")\n return temp_df\n elif symbol == \"仔猪价格\":\n url = \"https://xt.yangzhu.vip/data/getmapdata\"\n params = {\n \"ptype\": \"2\",\n \"areano\": \"-1\",\n }\n r = requests.post(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"data\"])\n temp_df.columns = [\"date\", \"value\"]\n temp_df[\"date\"] = pd.to_datetime(temp_df[\"date\"], errors=\"coerce\").dt.date\n temp_df[\"value\"] = pd.to_numeric(temp_df[\"value\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_hog_supply", "tool_from": "akshare", "description": "玄田数据-供应维度\nhttps://zhujia.zhuwang.com.cn\n:param symbol: choice of {\"猪肉批发价\", \"储备冻猪肉\", \"饲料原料数据\", \"白条肉\",\n\"生猪产能\", \"育肥猪\", \"肉类价格指数\", \"猪粮比价\"}\n:type symbol: str\n:return: 玄田数据-供应维度\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "choice of {\"猪肉批发价\", \"储备冻猪肉\", \"饲料原料数据\", \"白条肉\","}}, "required": []}, "python_code": "def futures_hog_supply(symbol: str = \"猪肉批发价\") -> pd.DataFrame:\n \"\"\"\n 玄田数据-供应维度\n https://zhujia.zhuwang.com.cn\n :param symbol: choice of {\"猪肉批发价\", \"储备冻猪肉\", \"饲料原料数据\", \"白条肉\",\n \"生猪产能\", \"育肥猪\", \"肉类价格指数\", \"猪粮比价\"}\n :type symbol: str\n :return: 玄田数据-供应维度\n :rtype: pandas.DataFrame\n \"\"\"\n if symbol == \"猪肉批发价\":\n url = \"https://xt.yangzhu.vip/data/getmapdata\"\n params = {\"ptype\": \"3\", \"areano\": \"-1\"}\n r = requests.post(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"data\"])\n temp_df.columns = [\"date\", \"item\", \"value\"]\n del temp_df[\"item\"]\n temp_df[\"date\"] = pd.to_datetime(temp_df[\"date\"], errors=\"coerce\").dt.date\n temp_df[\"value\"] = pd.to_numeric(temp_df[\"value\"], errors=\"coerce\")\n return temp_df\n elif symbol == \"储备冻猪肉\":\n url = \"https://xt.yangzhu.vip/data/getmapdata\"\n params = {\"ptype\": \"4\", \"areano\": \"-1\"}\n r = requests.post(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"data\"])\n temp_df.columns = [\"date\", \"value\"]\n temp_df[\"date\"] = pd.to_datetime(temp_df[\"date\"], errors=\"coerce\").dt.date\n temp_df[\"value\"] = pd.to_numeric(temp_df[\"value\"], errors=\"coerce\")\n return temp_df\n elif symbol == \"饲料原料数据\":\n url = \"https://xt.yangzhu.vip/data/getmapdata\"\n params = {\"ptype\": \"5\", \"areano\": \"-1\"}\n r = requests.post(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"data\"])\n temp_df.columns = [\n \"周期\",\n \"大豆进口金额\",\n \"大豆播种面积\",\n \"玉米进口金额\",\n \"玉米播种面积\",\n ]\n temp_df[\"周期\"] = temp_df[\"周期\"].astype(int).astype(str)\n temp_df[\"大豆进口金额\"] = pd.to_numeric(\n temp_df[\"大豆进口金额\"], errors=\"coerce\"\n )\n temp_df[\"大豆播种面积\"] = pd.to_numeric(\n temp_df[\"大豆播种面积\"], errors=\"coerce\"\n )\n temp_df[\"玉米进口金额\"] = pd.to_numeric(\n temp_df[\"玉米进口金额\"], errors=\"coerce\"\n )\n temp_df[\"玉米播种面积\"] = pd.to_numeric(\n temp_df[\"玉米播种面积\"], errors=\"coerce\"\n )\n return temp_df\n elif symbol == \"白条肉\":\n url = \"https://xt.yangzhu.vip/data/getmapdata\"\n params = {\"ptype\": \"6\", \"areano\": \"-1\"}\n r = requests.post(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"data\"])\n temp_df.columns = [\"周期\", \"白条肉平均出厂价格\", \"环比\", \"同比\"]\n temp_df[\"白条肉平均出厂价格\"] = pd.to_numeric(\n temp_df[\"白条肉平均出厂价格\"], errors=\"coerce\"\n )\n temp_df[\"环比\"] = pd.to_numeric(temp_df[\"环比\"], errors=\"coerce\")\n temp_df[\"同比\"] = pd.to_numeric(temp_df[\"同比\"], errors=\"coerce\")\n return temp_df\n elif symbol == \"生猪产能\":\n url = \"https://xt.yangzhu.vip/data/getmapdata\"\n params = {\"ptype\": \"7\", \"areano\": \"-1\"}\n r = requests.post(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"data\"])\n temp_df.columns = [\"周期\", \"能繁母猪存栏\", \"猪肉产量\", \"生猪存栏\", \"生猪出栏\"]\n temp_df[\"能繁母猪存栏\"] = pd.to_numeric(\n temp_df[\"能繁母猪存栏\"], errors=\"coerce\"\n )\n temp_df[\"猪肉产量\"] = pd.to_numeric(temp_df[\"猪肉产量\"], errors=\"coerce\")\n temp_df[\"生猪存栏\"] = pd.to_numeric(temp_df[\"生猪存栏\"], errors=\"coerce\")\n temp_df[\"生猪出栏\"] = pd.to_numeric(temp_df[\"生猪出栏\"], errors=\"coerce\")\n return temp_df\n elif symbol == \"育肥猪\":\n url = \"https://xt.yangzhu.vip/data/getmapdata\"\n params = {\"ptype\": \"9\", \"areano\": \"-1\"}\n r = requests.post(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"data\"])\n temp_df = temp_df[[\"date\", \"benzhou\"]]\n temp_df[\"date\"] = pd.to_datetime(temp_df[\"date\"], errors=\"coerce\").dt.date\n temp_df[\"benzhou\"] = pd.to_numeric(temp_df[\"benzhou\"], errors=\"coerce\")\n return temp_df\n elif symbol == \"肉类价格指数\":\n url = \"https://xt.yangzhu.vip/data/getmapdata\"\n params = {\"ptype\": \"10\", \"areano\": \"-1\"}\n r = requests.post(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"data\"])\n temp_df.columns = [\"date\", \"item\", \"value\"]\n del temp_df[\"item\"]\n temp_df[\"date\"] = pd.to_datetime(temp_df[\"date\"], errors=\"coerce\").dt.date\n temp_df[\"value\"] = pd.to_numeric(temp_df[\"value\"], errors=\"coerce\")\n return temp_df\n elif symbol == \"猪粮比价\":\n url = \"https://xt.yangzhu.vip/data/getmapdata\"\n params = {\"ptype\": \"11\", \"areano\": \"-1\"}\n r = requests.post(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"data\"])\n temp_df.columns = [\"date\", \"value\"]\n temp_df[\"date\"] = pd.to_datetime(temp_df[\"date\"], errors=\"coerce\").dt.date\n temp_df[\"value\"] = pd.to_numeric(temp_df[\"value\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["macro"]}} {"name": "futures_hold_pos_sina", "tool_from": "akshare", "description": "新浪财经-期货-成交持仓\nhttps://vip.stock.finance.sina.com.cn/q/view/vFutures_Positions_cjcc.php\n:param symbol: choice of {\"成交量\", \"多单持仓\", \"空单持仓\"}\n:type symbol: str\n:param contract: 期货合约\n:type contract: str\n:param date: 查询日期\n:type date: str\n:return: 成交持仓\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "choice of {\"成交量\", \"多单持仓\", \"空单持仓\"}"}, "contract": {"type": "string", "description": "期货合约"}, "date": {"type": "string", "description": "查询日期"}}, "required": []}, "python_code": "def futures_hold_pos_sina(\n symbol: str = \"成交量\", contract: str = \"OI2501\", date: str = \"20240223\"\n) -> pd.DataFrame:\n \"\"\"\n 新浪财经-期货-成交持仓\n https://vip.stock.finance.sina.com.cn/q/view/vFutures_Positions_cjcc.php\n :param symbol: choice of {\"成交量\", \"多单持仓\", \"空单持仓\"}\n :type symbol: str\n :param contract: 期货合约\n :type contract: str\n :param date: 查询日期\n :type date: str\n :return: 成交持仓\n :rtype: pandas.DataFrame\n \"\"\"\n date = \"-\".join([date[:4], date[4:6], date[6:]])\n url = \"https://vip.stock.finance.sina.com.cn/q/view/vFutures_Positions_cjcc.php\"\n params = {\"t_breed\": contract, \"t_date\": date}\n r = requests.get(url, params=params)\n if symbol == \"成交量\":\n temp_df = pd.read_html(StringIO(r.text))[2].iloc[:-1, :]\n temp_df[\"名次\"] = pd.to_numeric(temp_df[\"名次\"], errors=\"coerce\")\n temp_df[\"成交量\"] = pd.to_numeric(temp_df[\"成交量\"], errors=\"coerce\")\n temp_df[\"比上交易增减\"] = pd.to_numeric(\n temp_df[\"比上交易增减\"], errors=\"coerce\"\n )\n return temp_df\n elif symbol == \"多单持仓\":\n temp_df = pd.read_html(StringIO(r.text))[3].iloc[:-1, :]\n temp_df[\"名次\"] = pd.to_numeric(temp_df[\"名次\"], errors=\"coerce\")\n temp_df[\"多单持仓\"] = pd.to_numeric(temp_df[\"多单持仓\"], errors=\"coerce\")\n temp_df[\"比上交易增减\"] = pd.to_numeric(\n temp_df[\"比上交易增减\"], errors=\"coerce\"\n )\n return temp_df\n elif symbol == \"空单持仓\":\n temp_df = pd.read_html(StringIO(r.text))[4].iloc[:-1, :]\n temp_df[\"名次\"] = pd.to_numeric(temp_df[\"名次\"], errors=\"coerce\")\n temp_df[\"空单持仓\"] = pd.to_numeric(temp_df[\"空单持仓\"], errors=\"coerce\")\n temp_df[\"比上交易增减\"] = pd.to_numeric(\n temp_df[\"比上交易增减\"], errors=\"coerce\"\n )\n return temp_df\n else:\n raise ValueError(\"请输入正确的 symbol 参数\")\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_index_ccidx", "tool_from": "akshare", "description": "中证商品指数-商品指数-日频率\nhttp://www.ccidx.com/index.html\n:param symbol: choice of {\"中证商品期货指数\", \"中证商品期货价格指数\"}\n:type symbol: str\n:return: 商品指数-日频率\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "choice of {\"中证商品期货指数\", \"中证商品期货价格指数\"}"}}, "required": []}, "python_code": "def futures_index_ccidx(symbol: str = \"中证商品期货指数\") -> pd.DataFrame:\n \"\"\"\n 中证商品指数-商品指数-日频率\n http://www.ccidx.com/index.html\n :param symbol: choice of {\"中证商品期货指数\", \"中证商品期货价格指数\"}\n :type symbol: str\n :return: 商品指数-日频率\n :rtype: pandas.DataFrame\n \"\"\"\n futures_index_map = {\n \"中证商品期货指数\": \"100001.CCI\",\n \"中证商品期货价格指数\": \"000001.CCI\",\n }\n url = \"http://www.ccidx.com/CCI-ZZZS/index/getDateLine\"\n params = {\"indexId\": futures_index_map[symbol]}\n r = requests.get(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(\n [json.loads(item) for item in data_json[\"data\"][\"dateLineJson\"]]\n )\n temp_df.rename(\n columns={\n \"tradeDate\": \"日期\",\n \"indexId\": \"指数代码\",\n \"closingPrice\": \"收盘点位\",\n \"settlePrice\": \"结算点位\",\n \"dailyIncreaseAndDecrease\": \"涨跌\",\n \"dailyIncreaseAndDecreasePercentage\": \"涨跌幅\",\n },\n inplace=True,\n )\n\n temp_df[\"日期\"] = pd.to_datetime(temp_df[\"日期\"], errors=\"coerce\").dt.date\n temp_df[\"收盘点位\"] = pd.to_numeric(temp_df[\"收盘点位\"], errors=\"coerce\")\n temp_df[\"结算点位\"] = pd.to_numeric(temp_df[\"结算点位\"], errors=\"coerce\")\n temp_df[\"涨跌\"] = pd.to_numeric(temp_df[\"涨跌\"], errors=\"coerce\")\n temp_df[\"涨跌幅\"] = pd.to_numeric(temp_df[\"涨跌幅\"], errors=\"coerce\")\n temp_df.sort_values(by=[\"日期\"], inplace=True)\n temp_df.reset_index(inplace=True, drop=True)\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_inventory_99", "tool_from": "akshare", "description": "99 期货网-大宗商品库存数据\nhttps://www.99qh.com/data/stockIn?productId=12\n:param symbol: 交易所对应的具体品种; 如:大连商品交易所的 豆一\n:type symbol: str\n:return: 大宗商品库存数据\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "交易所对应的具体品种; 如:大连商品交易所的 豆一"}}, "required": []}, "python_code": "def futures_inventory_99(symbol: str = \"豆一\") -> pd.DataFrame:\n \"\"\"\n 99 期货网-大宗商品库存数据\n https://www.99qh.com/data/stockIn?productId=12\n :param symbol: 交易所对应的具体品种; 如:大连商品交易所的 豆一\n :type symbol: str\n :return: 大宗商品库存数据\n :rtype: pandas.DataFrame\n \"\"\"\n temp_df = __get_99_symbol_map()\n symbol_name_map = dict(zip(temp_df[\"name\"], temp_df[\"productId\"]))\n symbol_code_map = dict(zip(temp_df[\"code\"], temp_df[\"productId\"]))\n if symbol in symbol_name_map: # 如果输入的是中文名称\n product_id = symbol_name_map[symbol]\n elif symbol in symbol_code_map: # 如果输入的是代码\n product_id = symbol_code_map[symbol]\n else:\n raise ValueError(f\"未找到品种 {symbol} 对应的编号\")\n\n url = \"https://centerapi.fx168api.com/app/qh/api/stock/trend\"\n headers = {\n \"Content-Type\": \"application/json;charset=UTF-8\",\n \"_pcc\": \"Km+8HvRZpwuTQevs9gsuZsqDqExHrbSybJ2owcl8Mlz8vRgIuzoVIGUDD+WkESBlOWbSC3sKLxA4M4sG57vC0V\"\n \"KPdI+MX+IpDC4NViRU6TSftUi9Jeqer88KW8BvEmYMOTdUgyYuo27yjgAT28wWSYDiHBCBHiWX97lJydFI8ec=\",\n \"user-agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/58.0.3029.110 Safari/537.3\",\n \"referer\": \"https://www.99qh.com\",\n \"origin\": \"https://www.99qh.com\",\n }\n params = {\n \"productId\": product_id,\n \"type\": \"1\",\n \"pageNo\": \"1\",\n \"pageSize\": \"5000\",\n \"startDate\": \"\",\n \"endDate\": f\"{datetime.now().date().isoformat()}\",\n \"appCategory\": \"web\",\n }\n r = requests.get(url, params, headers=headers)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"data\"][\"list\"])\n temp_df.columns = [\"日期\", \"收盘价\", \"库存\"]\n temp_df.sort_values(by=[\"日期\"], ignore_index=True, inplace=True)\n temp_df[\"日期\"] = pd.to_datetime(temp_df[\"日期\"], errors=\"coerce\").dt.date\n temp_df[\"收盘价\"] = pd.to_numeric(temp_df[\"收盘价\"], errors=\"coerce\")\n temp_df[\"库存\"] = pd.to_numeric(temp_df[\"库存\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_inventory_em", "tool_from": "akshare", "description": "东方财富网-数据中心-期货库存数据\nhttps://data.eastmoney.com/ifdata/kcsj.html\n:param symbol: 支持品种代码和中文名称,中文名称参见:https://data.eastmoney.com/ifdata/kcsj.html\n:type symbol: str\n:return: 指定品种的库存数据\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "支持品种代码和中文名称,中文名称参见:https://data.eastmoney.com/ifdata/kcsj.html"}}, "required": []}, "python_code": "def futures_inventory_em(symbol: str = \"a\") -> pd.DataFrame:\n \"\"\"\n 东方财富网-数据中心-期货库存数据\n https://data.eastmoney.com/ifdata/kcsj.html\n :param symbol: 支持品种代码和中文名称,中文名称参见:https://data.eastmoney.com/ifdata/kcsj.html\n :type symbol: str\n :return: 指定品种的库存数据\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://datacenter-web.eastmoney.com/api/data/v1/get\"\n params = {\n \"reportName\": \"RPT_FUTU_POSITIONCODE\",\n \"columns\": \"TRADE_MARKET_CODE,TRADE_CODE,TRADE_TYPE\",\n \"filter\": '(IS_MAINCODE=\"1\")',\n \"pageNumber\": \"1\",\n \"pageSize\": \"500\",\n \"source\": \"WEB\",\n \"client\": \"WEB\",\n }\n r = requests.get(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"result\"][\"data\"])\n symbol_dict = dict(zip(temp_df[\"TRADE_TYPE\"], temp_df[\"TRADE_CODE\"]))\n if symbol in symbol_dict.keys():\n product_id = symbol_dict[symbol]\n elif symbol in futures_inventory_em_symbol_dict.keys(): # 如果输入的是代码\n product_id = futures_inventory_em_symbol_dict[symbol]\n else:\n raise ValueError(f\"请输入正确的 symbol, 可选项为: {symbol_dict}\")\n params = {\n \"reportName\": \"RPT_FUTU_STOCKDATA\",\n \"columns\": \"SECURITY_CODE,TRADE_DATE,ON_WARRANT_NUM,ADDCHANGE\",\n \"filter\": f\"\"\"(SECURITY_CODE=\"{product_id}\")(TRADE_DATE>='2020-10-28')\"\"\",\n \"pageNumber\": \"1\",\n \"pageSize\": \"500\",\n \"sortTypes\": \"-1\",\n \"sortColumns\": \"TRADE_DATE\",\n \"source\": \"WEB\",\n \"client\": \"WEB\",\n }\n r = requests.get(url, params=params)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"result\"][\"data\"])\n temp_df.columns = [\"-\", \"日期\", \"库存\", \"增减\"]\n temp_df = temp_df[[\"日期\", \"库存\", \"增减\"]]\n temp_df.sort_values([\"日期\"], inplace=True)\n temp_df.reset_index(inplace=True, drop=True)\n temp_df[\"库存\"] = pd.to_numeric(temp_df[\"库存\"], errors=\"coerce\")\n temp_df[\"增减\"] = pd.to_numeric(temp_df[\"增减\"], errors=\"coerce\")\n temp_df[\"日期\"] = pd.to_datetime(temp_df[\"日期\"], errors=\"coerce\").dt.date\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_main_sina", "tool_from": "akshare", "description": "新浪财经-期货-主力连续日数据\nhttps://vip.stock.finance.sina.com.cn/quotes_service/view/qihuohangqing.html#titlePos_1\n:param symbol: 通过 ak.futures_display_main_sina() 函数获取 symbol\n:type symbol: str\n:param start_date: 开始时间\n:type start_date: str\n:param end_date: 结束时间\n:type end_date: str\n:return: 主力连续日数据\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "通过 ak.futures_display_main_sina() 函数获取 symbol"}, "start_date": {"type": "string", "description": "开始时间"}, "end_date": {"type": "string", "description": "结束时间"}}, "required": []}, "python_code": "def futures_main_sina(\n symbol: str = \"V0\",\n start_date: str = \"19900101\",\n end_date: str = \"22220101\",\n) -> pd.DataFrame:\n \"\"\"\n 新浪财经-期货-主力连续日数据\n https://vip.stock.finance.sina.com.cn/quotes_service/view/qihuohangqing.html#titlePos_1\n :param symbol: 通过 ak.futures_display_main_sina() 函数获取 symbol\n :type symbol: str\n :param start_date: 开始时间\n :type start_date: str\n :param end_date: 结束时间\n :type end_date: str\n :return: 主力连续日数据\n :rtype: pandas.DataFrame\n \"\"\"\n trade_date = \"20210817\"\n trade_date = trade_date[:4] + \"_\" + trade_date[4:6] + \"_\" + trade_date[6:]\n url = f\"https://stock2.finance.sina.com.cn/futures/api/jsonp.php/var%20_{symbol}{trade_date}=/InnerFuturesNewService.getDailyKLine?symbol={symbol}&_={trade_date}\"\n r = requests.get(url)\n data_text = r.text\n data_json = data_text[data_text.find(\"([\") + 1 : data_text.rfind(\"])\") + 1]\n temp_df = pd.read_json(StringIO(data_json))\n temp_df.columns = [\n \"日期\",\n \"开盘价\",\n \"最高价\",\n \"最低价\",\n \"收盘价\",\n \"成交量\",\n \"持仓量\",\n \"动态结算价\",\n ]\n temp_df[\"日期\"] = pd.to_datetime(temp_df[\"日期\"], errors=\"coerce\").dt.date\n temp_df.set_index(keys=[\"日期\"], inplace=True)\n temp_df.index = pd.to_datetime(temp_df.index)\n temp_df = temp_df[start_date:end_date]\n temp_df.reset_index(inplace=True)\n temp_df[\"日期\"] = pd.to_datetime(temp_df[\"日期\"], errors=\"coerce\").dt.date\n temp_df[\"开盘价\"] = pd.to_numeric(temp_df[\"开盘价\"], errors=\"coerce\")\n temp_df[\"最高价\"] = pd.to_numeric(temp_df[\"最高价\"], errors=\"coerce\")\n temp_df[\"最低价\"] = pd.to_numeric(temp_df[\"最低价\"], errors=\"coerce\")\n temp_df[\"收盘价\"] = pd.to_numeric(temp_df[\"收盘价\"], errors=\"coerce\")\n temp_df[\"成交量\"] = pd.to_numeric(temp_df[\"成交量\"], errors=\"coerce\")\n temp_df[\"持仓量\"] = pd.to_numeric(temp_df[\"持仓量\"], errors=\"coerce\")\n temp_df[\"动态结算价\"] = pd.to_numeric(temp_df[\"动态结算价\"], errors=\"coerce\")\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_news_shmet", "tool_from": "akshare", "description": "上海金属网-快讯\nhttps://www.shmet.com/newsFlash/newsFlash.html?searchKeyword=\n:param symbol: choice of {\"全部\", \"要闻\", \"VIP\", \"财经\", \"铜\", \"铝\", \"铅\", \"锌\", \"镍\", \"锡\", \"贵金属\", \"小金属\"}\n:type symbol: str\n:return: 上海金属网-快讯\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "choice of {\"全部\", \"要闻\", \"VIP\", \"财经\", \"铜\", \"铝\", \"铅\", \"锌\", \"镍\", \"锡\", \"贵金属\", \"小金属\"}"}}, "required": []}, "python_code": "def futures_news_shmet(symbol: str = \"全部\") -> pd.DataFrame:\n \"\"\"\n 上海金属网-快讯\n https://www.shmet.com/newsFlash/newsFlash.html?searchKeyword=\n :param symbol: choice of {\"全部\", \"要闻\", \"VIP\", \"财经\", \"铜\", \"铝\", \"铅\", \"锌\", \"镍\", \"锡\", \"贵金属\", \"小金属\"}\n :type symbol: str\n :return: 上海金属网-快讯\n :rtype: pandas.DataFrame\n \"\"\"\n url = \"https://www.shmet.com/api/rest/news/queryNewsflashList\"\n if symbol == \"全部\":\n payload = {\"currentPage\": 1, \"pageSize\": 100}\n else:\n symbol_map = {\n \"要闻\": \"0\",\n \"VIP\": \"100\",\n \"财经\": \"999\",\n \"铜\": \"1002\",\n \"铝\": \"1003\",\n \"铅\": \"1005\",\n \"锌\": \"1004\",\n \"镍\": \"1006\",\n \"锡\": \"1007\",\n \"贵金属\": \"1008\",\n \"小金属\": \"1009\",\n }\n payload = {\n \"currentPage\": 1,\n \"pageSize\": 2000,\n \"content\": \"\",\n \"flashTag\": symbol_map[symbol],\n }\n r = requests.post(url, json=payload)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"data\"][\"dataList\"])\n temp_df.columns = [\n \"-\",\n \"-\",\n \"-\",\n \"发布时间\",\n \"-\",\n \"内容\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n \"-\",\n ]\n temp_df = temp_df[\n [\n \"发布时间\",\n \"内容\",\n ]\n ]\n temp_df[\"发布时间\"] = pd.to_datetime(\n temp_df[\"发布时间\"], unit=\"ms\", utc=True\n ).dt.tz_convert(\"Asia/Shanghai\")\n temp_df.sort_values([\"发布时间\"], inplace=True)\n temp_df.reset_index(inplace=True, drop=True)\n return temp_df\n", "financial_tags": {"timeliness": "realtime", "intent_type": "informational", "regulatory_domains": ["derivatives", "macro"]}} {"name": "futures_rule", "tool_from": "akshare", "description": "国泰君安期货-交易日历数据表\nhttps://www.gtjaqh.com/pc/calendar.html\n:param date: 需要指定为交易日, 且是近期的日期\n:type date: str\n:return: 交易日历数据\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "需要指定为交易日, 且是近期的日期"}}, "required": []}, "python_code": "def futures_rule(date: str = \"20231205\") -> pd.DataFrame:\n \"\"\"\n 国泰君安期货-交易日历数据表\n https://www.gtjaqh.com/pc/calendar.html\n :param date: 需要指定为交易日, 且是近期的日期\n :type date: str\n :return: 交易日历数据\n :rtype: pandas.DataFrame\n \"\"\"\n import urllib3\n\n urllib3.disable_warnings()\n url = \" https://www.gtjaqh.com/pc/calendar\"\n params = {\"date\": f\"{date}\"}\n r = requests.get(url, params=params, verify=False)\n big_df = pd.read_html(StringIO(r.text), header=1)[0]\n big_df[\"交易保证金比例\"] = big_df[\"交易保证金比例\"].str.strip(\"%\")\n big_df[\"交易保证金比例\"] = pd.to_numeric(big_df[\"交易保证金比例\"], errors=\"coerce\")\n big_df[\"涨跌停板幅度\"] = big_df[\"涨跌停板幅度\"].str.strip(\"%\")\n big_df[\"涨跌停板幅度\"] = pd.to_numeric(big_df[\"涨跌停板幅度\"], errors=\"coerce\")\n big_df[\"合约乘数\"] = pd.to_numeric(big_df[\"合约乘数\"], errors=\"coerce\")\n big_df[\"最小变动价位\"] = pd.to_numeric(big_df[\"最小变动价位\"], errors=\"coerce\")\n big_df[\"限价单每笔最大下单手数\"] = pd.to_numeric(\n big_df[\"限价单每笔最大下单手数\"], errors=\"coerce\"\n )\n return big_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_settlement_price_sgx", "tool_from": "akshare", "description": "新加坡交易所-衍生品-历史数据-历史结算价格\nhttps://www.sgx.com/zh-hans/research-education/derivatives\n:param date: 交易日\n:type date: str\n:return: 所有期货品种的在指定交易日的历史结算价格\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "交易日"}}, "required": []}, "python_code": "def futures_settlement_price_sgx(date: str = \"20231107\") -> pd.DataFrame:\n \"\"\"\n 新加坡交易所-衍生品-历史数据-历史结算价格\n https://www.sgx.com/zh-hans/research-education/derivatives\n :param date: 交易日\n :type date: str\n :return: 所有期货品种的在指定交易日的历史结算价格\n :rtype: pandas.DataFrame\n \"\"\"\n num = __fetch_ftse_index_futu(date)\n url = f\"https://links.sgx.com/1.0.0/derivatives-daily/{num}/FUTURE.zip\"\n r = requests.get(url)\n with zipfile.ZipFile(BytesIO(r.content)) as file:\n with file.open(file.namelist()[0]) as my_file:\n data = my_file.read().decode()\n if file.namelist()[0].endswith(\"txt\"):\n data_df = pd.read_table(StringIO(data))\n else:\n data_df = pd.read_csv(StringIO(data))\n return data_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_shfe_warehouse_receipt", "tool_from": "akshare", "description": "上海期货交易所指定交割仓库期货仓单日报\nhttps://tsite.shfe.com.cn/statements/dataview.html?paramid=dailystock¶mdate=20200703\n:param date: 交易日, e.g., \"20200702\"\n:type date: str\n:return: 指定日期的仓单日报数据\n:rtype: dict", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "交易日, e.g., \"20200702\""}}, "required": []}, "python_code": "def futures_shfe_warehouse_receipt(date: str = \"20200702\") -> dict:\n \"\"\"\n 上海期货交易所指定交割仓库期货仓单日报\n https://tsite.shfe.com.cn/statements/dataview.html?paramid=dailystock¶mdate=20200703\n :param date: 交易日, e.g., \"20200702\"\n :type date: str\n :return: 指定日期的仓单日报数据\n :rtype: dict\n \"\"\"\n headers = {\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) \"\n \"Chrome/83.0.4103.116 Safari/537.36\"\n }\n url = f\"https://www.shfe.com.cn/data/tradedata/future/dailydata/{date}dailystock.dat\"\n if date >= \"20140519\":\n r = requests.get(url, headers=headers)\n data_json = r.json()\n temp_df = pd.DataFrame(data_json[\"o_cursor\"])\n temp_df[\"VARNAME\"] = temp_df[\"VARNAME\"].str.split(r\"$\", expand=True).iloc[:, 0]\n temp_df[\"REGNAME\"] = temp_df[\"REGNAME\"].str.split(r\"$\", expand=True).iloc[:, 0]\n temp_df[\"WHABBRNAME\"] = (\n temp_df[\"WHABBRNAME\"].str.split(r\"$\", expand=True).iloc[:, 0]\n )\n big_dict = {}\n for item in set(temp_df[\"VARNAME\"]):\n big_dict[item] = temp_df[temp_df[\"VARNAME\"] == item]\n else:\n url = f\"https://www.shfe.com.cn/data/tradedata/future/dailydata/{date}dailystock.html\"\n r = requests.get(url, headers=headers)\n temp_df = pd.read_html(StringIO(r.text))[0]\n index_list = temp_df[\n temp_df.iloc[:, 3].str.contains(\"单位:\") == 1\n ].index.to_list()\n big_dict = {}\n for inner_index in range(len(index_list)):\n temp_index_start = index_list[inner_index]\n if (inner_index + 1) >= len(index_list):\n if temp_df.iloc[-1, 0].startswith(\"注:\"):\n temp_index_end = len(temp_df) - 1\n else:\n temp_index_end = len(temp_df)\n else:\n temp_index_end = index_list[inner_index + 1]\n inner_df = temp_df[temp_index_start:temp_index_end]\n inner_df.reset_index(inplace=True, drop=True)\n inner_key = inner_df.iloc[0, 0]\n inner_df.columns = inner_df.iloc[1].to_list()\n inner_df = inner_df[2:]\n inner_df.reset_index(inplace=True, drop=True)\n big_dict[inner_key] = inner_df\n return big_dict\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_spot_price", "tool_from": "akshare", "description": "指定交易日大宗商品现货价格及相应基差\nhttps://www.100ppi.com/sf/day-2017-09-12.html\n:param date: 开始日期 format: YYYY-MM-DD 或 YYYYMMDD 或 datetime.date 对象; 为空时为当天\n:param vars_list: 合约品种如 RB、AL 等列表 为空时为所有商品\n:return: pandas.DataFrame\n展期收益率数据:\nvar 商品品种 string\nsp 现货价格 float\nnear_symbol 临近交割合约 string\nnear_price 临近交割合约结算价 float\ndom_symbol 主力合约 string\ndom_price 主力合约结算价 float\nnear_basis 临近交割合约相对现货的基差 float\ndom_basis 主力合约相对现货的基差 float\nnear_basis_rate 临近交割合约相对现货的基差率 float\ndom_basis_rate 主力合约相对现货的基差率 float\ndate 日期 string YYYYMMDD", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "开始日期 format: YYYY-MM-DD 或 YYYYMMDD 或 datetime.date 对象; 为空时为当天"}, "vars_list": {"type": "string", "description": "合约品种如 RB、AL 等列表 为空时为所有商品"}}, "required": []}, "python_code": "def futures_spot_price(\n date: str = \"20240430\", vars_list: list = cons.contract_symbols\n) -> pd.DataFrame:\n \"\"\"\n 指定交易日大宗商品现货价格及相应基差\n https://www.100ppi.com/sf/day-2017-09-12.html\n :param date: 开始日期 format: YYYY-MM-DD 或 YYYYMMDD 或 datetime.date 对象; 为空时为当天\n :param vars_list: 合约品种如 RB、AL 等列表 为空时为所有商品\n :return: pandas.DataFrame\n 展期收益率数据:\n var 商品品种 string\n sp 现货价格 float\n near_symbol 临近交割合约 string\n near_price 临近交割合约结算价 float\n dom_symbol 主力合约 string\n dom_price 主力合约结算价 float\n near_basis 临近交割合约相对现货的基差 float\n dom_basis 主力合约相对现货的基差 float\n near_basis_rate 临近交割合约相对现货的基差率 float\n dom_basis_rate 主力合约相对现货的基差率 float\n date 日期 string YYYYMMDD\n \"\"\"\n date = cons.convert_date(date) if date is not None else datetime.date.today()\n if date < datetime.date(2011, 1, 4):\n raise Exception(\n \"数据源开始日期为 20110104, 请将获取数据时间点设置在 20110104 后\"\n )\n if date.strftime(\"%Y%m%d\") not in calendar:\n warnings.warn(f\"{date.strftime('%Y%m%d')}非交易日\")\n return pd.DataFrame()\n u1 = \"https://www.100ppi.com/sf/\"\n u2 = f'https://www.100ppi.com/sf/day-{date.strftime(\"%Y-%m-%d\")}.html'\n i = 1\n while True:\n for url in [u2, u1]:\n try:\n # url = u2\n r = pandas_read_html_link(url)\n string = r[0].loc[1, 1]\n news = \"\".join(re.findall(r\"[0-9]\", string))\n if news[3:11] == date.strftime(\"%Y%m%d\"):\n records = _check_information(r[1], date)\n records.index = records[\"symbol\"]\n var_list_in_market = [i for i in vars_list if i in records.index]\n temp_df = records.loc[var_list_in_market, :]\n temp_df.reset_index(drop=True, inplace=True)\n return temp_df\n else:\n time.sleep(3)\n except Exception as e: # noqa: E722\n print(\n f\"{date.strftime('%Y-%m-%d')}日生意社数据连接失败[错误信息:{e}],第{str(i)}次尝试,最多5次\"\n )\n i += 1\n if i > 5:\n print(\n f\"{date.strftime('%Y-%m-%d')}日生意社数据连接失败, 如果当前交易日是 2018-09-12, \"\n f\"由于生意社源数据缺失, 无法访问, 否则为重复访问已超过5次,您的地址被网站墙了,\"\n f\"请保存好返回数据,稍后从该日期起重试\"\n )\n return pd.DataFrame()\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_spot_price_daily", "tool_from": "akshare", "description": "指定时间段内大宗商品现货价格及相应基差\nhttps://www.100ppi.com/sf/\n:param start_day: str 开始日期 format:YYYY-MM-DD 或 YYYYMMDD 或 datetime.date对象; 默认为当天\n:param end_day: str 结束数据 format:YYYY-MM-DD 或 YYYYMMDD 或 datetime.date对象; 默认为当天\n:param vars_list: list 合约品种如 [RB, AL]; 默认参数为所有商品\n:return: 基差\n:rtype: pandas.DataFrame\n展期收益率数据:\nvar 商品品种 string\nsp 现货价格 float\nnear_symbol 临近交割合约 string\nnear_price 临近交割合约结算价 float\ndom_symbol 主力合约 string\ndom_price 主力合约结算价 float\nnear_basis 临近交割合约相对现货的基差 float\ndom_basis 主力合约相对现货的基差 float\nnear_basis_rate 临近交割合约相对现货的基差率 float\ndom_basis_rate 主力合约相对现货的基差率 float\ndate 日期 string YYYYMMDD", "parameters": {"type": "object", "properties": {"start_day": {"type": "string", "description": "str 开始日期 format:YYYY-MM-DD 或 YYYYMMDD 或 datetime.date对象; 默认为当天"}, "end_day": {"type": "string", "description": "str 结束数据 format:YYYY-MM-DD 或 YYYYMMDD 或 datetime.date对象; 默认为当天"}, "vars_list": {"type": "string", "description": "list 合约品种如 [RB, AL]; 默认参数为所有商品"}}, "required": []}, "python_code": "def futures_spot_price_daily(\n start_day: str = \"20210201\",\n end_day: str = \"20210208\",\n vars_list: list = cons.contract_symbols,\n):\n \"\"\"\n 指定时间段内大宗商品现货价格及相应基差\n https://www.100ppi.com/sf/\n :param start_day: str 开始日期 format:YYYY-MM-DD 或 YYYYMMDD 或 datetime.date对象; 默认为当天\n :param end_day: str 结束数据 format:YYYY-MM-DD 或 YYYYMMDD 或 datetime.date对象; 默认为当天\n :param vars_list: list 合约品种如 [RB, AL]; 默认参数为所有商品\n :return: 基差\n :rtype: pandas.DataFrame\n 展期收益率数据:\n var 商品品种 string\n sp 现货价格 float\n near_symbol 临近交割合约 string\n near_price 临近交割合约结算价 float\n dom_symbol 主力合约 string\n dom_price 主力合约结算价 float\n near_basis 临近交割合约相对现货的基差 float\n dom_basis 主力合约相对现货的基差 float\n near_basis_rate 临近交割合约相对现货的基差率 float\n dom_basis_rate 主力合约相对现货的基差率 float\n date 日期 string YYYYMMDD\n \"\"\"\n start_day = (\n cons.convert_date(start_day) if start_day is not None else datetime.date.today()\n )\n end_day = (\n cons.convert_date(end_day)\n if end_day is not None\n else cons.convert_date(cons.get_latest_data_date(datetime.datetime.now()))\n )\n df_list = []\n while start_day <= end_day:\n temp_df = futures_spot_price(start_day, vars_list)\n if temp_df is False:\n return pd.concat(df_list).reset_index(drop=True)\n elif temp_df is not None:\n df_list.append(temp_df)\n start_day += datetime.timedelta(days=1)\n if len(df_list) > 0:\n temp_df = pd.concat(df_list)\n temp_df.reset_index(drop=True, inplace=True)\n return temp_df\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_spot_price_previous", "tool_from": "akshare", "description": "具体交易日大宗商品现货价格及相应基差\nhttps://www.100ppi.com/sf/day-2017-09-12.html\n:param date: 交易日; 历史日期\n:type date: str\n:return: 现货价格及相应基差\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"date": {"type": "string", "description": "交易日; 历史日期"}}, "required": []}, "python_code": "def futures_spot_price_previous(date: str = \"20240430\") -> pd.DataFrame:\n \"\"\"\n 具体交易日大宗商品现货价格及相应基差\n https://www.100ppi.com/sf/day-2017-09-12.html\n :param date: 交易日; 历史日期\n :type date: str\n :return: 现货价格及相应基差\n :rtype: pandas.DataFrame\n \"\"\"\n date = cons.convert_date(date) if date is not None else datetime.date.today()\n if date < datetime.date(2011, 1, 4):\n raise Exception(\n \"数据源开始日期为 20110104, 请将获取数据时间点设置在 20110104 后\"\n )\n if date.strftime(\"%Y%m%d\") not in calendar:\n warnings.warn(f\"{date.strftime('%Y%m%d')}非交易日\")\n return pd.DataFrame()\n url = date.strftime(\"https://www.100ppi.com/sf2/day-%Y-%m-%d.html\")\n content = pandas_read_html_link(url)\n main = content[1]\n # Header\n header = _join_head(main)\n # Values\n values = main[main[4].str.endswith(\"%\")]\n values.columns = header\n # Basis\n # 对于没有数据的天,xml文件中没有数据,所以content[2:-1]可能为空\n if len(content[2:-1]) > 0:\n basis = pd.concat(content[2:-1])\n else:\n basis = pd.DataFrame(columns=[\"主力合约基差\", \"主力合约基差(%)\"])\n\n basis.columns = [\"主力合约基差\", \"主力合约基差(%)\"]\n # 20241125(jasonudu):因为部分日期,存在多个品种的现货价格,比如20151125的白糖、豆粕、豆油等,如果用商品名来merge,会出现重复列名,所以改用index来merge\n # basis[\"商品\"] = values[\"商品\"].tolist()\n basis.index = values.index\n basis = pd.merge(\n values[[\"商品\", \"现货价格\", \"主力合约代码\", \"主力合约价格\"]],\n basis,\n left_index=True,\n right_index=True,\n )\n basis = pd.merge(\n basis,\n values[\n [\n \"180日内主力基差最高\",\n \"180日内主力基差最低\",\n \"180日内主力基差平均\",\n ]\n ],\n left_index=True,\n right_index=True,\n )\n basis.columns = [\n \"商品\",\n \"现货价格\",\n \"主力合约代码\",\n \"主力合约价格\",\n \"主力合约基差\",\n \"主力合约变动百分比\",\n \"180日内主力基差最高\",\n \"180日内主力基差最低\",\n \"180日内主力基差平均\",\n ]\n basis[\"主力合约变动百分比\"] = basis[\"主力合约变动百分比\"].str.strip(\"%\")\n return basis\n", "financial_tags": {"timeliness": "daily", "intent_type": "informational", "regulatory_domains": ["derivatives"]}} {"name": "futures_spot_stock", "tool_from": "akshare", "description": "东方财富网-数据中心-现货与股票\nhttps://data.eastmoney.com/ifdata/xhgp.html\n:param symbol: choice of {'能源', '化工', '塑料', '纺织', '有色', '钢铁', '建材', '农副'}\n:type symbol: str\n:return: 现货与股票上下游对应数据\n:rtype: pandas.DataFrame", "parameters": {"type": "object", "properties": {"symbol": {"type": "string", "description": "choice of {'能源', '化工', '塑料', '纺织', '有色', '钢铁', '建材', '农副'}"}}, "required": []}, "python_code": "def futures_spot_stock(symbol: str = \"能源\") -> pd.DataFrame:\n \"\"\"\n 东方财富网-数据中心-现货与股票\n https://data.eastmoney.com/ifdata/xhgp.html\n :param symbol: choice of {'能源', '化工', '塑料', '纺织', '有色', '钢铁', '建材', '农副'}\n :type symbol: str\n :return: 现货与股票上下游对应数据\n :rtype: pandas.DataFrame\n \"\"\"\n map_dict = {\n \"能源\": 0,\n \"化工\": 1,\n \"塑料\": 2,\n \"纺织\": 3,\n \"有色\": 4,\n \"钢铁\": 5,\n \"建材\": 6,\n \"农副\": 7,\n }\n url = \"https://data.eastmoney.com/ifdata/xhgp.html\"\n headers = {\n \"Accept\": \"text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,\"\n \"image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\",\n \"Accept-Encoding\": \"gzip, deflate\",\n \"Accept-Language\": \"zh-CN,zh;q=0.9,en;q=0.8\",\n \"Cache-Control\": \"no-cache\",\n \"Connection\": \"keep-alive\",\n \"Host\": \"data.eastmoney.com\",\n \"Pragma\": \"no-cache\",\n \"Upgrade-Insecure-Requests\": \"1\",\n \"User-Agent\": \"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 \"\n \"(KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36\",\n }\n r = requests.get(url, headers=headers)\n data_text = r.text\n temp_json = demjson.decode(\n data_text[\n data_text.find(\"pagedata\") : data_text.find(\n \"/newstatic/js/common/emdataview.js\"\n )\n ]\n .strip(\"pagedata= \")\n .strip(';\\n \\n