Commit 041faa29 authored by Dr.李's avatar Dr.李

change category codes

parent 382ae34b
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
"cells": [ "cells": [
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 4, "execution_count": 1,
"id": "3604e08c-d849-4d0e-aa6d-384657b1b6c8", "id": "3604e08c-d849-4d0e-aa6d-384657b1b6c8",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 5, "execution_count": 2,
"id": "35ca37b3-41d1-4c2d-a576-eef1cb9c1ec5", "id": "35ca37b3-41d1-4c2d-a576-eef1cb9c1ec5",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 6, "execution_count": 3,
"id": "96a3611d-8f1e-4420-9b08-7ca5dd6443cd", "id": "96a3611d-8f1e-4420-9b08-7ca5dd6443cd",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
...@@ -61,7 +61,7 @@ ...@@ -61,7 +61,7 @@
"1229" "1229"
] ]
}, },
"execution_count": 6, "execution_count": 3,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
...@@ -69,19 +69,18 @@ ...@@ -69,19 +69,18 @@
"source": [ "source": [
"# 获取所有目标股票型基金(清算结束日期晚于当前日)\n", "# 获取所有目标股票型基金(清算结束日期晚于当前日)\n",
"\n", "\n",
"security_ids = fd_alive_funds(current_date, 2201)\n", "security_info = fd_alive_funds(current_date, 2201)\n",
"security_ids = security_info.SECURITYID.unique().tolist()\n",
"len(security_ids)" "len(security_ids)"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 8, "execution_count": 4,
"id": "79115d35-0712-4432-a73c-29bd5262dda7", "id": "79115d35-0712-4432-a73c-29bd5262dda7",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"basic_info = fd_basicinfo(security_ids, current_date)\n",
"type_info = fd_typeclass(security_ids, current_date)\n",
"hkport_info = fd_hshkiport(security_ids, report_dates_begin, current_date)\n", "hkport_info = fd_hshkiport(security_ids, report_dates_begin, current_date)\n",
"hkport_info = hkport_info[hkport_info.INDUSTRYNAME == \"合计\"].groupby([\"SECURITYID\"], as_index=False)[[\"ACCNETMKTCAP\"]].mean()\n", "hkport_info = hkport_info[hkport_info.INDUSTRYNAME == \"合计\"].groupby([\"SECURITYID\"], as_index=False)[[\"ACCNETMKTCAP\"]].mean()\n",
"asset_port = fd_assetportfolio(security_ids, report_dates_begin, current_date).groupby(\"SECURITYID\", as_index=False)[[\"EQUITYINVERTO\"]].mean()" "asset_port = fd_assetportfolio(security_ids, report_dates_begin, current_date).groupby(\"SECURITYID\", as_index=False)[[\"EQUITYINVERTO\"]].mean()"
...@@ -89,43 +88,37 @@ ...@@ -89,43 +88,37 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 9, "execution_count": 5,
"id": "0c30cc50-a1c3-4774-84a8-5ab5faca8b67", "id": "0c30cc50-a1c3-4774-84a8-5ab5faca8b67",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [
{
"data": {
"text/plain": [
"1229"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [ "source": [
"df = pd.merge(basic_info, type_info, on=\"SECURITYID\", how=\"inner\")\n", "df = pd.merge(security_info, asset_port, on=\"SECURITYID\", how=\"left\")\n",
"df = pd.merge(df, asset_port, on=\"SECURITYID\", how=\"left\")\n",
"df = pd.merge(df, hkport_info, on=\"SECURITYID\", how=\"left\").drop_duplicates()\n", "df = pd.merge(df, hkport_info, on=\"SECURITYID\", how=\"left\").drop_duplicates()\n",
"\n", "\n",
"if \"ACCNETMKTCAP\" in df:\n", "if \"ACCNETMKTCAP\" in df:\n",
" df[\"ACCNETMKTCAP\"] = df[\"ACCNETMKTCAP\"].fillna(0)\n", " df[\"ACCNETMKTCAP\"] = df[\"ACCNETMKTCAP\"].fillna(0)\n",
"else:\n", "else:\n",
" df[\"ACCNETMKTCAP\"] = 0.0" " df[\"ACCNETMKTCAP\"] = 0.0\n",
] " \n",
}, "len(df)"
{
"cell_type": "code",
"execution_count": 10,
"id": "c99e0fe3-7193-449e-b5ee-6cbd0b003035",
"metadata": {},
"outputs": [],
"source": [
"# 分类\n",
"\n",
"flag = df[\"ACCNETMKTCAP\"] / df[\"EQUITYINVERTO\"] > 0.5\n",
"df.loc[flag, \"股票型(子类)\"] = \"港股通股票型基金\"\n",
"\n",
"df.loc[(~flag) & (df[\"L3NAME\"].isin([\"其他行业股票型基金\", \"偏股型基金(股票上下限60%-95%)\", '标准股票型基金', '医药行业股票型基金', '封闭式标准股票型基金'])), \"股票型(子类)\"] = \"普通股票型基金\"\n",
"df.loc[(~flag) & (df[\"L3NAME\"].isin([\"标准指数股票型基金\"])), \"股票型(子类)\"] = \"被动指数型基金\"\n",
"df.loc[(~flag) & (df[\"L3NAME\"].isin([\"增强指数股票型基金\"])), \"股票型(子类)\"] = \"增强指数型基金\"\n",
"df = df.sort_values(\"SECURITYID\").dropna(subset=[\"股票型(子类)\"])"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 11, "execution_count": 6,
"id": "a42b357e-6b87-424b-9ca9-4ce60904b66b", "id": "2731d952-7bd6-4445-958e-247e53a11390",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
...@@ -150,147 +143,103 @@ ...@@ -150,147 +143,103 @@
" <tr style=\"text-align: right;\">\n", " <tr style=\"text-align: right;\">\n",
" <th></th>\n", " <th></th>\n",
" <th>SECURITYID</th>\n", " <th>SECURITYID</th>\n",
" <th>FDNAME</th>\n", " <th>BEGINDATE</th>\n",
" <th>SNAMECOMP</th>\n", " <th>ENDDATE</th>\n",
" <th>FSYMBOL</th>\n", " <th>CLASSCODE</th>\n",
" <th>FDNATURE</th>\n",
" <th>INVESTSTYLE</th>\n",
" <th>L1CODE</th>\n",
" <th>L1NAME</th>\n",
" <th>L2CODE</th>\n",
" <th>L2NAME</th>\n",
" <th>L3CODE</th>\n",
" <th>L3NAME</th>\n",
" <th>EQUITYINVERTO</th>\n", " <th>EQUITYINVERTO</th>\n",
" <th>ACCNETMKTCAP</th>\n", " <th>ACCNETMKTCAP</th>\n",
" </tr>\n", " </tr>\n",
" <tr>\n",
" <th>股票型(子类)</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n", " </thead>\n",
" <tbody>\n", " <tbody>\n",
" <tr>\n", " <tr>\n",
" <th>增强指数型基金</th>\n", " <th>0</th>\n",
" <td>63</td>\n", " <td>1030000030</td>\n",
" <td>63</td>\n", " <td>20071111</td>\n",
" <td>47</td>\n", " <td>19000101</td>\n",
" <td>63</td>\n", " <td>22010701</td>\n",
" <td>63</td>\n", " <td>94.000000</td>\n",
" <td>63</td>\n", " <td>0.0</td>\n",
" <td>63</td>\n",
" <td>63</td>\n",
" <td>63</td>\n",
" <td>63</td>\n",
" <td>63</td>\n",
" <td>63</td>\n",
" <td>60</td>\n",
" <td>63</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>普通股票型基金</th>\n", " <th>1</th>\n",
" <td>204</td>\n", " <td>1030000034</td>\n",
" <td>204</td>\n", " <td>20021108</td>\n",
" <td>70</td>\n", " <td>19000101</td>\n",
" <td>204</td>\n", " <td>22010703</td>\n",
" <td>204</td>\n", " <td>94.113333</td>\n",
" <td>204</td>\n", " <td>0.0</td>\n",
" <td>204</td>\n",
" <td>204</td>\n",
" <td>204</td>\n",
" <td>204</td>\n",
" <td>204</td>\n",
" <td>204</td>\n",
" <td>204</td>\n",
" <td>204</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>港股通股票型基金</th>\n", " <th>2</th>\n",
" <td>18</td>\n", " <td>1030000045</td>\n",
" <td>18</td>\n", " <td>20080101</td>\n",
" <td>12</td>\n", " <td>19000101</td>\n",
" <td>18</td>\n", " <td>22010701</td>\n",
" <td>18</td>\n", " <td>93.666667</td>\n",
" <td>18</td>\n", " <td>0.0</td>\n",
" <td>18</td>\n",
" <td>18</td>\n",
" <td>18</td>\n",
" <td>18</td>\n",
" <td>18</td>\n",
" <td>18</td>\n",
" <td>18</td>\n",
" <td>18</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>被动指数型基金</th>\n", " <th>3</th>\n",
" <td>317</td>\n", " <td>1030000096</td>\n",
" <td>317</td>\n", " <td>20040322</td>\n",
" <td>194</td>\n", " <td>19000101</td>\n",
" <td>317</td>\n", " <td>22010703</td>\n",
" <td>317</td>\n", " <td>92.616667</td>\n",
" <td>317</td>\n", " <td>0.0</td>\n",
" <td>317</td>\n", " </tr>\n",
" <td>317</td>\n", " <tr>\n",
" <td>317</td>\n", " <th>4</th>\n",
" <td>317</td>\n", " <td>1030000136</td>\n",
" <td>317</td>\n", " <td>20030930</td>\n",
" <td>317</td>\n", " <td>19000101</td>\n",
" <td>307</td>\n", " <td>22010703</td>\n",
" <td>317</td>\n", " <td>94.809167</td>\n",
" <td>0.0</td>\n",
" </tr>\n", " </tr>\n",
" </tbody>\n", " </tbody>\n",
"</table>\n", "</table>\n",
"</div>" "</div>"
], ],
"text/plain": [ "text/plain": [
" SECURITYID FDNAME SNAMECOMP FSYMBOL FDNATURE INVESTSTYLE \\\n", " SECURITYID BEGINDATE ENDDATE CLASSCODE EQUITYINVERTO ACCNETMKTCAP\n",
"股票型(子类) \n", "0 1030000030 20071111 19000101 22010701 94.000000 0.0\n",
"增强指数型基金 63 63 47 63 63 63 \n", "1 1030000034 20021108 19000101 22010703 94.113333 0.0\n",
"普通股票型基金 204 204 70 204 204 204 \n", "2 1030000045 20080101 19000101 22010701 93.666667 0.0\n",
"港股通股票型基金 18 18 12 18 18 18 \n", "3 1030000096 20040322 19000101 22010703 92.616667 0.0\n",
"被动指数型基金 317 317 194 317 317 317 \n", "4 1030000136 20030930 19000101 22010703 94.809167 0.0"
"\n",
" L1CODE L1NAME L2CODE L2NAME L3CODE L3NAME EQUITYINVERTO \\\n",
"股票型(子类) \n",
"增强指数型基金 63 63 63 63 63 63 60 \n",
"普通股票型基金 204 204 204 204 204 204 204 \n",
"港股通股票型基金 18 18 18 18 18 18 18 \n",
"被动指数型基金 317 317 317 317 317 317 307 \n",
"\n",
" ACCNETMKTCAP \n",
"股票型(子类) \n",
"增强指数型基金 63 \n",
"普通股票型基金 204 \n",
"港股通股票型基金 18 \n",
"被动指数型基金 317 "
] ]
}, },
"execution_count": 11, "execution_count": 6,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
], ],
"source": [ "source": [
"df.groupbyby(\"股票型(子类)\").count()" "df.head()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "c99e0fe3-7193-449e-b5ee-6cbd0b003035",
"metadata": {},
"outputs": [],
"source": [
"# 分类\n",
"\n",
"flag = df[\"ACCNETMKTCAP\"] / df[\"EQUITYINVERTO\"] > 0.5\n",
"df.loc[flag, \"股票型(子类)\"] = \"港股通股票型基金\"\n",
"\n",
"df.loc[(~flag) & (df[\"CLASSCODE\"].isin([\"22010701\", \"22010702\"])), \"股票型(子类)\"] = \"被动指数型基金\"\n",
"df.loc[(~flag) & (df[\"CLASSCODE\"].isin([\"22010703\", \"22010704\"])), \"股票型(子类)\"] = \"增强指数型基金\"\n",
"df.loc[(~flag) & (pd.isnull(df[\"股票型(子类)\"])), \"股票型(子类)\"] = \"普通股票型基金\"\n",
"df = df.sort_values(\"SECURITYID\").dropna(subset=[\"股票型(子类)\"])"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 12, "execution_count": 8,
"id": "3a20a243-ebe0-4410-a3e8-3363e1e793e2", "id": "a42b357e-6b87-424b-9ca9-4ce60904b66b",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
...@@ -315,462 +264,86 @@ ...@@ -315,462 +264,86 @@
" <tr style=\"text-align: right;\">\n", " <tr style=\"text-align: right;\">\n",
" <th></th>\n", " <th></th>\n",
" <th>SECURITYID</th>\n", " <th>SECURITYID</th>\n",
" <th>FDNAME</th>\n", " <th>BEGINDATE</th>\n",
" <th>SNAMECOMP</th>\n", " <th>ENDDATE</th>\n",
" <th>FSYMBOL</th>\n", " <th>CLASSCODE</th>\n",
" <th>FDNATURE</th>\n",
" <th>INVESTSTYLE</th>\n",
" <th>L1CODE</th>\n",
" <th>L1NAME</th>\n",
" <th>L2CODE</th>\n",
" <th>L2NAME</th>\n",
" <th>L3CODE</th>\n",
" <th>L3NAME</th>\n",
" <th>EQUITYINVERTO</th>\n", " <th>EQUITYINVERTO</th>\n",
" <th>ACCNETMKTCAP</th>\n", " <th>ACCNETMKTCAP</th>\n",
" </tr>\n",
" <tr>\n",
" <th>股票型(子类)</th>\n", " <th>股票型(子类)</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n", " </tr>\n",
" </thead>\n", " </thead>\n",
" <tbody>\n", " <tbody>\n",
" <tr>\n", " <tr>\n",
" <th>0</th>\n", " <th>增强指数型基金</th>\n",
" <td>1030000030</td>\n", " <td>86</td>\n",
" <td>国泰沪深300指数证券投资基金</td>\n", " <td>86</td>\n",
" <td>国泰沪深300指数</td>\n", " <td>86</td>\n",
" <td>020011</td>\n", " <td>86</td>\n",
" <td>证券投资基金</td>\n", " <td>82</td>\n",
" <td>指数型</td>\n", " <td>86</td>\n",
" <td>1</td>\n",
" <td>股票基金</td>\n",
" <td>1.2</td>\n",
" <td>指数股票型基金</td>\n",
" <td>1.2.1</td>\n",
" <td>标准指数股票型基金</td>\n",
" <td>94.000000</td>\n",
" <td>0.0</td>\n",
" <td>被动指数型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1030000034</td>\n",
" <td>华安MSCI中国A股指数增强型证券投资基金</td>\n",
" <td>None</td>\n",
" <td>040002</td>\n",
" <td>证券投资基金</td>\n",
" <td>指数型</td>\n",
" <td>1</td>\n",
" <td>股票基金</td>\n",
" <td>1.2</td>\n",
" <td>指数股票型基金</td>\n",
" <td>1.2.2</td>\n",
" <td>增强指数股票型基金</td>\n",
" <td>94.113333</td>\n",
" <td>0.0</td>\n",
" <td>增强指数型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1030000045</td>\n",
" <td>博时裕富沪深300指数证券投资基金</td>\n",
" <td>博时沪深300指数</td>\n",
" <td>050002</td>\n",
" <td>证券投资基金</td>\n",
" <td>指数型</td>\n",
" <td>1</td>\n",
" <td>股票基金</td>\n",
" <td>1.2</td>\n",
" <td>指数股票型基金</td>\n",
" <td>1.2.1</td>\n",
" <td>标准指数股票型基金</td>\n",
" <td>93.666667</td>\n",
" <td>0.0</td>\n",
" <td>被动指数型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1030000096</td>\n",
" <td>易方达上证50指数增强型证券投资基金</td>\n",
" <td>易方达上证50增强</td>\n",
" <td>110003</td>\n",
" <td>证券投资基金</td>\n",
" <td>指数型</td>\n",
" <td>1</td>\n",
" <td>股票基金</td>\n",
" <td>1.2</td>\n",
" <td>指数股票型基金</td>\n",
" <td>1.2.2</td>\n",
" <td>增强指数股票型基金</td>\n",
" <td>92.616667</td>\n",
" <td>0.0</td>\n",
" <td>增强指数型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>551</th>\n",
" <td>1030000136</td>\n",
" <td>融通深证100指数证券投资基金</td>\n",
" <td>融通深证100指数</td>\n",
" <td>161604</td>\n",
" <td>证券投资基金</td>\n",
" <td>指数型</td>\n",
" <td>1</td>\n",
" <td>股票基金</td>\n",
" <td>1.2</td>\n",
" <td>指数股票型基金</td>\n",
" <td>1.2.2</td>\n",
" <td>增强指数股票型基金</td>\n",
" <td>94.809167</td>\n",
" <td>0.0</td>\n",
" <td>增强指数型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>575</th>\n",
" <td>1030000149</td>\n",
" <td>泰达宏利首选企业股票型证券投资基金</td>\n",
" <td>None</td>\n",
" <td>162208</td>\n",
" <td>证券投资基金</td>\n",
" <td>增值型</td>\n",
" <td>1</td>\n",
" <td>股票基金</td>\n",
" <td>1.1</td>\n",
" <td>标准股票型基金</td>\n",
" <td>1.1.1</td>\n",
" <td>标准股票型基金</td>\n",
" <td>93.595000</td>\n",
" <td>0.0</td>\n",
" <td>普通股票型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>559</th>\n",
" <td>1030000159</td>\n",
" <td>银华-道琼斯88精选证券投资基金</td>\n",
" <td>None</td>\n",
" <td>180003</td>\n",
" <td>证券投资基金</td>\n",
" <td>指数型</td>\n",
" <td>1</td>\n",
" <td>股票基金</td>\n",
" <td>1.2</td>\n",
" <td>指数股票型基金</td>\n",
" <td>1.2.2</td>\n",
" <td>增强指数股票型基金</td>\n",
" <td>88.701667</td>\n",
" <td>0.0</td>\n",
" <td>增强指数型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>572</th>\n",
" <td>1030000168</td>\n",
" <td>长城久泰沪深300指数证券投资基金</td>\n",
" <td>长城久泰沪深300指数</td>\n",
" <td>200002</td>\n",
" <td>证券投资基金</td>\n",
" <td>指数型</td>\n",
" <td>1</td>\n",
" <td>股票基金</td>\n",
" <td>1.2</td>\n",
" <td>指数股票型基金</td>\n",
" <td>1.2.2</td>\n",
" <td>增强指数股票型基金</td>\n",
" <td>94.536667</td>\n",
" <td>0.0</td>\n",
" <td>增强指数型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>714</th>\n",
" <td>1030000245</td>\n",
" <td>申万菱信沪深300指数增强型证券投资基金</td>\n",
" <td>申万菱信沪深300指数增强</td>\n",
" <td>310318</td>\n",
" <td>证券投资基金</td>\n",
" <td>指数型</td>\n",
" <td>1</td>\n",
" <td>股票基金</td>\n",
" <td>1.2</td>\n",
" <td>指数股票型基金</td>\n",
" <td>1.2.2</td>\n",
" <td>增强指数股票型基金</td>\n",
" <td>91.016667</td>\n",
" <td>0.0</td>\n",
" <td>增强指数型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>642</th>\n",
" <td>1030000258</td>\n",
" <td>兴全全球视野股票型证券投资基金</td>\n",
" <td>None</td>\n",
" <td>340006</td>\n",
" <td>证券投资基金</td>\n",
" <td>成长型</td>\n",
" <td>1</td>\n",
" <td>股票基金</td>\n",
" <td>1.1</td>\n",
" <td>标准股票型基金</td>\n",
" <td>1.1.1</td>\n",
" <td>标准股票型基金</td>\n",
" <td>89.285000</td>\n",
" <td>0.0</td>\n",
" <td>普通股票型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>699</th>\n",
" <td>1030000264</td>\n",
" <td>光大保德信量化核心证券投资基金</td>\n",
" <td>None</td>\n",
" <td>360001</td>\n",
" <td>证券投资基金</td>\n",
" <td>稳健成长型</td>\n",
" <td>1</td>\n",
" <td>股票基金</td>\n",
" <td>1.1</td>\n",
" <td>标准股票型基金</td>\n",
" <td>1.1.1</td>\n",
" <td>标准股票型基金</td>\n",
" <td>91.493333</td>\n",
" <td>0.0</td>\n",
" <td>普通股票型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>458</th>\n",
" <td>1030000340</td>\n",
" <td>长盛中证100指数证券投资基金</td>\n",
" <td>None</td>\n",
" <td>519100</td>\n",
" <td>证券投资基金</td>\n",
" <td>指数型</td>\n",
" <td>1</td>\n",
" <td>股票基金</td>\n",
" <td>1.2</td>\n",
" <td>指数股票型基金</td>\n",
" <td>1.2.1</td>\n",
" <td>标准指数股票型基金</td>\n",
" <td>94.151667</td>\n",
" <td>0.0</td>\n",
" <td>被动指数型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>581</th>\n",
" <td>1030000342</td>\n",
" <td>万家180指数证券投资基金</td>\n",
" <td>None</td>\n",
" <td>519180</td>\n",
" <td>证券投资基金</td>\n",
" <td>指数型</td>\n",
" <td>1</td>\n",
" <td>股票基金</td>\n",
" <td>1.2</td>\n",
" <td>指数股票型基金</td>\n",
" <td>1.2.1</td>\n",
" <td>标准指数股票型基金</td>\n",
" <td>94.815000</td>\n",
" <td>0.0</td>\n",
" <td>被动指数型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>446</th>\n",
" <td>1030000345</td>\n",
" <td>大成沪深300指数证券投资基金</td>\n",
" <td>大成沪深300指数</td>\n",
" <td>519300</td>\n",
" <td>证券投资基金</td>\n",
" <td>指数型</td>\n",
" <td>1</td>\n",
" <td>股票基金</td>\n",
" <td>1.2</td>\n",
" <td>指数股票型基金</td>\n",
" <td>1.2.1</td>\n",
" <td>标准指数股票型基金</td>\n",
" <td>92.999167</td>\n",
" <td>0.0</td>\n",
" <td>被动指数型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1030000540</td>\n",
" <td>富国中证红利指数增强型证券投资基金</td>\n",
" <td>富国中证红利指数增强</td>\n",
" <td>100032</td>\n",
" <td>证券投资基金</td>\n",
" <td>指数型</td>\n",
" <td>1</td>\n",
" <td>股票基金</td>\n",
" <td>1.2</td>\n",
" <td>指数股票型基金</td>\n",
" <td>1.2.2</td>\n",
" <td>增强指数股票型基金</td>\n",
" <td>91.775833</td>\n",
" <td>0.0</td>\n",
" <td>增强指数型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>754</th>\n",
" <td>1030000560</td>\n",
" <td>工银瑞信沪深300指数证券投资基金</td>\n",
" <td>工银沪深300指数</td>\n",
" <td>481009</td>\n",
" <td>证券投资基金</td>\n",
" <td>指数型</td>\n",
" <td>1</td>\n",
" <td>股票基金</td>\n",
" <td>1.2</td>\n",
" <td>指数股票型基金</td>\n",
" <td>1.2.1</td>\n",
" <td>标准指数股票型基金</td>\n",
" <td>94.341667</td>\n",
" <td>0.0</td>\n",
" <td>被动指数型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>818</th>\n",
" <td>1030000628</td>\n",
" <td>汇丰晋信大盘股票型证券投资基金</td>\n",
" <td>汇丰晋信大盘股票</td>\n",
" <td>540006</td>\n",
" <td>证券投资基金</td>\n",
" <td>稳健成长型</td>\n",
" <td>1</td>\n",
" <td>股票基金</td>\n",
" <td>1.1</td>\n",
" <td>标准股票型基金</td>\n",
" <td>1.1.1</td>\n",
" <td>标准股票型基金</td>\n",
" <td>93.045833</td>\n",
" <td>0.0</td>\n",
" <td>普通股票型基金</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>741</th>\n", " <th>普通股票型基金</th>\n",
" <td>1030000633</td>\n", " <td>821</td>\n",
" <td>汇添富上证综合指数证券投资基金</td>\n", " <td>821</td>\n",
" <td>None</td>\n", " <td>821</td>\n",
" <td>470007</td>\n", " <td>821</td>\n",
" <td>证券投资基金</td>\n", " <td>780</td>\n",
" <td>指数型</td>\n", " <td>821</td>\n",
" <td>1</td>\n",
" <td>股票基金</td>\n",
" <td>1.2</td>\n",
" <td>指数股票型基金</td>\n",
" <td>1.2.1</td>\n",
" <td>标准指数股票型基金</td>\n",
" <td>94.299167</td>\n",
" <td>0.0</td>\n",
" <td>被动指数型基金</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>724</th>\n", " <th>港股通股票型基金</th>\n",
" <td>1030000667</td>\n", " <td>36</td>\n",
" <td>中银中证100指数增强型证券投资基金</td>\n", " <td>36</td>\n",
" <td>None</td>\n", " <td>36</td>\n",
" <td>163808</td>\n", " <td>36</td>\n",
" <td>证券投资基金</td>\n", " <td>36</td>\n",
" <td>指数型</td>\n", " <td>36</td>\n",
" <td>1</td>\n",
" <td>股票基金</td>\n",
" <td>1.2</td>\n",
" <td>指数股票型基金</td>\n",
" <td>1.2.2</td>\n",
" <td>增强指数股票型基金</td>\n",
" <td>92.773333</td>\n",
" <td>0.0</td>\n",
" <td>增强指数型基金</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>705</th>\n", " <th>被动指数型基金</th>\n",
" <td>1030000670</td>\n", " <td>286</td>\n",
" <td>富兰克林国海沪深300指数增强型证券投资基金</td>\n", " <td>286</td>\n",
" <td>None</td>\n", " <td>286</td>\n",
" <td>450008</td>\n", " <td>286</td>\n",
" <td>证券投资基金</td>\n", " <td>271</td>\n",
" <td>指数型</td>\n", " <td>286</td>\n",
" <td>1</td>\n",
" <td>股票基金</td>\n",
" <td>1.2</td>\n",
" <td>指数股票型基金</td>\n",
" <td>1.2.2</td>\n",
" <td>增强指数股票型基金</td>\n",
" <td>92.531667</td>\n",
" <td>0.0</td>\n",
" <td>增强指数型基金</td>\n",
" </tr>\n", " </tr>\n",
" </tbody>\n", " </tbody>\n",
"</table>\n", "</table>\n",
"</div>" "</div>"
], ],
"text/plain": [ "text/plain": [
" SECURITYID FDNAME SNAMECOMP FSYMBOL FDNATURE \\\n", " SECURITYID BEGINDATE ENDDATE CLASSCODE EQUITYINVERTO \\\n",
"0 1030000030 国泰沪深300指数证券投资基金 国泰沪深300指数 020011 证券投资基金 \n", "股票型(子类) \n",
"1 1030000034 华安MSCI中国A股指数增强型证券投资基金 None 040002 证券投资基金 \n", "增强指数型基金 86 86 86 86 82 \n",
"2 1030000045 博时裕富沪深300指数证券投资基金 博时沪深300指数 050002 证券投资基金 \n", "普通股票型基金 821 821 821 821 780 \n",
"3 1030000096 易方达上证50指数增强型证券投资基金 易方达上证50增强 110003 证券投资基金 \n", "港股通股票型基金 36 36 36 36 36 \n",
"551 1030000136 融通深证100指数证券投资基金 融通深证100指数 161604 证券投资基金 \n", "被动指数型基金 286 286 286 286 271 \n",
"575 1030000149 泰达宏利首选企业股票型证券投资基金 None 162208 证券投资基金 \n",
"559 1030000159 银华-道琼斯88精选证券投资基金 None 180003 证券投资基金 \n",
"572 1030000168 长城久泰沪深300指数证券投资基金 长城久泰沪深300指数 200002 证券投资基金 \n",
"714 1030000245 申万菱信沪深300指数增强型证券投资基金 申万菱信沪深300指数增强 310318 证券投资基金 \n",
"642 1030000258 兴全全球视野股票型证券投资基金 None 340006 证券投资基金 \n",
"699 1030000264 光大保德信量化核心证券投资基金 None 360001 证券投资基金 \n",
"458 1030000340 长盛中证100指数证券投资基金 None 519100 证券投资基金 \n",
"581 1030000342 万家180指数证券投资基金 None 519180 证券投资基金 \n",
"446 1030000345 大成沪深300指数证券投资基金 大成沪深300指数 519300 证券投资基金 \n",
"4 1030000540 富国中证红利指数增强型证券投资基金 富国中证红利指数增强 100032 证券投资基金 \n",
"754 1030000560 工银瑞信沪深300指数证券投资基金 工银沪深300指数 481009 证券投资基金 \n",
"818 1030000628 汇丰晋信大盘股票型证券投资基金 汇丰晋信大盘股票 540006 证券投资基金 \n",
"741 1030000633 汇添富上证综合指数证券投资基金 None 470007 证券投资基金 \n",
"724 1030000667 中银中证100指数增强型证券投资基金 None 163808 证券投资基金 \n",
"705 1030000670 富兰克林国海沪深300指数增强型证券投资基金 None 450008 证券投资基金 \n",
"\n",
" INVESTSTYLE L1CODE L1NAME L2CODE L2NAME L3CODE L3NAME \\\n",
"0 指数型 1 股票基金 1.2 指数股票型基金 1.2.1 标准指数股票型基金 \n",
"1 指数型 1 股票基金 1.2 指数股票型基金 1.2.2 增强指数股票型基金 \n",
"2 指数型 1 股票基金 1.2 指数股票型基金 1.2.1 标准指数股票型基金 \n",
"3 指数型 1 股票基金 1.2 指数股票型基金 1.2.2 增强指数股票型基金 \n",
"551 指数型 1 股票基金 1.2 指数股票型基金 1.2.2 增强指数股票型基金 \n",
"575 增值型 1 股票基金 1.1 标准股票型基金 1.1.1 标准股票型基金 \n",
"559 指数型 1 股票基金 1.2 指数股票型基金 1.2.2 增强指数股票型基金 \n",
"572 指数型 1 股票基金 1.2 指数股票型基金 1.2.2 增强指数股票型基金 \n",
"714 指数型 1 股票基金 1.2 指数股票型基金 1.2.2 增强指数股票型基金 \n",
"642 成长型 1 股票基金 1.1 标准股票型基金 1.1.1 标准股票型基金 \n",
"699 稳健成长型 1 股票基金 1.1 标准股票型基金 1.1.1 标准股票型基金 \n",
"458 指数型 1 股票基金 1.2 指数股票型基金 1.2.1 标准指数股票型基金 \n",
"581 指数型 1 股票基金 1.2 指数股票型基金 1.2.1 标准指数股票型基金 \n",
"446 指数型 1 股票基金 1.2 指数股票型基金 1.2.1 标准指数股票型基金 \n",
"4 指数型 1 股票基金 1.2 指数股票型基金 1.2.2 增强指数股票型基金 \n",
"754 指数型 1 股票基金 1.2 指数股票型基金 1.2.1 标准指数股票型基金 \n",
"818 稳健成长型 1 股票基金 1.1 标准股票型基金 1.1.1 标准股票型基金 \n",
"741 指数型 1 股票基金 1.2 指数股票型基金 1.2.1 标准指数股票型基金 \n",
"724 指数型 1 股票基金 1.2 指数股票型基金 1.2.2 增强指数股票型基金 \n",
"705 指数型 1 股票基金 1.2 指数股票型基金 1.2.2 增强指数股票型基金 \n",
"\n", "\n",
" EQUITYINVERTO ACCNETMKTCAP 股票型(子类) \n", " ACCNETMKTCAP \n",
"0 94.000000 0.0 被动指数型基金 \n", "股票型(子类) \n",
"1 94.113333 0.0 增强指数型基金 \n", "增强指数型基金 86 \n",
"2 93.666667 0.0 被动指数型基金 \n", "普通股票型基金 821 \n",
"3 92.616667 0.0 增强指数型基金 \n", "港股通股票型基金 36 \n",
"551 94.809167 0.0 增强指数型基金 \n", "被动指数型基金 286 "
"575 93.595000 0.0 普通股票型基金 \n",
"559 88.701667 0.0 增强指数型基金 \n",
"572 94.536667 0.0 增强指数型基金 \n",
"714 91.016667 0.0 增强指数型基金 \n",
"642 89.285000 0.0 普通股票型基金 \n",
"699 91.493333 0.0 普通股票型基金 \n",
"458 94.151667 0.0 被动指数型基金 \n",
"581 94.815000 0.0 被动指数型基金 \n",
"446 92.999167 0.0 被动指数型基金 \n",
"4 91.775833 0.0 增强指数型基金 \n",
"754 94.341667 0.0 被动指数型基金 \n",
"818 93.045833 0.0 普通股票型基金 \n",
"741 94.299167 0.0 被动指数型基金 \n",
"724 92.773333 0.0 增强指数型基金 \n",
"705 92.531667 0.0 增强指数型基金 "
] ]
}, },
"execution_count": 12, "execution_count": 8,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
], ],
"source": [ "source": [
"df.groupby(" "df.groupby(\"股票型(子类)\").count()"
] ]
}, },
{ {
...@@ -783,7 +356,7 @@ ...@@ -783,7 +356,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 17, "execution_count": 9,
"id": "c9c557cf-2b92-402a-8c57-9711f42de08b", "id": "c9c557cf-2b92-402a-8c57-9711f42de08b",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
...@@ -794,15 +367,13 @@ ...@@ -794,15 +367,13 @@
" report_dates_begin = nearest_report_date(date_3yrs_ago.strftime(\"%Y%m%d\"))\n", " report_dates_begin = nearest_report_date(date_3yrs_ago.strftime(\"%Y%m%d\"))\n",
" current_date = trade_dt.strftime(\"%Y%m%d\")\n", " current_date = trade_dt.strftime(\"%Y%m%d\")\n",
" \n", " \n",
" security_ids = fd_alive_funds(current_date, 2201)\n", " security_info = fd_alive_funds(current_date, 2201)\n",
" basic_info = fd_basicinfo(security_ids, current_date)\n", " security_ids = security_info.SECURITYID.unique().tolist()\n",
" type_info = fd_typeclass(security_ids, current_date)\n",
" hkport_info = fd_hshkiport(security_ids, report_dates_begin, current_date)\n", " hkport_info = fd_hshkiport(security_ids, report_dates_begin, current_date)\n",
" hkport_info = hkport_info[hkport_info.INDUSTRYNAME == \"合计\"].groupby([\"SECURITYID\"], as_index=False)[[\"ACCNETMKTCAP\"]].mean()\n", " hkport_info = hkport_info[hkport_info.INDUSTRYNAME == \"合计\"].groupby([\"SECURITYID\"], as_index=False)[[\"ACCNETMKTCAP\"]].mean()\n",
" asset_port = fd_assetportfolio(security_ids, report_dates_begin, current_date).groupby(\"SECURITYID\", as_index=False)[[\"EQUITYINVERTO\"]].mean()\n", " asset_port = fd_assetportfolio(security_ids, report_dates_begin, current_date).groupby(\"SECURITYID\", as_index=False)[[\"EQUITYINVERTO\"]].mean()\n",
" \n", "\n",
" df = pd.merge(basic_info, type_info, on=\"SECURITYID\", how=\"inner\")\n", " df = pd.merge(security_info, asset_port, on=\"SECURITYID\", how=\"left\")\n",
" df = pd.merge(df, asset_port, on=\"SECURITYID\", how=\"left\")\n",
" df = pd.merge(df, hkport_info, on=\"SECURITYID\", how=\"left\").drop_duplicates()\n", " df = pd.merge(df, hkport_info, on=\"SECURITYID\", how=\"left\").drop_duplicates()\n",
" if \"ACCNETMKTCAP\" in df:\n", " if \"ACCNETMKTCAP\" in df:\n",
" df[\"ACCNETMKTCAP\"] = df[\"ACCNETMKTCAP\"].fillna(0)\n", " df[\"ACCNETMKTCAP\"] = df[\"ACCNETMKTCAP\"].fillna(0)\n",
...@@ -812,16 +383,15 @@ ...@@ -812,16 +383,15 @@
" flag = df[\"ACCNETMKTCAP\"] / df[\"EQUITYINVERTO\"] > 0.5\n", " flag = df[\"ACCNETMKTCAP\"] / df[\"EQUITYINVERTO\"] > 0.5\n",
" df.loc[flag, \"股票型(子类)\"] = \"港股通股票型基金\"\n", " df.loc[flag, \"股票型(子类)\"] = \"港股通股票型基金\"\n",
"\n", "\n",
" df.loc[(~flag) & (df[\"L3NAME\"].isin([\"其他行业股票型基金\", \"偏股型基金(股票上下限60%-95%)\", '标准股票型基金', '医药行业股票型基金', '封闭式标准股票型基金'])), \"股票型(子类)\"] = \"普通股票型基金\"\n", " df.loc[(~flag) & (df[\"CLASSCODE\"].isin([\"22010701\", \"22010702\"])), \"股票型(子类)\"] = \"被动指数型基金\"\n",
" df.loc[(~flag) & (df[\"L3NAME\"].isin([\"标准指数股票型基金\"])), \"股票型(子类)\"] = \"被动指数型基金\"\n", " df.loc[(~flag) & (df[\"CLASSCODE\"].isin([\"22010703\", \"22010704\"])), \"股票型(子类)\"] = \"增强指数型基金\"\n",
" df.loc[(~flag) & (df[\"L3NAME\"].isin([\"增强指数股票型基金\"])), \"股票型(子类)\"] = \"增强指数型基金\"\n", " df.loc[(~flag) & (pd.isnull(df[\"股票型(子类)\"])), \"股票型(子类)\"] = \"普通股票型基金\"\n",
" \n",
" return df.sort_values(\"SECURITYID\").dropna(subset=[\"股票型(子类)\"])" " return df.sort_values(\"SECURITYID\").dropna(subset=[\"股票型(子类)\"])"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 18, "execution_count": 10,
"id": "e38ec99c-1674-41b2-a912-767b14b5795c", "id": "e38ec99c-1674-41b2-a912-767b14b5795c",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
...@@ -829,7 +399,7 @@ ...@@ -829,7 +399,7 @@
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"Wall time: 2.51 s\n" "Wall time: 21.7 s\n"
] ]
}, },
{ {
...@@ -854,17 +424,9 @@ ...@@ -854,17 +424,9 @@
" <tr style=\"text-align: right;\">\n", " <tr style=\"text-align: right;\">\n",
" <th></th>\n", " <th></th>\n",
" <th>SECURITYID</th>\n", " <th>SECURITYID</th>\n",
" <th>FDNAME</th>\n", " <th>BEGINDATE</th>\n",
" <th>SNAMECOMP</th>\n", " <th>ENDDATE</th>\n",
" <th>FSYMBOL</th>\n", " <th>CLASSCODE</th>\n",
" <th>FDNATURE</th>\n",
" <th>INVESTSTYLE</th>\n",
" <th>L1CODE</th>\n",
" <th>L1NAME</th>\n",
" <th>L2CODE</th>\n",
" <th>L2NAME</th>\n",
" <th>L3CODE</th>\n",
" <th>L3NAME</th>\n",
" <th>EQUITYINVERTO</th>\n", " <th>EQUITYINVERTO</th>\n",
" <th>ACCNETMKTCAP</th>\n", " <th>ACCNETMKTCAP</th>\n",
" </tr>\n", " </tr>\n",
...@@ -876,113 +438,66 @@ ...@@ -876,113 +438,66 @@
" <th></th>\n", " <th></th>\n",
" <th></th>\n", " <th></th>\n",
" <th></th>\n", " <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n", " </tr>\n",
" </thead>\n", " </thead>\n",
" <tbody>\n", " <tbody>\n",
" <tr>\n", " <tr>\n",
" <th>增强指数型基金</th>\n", " <th>增强指数型基金</th>\n",
" <td>63</td>\n", " <td>86</td>\n",
" <td>63</td>\n", " <td>86</td>\n",
" <td>47</td>\n", " <td>86</td>\n",
" <td>63</td>\n", " <td>86</td>\n",
" <td>63</td>\n", " <td>82</td>\n",
" <td>63</td>\n", " <td>86</td>\n",
" <td>63</td>\n",
" <td>63</td>\n",
" <td>63</td>\n",
" <td>63</td>\n",
" <td>63</td>\n",
" <td>63</td>\n",
" <td>60</td>\n",
" <td>63</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>普通股票型基金</th>\n", " <th>普通股票型基金</th>\n",
" <td>204</td>\n", " <td>821</td>\n",
" <td>204</td>\n", " <td>821</td>\n",
" <td>70</td>\n", " <td>821</td>\n",
" <td>204</td>\n", " <td>821</td>\n",
" <td>204</td>\n", " <td>785</td>\n",
" <td>204</td>\n", " <td>821</td>\n",
" <td>204</td>\n",
" <td>204</td>\n",
" <td>204</td>\n",
" <td>204</td>\n",
" <td>204</td>\n",
" <td>204</td>\n",
" <td>204</td>\n",
" <td>204</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>港股通股票型基金</th>\n", " <th>港股通股票型基金</th>\n",
" <td>19</td>\n", " <td>36</td>\n",
" <td>19</td>\n", " <td>36</td>\n",
" <td>12</td>\n", " <td>36</td>\n",
" <td>19</td>\n", " <td>36</td>\n",
" <td>19</td>\n", " <td>36</td>\n",
" <td>19</td>\n", " <td>36</td>\n",
" <td>19</td>\n",
" <td>19</td>\n",
" <td>19</td>\n",
" <td>19</td>\n",
" <td>19</td>\n",
" <td>19</td>\n",
" <td>19</td>\n",
" <td>19</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>被动指数型基金</th>\n", " <th>被动指数型基金</th>\n",
" <td>317</td>\n", " <td>286</td>\n",
" <td>317</td>\n", " <td>286</td>\n",
" <td>194</td>\n", " <td>286</td>\n",
" <td>317</td>\n", " <td>286</td>\n",
" <td>317</td>\n", " <td>272</td>\n",
" <td>317</td>\n", " <td>286</td>\n",
" <td>317</td>\n",
" <td>317</td>\n",
" <td>317</td>\n",
" <td>317</td>\n",
" <td>317</td>\n",
" <td>317</td>\n",
" <td>309</td>\n",
" <td>317</td>\n",
" </tr>\n", " </tr>\n",
" </tbody>\n", " </tbody>\n",
"</table>\n", "</table>\n",
"</div>" "</div>"
], ],
"text/plain": [ "text/plain": [
" SECURITYID FDNAME SNAMECOMP FSYMBOL FDNATURE INVESTSTYLE \\\n", " SECURITYID BEGINDATE ENDDATE CLASSCODE EQUITYINVERTO \\\n",
"股票型(子类) \n", "股票型(子类) \n",
"增强指数型基金 63 63 47 63 63 63 \n", "增强指数型基金 86 86 86 86 82 \n",
"普通股票型基金 204 204 70 204 204 204 \n", "普通股票型基金 821 821 821 821 785 \n",
"港股通股票型基金 19 19 12 19 19 19 \n", "港股通股票型基金 36 36 36 36 36 \n",
"被动指数型基金 317 317 194 317 317 317 \n", "被动指数型基金 286 286 286 286 272 \n",
"\n",
" L1CODE L1NAME L2CODE L2NAME L3CODE L3NAME EQUITYINVERTO \\\n",
"股票型(子类) \n",
"增强指数型基金 63 63 63 63 63 63 60 \n",
"普通股票型基金 204 204 204 204 204 204 204 \n",
"港股通股票型基金 19 19 19 19 19 19 19 \n",
"被动指数型基金 317 317 317 317 317 317 309 \n",
"\n", "\n",
" ACCNETMKTCAP \n", " ACCNETMKTCAP \n",
"股票型(子类) \n", "股票型(子类) \n",
"增强指数型基金 63 \n", "增强指数型基金 86 \n",
"普通股票型基金 204 \n", "普通股票型基金 821 \n",
"港股通股票型基金 19 \n", "港股通股票型基金 36 \n",
"被动指数型基金 317 " "被动指数型基金 286 "
] ]
}, },
"execution_count": 18, "execution_count": 10,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
...@@ -1004,7 +519,7 @@ ...@@ -1004,7 +519,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 19, "execution_count": 11,
"id": "cf8394c6-c0d2-4c28-a803-7597fbebadb2", "id": "cf8394c6-c0d2-4c28-a803-7597fbebadb2",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
...@@ -1022,7 +537,7 @@ ...@@ -1022,7 +537,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 20, "execution_count": null,
"id": "66cdd0ee-91e1-42eb-9b04-f958c9286ba7", "id": "66cdd0ee-91e1-42eb-9b04-f958c9286ba7",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
...@@ -1043,21 +558,7 @@ ...@@ -1043,21 +558,7 @@
"20170731 20171031\n", "20170731 20171031\n",
"20171031 20180131\n", "20171031 20180131\n",
"20180131 20180427\n", "20180131 20180427\n",
"20180427 20180731\n", "20180427 20180731\n"
"20180731 20181031\n",
"20181031 20190131\n",
"20190131 20190430\n",
"20190430 20190731\n",
"20190731 20191031\n",
"20191031 20200123\n",
"20200123 20200430\n",
"20200430 20200731\n",
"20200731 20201030\n",
"20201030 20210129\n",
"20210129 20210430\n",
"20210430 20210730\n",
"20210730 20211029\n",
"20211029 20211109\n"
] ]
} }
], ],
...@@ -1080,7 +581,7 @@ ...@@ -1080,7 +581,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 21, "execution_count": null,
"id": "82b9db84-2b77-4311-a232-48bc03dd6d81", "id": "82b9db84-2b77-4311-a232-48bc03dd6d81",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
...@@ -1091,283 +592,10 @@ ...@@ -1091,283 +592,10 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 22, "execution_count": null,
"id": "a6f34c58-5c01-4c27-b206-60efcf35302e", "id": "a6f34c58-5c01-4c27-b206-60efcf35302e",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [],
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th>股票型(子类)</th>\n",
" <th>增强指数型基金</th>\n",
" <th>普通股票型基金</th>\n",
" <th>港股通股票型基金</th>\n",
" <th>被动指数型基金</th>\n",
" </tr>\n",
" <tr>\n",
" <th>level_0</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>20150430</th>\n",
" <td>0.373081</td>\n",
" <td>0.417971</td>\n",
" <td>0.125148</td>\n",
" <td>0.399283</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20150731</th>\n",
" <td>-0.150522</td>\n",
" <td>-0.137675</td>\n",
" <td>-0.111623</td>\n",
" <td>-0.159260</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20151030</th>\n",
" <td>-0.062868</td>\n",
" <td>-0.000603</td>\n",
" <td>-0.058962</td>\n",
" <td>-0.064701</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20160129</th>\n",
" <td>-0.154214</td>\n",
" <td>-0.172520</td>\n",
" <td>-0.100790</td>\n",
" <td>-0.177081</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20160429</th>\n",
" <td>0.088368</td>\n",
" <td>0.101418</td>\n",
" <td>0.059279</td>\n",
" <td>0.084457</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20160729</th>\n",
" <td>0.047092</td>\n",
" <td>0.055620</td>\n",
" <td>0.038617</td>\n",
" <td>0.037963</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20161031</th>\n",
" <td>0.041936</td>\n",
" <td>0.035465</td>\n",
" <td>0.041392</td>\n",
" <td>0.036679</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20170126</th>\n",
" <td>0.000413</td>\n",
" <td>-0.035301</td>\n",
" <td>0.032578</td>\n",
" <td>-0.015172</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20170428</th>\n",
" <td>0.017795</td>\n",
" <td>0.033446</td>\n",
" <td>0.079169</td>\n",
" <td>0.005582</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20170731</th>\n",
" <td>0.075612</td>\n",
" <td>0.047931</td>\n",
" <td>0.088230</td>\n",
" <td>0.049321</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20171031</th>\n",
" <td>0.064314</td>\n",
" <td>0.087960</td>\n",
" <td>0.046405</td>\n",
" <td>0.059791</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20180131</th>\n",
" <td>0.035647</td>\n",
" <td>0.000956</td>\n",
" <td>0.073874</td>\n",
" <td>-0.001129</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20180427</th>\n",
" <td>-0.090244</td>\n",
" <td>-0.054775</td>\n",
" <td>-0.085842</td>\n",
" <td>-0.071061</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20180731</th>\n",
" <td>-0.049883</td>\n",
" <td>-0.058404</td>\n",
" <td>-0.005988</td>\n",
" <td>-0.076560</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20181031</th>\n",
" <td>-0.125866</td>\n",
" <td>-0.154344</td>\n",
" <td>-0.127595</td>\n",
" <td>-0.128107</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20190131</th>\n",
" <td>0.006905</td>\n",
" <td>0.017349</td>\n",
" <td>0.041945</td>\n",
" <td>-0.004368</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20190430</th>\n",
" <td>0.227508</td>\n",
" <td>0.234833</td>\n",
" <td>0.095237</td>\n",
" <td>0.233135</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20190731</th>\n",
" <td>-0.002496</td>\n",
" <td>0.017715</td>\n",
" <td>-0.016089</td>\n",
" <td>-0.017767</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20191031</th>\n",
" <td>0.027008</td>\n",
" <td>0.072729</td>\n",
" <td>0.026100</td>\n",
" <td>0.020263</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20200123</th>\n",
" <td>0.063628</td>\n",
" <td>0.121703</td>\n",
" <td>0.042807</td>\n",
" <td>0.072575</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20200430</th>\n",
" <td>0.011756</td>\n",
" <td>0.040520</td>\n",
" <td>-0.048957</td>\n",
" <td>-0.003712</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20200731</th>\n",
" <td>0.258409</td>\n",
" <td>0.333625</td>\n",
" <td>0.198965</td>\n",
" <td>0.251960</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20201030</th>\n",
" <td>-0.002921</td>\n",
" <td>0.011518</td>\n",
" <td>-0.006524</td>\n",
" <td>-0.019254</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20210129</th>\n",
" <td>0.116040</td>\n",
" <td>0.168545</td>\n",
" <td>0.167749</td>\n",
" <td>0.095511</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20210430</th>\n",
" <td>-0.014573</td>\n",
" <td>-0.014434</td>\n",
" <td>0.007898</td>\n",
" <td>-0.015876</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20210730</th>\n",
" <td>-0.002418</td>\n",
" <td>0.081714</td>\n",
" <td>-0.054480</td>\n",
" <td>0.014684</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20211029</th>\n",
" <td>0.027797</td>\n",
" <td>0.009677</td>\n",
" <td>-0.025261</td>\n",
" <td>0.024735</td>\n",
" </tr>\n",
" <tr>\n",
" <th>20211109</th>\n",
" <td>-0.007915</td>\n",
" <td>0.002842</td>\n",
" <td>-0.015284</td>\n",
" <td>-0.001546</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
"股票型(子类) 增强指数型基金 普通股票型基金 港股通股票型基金 被动指数型基金\n",
"level_0 \n",
"20150430 0.373081 0.417971 0.125148 0.399283\n",
"20150731 -0.150522 -0.137675 -0.111623 -0.159260\n",
"20151030 -0.062868 -0.000603 -0.058962 -0.064701\n",
"20160129 -0.154214 -0.172520 -0.100790 -0.177081\n",
"20160429 0.088368 0.101418 0.059279 0.084457\n",
"20160729 0.047092 0.055620 0.038617 0.037963\n",
"20161031 0.041936 0.035465 0.041392 0.036679\n",
"20170126 0.000413 -0.035301 0.032578 -0.015172\n",
"20170428 0.017795 0.033446 0.079169 0.005582\n",
"20170731 0.075612 0.047931 0.088230 0.049321\n",
"20171031 0.064314 0.087960 0.046405 0.059791\n",
"20180131 0.035647 0.000956 0.073874 -0.001129\n",
"20180427 -0.090244 -0.054775 -0.085842 -0.071061\n",
"20180731 -0.049883 -0.058404 -0.005988 -0.076560\n",
"20181031 -0.125866 -0.154344 -0.127595 -0.128107\n",
"20190131 0.006905 0.017349 0.041945 -0.004368\n",
"20190430 0.227508 0.234833 0.095237 0.233135\n",
"20190731 -0.002496 0.017715 -0.016089 -0.017767\n",
"20191031 0.027008 0.072729 0.026100 0.020263\n",
"20200123 0.063628 0.121703 0.042807 0.072575\n",
"20200430 0.011756 0.040520 -0.048957 -0.003712\n",
"20200731 0.258409 0.333625 0.198965 0.251960\n",
"20201030 -0.002921 0.011518 -0.006524 -0.019254\n",
"20210129 0.116040 0.168545 0.167749 0.095511\n",
"20210430 -0.014573 -0.014434 0.007898 -0.015876\n",
"20210730 -0.002418 0.081714 -0.054480 0.014684\n",
"20211029 0.027797 0.009677 -0.025261 0.024735\n",
"20211109 -0.007915 0.002842 -0.015284 -0.001546"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [ "source": [
"final_report.pivot_table(index=\"level_0\", columns=\"股票型(子类)\", values=\"chg.\")" "final_report.pivot_table(index=\"level_0\", columns=\"股票型(子类)\", values=\"chg.\")"
] ]
...@@ -1397,7 +625,7 @@ ...@@ -1397,7 +625,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.8.12" "version": "3.9.7"
} }
}, },
"nbformat": 4, "nbformat": 4,
......
...@@ -44,7 +44,6 @@ ...@@ -44,7 +44,6 @@
"# 获取回溯的报告日\n", "# 获取回溯的报告日\n",
"\n", "\n",
"today = dt.datetime.today()\n", "today = dt.datetime.today()\n",
"today = dt.date(2015, 1, 30)\n",
"date_3yrs_ago = today.replace(year=today.year - 3)\n", "date_3yrs_ago = today.replace(year=today.year - 3)\n",
"report_dates_begin = nearest_report_date(date_3yrs_ago.strftime(\"%Y%m%d\"))\n", "report_dates_begin = nearest_report_date(date_3yrs_ago.strftime(\"%Y%m%d\"))\n",
"current_date = today.strftime(\"%Y%m%d\")" "current_date = today.strftime(\"%Y%m%d\")"
...@@ -52,27 +51,184 @@ ...@@ -52,27 +51,184 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 3, "execution_count": 25,
"id": "74246462-2676-4817-8c89-3a024ed8e412", "id": "74246462-2676-4817-8c89-3a024ed8e412",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [
{
"data": {
"text/plain": [
"3042"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [ "source": [
"# 获取所有目标混合型基金(清算结束日期晚于当前日)\n", "# 获取所有目标混合型基金(清算结束日期晚于当前日)\n",
"\n", "\n",
"security_ids = fd_alive_funds(report_dates_begin, 2202)" "security_info = fd_alive_funds(report_dates_begin, 2202)\n",
"\n",
"# # 去掉绝对收益型产品去量化\n",
"security_info = security_info[~((security_info.CLASSCODE.str.startswith(\"22020803\")) | (security_info.CLASSCODE.str.startswith(\"22021401\")))]\n",
"\n",
"security_ids = security_info.SECURITYID.unique().tolist()\n",
"len(security_ids)"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 4, "execution_count": 26,
"id": "c39ef461-6ff7-4afe-a684-8009c70d9e49",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>SECURITYID</th>\n",
" <th>BEGINDATE</th>\n",
" <th>ENDDATE</th>\n",
" <th>CLASSCODE</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1030000001</td>\n",
" <td>20070910</td>\n",
" <td>19000101</td>\n",
" <td>22020101</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1030000004</td>\n",
" <td>20080321</td>\n",
" <td>19000101</td>\n",
" <td>22020101</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1030000005</td>\n",
" <td>20070718</td>\n",
" <td>19000101</td>\n",
" <td>22020101</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1030000006</td>\n",
" <td>20011218</td>\n",
" <td>19000101</td>\n",
" <td>22020103</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1030000007</td>\n",
" <td>20040811</td>\n",
" <td>19000101</td>\n",
" <td>22020103</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3062</th>\n",
" <td>2030009804</td>\n",
" <td>20171218</td>\n",
" <td>19000101</td>\n",
" <td>22021301</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3063</th>\n",
" <td>2030009935</td>\n",
" <td>20180123</td>\n",
" <td>20200123</td>\n",
" <td>22022101</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3064</th>\n",
" <td>2030009999</td>\n",
" <td>20180131</td>\n",
" <td>19000101</td>\n",
" <td>22021101</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3065</th>\n",
" <td>2030010091</td>\n",
" <td>20180408</td>\n",
" <td>19000101</td>\n",
" <td>22021101</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3066</th>\n",
" <td>2030010156</td>\n",
" <td>20180322</td>\n",
" <td>19000101</td>\n",
" <td>22021301</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>3042 rows × 4 columns</p>\n",
"</div>"
],
"text/plain": [
" SECURITYID BEGINDATE ENDDATE CLASSCODE\n",
"0 1030000001 20070910 19000101 22020101\n",
"1 1030000004 20080321 19000101 22020101\n",
"2 1030000005 20070718 19000101 22020101\n",
"3 1030000006 20011218 19000101 22020103\n",
"4 1030000007 20040811 19000101 22020103\n",
"... ... ... ... ...\n",
"3062 2030009804 20171218 19000101 22021301\n",
"3063 2030009935 20180123 20200123 22022101\n",
"3064 2030009999 20180131 19000101 22021101\n",
"3065 2030010091 20180408 19000101 22021101\n",
"3066 2030010156 20180322 19000101 22021301\n",
"\n",
"[3042 rows x 4 columns]"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"security_info"
]
},
{
"cell_type": "code",
"execution_count": 27,
"id": "61270089-05d5-4396-829e-651118231b60", "id": "61270089-05d5-4396-829e-651118231b60",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"# 获取相关组合情况\n", "# 获取相关组合情况\n",
"\n", "\n",
"basic_info = fd_basicinfo(security_ids, current_date)\n",
"type_info = fd_typeclass(security_ids, current_date)\n",
"hkport_info = fd_hshkiport(security_ids, report_dates_begin, current_date)\n", "hkport_info = fd_hshkiport(security_ids, report_dates_begin, current_date)\n",
"hkport_info = hkport_info[hkport_info.INDUSTRYNAME == \"合计\"].groupby([\"SECURITYID\"], as_index=False)[[\"ACCNETMKTCAP\"]].mean()\n", "hkport_info = hkport_info[hkport_info.INDUSTRYNAME == \"合计\"].groupby([\"SECURITYID\"], as_index=False)[[\"ACCNETMKTCAP\"]].mean()\n",
"asset_port = fd_assetportfolio(security_ids, report_dates_begin, current_date).groupby(\"SECURITYID\", as_index=False)[[\"EQUITYINVERTO\"]].mean()" "asset_port = fd_assetportfolio(security_ids, report_dates_begin, current_date).groupby(\"SECURITYID\", as_index=False)[[\"EQUITYINVERTO\"]].mean()"
...@@ -80,13 +236,12 @@ ...@@ -80,13 +236,12 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 5, "execution_count": 28,
"id": "3968c35a-fa98-479b-a9e2-9cbeec4def1a", "id": "3968c35a-fa98-479b-a9e2-9cbeec4def1a",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"df = pd.merge(basic_info, type_info, on=\"SECURITYID\")\n", "df = pd.merge(security_info, asset_port, on=\"SECURITYID\", how=\"left\")\n",
"df = pd.merge(df, asset_port, on=\"SECURITYID\", how=\"left\")\n",
"df = pd.merge(df, hkport_info, on=\"SECURITYID\", how=\"left\")\n", "df = pd.merge(df, hkport_info, on=\"SECURITYID\", how=\"left\")\n",
"if \"ACCNETMKTCAP\" in df:\n", "if \"ACCNETMKTCAP\" in df:\n",
" df[\"ACCNETMKTCAP\"] = df[\"ACCNETMKTCAP\"].fillna(0)\n", " df[\"ACCNETMKTCAP\"] = df[\"ACCNETMKTCAP\"].fillna(0)\n",
...@@ -96,7 +251,7 @@ ...@@ -96,7 +251,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 6, "execution_count": 29,
"id": "73250ba3-83f4-41fe-8e61-2869f7db8662", "id": "73250ba3-83f4-41fe-8e61-2869f7db8662",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
...@@ -108,12 +263,13 @@ ...@@ -108,12 +263,13 @@
"df.loc[((~flag) & (df[\"EQUITYINVERTO\"] >= 50) & (df[\"EQUITYINVERTO\"] < 70)), \"混合型(子类)\"] = \"中高权益仓位混合型基金\"\n", "df.loc[((~flag) & (df[\"EQUITYINVERTO\"] >= 50) & (df[\"EQUITYINVERTO\"] < 70)), \"混合型(子类)\"] = \"中高权益仓位混合型基金\"\n",
"df.loc[((~flag) & (df[\"EQUITYINVERTO\"] >= 30) & (df[\"EQUITYINVERTO\"] < 50)), \"混合型(子类)\"] = \"中权益仓位混合型基金\"\n", "df.loc[((~flag) & (df[\"EQUITYINVERTO\"] >= 30) & (df[\"EQUITYINVERTO\"] < 50)), \"混合型(子类)\"] = \"中权益仓位混合型基金\"\n",
"df.loc[((~flag) & (df[\"EQUITYINVERTO\"] >= 0) & (df[\"EQUITYINVERTO\"] < 30)), \"混合型(子类)\"] = \"低权益仓位混合型基金\"\n", "df.loc[((~flag) & (df[\"EQUITYINVERTO\"] >= 0) & (df[\"EQUITYINVERTO\"] < 30)), \"混合型(子类)\"] = \"低权益仓位混合型基金\"\n",
"df.loc[((~flag) & (pd.isnull(df[\"混合型(子类)\"]))), \"混合型(子类)\"] = \"其他混合型基金\"\n",
"df = df.sort_values(\"SECURITYID\").dropna(subset=[\"混合型(子类)\"])" "df = df.sort_values(\"SECURITYID\").dropna(subset=[\"混合型(子类)\"])"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 7, "execution_count": 30,
"id": "a27e2473-ddf5-4883-bb50-6fe46914d3da", "id": "a27e2473-ddf5-4883-bb50-6fe46914d3da",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
...@@ -139,276 +295,108 @@ ...@@ -139,276 +295,108 @@
" <tr style=\"text-align: right;\">\n", " <tr style=\"text-align: right;\">\n",
" <th></th>\n", " <th></th>\n",
" <th>SECURITYID</th>\n", " <th>SECURITYID</th>\n",
" <th>FDNAME</th>\n", " <th>BEGINDATE</th>\n",
" <th>SNAMECOMP</th>\n", " <th>ENDDATE</th>\n",
" <th>FSYMBOL</th>\n", " <th>CLASSCODE</th>\n",
" <th>FDNATURE</th>\n",
" <th>INVESTSTYLE</th>\n",
" <th>L1CODE</th>\n",
" <th>L1NAME</th>\n",
" <th>L2CODE</th>\n",
" <th>L2NAME</th>\n",
" <th>L3CODE</th>\n",
" <th>L3NAME</th>\n",
" <th>EQUITYINVERTO</th>\n", " <th>EQUITYINVERTO</th>\n",
" <th>ACCNETMKTCAP</th>\n", " <th>ACCNETMKTCAP</th>\n",
" </tr>\n",
" <tr>\n",
" <th>混合型(子类)</th>\n", " <th>混合型(子类)</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n", " </tr>\n",
" </thead>\n", " </thead>\n",
" <tbody>\n", " <tbody>\n",
" <tr>\n", " <tr>\n",
" <th>0</th>\n", " <th>中权益仓位混合型基金</th>\n",
" <td>1030000001</td>\n", " <td>205</td>\n",
" <td>华夏复兴混合型证券投资基金</td>\n", " <td>205</td>\n",
" <td>None</td>\n", " <td>205</td>\n",
" <td>000031</td>\n", " <td>205</td>\n",
" <td>证券投资基金</td>\n", " <td>205</td>\n",
" <td>稳健成长型</td>\n", " <td>205</td>\n",
" <td>2</td>\n",
" <td>混合基金</td>\n",
" <td>2.1</td>\n",
" <td>偏股型基金</td>\n",
" <td>2.1.1</td>\n",
" <td>偏股型基金(股票上限95%)</td>\n",
" <td>85.680000</td>\n",
" <td>0.0</td>\n",
" <td>高权益仓位混合型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1030000001</td>\n",
" <td>华夏复兴混合型证券投资基金</td>\n",
" <td>None</td>\n",
" <td>000031</td>\n",
" <td>证券投资基金</td>\n",
" <td>稳健成长型</td>\n",
" <td>2</td>\n",
" <td>混合基金</td>\n",
" <td>2.1</td>\n",
" <td>偏股型基金</td>\n",
" <td>2.1.3</td>\n",
" <td>偏股型基金(股票上下限60%-95%)</td>\n",
" <td>85.680000</td>\n",
" <td>0.0</td>\n",
" <td>高权益仓位混合型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>274</th>\n",
" <td>1030000004</td>\n",
" <td>南方盛元红利混合型证券投资基金</td>\n",
" <td>None</td>\n",
" <td>202009</td>\n",
" <td>证券投资基金</td>\n",
" <td>稳健成长型</td>\n",
" <td>2</td>\n",
" <td>混合基金</td>\n",
" <td>2.1</td>\n",
" <td>偏股型基金</td>\n",
" <td>2.1.3</td>\n",
" <td>偏股型基金(股票上下限60%-95%)</td>\n",
" <td>88.385833</td>\n",
" <td>0.0</td>\n",
" <td>高权益仓位混合型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>273</th>\n",
" <td>1030000004</td>\n",
" <td>南方盛元红利混合型证券投资基金</td>\n",
" <td>None</td>\n",
" <td>202009</td>\n",
" <td>证券投资基金</td>\n",
" <td>稳健成长型</td>\n",
" <td>1</td>\n",
" <td>股票基金</td>\n",
" <td>1.1</td>\n",
" <td>标准股票型基金</td>\n",
" <td>1.1.1</td>\n",
" <td>标准股票型基金</td>\n",
" <td>88.385833</td>\n",
" <td>0.0</td>\n",
" <td>高权益仓位混合型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>668</th>\n",
" <td>1030000005</td>\n",
" <td>工银瑞信红利混合型证券投资基金</td>\n",
" <td>None</td>\n",
" <td>481006</td>\n",
" <td>证券投资基金</td>\n",
" <td>稳健成长型</td>\n",
" <td>2</td>\n",
" <td>混合基金</td>\n",
" <td>2.1</td>\n",
" <td>偏股型基金</td>\n",
" <td>2.1.3</td>\n",
" <td>偏股型基金(股票上下限60%-95%)</td>\n",
" <td>88.524167</td>\n",
" <td>0.0</td>\n",
" <td>高权益仓位混合型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>349</th>\n", " <th>中高权益仓位混合型基金</th>\n",
" <td>2030000280</td>\n", " <td>230</td>\n",
" <td>银华消费主题分级混合型证券投资基金</td>\n", " <td>230</td>\n",
" <td>银华消费主题混合</td>\n", " <td>230</td>\n",
" <td>150047</td>\n", " <td>230</td>\n",
" <td>证券投资基金</td>\n", " <td>230</td>\n",
" <td>稳健成长型</td>\n", " <td>230</td>\n",
" <td>1</td>\n",
" <td>股票基金</td>\n",
" <td>1.3</td>\n",
" <td>股票型分级子基金</td>\n",
" <td>1.3.1</td>\n",
" <td>股票型分级子基金(优先份额)</td>\n",
" <td>84.331667</td>\n",
" <td>0.0</td>\n",
" <td>高权益仓位混合型基金</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>350</th>\n", " <th>低权益仓位混合型基金</th>\n",
" <td>2030000281</td>\n", " <td>680</td>\n",
" <td>银华消费主题分级混合型证券投资基金</td>\n", " <td>680</td>\n",
" <td>银华消费主题混合</td>\n", " <td>680</td>\n",
" <td>150048</td>\n", " <td>680</td>\n",
" <td>证券投资基金</td>\n", " <td>680</td>\n",
" <td>稳健成长型</td>\n", " <td>680</td>\n",
" <td>1</td>\n",
" <td>股票基金</td>\n",
" <td>1.3</td>\n",
" <td>股票型分级子基金</td>\n",
" <td>1.3.2</td>\n",
" <td>股票型分级子基金(进取份额)</td>\n",
" <td>84.331667</td>\n",
" <td>0.0</td>\n",
" <td>高权益仓位混合型基金</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>358</th>\n", " <th>其他混合型基金</th>\n",
" <td>2030000302</td>\n", " <td>334</td>\n",
" <td>国投瑞银新兴产业混合型证券投资基金(LOF)</td>\n", " <td>334</td>\n",
" <td>None</td>\n", " <td>334</td>\n",
" <td>161219</td>\n", " <td>334</td>\n",
" <td>LOF</td>\n", " <td>0</td>\n",
" <td>稳健成长型</td>\n", " <td>334</td>\n",
" <td>2</td>\n",
" <td>混合基金</td>\n",
" <td>2.2</td>\n",
" <td>灵活配置型基金</td>\n",
" <td>2.2.2</td>\n",
" <td>灵活配置型基金(股票上限80%)</td>\n",
" <td>72.502500</td>\n",
" <td>0.0</td>\n",
" <td>高权益仓位混合型基金</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>721</th>\n", " <th>港股通混合型基金</th>\n",
" <td>2030000351</td>\n", " <td>31</td>\n",
" <td>中欧盛世成长分级股票型证券投资基金</td>\n", " <td>31</td>\n",
" <td>中欧盛世成长分级股票</td>\n", " <td>31</td>\n",
" <td>150071</td>\n", " <td>31</td>\n",
" <td>证券投资基金</td>\n", " <td>31</td>\n",
" <td>价值优化型</td>\n", " <td>31</td>\n",
" <td>2</td>\n",
" <td>混合基金</td>\n",
" <td>2.10</td>\n",
" <td>其他混合型基金</td>\n",
" <td>2.10.1</td>\n",
" <td>其他混合型基金</td>\n",
" <td>70.670833</td>\n",
" <td>0.0</td>\n",
" <td>高权益仓位混合型基金</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>722</th>\n", " <th>高权益仓位混合型基金</th>\n",
" <td>2030000352</td>\n", " <td>1562</td>\n",
" <td>中欧盛世成长分级股票型证券投资基金</td>\n", " <td>1562</td>\n",
" <td>中欧盛世成长分级股票</td>\n", " <td>1562</td>\n",
" <td>150072</td>\n", " <td>1562</td>\n",
" <td>证券投资基金</td>\n", " <td>1562</td>\n",
" <td>价值优化型</td>\n", " <td>1562</td>\n",
" <td>2</td>\n",
" <td>混合基金</td>\n",
" <td>2.10</td>\n",
" <td>其他混合型基金</td>\n",
" <td>2.10.1</td>\n",
" <td>其他混合型基金</td>\n",
" <td>70.670833</td>\n",
" <td>0.0</td>\n",
" <td>高权益仓位混合型基金</td>\n",
" </tr>\n", " </tr>\n",
" </tbody>\n", " </tbody>\n",
"</table>\n", "</table>\n",
"<p>808 rows × 15 columns</p>\n",
"</div>" "</div>"
], ],
"text/plain": [ "text/plain": [
" SECURITYID FDNAME SNAMECOMP FSYMBOL FDNATURE \\\n", " SECURITYID BEGINDATE ENDDATE CLASSCODE EQUITYINVERTO \\\n",
"0 1030000001 华夏复兴混合型证券投资基金 None 000031 证券投资基金 \n", "混合型(子类) \n",
"1 1030000001 华夏复兴混合型证券投资基金 None 000031 证券投资基金 \n", "中权益仓位混合型基金 205 205 205 205 205 \n",
"274 1030000004 南方盛元红利混合型证券投资基金 None 202009 证券投资基金 \n", "中高权益仓位混合型基金 230 230 230 230 230 \n",
"273 1030000004 南方盛元红利混合型证券投资基金 None 202009 证券投资基金 \n", "低权益仓位混合型基金 680 680 680 680 680 \n",
"668 1030000005 工银瑞信红利混合型证券投资基金 None 481006 证券投资基金 \n", "其他混合型基金 334 334 334 334 0 \n",
".. ... ... ... ... ... \n", "港股通混合型基金 31 31 31 31 31 \n",
"349 2030000280 银华消费主题分级混合型证券投资基金 银华消费主题混合 150047 证券投资基金 \n", "高权益仓位混合型基金 1562 1562 1562 1562 1562 \n",
"350 2030000281 银华消费主题分级混合型证券投资基金 银华消费主题混合 150048 证券投资基金 \n",
"358 2030000302 国投瑞银新兴产业混合型证券投资基金(LOF) None 161219 LOF \n",
"721 2030000351 中欧盛世成长分级股票型证券投资基金 中欧盛世成长分级股票 150071 证券投资基金 \n",
"722 2030000352 中欧盛世成长分级股票型证券投资基金 中欧盛世成长分级股票 150072 证券投资基金 \n",
"\n", "\n",
" INVESTSTYLE L1CODE L1NAME L2CODE L2NAME L3CODE L3NAME \\\n", " ACCNETMKTCAP \n",
"0 稳健成长型 2 混合基金 2.1 偏股型基金 2.1.1 偏股型基金(股票上限95%) \n", "混合型(子类) \n",
"1 稳健成长型 2 混合基金 2.1 偏股型基金 2.1.3 偏股型基金(股票上下限60%-95%) \n", "中权益仓位混合型基金 205 \n",
"274 稳健成长型 2 混合基金 2.1 偏股型基金 2.1.3 偏股型基金(股票上下限60%-95%) \n", "中高权益仓位混合型基金 230 \n",
"273 稳健成长型 1 股票基金 1.1 标准股票型基金 1.1.1 标准股票型基金 \n", "低权益仓位混合型基金 680 \n",
"668 稳健成长型 2 混合基金 2.1 偏股型基金 2.1.3 偏股型基金(股票上下限60%-95%) \n", "其他混合型基金 334 \n",
".. ... ... ... ... ... ... ... \n", "港股通混合型基金 31 \n",
"349 稳健成长型 1 股票基金 1.3 股票型分级子基金 1.3.1 股票型分级子基金(优先份额) \n", "高权益仓位混合型基金 1562 "
"350 稳健成长型 1 股票基金 1.3 股票型分级子基金 1.3.2 股票型分级子基金(进取份额) \n",
"358 稳健成长型 2 混合基金 2.2 灵活配置型基金 2.2.2 灵活配置型基金(股票上限80%) \n",
"721 价值优化型 2 混合基金 2.10 其他混合型基金 2.10.1 其他混合型基金 \n",
"722 价值优化型 2 混合基金 2.10 其他混合型基金 2.10.1 其他混合型基金 \n",
"\n",
" EQUITYINVERTO ACCNETMKTCAP 混合型(子类) \n",
"0 85.680000 0.0 高权益仓位混合型基金 \n",
"1 85.680000 0.0 高权益仓位混合型基金 \n",
"274 88.385833 0.0 高权益仓位混合型基金 \n",
"273 88.385833 0.0 高权益仓位混合型基金 \n",
"668 88.524167 0.0 高权益仓位混合型基金 \n",
".. ... ... ... \n",
"349 84.331667 0.0 高权益仓位混合型基金 \n",
"350 84.331667 0.0 高权益仓位混合型基金 \n",
"358 72.502500 0.0 高权益仓位混合型基金 \n",
"721 70.670833 0.0 高权益仓位混合型基金 \n",
"722 70.670833 0.0 高权益仓位混合型基金 \n",
"\n",
"[808 rows x 15 columns]"
] ]
}, },
"execution_count": 7, "execution_count": 30,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
], ],
"source": [ "source": [
"df" "df.groupby(\"混合型(子类)\").count()"
] ]
}, },
{ {
...@@ -432,15 +420,15 @@ ...@@ -432,15 +420,15 @@
" report_dates_begin = nearest_report_date(date_3yrs_ago.strftime(\"%Y%m%d\"))\n", " report_dates_begin = nearest_report_date(date_3yrs_ago.strftime(\"%Y%m%d\"))\n",
" current_date = trade_dt.strftime(\"%Y%m%d\")\n", " current_date = trade_dt.strftime(\"%Y%m%d\")\n",
" \n", " \n",
" security_ids = fd_alive_funds(report_dates_begin, 2202)\n", " security_info = fd_alive_funds(report_dates_begin, 2202)\n",
" basic_info = fd_basicinfo(security_ids, current_date)\n", " security_info = security_info[~((security_info.CLASSCODE.str.startswith(\"22020803\")) | (security_info.CLASSCODE.str.startswith(\"22021401\")))]\n",
" type_info = fd_typeclass(security_ids, current_date)\n", " security_ids = security_info.SECURITYID.unique().tolist()\n",
" \n",
" hkport_info = fd_hshkiport(security_ids, report_dates_begin, current_date)\n", " hkport_info = fd_hshkiport(security_ids, report_dates_begin, current_date)\n",
" hkport_info = hkport_info[hkport_info.INDUSTRYNAME == \"合计\"].groupby([\"SECURITYID\"], as_index=False)[[\"ACCNETMKTCAP\"]].mean()\n", " hkport_info = hkport_info[hkport_info.INDUSTRYNAME == \"合计\"].groupby([\"SECURITYID\"], as_index=False)[[\"ACCNETMKTCAP\"]].mean()\n",
" asset_port = fd_assetportfolio(security_ids, report_dates_begin, current_date).groupby(\"SECURITYID\", as_index=False)[[\"EQUITYINVERTO\"]].mean()\n", " asset_port = fd_assetportfolio(security_ids, report_dates_begin, current_date).groupby(\"SECURITYID\", as_index=False)[[\"EQUITYINVERTO\"]].mean()\n",
"\n", "\n",
" df = pd.merge(basic_info, type_info, on=\"SECURITYID\")\n", " df = pd.merge(security_info, asset_port, on=\"SECURITYID\", how=\"left\")\n",
" df = pd.merge(df, asset_port, on=\"SECURITYID\", how=\"left\")\n",
" df = pd.merge(df, hkport_info, on=\"SECURITYID\", how=\"left\").drop_duplicates()\n", " df = pd.merge(df, hkport_info, on=\"SECURITYID\", how=\"left\").drop_duplicates()\n",
" if \"ACCNETMKTCAP\" in df:\n", " if \"ACCNETMKTCAP\" in df:\n",
" df[\"ACCNETMKTCAP\"] = df[\"ACCNETMKTCAP\"].fillna(0)\n", " df[\"ACCNETMKTCAP\"] = df[\"ACCNETMKTCAP\"].fillna(0)\n",
...@@ -453,13 +441,14 @@ ...@@ -453,13 +441,14 @@
" df.loc[((~flag) & (df[\"EQUITYINVERTO\"] >= 50) & (df[\"EQUITYINVERTO\"] < 70)), \"混合型(子类)\"] = \"中高权益仓位混合型基金\"\n", " df.loc[((~flag) & (df[\"EQUITYINVERTO\"] >= 50) & (df[\"EQUITYINVERTO\"] < 70)), \"混合型(子类)\"] = \"中高权益仓位混合型基金\"\n",
" df.loc[((~flag) & (df[\"EQUITYINVERTO\"] >= 30) & (df[\"EQUITYINVERTO\"] < 50)), \"混合型(子类)\"] = \"中权益仓位混合型基金\"\n", " df.loc[((~flag) & (df[\"EQUITYINVERTO\"] >= 30) & (df[\"EQUITYINVERTO\"] < 50)), \"混合型(子类)\"] = \"中权益仓位混合型基金\"\n",
" df.loc[((~flag) & (df[\"EQUITYINVERTO\"] >= 0) & (df[\"EQUITYINVERTO\"] < 30)), \"混合型(子类)\"] = \"低权益仓位混合型基金\"\n", " df.loc[((~flag) & (df[\"EQUITYINVERTO\"] >= 0) & (df[\"EQUITYINVERTO\"] < 30)), \"混合型(子类)\"] = \"低权益仓位混合型基金\"\n",
" \n", " df.loc[((~flag) & (pd.isnull(df[\"混合型(子类)\"]))), \"混合型(子类)\"] = \"其他混合型基金\"\n",
"\n",
" return df.sort_values(\"SECURITYID\").dropna(subset=[\"混合型(子类)\"])" " return df.sort_values(\"SECURITYID\").dropna(subset=[\"混合型(子类)\"])"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 11, "execution_count": 13,
"id": "8ef7a124-f9c5-4afc-b35f-44571dea387e", "id": "8ef7a124-f9c5-4afc-b35f-44571dea387e",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
...@@ -467,7 +456,7 @@ ...@@ -467,7 +456,7 @@
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"Wall time: 3.78 s\n" "Wall time: 9.76 s\n"
] ]
}, },
{ {
...@@ -492,270 +481,102 @@ ...@@ -492,270 +481,102 @@
" <tr style=\"text-align: right;\">\n", " <tr style=\"text-align: right;\">\n",
" <th></th>\n", " <th></th>\n",
" <th>SECURITYID</th>\n", " <th>SECURITYID</th>\n",
" <th>FDNAME</th>\n", " <th>BEGINDATE</th>\n",
" <th>SNAMECOMP</th>\n", " <th>ENDDATE</th>\n",
" <th>FSYMBOL</th>\n", " <th>CLASSCODE</th>\n",
" <th>FDNATURE</th>\n",
" <th>INVESTSTYLE</th>\n",
" <th>L1CODE</th>\n",
" <th>L1NAME</th>\n",
" <th>L2CODE</th>\n",
" <th>L2NAME</th>\n",
" <th>L3CODE</th>\n",
" <th>L3NAME</th>\n",
" <th>EQUITYINVERTO</th>\n", " <th>EQUITYINVERTO</th>\n",
" <th>ACCNETMKTCAP</th>\n", " <th>ACCNETMKTCAP</th>\n",
" </tr>\n",
" <tr>\n",
" <th>混合型(子类)</th>\n", " <th>混合型(子类)</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n", " </tr>\n",
" </thead>\n", " </thead>\n",
" <tbody>\n", " <tbody>\n",
" <tr>\n", " <tr>\n",
" <th>0</th>\n", " <th>中权益仓位混合型基金</th>\n",
" <td>1030000001</td>\n", " <td>206</td>\n",
" <td>华夏复兴混合型证券投资基金</td>\n", " <td>206</td>\n",
" <td>None</td>\n", " <td>206</td>\n",
" <td>000031</td>\n", " <td>206</td>\n",
" <td>证券投资基金</td>\n", " <td>206</td>\n",
" <td>稳健成长型</td>\n", " <td>206</td>\n",
" <td>2</td>\n",
" <td>混合基金</td>\n",
" <td>2.1</td>\n",
" <td>偏股型基金</td>\n",
" <td>2.1.3</td>\n",
" <td>偏股型基金(股票上下限60%-95%)</td>\n",
" <td>89.665833</td>\n",
" <td>0.0</td>\n",
" <td>高权益仓位混合型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1779</th>\n",
" <td>1030000004</td>\n",
" <td>南方盛元红利混合型证券投资基金</td>\n",
" <td>None</td>\n",
" <td>202009</td>\n",
" <td>证券投资基金</td>\n",
" <td>稳健成长型</td>\n",
" <td>2</td>\n",
" <td>混合基金</td>\n",
" <td>2.1</td>\n",
" <td>偏股型基金</td>\n",
" <td>2.1.3</td>\n",
" <td>偏股型基金(股票上下限60%-95%)</td>\n",
" <td>88.608333</td>\n",
" <td>0.0</td>\n",
" <td>高权益仓位混合型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2039</th>\n",
" <td>1030000005</td>\n",
" <td>工银瑞信红利混合型证券投资基金</td>\n",
" <td>None</td>\n",
" <td>481006</td>\n",
" <td>证券投资基金</td>\n",
" <td>稳健成长型</td>\n",
" <td>2</td>\n",
" <td>混合基金</td>\n",
" <td>2.1</td>\n",
" <td>偏股型基金</td>\n",
" <td>2.1.3</td>\n",
" <td>偏股型基金(股票上下限60%-95%)</td>\n",
" <td>92.279167</td>\n",
" <td>0.0</td>\n",
" <td>高权益仓位混合型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1030000006</td>\n",
" <td>华夏成长证券投资基金</td>\n",
" <td>None</td>\n",
" <td>000001</td>\n",
" <td>证券投资基金</td>\n",
" <td>成长型</td>\n",
" <td>2</td>\n",
" <td>混合基金</td>\n",
" <td>2.1</td>\n",
" <td>偏股型基金</td>\n",
" <td>2.1.2</td>\n",
" <td>偏股型基金(股票上限80%)</td>\n",
" <td>71.650833</td>\n",
" <td>0.0</td>\n",
" <td>高权益仓位混合型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1030000007</td>\n",
" <td>华夏大盘精选证券投资基金</td>\n",
" <td>华夏大盘精选混合</td>\n",
" <td>000011</td>\n",
" <td>证券投资基金</td>\n",
" <td>增值型</td>\n",
" <td>2</td>\n",
" <td>混合基金</td>\n",
" <td>2.1</td>\n",
" <td>偏股型基金</td>\n",
" <td>2.1.1</td>\n",
" <td>偏股型基金(股票上限95%)</td>\n",
" <td>87.699167</td>\n",
" <td>0.0</td>\n",
" <td>高权益仓位混合型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>1659</th>\n", " <th>中高权益仓位混合型基金</th>\n",
" <td>2030007644</td>\n", " <td>239</td>\n",
" <td>东海祥龙灵活配置混合型证券投资基金(LOF)</td>\n", " <td>239</td>\n",
" <td>None</td>\n", " <td>239</td>\n",
" <td>168301</td>\n", " <td>239</td>\n",
" <td>LOF</td>\n", " <td>239</td>\n",
" <td>稳健成长型</td>\n", " <td>239</td>\n",
" <td>8</td>\n",
" <td>封闭式混合基金</td>\n",
" <td>8.10</td>\n",
" <td>封闭式其他混合型基金</td>\n",
" <td>8.10.1</td>\n",
" <td>封闭式其他混合型基金</td>\n",
" <td>78.950833</td>\n",
" <td>0.0</td>\n",
" <td>高权益仓位混合型基金</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>2124</th>\n", " <th>低权益仓位混合型基金</th>\n",
" <td>2030007687</td>\n", " <td>686</td>\n",
" <td>华夏磐泰混合型证券投资基金(LOF)</td>\n", " <td>686</td>\n",
" <td>华夏磐泰混合(LOF)</td>\n", " <td>686</td>\n",
" <td>160323</td>\n", " <td>686</td>\n",
" <td>LOF</td>\n", " <td>686</td>\n",
" <td>稳健成长型</td>\n", " <td>686</td>\n",
" <td>8</td>\n",
" <td>封闭式混合基金</td>\n",
" <td>8.4</td>\n",
" <td>封闭式偏债型基金</td>\n",
" <td>8.4.1</td>\n",
" <td>封闭式偏债型基金</td>\n",
" <td>21.970833</td>\n",
" <td>0.0</td>\n",
" <td>低权益仓位混合型基金</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>1670</th>\n", " <th>其他混合型基金</th>\n",
" <td>2030007999</td>\n", " <td>335</td>\n",
" <td>财通福盛多策略混合型发起式证券投资基金(LOF)</td>\n", " <td>335</td>\n",
" <td>财通福盛混合发起(LOF)</td>\n", " <td>335</td>\n",
" <td>501032</td>\n", " <td>335</td>\n",
" <td>LOF</td>\n", " <td>0</td>\n",
" <td>稳健成长型</td>\n", " <td>335</td>\n",
" <td>8</td>\n",
" <td>封闭式混合基金</td>\n",
" <td>8.10</td>\n",
" <td>封闭式其他混合型基金</td>\n",
" <td>8.10.1</td>\n",
" <td>封闭式其他混合型基金</td>\n",
" <td>56.721538</td>\n",
" <td>0.0</td>\n",
" <td>中高权益仓位混合型基金</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>2122</th>\n", " <th>港股通混合型基金</th>\n",
" <td>2030008355</td>\n", " <td>31</td>\n",
" <td>银华惠安定期开放混合型证券投资基金</td>\n", " <td>31</td>\n",
" <td>None</td>\n", " <td>31</td>\n",
" <td>501033</td>\n", " <td>31</td>\n",
" <td>LOF</td>\n", " <td>31</td>\n",
" <td>稳健成长型</td>\n", " <td>31</td>\n",
" <td>8</td>\n",
" <td>封闭式混合基金</td>\n",
" <td>8.4</td>\n",
" <td>封闭式偏债型基金</td>\n",
" <td>8.4.1</td>\n",
" <td>封闭式偏债型基金</td>\n",
" <td>3.400000</td>\n",
" <td>0.0</td>\n",
" <td>低权益仓位混合型基金</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>1496</th>\n", " <th>高权益仓位混合型基金</th>\n",
" <td>2030008785</td>\n", " <td>1570</td>\n",
" <td>华夏磐晟灵活配置混合型证券投资基金(LOF)</td>\n", " <td>1570</td>\n",
" <td>None</td>\n", " <td>1570</td>\n",
" <td>160324</td>\n", " <td>1570</td>\n",
" <td>LOF</td>\n", " <td>1570</td>\n",
" <td>稳健成长型</td>\n", " <td>1570</td>\n",
" <td>8</td>\n",
" <td>封闭式混合基金</td>\n",
" <td>8.2</td>\n",
" <td>封闭式灵活配置型基金</td>\n",
" <td>8.2.1</td>\n",
" <td>封闭式灵活配置型基金(股票上限95%)</td>\n",
" <td>86.546667</td>\n",
" <td>0.0</td>\n",
" <td>高权益仓位混合型基金</td>\n",
" </tr>\n", " </tr>\n",
" </tbody>\n", " </tbody>\n",
"</table>\n", "</table>\n",
"<p>2091 rows × 15 columns</p>\n",
"</div>" "</div>"
], ],
"text/plain": [ "text/plain": [
" SECURITYID FDNAME SNAMECOMP FSYMBOL FDNATURE \\\n", " SECURITYID BEGINDATE ENDDATE CLASSCODE EQUITYINVERTO \\\n",
"0 1030000001 华夏复兴混合型证券投资基金 None 000031 证券投资基金 \n", "混合型(子类) \n",
"1779 1030000004 南方盛元红利混合型证券投资基金 None 202009 证券投资基金 \n", "中权益仓位混合型基金 206 206 206 206 206 \n",
"2039 1030000005 工银瑞信红利混合型证券投资基金 None 481006 证券投资基金 \n", "中高权益仓位混合型基金 239 239 239 239 239 \n",
"1 1030000006 华夏成长证券投资基金 None 000001 证券投资基金 \n", "低权益仓位混合型基金 686 686 686 686 686 \n",
"2 1030000007 华夏大盘精选证券投资基金 华夏大盘精选混合 000011 证券投资基金 \n", "其他混合型基金 335 335 335 335 0 \n",
"... ... ... ... ... ... \n", "港股通混合型基金 31 31 31 31 31 \n",
"1659 2030007644 东海祥龙灵活配置混合型证券投资基金(LOF) None 168301 LOF \n", "高权益仓位混合型基金 1570 1570 1570 1570 1570 \n",
"2124 2030007687 华夏磐泰混合型证券投资基金(LOF) 华夏磐泰混合(LOF) 160323 LOF \n",
"1670 2030007999 财通福盛多策略混合型发起式证券投资基金(LOF) 财通福盛混合发起(LOF) 501032 LOF \n",
"2122 2030008355 银华惠安定期开放混合型证券投资基金 None 501033 LOF \n",
"1496 2030008785 华夏磐晟灵活配置混合型证券投资基金(LOF) None 160324 LOF \n",
"\n",
" INVESTSTYLE L1CODE L1NAME L2CODE L2NAME L3CODE \\\n",
"0 稳健成长型 2 混合基金 2.1 偏股型基金 2.1.3 \n",
"1779 稳健成长型 2 混合基金 2.1 偏股型基金 2.1.3 \n",
"2039 稳健成长型 2 混合基金 2.1 偏股型基金 2.1.3 \n",
"1 成长型 2 混合基金 2.1 偏股型基金 2.1.2 \n",
"2 增值型 2 混合基金 2.1 偏股型基金 2.1.1 \n",
"... ... ... ... ... ... ... \n",
"1659 稳健成长型 8 封闭式混合基金 8.10 封闭式其他混合型基金 8.10.1 \n",
"2124 稳健成长型 8 封闭式混合基金 8.4 封闭式偏债型基金 8.4.1 \n",
"1670 稳健成长型 8 封闭式混合基金 8.10 封闭式其他混合型基金 8.10.1 \n",
"2122 稳健成长型 8 封闭式混合基金 8.4 封闭式偏债型基金 8.4.1 \n",
"1496 稳健成长型 8 封闭式混合基金 8.2 封闭式灵活配置型基金 8.2.1 \n",
"\n", "\n",
" L3NAME EQUITYINVERTO ACCNETMKTCAP 混合型(子类) \n", " ACCNETMKTCAP \n",
"0 偏股型基金(股票上下限60%-95%) 89.665833 0.0 高权益仓位混合型基金 \n", "混合型(子类) \n",
"1779 偏股型基金(股票上下限60%-95%) 88.608333 0.0 高权益仓位混合型基金 \n", "中权益仓位混合型基金 206 \n",
"2039 偏股型基金(股票上下限60%-95%) 92.279167 0.0 高权益仓位混合型基金 \n", "中高权益仓位混合型基金 239 \n",
"1 偏股型基金(股票上限80%) 71.650833 0.0 高权益仓位混合型基金 \n", "低权益仓位混合型基金 686 \n",
"2 偏股型基金(股票上限95%) 87.699167 0.0 高权益仓位混合型基金 \n", "其他混合型基金 335 \n",
"... ... ... ... ... \n", "港股通混合型基金 31 \n",
"1659 封闭式其他混合型基金 78.950833 0.0 高权益仓位混合型基金 \n", "高权益仓位混合型基金 1570 "
"2124 封闭式偏债型基金 21.970833 0.0 低权益仓位混合型基金 \n",
"1670 封闭式其他混合型基金 56.721538 0.0 中高权益仓位混合型基金 \n",
"2122 封闭式偏债型基金 3.400000 0.0 低权益仓位混合型基金 \n",
"1496 封闭式灵活配置型基金(股票上限95%) 86.546667 0.0 高权益仓位混合型基金 \n",
"\n",
"[2091 rows x 15 columns]"
] ]
}, },
"execution_count": 11, "execution_count": 13,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
...@@ -763,7 +584,7 @@ ...@@ -763,7 +584,7 @@
"source": [ "source": [
"%%time\n", "%%time\n",
"\n", "\n",
"create_mutua_fund_info(\"20211111\")#.groupby( \"混合型(子类)\").count()" "create_mutua_fund_info(\"20220212\").groupby( \"混合型(子类)\").count()"
] ]
}, },
{ {
...@@ -777,7 +598,7 @@ ...@@ -777,7 +598,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 12, "execution_count": 14,
"id": "e6eb55c1-8e3e-4acf-a788-90e30d26623c", "id": "e6eb55c1-8e3e-4acf-a788-90e30d26623c",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
...@@ -795,7 +616,7 @@ ...@@ -795,7 +616,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 13, "execution_count": 15,
"id": "2b724151-9978-4130-8103-4eae0485c3e9", "id": "2b724151-9978-4130-8103-4eae0485c3e9",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
...@@ -853,7 +674,7 @@ ...@@ -853,7 +674,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 14, "execution_count": 16,
"id": "7c174454-776a-4089-be7b-dc3a06f1a071", "id": "7c174454-776a-4089-be7b-dc3a06f1a071",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
...@@ -864,7 +685,7 @@ ...@@ -864,7 +685,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 15, "execution_count": 17,
"id": "a8f023ed-d9ce-4d0d-9efc-a3f76c0c434e", "id": "a8f023ed-d9ce-4d0d-9efc-a3f76c0c434e",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
...@@ -892,6 +713,7 @@ ...@@ -892,6 +713,7 @@
" <th>中权益仓位混合型基金</th>\n", " <th>中权益仓位混合型基金</th>\n",
" <th>中高权益仓位混合型基金</th>\n", " <th>中高权益仓位混合型基金</th>\n",
" <th>低权益仓位混合型基金</th>\n", " <th>低权益仓位混合型基金</th>\n",
" <th>其他混合型基金</th>\n",
" <th>港股通混合型基金</th>\n", " <th>港股通混合型基金</th>\n",
" <th>高权益仓位混合型基金</th>\n", " <th>高权益仓位混合型基金</th>\n",
" </tr>\n", " </tr>\n",
...@@ -902,78 +724,88 @@ ...@@ -902,78 +724,88 @@
" <th></th>\n", " <th></th>\n",
" <th></th>\n", " <th></th>\n",
" <th></th>\n", " <th></th>\n",
" <th></th>\n",
" </tr>\n", " </tr>\n",
" </thead>\n", " </thead>\n",
" <tbody>\n", " <tbody>\n",
" <tr>\n", " <tr>\n",
" <th>20150430</th>\n", " <th>20150430</th>\n",
" <td>0.158706</td>\n", " <td>0.152468</td>\n",
" <td>0.343851</td>\n", " <td>0.351476</td>\n",
" <td>0.104259</td>\n", " <td>0.106609</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n", " <td>NaN</td>\n",
" <td>0.433357</td>\n", " <td>0.427369</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20150731</th>\n", " <th>20150731</th>\n",
" <td>-0.035837</td>\n", " <td>-0.041426</td>\n",
" <td>-0.070910</td>\n", " <td>-0.073076</td>\n",
" <td>0.003793</td>\n", " <td>-0.000316</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n", " <td>NaN</td>\n",
" <td>-0.121854</td>\n", " <td>-0.121864</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20151030</th>\n", " <th>20151030</th>\n",
" <td>-0.000123</td>\n", " <td>-0.000123</td>\n",
" <td>0.005830</td>\n", " <td>0.005830</td>\n",
" <td>0.001074</td>\n", " <td>0.001063</td>\n",
" <td>NaN</td>\n", " <td>NaN</td>\n",
" <td>-0.001477</td>\n", " <td>NaN</td>\n",
" <td>-0.001222</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20160129</th>\n", " <th>20160129</th>\n",
" <td>-0.069494</td>\n", " <td>-0.069494</td>\n",
" <td>-0.119268</td>\n", " <td>-0.119268</td>\n",
" <td>-0.016718</td>\n", " <td>-0.018003</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n", " <td>NaN</td>\n",
" <td>-0.164333</td>\n", " <td>-0.164352</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20160429</th>\n", " <th>20160429</th>\n",
" <td>0.049689</td>\n", " <td>0.049689</td>\n",
" <td>0.073115</td>\n", " <td>0.073115</td>\n",
" <td>0.013842</td>\n", " <td>0.013377</td>\n",
" <td>NaN</td>\n", " <td>NaN</td>\n",
" <td>0.096569</td>\n", " <td>NaN</td>\n",
" <td>0.096501</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20160729</th>\n", " <th>20160729</th>\n",
" <td>0.028211</td>\n", " <td>0.028211</td>\n",
" <td>0.033912</td>\n", " <td>0.033912</td>\n",
" <td>0.016797</td>\n", " <td>0.017215</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n", " <td>NaN</td>\n",
" <td>0.041873</td>\n", " <td>0.041731</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20161031</th>\n", " <th>20161031</th>\n",
" <td>0.026168</td>\n", " <td>0.026168</td>\n",
" <td>0.022893</td>\n", " <td>0.022893</td>\n",
" <td>0.012184</td>\n", " <td>0.011616</td>\n",
" <td>NaN</td>\n", " <td>NaN</td>\n",
" <td>0.027644</td>\n", " <td>NaN</td>\n",
" <td>0.027569</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20170126</th>\n", " <th>20170126</th>\n",
" <td>-0.027615</td>\n", " <td>-0.027615</td>\n",
" <td>-0.026839</td>\n", " <td>-0.026839</td>\n",
" <td>-0.007877</td>\n", " <td>-0.007606</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n", " <td>NaN</td>\n",
" <td>-0.043081</td>\n", " <td>-0.043224</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20170428</th>\n", " <th>20170428</th>\n",
" <td>0.008647</td>\n", " <td>0.008647</td>\n",
" <td>0.033472</td>\n", " <td>0.033472</td>\n",
" <td>0.007420</td>\n", " <td>0.007449</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n", " <td>NaN</td>\n",
" <td>0.033880</td>\n", " <td>0.033880</td>\n",
" </tr>\n", " </tr>\n",
...@@ -981,7 +813,8 @@ ...@@ -981,7 +813,8 @@
" <th>20170731</th>\n", " <th>20170731</th>\n",
" <td>0.031883</td>\n", " <td>0.031883</td>\n",
" <td>0.033564</td>\n", " <td>0.033564</td>\n",
" <td>0.021043</td>\n", " <td>0.020988</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n", " <td>NaN</td>\n",
" <td>0.038220</td>\n", " <td>0.038220</td>\n",
" </tr>\n", " </tr>\n",
...@@ -989,184 +822,202 @@ ...@@ -989,184 +822,202 @@
" <th>20171031</th>\n", " <th>20171031</th>\n",
" <td>0.048306</td>\n", " <td>0.048306</td>\n",
" <td>0.077381</td>\n", " <td>0.077381</td>\n",
" <td>0.024545</td>\n", " <td>0.024287</td>\n",
" <td>0.002929</td>\n",
" <td>NaN</td>\n", " <td>NaN</td>\n",
" <td>0.089232</td>\n", " <td>0.089281</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20180131</th>\n", " <th>20180131</th>\n",
" <td>0.021488</td>\n", " <td>0.021488</td>\n",
" <td>0.021337</td>\n", " <td>0.021337</td>\n",
" <td>0.017642</td>\n", " <td>0.017436</td>\n",
" <td>NaN</td>\n",
" <td>NaN</td>\n", " <td>NaN</td>\n",
" <td>0.002692</td>\n", " <td>0.002879</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20180427</th>\n", " <th>20180427</th>\n",
" <td>-0.056714</td>\n", " <td>-0.056714</td>\n",
" <td>-0.055376</td>\n", " <td>-0.055376</td>\n",
" <td>-0.019904</td>\n", " <td>-0.019819</td>\n",
" <td>NaN</td>\n",
" <td>-0.076295</td>\n", " <td>-0.076295</td>\n",
" <td>-0.061909</td>\n", " <td>-0.061868</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20180731</th>\n", " <th>20180731</th>\n",
" <td>-0.030961</td>\n", " <td>-0.030961</td>\n",
" <td>-0.037969</td>\n", " <td>-0.037969</td>\n",
" <td>-0.004138</td>\n", " <td>-0.004135</td>\n",
" <td>NaN</td>\n",
" <td>0.013507</td>\n", " <td>0.013507</td>\n",
" <td>-0.053051</td>\n", " <td>-0.052899</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20181031</th>\n", " <th>20181031</th>\n",
" <td>-0.090266</td>\n", " <td>-0.090266</td>\n",
" <td>-0.115204</td>\n", " <td>-0.115204</td>\n",
" <td>-0.022268</td>\n", " <td>-0.022297</td>\n",
" <td>NaN</td>\n",
" <td>-0.107380</td>\n", " <td>-0.107380</td>\n",
" <td>-0.146268</td>\n", " <td>-0.146432</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20190131</th>\n", " <th>20190131</th>\n",
" <td>0.013078</td>\n", " <td>0.013078</td>\n",
" <td>0.010902</td>\n", " <td>0.010902</td>\n",
" <td>0.015465</td>\n", " <td>0.015357</td>\n",
" <td>NaN</td>\n",
" <td>0.022036</td>\n", " <td>0.022036</td>\n",
" <td>0.012453</td>\n", " <td>0.012548</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20190430</th>\n", " <th>20190430</th>\n",
" <td>0.105354</td>\n", " <td>0.105354</td>\n",
" <td>0.178440</td>\n", " <td>0.178440</td>\n",
" <td>0.042897</td>\n", " <td>0.042765</td>\n",
" <td>0.005341</td>\n",
" <td>0.149138</td>\n", " <td>0.149138</td>\n",
" <td>0.218401</td>\n", " <td>0.218195</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20190731</th>\n", " <th>20190731</th>\n",
" <td>0.017448</td>\n", " <td>0.017448</td>\n",
" <td>0.016056</td>\n", " <td>0.016056</td>\n",
" <td>0.023025</td>\n", " <td>0.022984</td>\n",
" <td>0.015004</td>\n",
" <td>-0.020537</td>\n", " <td>-0.020537</td>\n",
" <td>0.016475</td>\n", " <td>0.016384</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20191031</th>\n", " <th>20191031</th>\n",
" <td>0.042466</td>\n", " <td>0.042466</td>\n",
" <td>0.049618</td>\n", " <td>0.049618</td>\n",
" <td>0.017897</td>\n", " <td>0.017901</td>\n",
" <td>0.002708</td>\n",
" <td>0.039588</td>\n", " <td>0.039588</td>\n",
" <td>0.075164</td>\n", " <td>0.075066</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20200123</th>\n", " <th>20200123</th>\n",
" <td>0.063924</td>\n", " <td>0.063924</td>\n",
" <td>0.084381</td>\n", " <td>0.084381</td>\n",
" <td>0.031259</td>\n", " <td>0.031199</td>\n",
" <td>0.014047</td>\n",
" <td>0.051023</td>\n", " <td>0.051023</td>\n",
" <td>0.111122</td>\n", " <td>0.111137</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20200430</th>\n", " <th>20200430</th>\n",
" <td>0.023858</td>\n", " <td>0.023681</td>\n",
" <td>0.034774</td>\n", " <td>0.034650</td>\n",
" <td>0.021448</td>\n", " <td>0.021524</td>\n",
" <td>0.031996</td>\n",
" <td>0.004451</td>\n", " <td>0.004451</td>\n",
" <td>0.041923</td>\n", " <td>0.041476</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20200731</th>\n", " <th>20200731</th>\n",
" <td>0.144967</td>\n", " <td>0.146119</td>\n",
" <td>0.240062</td>\n", " <td>0.240978</td>\n",
" <td>0.065671</td>\n", " <td>0.066132</td>\n",
" <td>-0.012089</td>\n",
" <td>0.229331</td>\n", " <td>0.229331</td>\n",
" <td>0.314409</td>\n", " <td>0.313030</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20201030</th>\n", " <th>20201030</th>\n",
" <td>0.010279</td>\n", " <td>0.012816</td>\n",
" <td>0.006844</td>\n", " <td>0.005541</td>\n",
" <td>0.013590</td>\n", " <td>0.013900</td>\n",
" <td>0.007205</td>\n", " <td>0.002145</td>\n",
" <td>0.001557</td>\n", " <td>-0.001549</td>\n",
" <td>0.001664</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20210129</th>\n", " <th>20210129</th>\n",
" <td>0.071818</td>\n", " <td>0.075359</td>\n",
" <td>0.121549</td>\n", " <td>0.111436</td>\n",
" <td>0.038564</td>\n", " <td>0.039343</td>\n",
" <td>0.187807</td>\n", " <td>0.002360</td>\n",
" <td>0.155830</td>\n", " <td>0.176665</td>\n",
" <td>0.154486</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20210430</th>\n", " <th>20210430</th>\n",
" <td>-0.000511</td>\n", " <td>-0.001176</td>\n",
" <td>-0.014250</td>\n", " <td>-0.014671</td>\n",
" <td>0.007468</td>\n", " <td>0.007276</td>\n",
" <td>-0.019498</td>\n", " <td>0.007523</td>\n",
" <td>-0.018002</td>\n", " <td>-0.022096</td>\n",
" <td>-0.017057</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20210730</th>\n", " <th>20210730</th>\n",
" <td>0.028818</td>\n", " <td>0.024234</td>\n",
" <td>0.052795</td>\n", " <td>0.049999</td>\n",
" <td>0.016447</td>\n", " <td>0.016621</td>\n",
" <td>-0.027494</td>\n", " <td>0.023266</td>\n",
" <td>0.086252</td>\n", " <td>-0.031400</td>\n",
" <td>0.081586</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20211029</th>\n", " <th>20211029</th>\n",
" <td>0.015676</td>\n", " <td>0.013566</td>\n",
" <td>0.012289</td>\n", " <td>0.010599</td>\n",
" <td>0.014721</td>\n", " <td>0.014174</td>\n",
" <td>-0.016214</td>\n", " <td>0.007911</td>\n",
" <td>0.013209</td>\n", " <td>-0.032915</td>\n",
" <td>0.012236</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20211109</th>\n", " <th>20211109</th>\n",
" <td>-0.000245</td>\n", " <td>-0.000736</td>\n",
" <td>0.001678</td>\n", " <td>0.001592</td>\n",
" <td>0.001289</td>\n", " <td>0.001223</td>\n",
" <td>-0.017195</td>\n", " <td>0.002537</td>\n",
" <td>0.003457</td>\n", " <td>-0.024260</td>\n",
" <td>0.002683</td>\n",
" </tr>\n", " </tr>\n",
" </tbody>\n", " </tbody>\n",
"</table>\n", "</table>\n",
"</div>" "</div>"
], ],
"text/plain": [ "text/plain": [
"混合型(子类) 中权益仓位混合型基金 中高权益仓位混合型基金 低权益仓位混合型基金 港股通混合型基金 高权益仓位混合型基金\n", "混合型(子类) 中权益仓位混合型基金 中高权益仓位混合型基金 低权益仓位混合型基金 其他混合型基金 港股通混合型基金 高权益仓位混合型基金\n",
"level_0 \n", "level_0 \n",
"20150430 0.158706 0.343851 0.104259 NaN 0.433357\n", "20150430 0.152468 0.351476 0.106609 NaN NaN 0.427369\n",
"20150731 -0.035837 -0.070910 0.003793 NaN -0.121854\n", "20150731 -0.041426 -0.073076 -0.000316 NaN NaN -0.121864\n",
"20151030 -0.000123 0.005830 0.001074 NaN -0.001477\n", "20151030 -0.000123 0.005830 0.001063 NaN NaN -0.001222\n",
"20160129 -0.069494 -0.119268 -0.016718 NaN -0.164333\n", "20160129 -0.069494 -0.119268 -0.018003 NaN NaN -0.164352\n",
"20160429 0.049689 0.073115 0.013842 NaN 0.096569\n", "20160429 0.049689 0.073115 0.013377 NaN NaN 0.096501\n",
"20160729 0.028211 0.033912 0.016797 NaN 0.041873\n", "20160729 0.028211 0.033912 0.017215 NaN NaN 0.041731\n",
"20161031 0.026168 0.022893 0.012184 NaN 0.027644\n", "20161031 0.026168 0.022893 0.011616 NaN NaN 0.027569\n",
"20170126 -0.027615 -0.026839 -0.007877 NaN -0.043081\n", "20170126 -0.027615 -0.026839 -0.007606 NaN NaN -0.043224\n",
"20170428 0.008647 0.033472 0.007420 NaN 0.033880\n", "20170428 0.008647 0.033472 0.007449 NaN NaN 0.033880\n",
"20170731 0.031883 0.033564 0.021043 NaN 0.038220\n", "20170731 0.031883 0.033564 0.020988 NaN NaN 0.038220\n",
"20171031 0.048306 0.077381 0.024545 NaN 0.089232\n", "20171031 0.048306 0.077381 0.024287 0.002929 NaN 0.089281\n",
"20180131 0.021488 0.021337 0.017642 NaN 0.002692\n", "20180131 0.021488 0.021337 0.017436 NaN NaN 0.002879\n",
"20180427 -0.056714 -0.055376 -0.019904 -0.076295 -0.061909\n", "20180427 -0.056714 -0.055376 -0.019819 NaN -0.076295 -0.061868\n",
"20180731 -0.030961 -0.037969 -0.004138 0.013507 -0.053051\n", "20180731 -0.030961 -0.037969 -0.004135 NaN 0.013507 -0.052899\n",
"20181031 -0.090266 -0.115204 -0.022268 -0.107380 -0.146268\n", "20181031 -0.090266 -0.115204 -0.022297 NaN -0.107380 -0.146432\n",
"20190131 0.013078 0.010902 0.015465 0.022036 0.012453\n", "20190131 0.013078 0.010902 0.015357 NaN 0.022036 0.012548\n",
"20190430 0.105354 0.178440 0.042897 0.149138 0.218401\n", "20190430 0.105354 0.178440 0.042765 0.005341 0.149138 0.218195\n",
"20190731 0.017448 0.016056 0.023025 -0.020537 0.016475\n", "20190731 0.017448 0.016056 0.022984 0.015004 -0.020537 0.016384\n",
"20191031 0.042466 0.049618 0.017897 0.039588 0.075164\n", "20191031 0.042466 0.049618 0.017901 0.002708 0.039588 0.075066\n",
"20200123 0.063924 0.084381 0.031259 0.051023 0.111122\n", "20200123 0.063924 0.084381 0.031199 0.014047 0.051023 0.111137\n",
"20200430 0.023858 0.034774 0.021448 0.004451 0.041923\n", "20200430 0.023681 0.034650 0.021524 0.031996 0.004451 0.041476\n",
"20200731 0.144967 0.240062 0.065671 0.229331 0.314409\n", "20200731 0.146119 0.240978 0.066132 -0.012089 0.229331 0.313030\n",
"20201030 0.010279 0.006844 0.013590 0.007205 0.001557\n", "20201030 0.012816 0.005541 0.013900 0.002145 -0.001549 0.001664\n",
"20210129 0.071818 0.121549 0.038564 0.187807 0.155830\n", "20210129 0.075359 0.111436 0.039343 0.002360 0.176665 0.154486\n",
"20210430 -0.000511 -0.014250 0.007468 -0.019498 -0.018002\n", "20210430 -0.001176 -0.014671 0.007276 0.007523 -0.022096 -0.017057\n",
"20210730 0.028818 0.052795 0.016447 -0.027494 0.086252\n", "20210730 0.024234 0.049999 0.016621 0.023266 -0.031400 0.081586\n",
"20211029 0.015676 0.012289 0.014721 -0.016214 0.013209\n", "20211029 0.013566 0.010599 0.014174 0.007911 -0.032915 0.012236\n",
"20211109 -0.000245 0.001678 0.001289 -0.017195 0.003457" "20211109 -0.000736 0.001592 0.001223 0.002537 -0.024260 0.002683"
] ]
}, },
"execution_count": 15, "execution_count": 17,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
...@@ -1208,7 +1059,7 @@ ...@@ -1208,7 +1059,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.8.12" "version": "3.9.7"
} }
}, },
"nbformat": 4, "nbformat": 4,
......
...@@ -41,7 +41,7 @@ ...@@ -41,7 +41,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 4, "execution_count": 15,
"id": "07275364-e308-433e-9c3a-fe78ad8e9daa", "id": "07275364-e308-433e-9c3a-fe78ad8e9daa",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
...@@ -51,7 +51,7 @@ ...@@ -51,7 +51,7 @@
"2044" "2044"
] ]
}, },
"execution_count": 4, "execution_count": 15,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
...@@ -59,13 +59,14 @@ ...@@ -59,13 +59,14 @@
"source": [ "source": [
"# 获取所有目标债券型基金(清算结束日期晚于当前日)\n", "# 获取所有目标债券型基金(清算结束日期晚于当前日)\n",
"\n", "\n",
"security_ids = fd_alive_funds(report_dates_begin, 2203)\n", "security_info = fd_alive_funds(report_dates_begin, 2203)\n",
"security_ids = security_info.SECURITYID.unique().tolist()\n",
"len(security_ids)" "len(security_ids)"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 5, "execution_count": 65,
"id": "5049fc82-e1ee-476a-9fb6-79adedb6028e", "id": "5049fc82-e1ee-476a-9fb6-79adedb6028e",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
...@@ -78,7 +79,7 @@ ...@@ -78,7 +79,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 6, "execution_count": 66,
"id": "0c2416b1-4edb-45d9-a31a-11fb70344539", "id": "0c2416b1-4edb-45d9-a31a-11fb70344539",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
...@@ -90,67 +91,36 @@ ...@@ -90,67 +91,36 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 7, "execution_count": 67,
"id": "7810ff27-b4b0-4b30-a77a-c3e6d531e1ae", "id": "7810ff27-b4b0-4b30-a77a-c3e6d531e1ae",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"agg_port = pd.concat([last_portfolio, last_4_cov_portfolio, last_4_stk_portfolio], axis=1).reset_index()\n", "df = pd.concat([last_portfolio, last_4_cov_portfolio, last_4_stk_portfolio], axis=1).reset_index()\n",
"agg_port = pd.merge(agg_port, fd_typeclass(agg_port.SECURITYID.tolist(), current_date))\n", "df = pd.merge(security_info, df, on=[\"SECURITYID\"], how=\"left\")"
"basic_info = fd_basicinfo(agg_port.SECURITYID.tolist())\n",
"agg_port = pd.merge(agg_port, basic_info)"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 8, "execution_count": 68,
"id": "858a98ea-e17f-4b4b-be64-becb4ce0a9b9",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"array(['普通债券型基金(一级A类)', '普通债券型基金(一级B/C类)', '普通债券型基金(二级A类)',\n",
" '普通债券型基金(二级B/C类)', '中短期标准债券型基金', '普通债券型基金(可投转债A类)',\n",
" '普通债券型基金(可投转债B类)', '指数债券型基金(A类)', '长期标准债券型基金(A类)', '可转换债券型基金(A类)',\n",
" '可转换债券型基金(B/C类)', '指数债券型基金(B/C类)', '长期标准债券型基金(B/C类)',\n",
" '封闭式普通债券型基金(可投转债)(B/C类)', '短期理财债券型基金(A类)', '短期理财债券型基金(B/C类)',\n",
" '封闭式长期标准债券型基金(A类)', '封闭式长期标准债券型基金(B/C类)', '封闭式普通债券型基金(可投转债)(A类)',\n",
" '保本型基金', '封闭式普通债券型基金(一级)(A类)', '债券型分级子基金(优先份额)', '债券型分级子基金(进取份额)',\n",
" '封闭式普通债券型基金(二级)(A类)', '封闭式普通债券型基金(二级)(B/C类)', '封闭式普通债券型基金(二级)',\n",
" '封闭式债券型分级子基金(优先份额)', '封闭式债券型分级子基金(进取份额)', '灵活配置型基金(股票上限95%)(A类)'],\n",
" dtype=object)"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"agg_port.L3NAME.unique()"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "894e01ee-8f44-472f-b37a-1d23fc8c57c1", "id": "894e01ee-8f44-472f-b37a-1d23fc8c57c1",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"# 分类\n", "# 分类\n",
"agg_port.loc[(agg_port[\"BDRTO\"] >= 80) & (agg_port.L2NAME == \"短期理财债券型基金\"), \"债券型(子类)\"] = \"短期纯债型基金\"\n", "df.loc[(df[\"BDRTO\"] >= 80) & (df.CLASSCODE.str.startswith(\"220304\")), \"债券型(子类)\"] = \"短期纯债型基金\"\n",
"agg_port.loc[(agg_port[\"BDRTO\"] >= 80) & (agg_port[\"CONVBDRTO_TO_BDRTO\"] >= 80), \"债券型(子类)\"] = \"可转债基金\"\n", "df.loc[(df[\"BDRTO\"] >= 80) & (df[\"CONVBDRTO_TO_BDRTO\"] >= 80), \"债券型(子类)\"] = \"可转债基金\"\n",
"agg_port.loc[(agg_port[\"BDRTO\"] >= 80) & (agg_port[\"CONVBDRTO_TO_BDRTO\"] >= 5) & (agg_port[\"CONVBDRTO_TO_BDRTO\"] < 80) & (agg_port[\"EQUITYINVERTO\"] <= 0.1), \"债券型(子类)\"] = \"可投转债型债券基金\"\n", "df.loc[(df[\"BDRTO\"] >= 80) & (df[\"CONVBDRTO_TO_BDRTO\"] >= 5) & (df[\"CONVBDRTO_TO_BDRTO\"] < 80) & (df[\"EQUITYINVERTO\"] <= 0.1), \"债券型(子类)\"] = \"可投转债型债券基金\"\n",
"agg_port.loc[(agg_port[\"BDRTO\"] >= 80) & (agg_port[\"EQUITYINVERTO\"] >= 0.1) & (~agg_port[\"债券型(子类)\"].isin([\"可投转债型债券基金\", \"可转债基金\"])), \"债券型(子类)\"] = \"可投股票型债券基金\"\n", "df.loc[(df[\"BDRTO\"] >= 80) & (df[\"EQUITYINVERTO\"] >= 0.1) & (~df[\"债券型(子类)\"].isin([\"可投转债型债券基金\", \"可转债基金\"])), \"债券型(子类)\"] = \"可投股票型债券基金\"\n",
"agg_port.loc[(agg_port[\"BDRTO\"] >= 80) & (agg_port[\"L2NAME\"] == \"指数债券型基金\") & (~agg_port[\"债券型(子类)\"].isin([\"可投转债型债券基金\", \"可转债基金\"])), \"债券型(子类)\"] = \"被动指数型债券基金\"\n", "df.loc[(df[\"BDRTO\"] >= 80) & (df.CLASSCODE.str.startswith(\"220307\")) & (~df[\"债券型(子类)\"].isin([\"可投转债型债券基金\", \"可转债基金\"])), \"债券型(子类)\"] = \"被动指数型债券基金\"\n",
"agg_port.loc[pd.isnull(agg_port[\"债券型(子类)\"]), \"债券型(子类)\"] = \"中长期纯债型基金\"\n", "df.loc[(df[\"BDRTO\"] >= 80) & (df[\"EQUITYINVERTO\"] < 0.05) & (pd.isnull(df[\"债券型(子类)\"])), \"债券型(子类)\"] = \"中长期纯债型基金\"\n",
"agg_port = agg_port.sort_values(\"SECURITYID\").dropna(subset=[\"债券型(子类)\"])" "df.loc[pd.isnull(df[\"债券型(子类)\"]), \"债券型(子类)\"] = \"其他债券型基金\"\n",
"df = df.sort_values(\"SECURITYID\").dropna(subset=[\"债券型(子类)\"])"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 10, "execution_count": 69,
"id": "0fddaf03-8e90-474d-9584-7a5b60c3a15d", "id": "0fddaf03-8e90-474d-9584-7a5b60c3a15d",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
...@@ -176,20 +146,12 @@ ...@@ -176,20 +146,12 @@
" <tr style=\"text-align: right;\">\n", " <tr style=\"text-align: right;\">\n",
" <th></th>\n", " <th></th>\n",
" <th>SECURITYID</th>\n", " <th>SECURITYID</th>\n",
" <th>BEGINDATE</th>\n",
" <th>ENDDATE</th>\n",
" <th>CLASSCODE</th>\n",
" <th>BDRTO</th>\n", " <th>BDRTO</th>\n",
" <th>CONVBDRTO_TO_BDRTO</th>\n", " <th>CONVBDRTO_TO_BDRTO</th>\n",
" <th>EQUITYINVERTO</th>\n", " <th>EQUITYINVERTO</th>\n",
" <th>L1CODE</th>\n",
" <th>L1NAME</th>\n",
" <th>L2CODE</th>\n",
" <th>L2NAME</th>\n",
" <th>L3CODE</th>\n",
" <th>L3NAME</th>\n",
" <th>FDNAME</th>\n",
" <th>SNAMECOMP</th>\n",
" <th>FSYMBOL</th>\n",
" <th>FDNATURE</th>\n",
" <th>INVESTSTYLE</th>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>债券型(子类)</th>\n", " <th>债券型(子类)</th>\n",
...@@ -200,165 +162,112 @@ ...@@ -200,165 +162,112 @@
" <th></th>\n", " <th></th>\n",
" <th></th>\n", " <th></th>\n",
" <th></th>\n", " <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n", " </tr>\n",
" </thead>\n", " </thead>\n",
" <tbody>\n", " <tbody>\n",
" <tr>\n", " <tr>\n",
" <th>中长期纯债型基金</th>\n", " <th>中长期纯债型基金</th>\n",
" <td>792</td>\n", " <td>1018</td>\n",
" <td>792</td>\n", " <td>1018</td>\n",
" <td>779</td>\n", " <td>1018</td>\n",
" <td>783</td>\n", " <td>1018</td>\n",
" <td>792</td>\n", " <td>1018</td>\n",
" <td>792</td>\n", " <td>1014</td>\n",
" <td>792</td>\n", " <td>1018</td>\n",
" <td>792</td>\n", " </tr>\n",
" <td>792</td>\n", " <tr>\n",
" <td>792</td>\n", " <th>其他债券型基金</th>\n",
" <td>792</td>\n", " <td>282</td>\n",
" <td>565</td>\n", " <td>282</td>\n",
" <td>792</td>\n", " <td>282</td>\n",
" <td>792</td>\n", " <td>282</td>\n",
" <td>792</td>\n", " <td>130</td>\n",
" <td>76</td>\n",
" <td>89</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>可投股票型债券基金</th>\n", " <th>可投股票型债券基金</th>\n",
" <td>371</td>\n", " <td>432</td>\n",
" <td>371</td>\n", " <td>432</td>\n",
" <td>371</td>\n", " <td>432</td>\n",
" <td>371</td>\n", " <td>432</td>\n",
" <td>371</td>\n", " <td>432</td>\n",
" <td>371</td>\n", " <td>432</td>\n",
" <td>371</td>\n", " <td>432</td>\n",
" <td>371</td>\n",
" <td>371</td>\n",
" <td>371</td>\n",
" <td>371</td>\n",
" <td>322</td>\n",
" <td>371</td>\n",
" <td>371</td>\n",
" <td>371</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>可投转债型债券基金</th>\n", " <th>可投转债型债券基金</th>\n",
" <td>115</td>\n", " <td>143</td>\n",
" <td>115</td>\n", " <td>143</td>\n",
" <td>115</td>\n", " <td>143</td>\n",
" <td>115</td>\n", " <td>143</td>\n",
" <td>115</td>\n", " <td>143</td>\n",
" <td>115</td>\n", " <td>143</td>\n",
" <td>115</td>\n", " <td>143</td>\n",
" <td>115</td>\n",
" <td>115</td>\n",
" <td>115</td>\n",
" <td>115</td>\n",
" <td>98</td>\n",
" <td>115</td>\n",
" <td>115</td>\n",
" <td>115</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>可转债基金</th>\n", " <th>可转债基金</th>\n",
" <td>44</td>\n", " <td>56</td>\n",
" <td>44</td>\n", " <td>56</td>\n",
" <td>44</td>\n", " <td>56</td>\n",
" <td>44</td>\n", " <td>56</td>\n",
" <td>44</td>\n", " <td>56</td>\n",
" <td>44</td>\n", " <td>56</td>\n",
" <td>44</td>\n", " <td>56</td>\n",
" <td>44</td>\n",
" <td>44</td>\n",
" <td>44</td>\n",
" <td>44</td>\n",
" <td>36</td>\n",
" <td>44</td>\n",
" <td>44</td>\n",
" <td>44</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>短期纯债型基金</th>\n", " <th>短期纯债型基金</th>\n",
" <td>51</td>\n", " <td>63</td>\n",
" <td>51</td>\n", " <td>63</td>\n",
" <td>50</td>\n", " <td>63</td>\n",
" <td>51</td>\n", " <td>63</td>\n",
" <td>51</td>\n", " <td>63</td>\n",
" <td>51</td>\n", " <td>61</td>\n",
" <td>51</td>\n", " <td>63</td>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" <td>50</td>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>被动指数型债券基金</th>\n", " <th>被动指数型债券基金</th>\n",
" <td>15</td>\n", " <td>50</td>\n",
" <td>15</td>\n", " <td>50</td>\n",
" <td>15</td>\n", " <td>50</td>\n",
" <td>15</td>\n", " <td>50</td>\n",
" <td>15</td>\n", " <td>50</td>\n",
" <td>15</td>\n", " <td>39</td>\n",
" <td>15</td>\n", " <td>46</td>\n",
" <td>15</td>\n",
" <td>15</td>\n",
" <td>15</td>\n",
" <td>15</td>\n",
" <td>9</td>\n",
" <td>15</td>\n",
" <td>15</td>\n",
" <td>15</td>\n",
" </tr>\n", " </tr>\n",
" </tbody>\n", " </tbody>\n",
"</table>\n", "</table>\n",
"</div>" "</div>"
], ],
"text/plain": [ "text/plain": [
" SECURITYID BDRTO CONVBDRTO_TO_BDRTO EQUITYINVERTO L1CODE \\\n", " SECURITYID BEGINDATE ENDDATE CLASSCODE BDRTO \\\n",
"债券型(子类) \n", "债券型(子类) \n",
"中长期纯债型基金 792 792 779 783 792 \n", "中长期纯债型基金 1018 1018 1018 1018 1018 \n",
"可投股票型债券基金 371 371 371 371 371 \n", "其他债券型基金 282 282 282 282 130 \n",
"可投转债型债券基金 115 115 115 115 115 \n", "可投股票型债券基金 432 432 432 432 432 \n",
"可转债基金 44 44 44 44 44 \n", "可投转债型债券基金 143 143 143 143 143 \n",
"短期纯债型基金 51 51 50 51 51 \n", "可转债基金 56 56 56 56 56 \n",
"被动指数型债券基金 15 15 15 15 15 \n", "短期纯债型基金 63 63 63 63 63 \n",
"\n", "被动指数型债券基金 50 50 50 50 50 \n",
" L1NAME L2CODE L2NAME L3CODE L3NAME FDNAME SNAMECOMP FSYMBOL \\\n",
"债券型(子类) \n",
"中长期纯债型基金 792 792 792 792 792 792 565 792 \n",
"可投股票型债券基金 371 371 371 371 371 371 322 371 \n",
"可投转债型债券基金 115 115 115 115 115 115 98 115 \n",
"可转债基金 44 44 44 44 44 44 36 44 \n",
"短期纯债型基金 51 51 51 51 51 51 50 51 \n",
"被动指数型债券基金 15 15 15 15 15 15 9 15 \n",
"\n", "\n",
" FDNATURE INVESTSTYLE \n", " CONVBDRTO_TO_BDRTO EQUITYINVERTO \n",
"债券型(子类) \n", "债券型(子类) \n",
"中长期纯债型基金 792 792 \n", "中长期纯债型基金 1014 1018 \n",
"可投股票型债券基金 371 371 \n", "其他债券型基金 76 89 \n",
"可投转债型债券基金 115 115 \n", "可投股票型债券基金 432 432 \n",
"可转债基金 44 44 \n", "可投转债型债券基金 143 143 \n",
"短期纯债型基金 51 51 \n", "可转债基金 56 56 \n",
"被动指数型债券基金 15 15 " "短期纯债型基金 61 63 \n",
"被动指数型债券基金 39 46 "
] ]
}, },
"execution_count": 10, "execution_count": 69,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
], ],
"source": [ "source": [
"agg_port.groupby(\"债券型(子类)\").count()" "df.groupby(\"债券型(子类)\").count()"
] ]
}, },
{ {
...@@ -371,7 +280,7 @@ ...@@ -371,7 +280,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 17, "execution_count": 72,
"id": "1985799f-9a72-4f53-a09b-e15c738f211f", "id": "1985799f-9a72-4f53-a09b-e15c738f211f",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
...@@ -382,53 +291,32 @@ ...@@ -382,53 +291,32 @@
" report_dates_begin = nearest_report_date(date_3yrs_ago.strftime(\"%Y%m%d\"))\n", " report_dates_begin = nearest_report_date(date_3yrs_ago.strftime(\"%Y%m%d\"))\n",
" current_date = trade_dt.strftime(\"%Y%m%d\")\n", " current_date = trade_dt.strftime(\"%Y%m%d\")\n",
" \n", " \n",
" security_ids = fd_alive_funds(report_dates_begin, 2203)\n", " security_info = fd_alive_funds(report_dates_begin, 2203)\n",
" basic_info = fd_basicinfo(security_ids, current_date)\n", " security_ids = security_info.SECURITYID.unique().tolist()\n",
" type_info = fd_typeclass(security_ids, current_date)\n", " \n",
" asset_port = fd_assetportfolio(security_ids, report_dates_begin, current_date).fillna(0)\n", " asset_port = fd_assetportfolio(security_ids, report_dates_begin, current_date).fillna(0)\n",
" asset_port[\"CONVBDRTO_TO_BDRTO\"] = asset_port[\"CONVBDRTO\"] / asset_port[\"BDRTO\"] * 100\n", " asset_port[\"CONVBDRTO_TO_BDRTO\"] = asset_port[\"CONVBDRTO\"] / asset_port[\"BDRTO\"] * 100\n",
" last_portfolio = asset_port.groupby(\"SECURITYID\").last()[[\"BDRTO\"]]\n", " last_portfolio = asset_port.groupby(\"SECURITYID\").last()[[\"BDRTO\"]]\n",
" last_4_cov_portfolio = asset_port.groupby(\"SECURITYID\").rolling(window=4).mean().groupby(level=0).last()[[\"CONVBDRTO_TO_BDRTO\"]]\n", " last_4_cov_portfolio = asset_port.groupby(\"SECURITYID\").rolling(window=4).mean().groupby(level=0).last()[[\"CONVBDRTO_TO_BDRTO\"]]\n",
" last_4_stk_portfolio = asset_port.groupby(\"SECURITYID\").rolling(window=4).mean().groupby(level=0).last()[[\"EQUITYINVERTO\"]]\n", " last_4_stk_portfolio = asset_port.groupby(\"SECURITYID\").rolling(window=4).mean().groupby(level=0).last()[[\"EQUITYINVERTO\"]]\n",
"\n",
" df = pd.merge(basic_info, type_info, on=\"SECURITYID\")\n",
" df = pd.merge(df, last_portfolio, on=\"SECURITYID\", how=\"left\").drop_duplicates()\n",
" df = pd.merge(df, last_4_stk_portfolio, on=\"SECURITYID\", how=\"left\").drop_duplicates()\n",
" df = pd.merge(df, last_4_cov_portfolio, on=\"SECURITYID\", how=\"left\").drop_duplicates()\n",
" \n", " \n",
" df.loc[(df[\"BDRTO\"] >= 80) & (df.L2NAME == \"短期理财债券型基金\"), \"债券型(子类)\"] = \"短期纯债型基金\"\n", " df = pd.concat([last_portfolio, last_4_cov_portfolio, last_4_stk_portfolio], axis=1).reset_index()\n",
" df = pd.merge(security_info, df, on=[\"SECURITYID\"], how=\"left\")\n",
" \n",
" df.loc[(df[\"BDRTO\"] >= 80) & (df.CLASSCODE.str.startswith(\"220304\")), \"债券型(子类)\"] = \"短期纯债型基金\"\n",
" df.loc[(df[\"BDRTO\"] >= 80) & (df[\"CONVBDRTO_TO_BDRTO\"] >= 80), \"债券型(子类)\"] = \"可转债基金\"\n", " df.loc[(df[\"BDRTO\"] >= 80) & (df[\"CONVBDRTO_TO_BDRTO\"] >= 80), \"债券型(子类)\"] = \"可转债基金\"\n",
" df.loc[(df[\"BDRTO\"] >= 80) & (df[\"CONVBDRTO_TO_BDRTO\"] >= 5) & (df[\"CONVBDRTO_TO_BDRTO\"] < 80) & (df[\"EQUITYINVERTO\"] <= 0.1), \"债券型(子类)\"] = \"可投转债型债券基金\"\n", " df.loc[(df[\"BDRTO\"] >= 80) & (df[\"CONVBDRTO_TO_BDRTO\"] >= 5) & (df[\"CONVBDRTO_TO_BDRTO\"] < 80) & (df[\"EQUITYINVERTO\"] <= 0.1), \"债券型(子类)\"] = \"可投转债型债券基金\"\n",
" df.loc[(df[\"BDRTO\"] >= 80) & (df[\"EQUITYINVERTO\"] >= 0.1) & (~df[\"债券型(子类)\"].isin([\"可投转债型债券基金\", \"可转债基金\"])), \"债券型(子类)\"] = \"可投股票型债券基金\"\n", " df.loc[(df[\"BDRTO\"] >= 80) & (df[\"EQUITYINVERTO\"] >= 0.1) & (~df[\"债券型(子类)\"].isin([\"可投转债型债券基金\", \"可转债基金\"])), \"债券型(子类)\"] = \"可投股票型债券基金\"\n",
" df.loc[(df[\"BDRTO\"] >= 80) & (df[\"L2NAME\"] == \"指数债券型基金\") & (~df[\"债券型(子类)\"].isin([\"可投转债型债券基金\", \"可转债基金\"])), \"债券型(子类)\"] = \"被动指数型债券基金\"\n", " df.loc[(df[\"BDRTO\"] >= 80) & (df.CLASSCODE.str.startswith(\"220307\")) & (~df[\"债券型(子类)\"].isin([\"可投转债型债券基金\", \"可转债基金\"])), \"债券型(子类)\"] = \"被动指数型债券基金\"\n",
" df.loc[pd.isnull(df[\"债券型(子类)\"]), \"债券型(子类)\"] = \"中长期纯债型基金\"\n", " df.loc[(df[\"BDRTO\"] >= 80) & (df[\"EQUITYINVERTO\"] < 0.05) & (pd.isnull(df[\"债券型(子类)\"])), \"债券型(子类)\"] = \"中长期纯债型基金\"\n",
" df.loc[pd.isnull(df[\"债券型(子类)\"]), \"债券型(子类)\"] = \"其他债券型基金\"\n",
" \n", " \n",
" return df.sort_values(\"SECURITYID\").dropna(subset=[\"债券型(子类)\"])" " return df.sort_values(\"SECURITYID\").dropna(subset=[\"债券型(子类)\"])"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 18, "execution_count": 73,
"id": "992ce6ba-b2eb-4e11-b025-53bd78366ff0",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Wall time: 4.38 s\n"
]
}
],
"source": [
"%%time\n",
"\n",
"df = create_bond_fund_info(\"20211111\")#.groupby( \"债券型(子类)\")"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "514f4c0b-bd1e-430b-9c5a-721bec381dc0", "id": "514f4c0b-bd1e-430b-9c5a-721bec381dc0",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
...@@ -436,7 +324,7 @@ ...@@ -436,7 +324,7 @@
"name": "stdout", "name": "stdout",
"output_type": "stream", "output_type": "stream",
"text": [ "text": [
"Wall time: 3.86 s\n" "Wall time: 4.07 s\n"
] ]
}, },
{ {
...@@ -461,20 +349,12 @@ ...@@ -461,20 +349,12 @@
" <tr style=\"text-align: right;\">\n", " <tr style=\"text-align: right;\">\n",
" <th></th>\n", " <th></th>\n",
" <th>SECURITYID</th>\n", " <th>SECURITYID</th>\n",
" <th>FDNAME</th>\n", " <th>BEGINDATE</th>\n",
" <th>SNAMECOMP</th>\n", " <th>ENDDATE</th>\n",
" <th>FSYMBOL</th>\n", " <th>CLASSCODE</th>\n",
" <th>FDNATURE</th>\n",
" <th>INVESTSTYLE</th>\n",
" <th>L1CODE</th>\n",
" <th>L1NAME</th>\n",
" <th>L2CODE</th>\n",
" <th>L2NAME</th>\n",
" <th>L3CODE</th>\n",
" <th>L3NAME</th>\n",
" <th>BDRTO</th>\n", " <th>BDRTO</th>\n",
" <th>EQUITYINVERTO</th>\n",
" <th>CONVBDRTO_TO_BDRTO</th>\n", " <th>CONVBDRTO_TO_BDRTO</th>\n",
" <th>EQUITYINVERTO</th>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>债券型(子类)</th>\n", " <th>债券型(子类)</th>\n",
...@@ -485,159 +365,106 @@ ...@@ -485,159 +365,106 @@
" <th></th>\n", " <th></th>\n",
" <th></th>\n", " <th></th>\n",
" <th></th>\n", " <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n", " </tr>\n",
" </thead>\n", " </thead>\n",
" <tbody>\n", " <tbody>\n",
" <tr>\n", " <tr>\n",
" <th>中长期纯债型基金</th>\n", " <th>中长期纯债型基金</th>\n",
" <td>839</td>\n", " <td>1018</td>\n",
" <td>839</td>\n", " <td>1018</td>\n",
" <td>608</td>\n", " <td>1018</td>\n",
" <td>839</td>\n", " <td>1018</td>\n",
" <td>839</td>\n", " <td>1018</td>\n",
" <td>839</td>\n", " <td>1014</td>\n",
" <td>839</td>\n", " <td>1018</td>\n",
" <td>839</td>\n", " </tr>\n",
" <td>839</td>\n", " <tr>\n",
" <td>839</td>\n", " <th>其他债券型基金</th>\n",
" <td>839</td>\n", " <td>282</td>\n",
" <td>839</td>\n", " <td>282</td>\n",
" <td>826</td>\n", " <td>282</td>\n",
" <td>815</td>\n", " <td>282</td>\n",
" <td>812</td>\n", " <td>130</td>\n",
" <td>76</td>\n",
" <td>89</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>可投股票型债券基金</th>\n", " <th>可投股票型债券基金</th>\n",
" <td>386</td>\n", " <td>432</td>\n",
" <td>386</td>\n", " <td>432</td>\n",
" <td>331</td>\n", " <td>432</td>\n",
" <td>386</td>\n", " <td>432</td>\n",
" <td>386</td>\n", " <td>432</td>\n",
" <td>386</td>\n", " <td>432</td>\n",
" <td>386</td>\n", " <td>432</td>\n",
" <td>386</td>\n",
" <td>386</td>\n",
" <td>386</td>\n",
" <td>386</td>\n",
" <td>386</td>\n",
" <td>386</td>\n",
" <td>386</td>\n",
" <td>386</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>可投转债型债券基金</th>\n", " <th>可投转债型债券基金</th>\n",
" <td>102</td>\n", " <td>143</td>\n",
" <td>102</td>\n", " <td>143</td>\n",
" <td>87</td>\n", " <td>143</td>\n",
" <td>102</td>\n", " <td>143</td>\n",
" <td>102</td>\n", " <td>143</td>\n",
" <td>102</td>\n", " <td>143</td>\n",
" <td>102</td>\n", " <td>143</td>\n",
" <td>102</td>\n",
" <td>102</td>\n",
" <td>102</td>\n",
" <td>102</td>\n",
" <td>102</td>\n",
" <td>102</td>\n",
" <td>102</td>\n",
" <td>102</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>可转债基金</th>\n", " <th>可转债基金</th>\n",
" <td>39</td>\n", " <td>56</td>\n",
" <td>39</td>\n", " <td>56</td>\n",
" <td>33</td>\n", " <td>56</td>\n",
" <td>39</td>\n", " <td>56</td>\n",
" <td>39</td>\n", " <td>56</td>\n",
" <td>39</td>\n", " <td>56</td>\n",
" <td>39</td>\n", " <td>56</td>\n",
" <td>39</td>\n",
" <td>39</td>\n",
" <td>39</td>\n",
" <td>39</td>\n",
" <td>39</td>\n",
" <td>39</td>\n",
" <td>39</td>\n",
" <td>39</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>短期纯债型基金</th>\n", " <th>短期纯债型基金</th>\n",
" <td>42</td>\n", " <td>63</td>\n",
" <td>42</td>\n", " <td>63</td>\n",
" <td>41</td>\n", " <td>63</td>\n",
" <td>42</td>\n", " <td>63</td>\n",
" <td>42</td>\n", " <td>63</td>\n",
" <td>42</td>\n", " <td>61</td>\n",
" <td>42</td>\n", " <td>63</td>\n",
" <td>42</td>\n",
" <td>42</td>\n",
" <td>42</td>\n",
" <td>42</td>\n",
" <td>42</td>\n",
" <td>42</td>\n",
" <td>42</td>\n",
" <td>42</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>被动指数型债券基金</th>\n", " <th>被动指数型债券基金</th>\n",
" <td>17</td>\n", " <td>50</td>\n",
" <td>17</td>\n", " <td>50</td>\n",
" <td>11</td>\n", " <td>50</td>\n",
" <td>17</td>\n", " <td>50</td>\n",
" <td>17</td>\n", " <td>50</td>\n",
" <td>17</td>\n", " <td>39</td>\n",
" <td>17</td>\n", " <td>46</td>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" <td>17</td>\n",
" </tr>\n", " </tr>\n",
" </tbody>\n", " </tbody>\n",
"</table>\n", "</table>\n",
"</div>" "</div>"
], ],
"text/plain": [ "text/plain": [
" SECURITYID FDNAME SNAMECOMP FSYMBOL FDNATURE INVESTSTYLE \\\n", " SECURITYID BEGINDATE ENDDATE CLASSCODE BDRTO \\\n",
"债券型(子类) \n", "债券型(子类) \n",
"中长期纯债型基金 839 839 608 839 839 839 \n", "中长期纯债型基金 1018 1018 1018 1018 1018 \n",
"可投股票型债券基金 386 386 331 386 386 386 \n", "其他债券型基金 282 282 282 282 130 \n",
"可投转债型债券基金 102 102 87 102 102 102 \n", "可投股票型债券基金 432 432 432 432 432 \n",
"可转债基金 39 39 33 39 39 39 \n", "可投转债型债券基金 143 143 143 143 143 \n",
"短期纯债型基金 42 42 41 42 42 42 \n", "可转债基金 56 56 56 56 56 \n",
"被动指数型债券基金 17 17 11 17 17 17 \n", "短期纯债型基金 63 63 63 63 63 \n",
"被动指数型债券基金 50 50 50 50 50 \n",
"\n", "\n",
" L1CODE L1NAME L2CODE L2NAME L3CODE L3NAME BDRTO \\\n", " CONVBDRTO_TO_BDRTO EQUITYINVERTO \n",
"债券型(子类) \n",
"中长期纯债型基金 839 839 839 839 839 839 826 \n",
"可投股票型债券基金 386 386 386 386 386 386 386 \n",
"可投转债型债券基金 102 102 102 102 102 102 102 \n",
"可转债基金 39 39 39 39 39 39 39 \n",
"短期纯债型基金 42 42 42 42 42 42 42 \n",
"被动指数型债券基金 17 17 17 17 17 17 17 \n",
"\n",
" EQUITYINVERTO CONVBDRTO_TO_BDRTO \n",
"债券型(子类) \n", "债券型(子类) \n",
"中长期纯债型基金 815 812 \n", "中长期纯债型基金 1014 1018 \n",
"可投股票型债券基金 386 386 \n", "其他债券型基金 76 89 \n",
"可投转债型债券基金 102 102 \n", "可投股票型债券基金 432 432 \n",
"可转债基金 39 39 \n", "可投转债型债券基金 143 143 \n",
"短期纯债型基金 42 42 \n", "可转债基金 56 56 \n",
"被动指数型债券基金 17 17 " "短期纯债型基金 61 63 \n",
"被动指数型债券基金 39 46 "
] ]
}, },
"execution_count": 19, "execution_count": 73,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
...@@ -645,329 +472,7 @@ ...@@ -645,329 +472,7 @@
"source": [ "source": [
"%%time\n", "%%time\n",
"\n", "\n",
"create_bond_fund_info(\"20211111\").groupby( \"债券型(子类)\").count()" "create_bond_fund_info(\"20220212\").groupby( \"债券型(子类)\").count()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "13e11363-2e24-4a74-bd09-7b83669d4acd",
"metadata": {},
"outputs": [],
"source": [
"ddf = create_bond_fund_info(\"20211111\")"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "6c02fcff-7019-47f4-86e3-637939c9bb39",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>SECURITYID</th>\n",
" <th>FDNAME</th>\n",
" <th>SNAMECOMP</th>\n",
" <th>FSYMBOL</th>\n",
" <th>FDNATURE</th>\n",
" <th>INVESTSTYLE</th>\n",
" <th>L1CODE</th>\n",
" <th>L1NAME</th>\n",
" <th>L2CODE</th>\n",
" <th>L2NAME</th>\n",
" <th>L3CODE</th>\n",
" <th>L3NAME</th>\n",
" <th>BDRTO</th>\n",
" <th>EQUITYINVERTO</th>\n",
" <th>CONVBDRTO_TO_BDRTO</th>\n",
" <th>债券型(子类)</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1030000011</td>\n",
" <td>华夏债券投资基金</td>\n",
" <td>华夏债券</td>\n",
" <td>001001</td>\n",
" <td>证券投资基金</td>\n",
" <td>收益型</td>\n",
" <td>3</td>\n",
" <td>债券基金</td>\n",
" <td>3.2</td>\n",
" <td>普通债券型基金</td>\n",
" <td>3.2.1</td>\n",
" <td>普通债券型基金(一级A类)</td>\n",
" <td>114.06</td>\n",
" <td>6.9775</td>\n",
" <td>28.002064</td>\n",
" <td>可投股票型债券基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1030000012</td>\n",
" <td>华夏债券投资基金</td>\n",
" <td>华夏债券</td>\n",
" <td>001003</td>\n",
" <td>证券投资基金</td>\n",
" <td>收益型</td>\n",
" <td>3</td>\n",
" <td>债券基金</td>\n",
" <td>3.2</td>\n",
" <td>普通债券型基金</td>\n",
" <td>3.2.2</td>\n",
" <td>普通债券型基金(一级B/C类)</td>\n",
" <td>89.97</td>\n",
" <td>2.5225</td>\n",
" <td>24.734933</td>\n",
" <td>可投股票型债券基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1030000014</td>\n",
" <td>华夏希望债券型证券投资基金</td>\n",
" <td>华夏希望债券</td>\n",
" <td>001011</td>\n",
" <td>证券投资基金</td>\n",
" <td>收益型</td>\n",
" <td>3</td>\n",
" <td>债券基金</td>\n",
" <td>3.2</td>\n",
" <td>普通债券型基金</td>\n",
" <td>3.2.3</td>\n",
" <td>普通债券型基金(二级A类)</td>\n",
" <td>83.65</td>\n",
" <td>9.0425</td>\n",
" <td>1.841911</td>\n",
" <td>可投股票型债券基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1030000015</td>\n",
" <td>华夏希望债券型证券投资基金</td>\n",
" <td>华夏希望债券</td>\n",
" <td>001013</td>\n",
" <td>证券投资基金</td>\n",
" <td>收益型</td>\n",
" <td>3</td>\n",
" <td>债券基金</td>\n",
" <td>3.2</td>\n",
" <td>普通债券型基金</td>\n",
" <td>3.2.4</td>\n",
" <td>普通债券型基金(二级B/C类)</td>\n",
" <td>81.13</td>\n",
" <td>9.4025</td>\n",
" <td>1.632054</td>\n",
" <td>可投股票型债券基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1030000022</td>\n",
" <td>国泰金龙债券证券投资基金</td>\n",
" <td>国泰金龙债券</td>\n",
" <td>020002</td>\n",
" <td>证券投资基金</td>\n",
" <td>收益型</td>\n",
" <td>3</td>\n",
" <td>债券基金</td>\n",
" <td>3.2</td>\n",
" <td>普通债券型基金</td>\n",
" <td>3.2.1</td>\n",
" <td>普通债券型基金(一级A类)</td>\n",
" <td>113.76</td>\n",
" <td>0.0000</td>\n",
" <td>17.436128</td>\n",
" <td>可投转债型债券基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1074</th>\n",
" <td>2030008316</td>\n",
" <td>金鹰持久增利债券型证券投资基金(LOF)</td>\n",
" <td>金鹰持久增利债券(LOF)</td>\n",
" <td>162105</td>\n",
" <td>LOF</td>\n",
" <td>稳健成长型</td>\n",
" <td>3</td>\n",
" <td>债券基金</td>\n",
" <td>3.2</td>\n",
" <td>普通债券型基金</td>\n",
" <td>3.2.4</td>\n",
" <td>普通债券型基金(二级B/C类)</td>\n",
" <td>84.99</td>\n",
" <td>16.7400</td>\n",
" <td>55.675510</td>\n",
" <td>可投股票型债券基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1399</th>\n",
" <td>2030008318</td>\n",
" <td>浦银安盛稳健增利债券型证券投资基金(LOF)</td>\n",
" <td>浦银安盛稳健增利债券(LOF)</td>\n",
" <td>166401</td>\n",
" <td>LOF</td>\n",
" <td>稳健成长型</td>\n",
" <td>3</td>\n",
" <td>债券基金</td>\n",
" <td>3.2</td>\n",
" <td>普通债券型基金</td>\n",
" <td>3.2.2</td>\n",
" <td>普通债券型基金(一级B/C类)</td>\n",
" <td>130.90</td>\n",
" <td>0.0000</td>\n",
" <td>1.108862</td>\n",
" <td>中长期纯债型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1073</th>\n",
" <td>2030008417</td>\n",
" <td>金鹰元盛债券型发起式证券投资基金(LOF)</td>\n",
" <td>金鹰元盛债券(LOF)</td>\n",
" <td>162108</td>\n",
" <td>LOF</td>\n",
" <td>稳健成长型</td>\n",
" <td>3</td>\n",
" <td>债券基金</td>\n",
" <td>3.2</td>\n",
" <td>普通债券型基金</td>\n",
" <td>3.2.6</td>\n",
" <td>普通债券型基金(可投转债B类)</td>\n",
" <td>106.13</td>\n",
" <td>0.0000</td>\n",
" <td>0.011357</td>\n",
" <td>中长期纯债型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1123</th>\n",
" <td>2030011710</td>\n",
" <td>招商双债增强债券型证券投资基金(LOF)</td>\n",
" <td>招商双债增强(LOF)</td>\n",
" <td>161716</td>\n",
" <td>LOF</td>\n",
" <td>稳健成长型</td>\n",
" <td>3</td>\n",
" <td>债券基金</td>\n",
" <td>3.2</td>\n",
" <td>普通债券型基金</td>\n",
" <td>3.2.1</td>\n",
" <td>普通债券型基金(一级A类)</td>\n",
" <td>105.01</td>\n",
" <td>0.1250</td>\n",
" <td>3.309579</td>\n",
" <td>可投股票型债券基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1415</th>\n",
" <td>2030012612</td>\n",
" <td>富国天盈债券型证券投资基金(LOF)</td>\n",
" <td>富国天盈债券(LOF)</td>\n",
" <td>161015</td>\n",
" <td>LOF</td>\n",
" <td>稳健成长型</td>\n",
" <td>3</td>\n",
" <td>债券基金</td>\n",
" <td>3.2</td>\n",
" <td>普通债券型基金</td>\n",
" <td>3.2.1</td>\n",
" <td>普通债券型基金(一级A类)</td>\n",
" <td>89.26</td>\n",
" <td>0.0000</td>\n",
" <td>12.020257</td>\n",
" <td>可投转债型债券基金</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>1425 rows × 16 columns</p>\n",
"</div>"
],
"text/plain": [
" SECURITYID FDNAME SNAMECOMP FSYMBOL FDNATURE \\\n",
"0 1030000011 华夏债券投资基金 华夏债券 001001 证券投资基金 \n",
"1 1030000012 华夏债券投资基金 华夏债券 001003 证券投资基金 \n",
"2 1030000014 华夏希望债券型证券投资基金 华夏希望债券 001011 证券投资基金 \n",
"3 1030000015 华夏希望债券型证券投资基金 华夏希望债券 001013 证券投资基金 \n",
"4 1030000022 国泰金龙债券证券投资基金 国泰金龙债券 020002 证券投资基金 \n",
"... ... ... ... ... ... \n",
"1074 2030008316 金鹰持久增利债券型证券投资基金(LOF) 金鹰持久增利债券(LOF) 162105 LOF \n",
"1399 2030008318 浦银安盛稳健增利债券型证券投资基金(LOF) 浦银安盛稳健增利债券(LOF) 166401 LOF \n",
"1073 2030008417 金鹰元盛债券型发起式证券投资基金(LOF) 金鹰元盛债券(LOF) 162108 LOF \n",
"1123 2030011710 招商双债增强债券型证券投资基金(LOF) 招商双债增强(LOF) 161716 LOF \n",
"1415 2030012612 富国天盈债券型证券投资基金(LOF) 富国天盈债券(LOF) 161015 LOF \n",
"\n",
" INVESTSTYLE L1CODE L1NAME L2CODE L2NAME L3CODE L3NAME \\\n",
"0 收益型 3 债券基金 3.2 普通债券型基金 3.2.1 普通债券型基金(一级A类) \n",
"1 收益型 3 债券基金 3.2 普通债券型基金 3.2.2 普通债券型基金(一级B/C类) \n",
"2 收益型 3 债券基金 3.2 普通债券型基金 3.2.3 普通债券型基金(二级A类) \n",
"3 收益型 3 债券基金 3.2 普通债券型基金 3.2.4 普通债券型基金(二级B/C类) \n",
"4 收益型 3 债券基金 3.2 普通债券型基金 3.2.1 普通债券型基金(一级A类) \n",
"... ... ... ... ... ... ... ... \n",
"1074 稳健成长型 3 债券基金 3.2 普通债券型基金 3.2.4 普通债券型基金(二级B/C类) \n",
"1399 稳健成长型 3 债券基金 3.2 普通债券型基金 3.2.2 普通债券型基金(一级B/C类) \n",
"1073 稳健成长型 3 债券基金 3.2 普通债券型基金 3.2.6 普通债券型基金(可投转债B类) \n",
"1123 稳健成长型 3 债券基金 3.2 普通债券型基金 3.2.1 普通债券型基金(一级A类) \n",
"1415 稳健成长型 3 债券基金 3.2 普通债券型基金 3.2.1 普通债券型基金(一级A类) \n",
"\n",
" BDRTO EQUITYINVERTO CONVBDRTO_TO_BDRTO 债券型(子类) \n",
"0 114.06 6.9775 28.002064 可投股票型债券基金 \n",
"1 89.97 2.5225 24.734933 可投股票型债券基金 \n",
"2 83.65 9.0425 1.841911 可投股票型债券基金 \n",
"3 81.13 9.4025 1.632054 可投股票型债券基金 \n",
"4 113.76 0.0000 17.436128 可投转债型债券基金 \n",
"... ... ... ... ... \n",
"1074 84.99 16.7400 55.675510 可投股票型债券基金 \n",
"1399 130.90 0.0000 1.108862 中长期纯债型基金 \n",
"1073 106.13 0.0000 0.011357 中长期纯债型基金 \n",
"1123 105.01 0.1250 3.309579 可投股票型债券基金 \n",
"1415 89.26 0.0000 12.020257 可投转债型债券基金 \n",
"\n",
"[1425 rows x 16 columns]"
]
},
"execution_count": 21,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"ddf"
] ]
}, },
{ {
...@@ -981,7 +486,7 @@ ...@@ -981,7 +486,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 22, "execution_count": 74,
"id": "bc46497a-3044-4455-b427-5e461acffc71", "id": "bc46497a-3044-4455-b427-5e461acffc71",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
...@@ -999,7 +504,7 @@ ...@@ -999,7 +504,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 23, "execution_count": 75,
"id": "4555a339-5ad5-4158-81a0-4011ab35d755", "id": "4555a339-5ad5-4158-81a0-4011ab35d755",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
...@@ -1057,7 +562,7 @@ ...@@ -1057,7 +562,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 24, "execution_count": 76,
"id": "f1f60b62-c7c8-4295-9b3c-4fbbc7bc26bd", "id": "f1f60b62-c7c8-4295-9b3c-4fbbc7bc26bd",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
...@@ -1068,7 +573,7 @@ ...@@ -1068,7 +573,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 25, "execution_count": 77,
"id": "0c53a5ad-430e-459a-b8cf-13ab69b5e3f4", "id": "0c53a5ad-430e-459a-b8cf-13ab69b5e3f4",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
...@@ -1094,6 +599,7 @@ ...@@ -1094,6 +599,7 @@
" <tr style=\"text-align: right;\">\n", " <tr style=\"text-align: right;\">\n",
" <th>债券型(子类)</th>\n", " <th>债券型(子类)</th>\n",
" <th>中长期纯债型基金</th>\n", " <th>中长期纯债型基金</th>\n",
" <th>其他债券型基金</th>\n",
" <th>可投股票型债券基金</th>\n", " <th>可投股票型债券基金</th>\n",
" <th>可投转债型债券基金</th>\n", " <th>可投转债型债券基金</th>\n",
" <th>可转债基金</th>\n", " <th>可转债基金</th>\n",
...@@ -1108,165 +614,184 @@ ...@@ -1108,165 +614,184 @@
" <th></th>\n", " <th></th>\n",
" <th></th>\n", " <th></th>\n",
" <th></th>\n", " <th></th>\n",
" <th></th>\n",
" </tr>\n", " </tr>\n",
" </thead>\n", " </thead>\n",
" <tbody>\n", " <tbody>\n",
" <tr>\n", " <tr>\n",
" <th>20150430</th>\n", " <th>20150430</th>\n",
" <td>0.030347</td>\n", " <td>0.033952</td>\n",
" <td>0.072161</td>\n", " <td>0.020151</td>\n",
" <td>0.041413</td>\n", " <td>0.072935</td>\n",
" <td>0.197143</td>\n", " <td>0.036853</td>\n",
" <td>0.176267</td>\n",
" <td>NaN</td>\n", " <td>NaN</td>\n",
" <td>0.025235</td>\n", " <td>0.025235</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20150731</th>\n", " <th>20150731</th>\n",
" <td>0.017154</td>\n", " <td>0.025791</td>\n",
" <td>0.000445</td>\n", " <td>-0.011187</td>\n",
" <td>0.012797</td>\n", " <td>-0.000949</td>\n",
" <td>-0.162837</td>\n", " <td>0.012540</td>\n",
" <td>-0.109936</td>\n",
" <td>NaN</td>\n", " <td>NaN</td>\n",
" <td>-0.004133</td>\n", " <td>-0.004133</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20151030</th>\n", " <th>20151030</th>\n",
" <td>0.023100</td>\n", " <td>0.024469</td>\n",
" <td>0.017711</td>\n", " <td>0.023544</td>\n",
" <td>0.024471</td>\n", " <td>0.017814</td>\n",
" <td>0.007149</td>\n", " <td>0.021918</td>\n",
" <td>0.003494</td>\n",
" <td>NaN</td>\n", " <td>NaN</td>\n",
" <td>0.025465</td>\n", " <td>0.025465</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20160129</th>\n", " <th>20160129</th>\n",
" <td>0.007987</td>\n", " <td>0.013507</td>\n",
" <td>-0.009362</td>\n", " <td>-0.010183</td>\n",
" <td>0.010080</td>\n", " <td>-0.008890</td>\n",
" <td>-0.133095</td>\n", " <td>0.011042</td>\n",
" <td>-0.114681</td>\n",
" <td>NaN</td>\n", " <td>NaN</td>\n",
" <td>0.017566</td>\n", " <td>0.017566</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20160429</th>\n", " <th>20160429</th>\n",
" <td>-0.001681</td>\n", " <td>0.000898</td>\n",
" <td>0.006570</td>\n", " <td>-0.004699</td>\n",
" <td>-0.000907</td>\n", " <td>0.005371</td>\n",
" <td>-0.012924</td>\n", " <td>0.001707</td>\n",
" <td>NaN</td>\n", " <td>-0.013026</td>\n",
" <td>-0.000324</td>\n", " <td>-0.000941</td>\n",
" <td>-0.000783</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20160729</th>\n", " <th>20160729</th>\n",
" <td>0.021520</td>\n", " <td>0.023862</td>\n",
" <td>0.020766</td>\n", " <td>0.008070</td>\n",
" <td>0.020973</td>\n", " <td>0.021304</td>\n",
" <td>-0.011611</td>\n", " <td>0.020575</td>\n",
" <td>NaN</td>\n", " <td>-0.019919</td>\n",
" <td>0.020153</td>\n", " <td>0.009018</td>\n",
" <td>0.020667</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20161031</th>\n", " <th>20161031</th>\n",
" <td>0.013685</td>\n", " <td>0.014173</td>\n",
" <td>0.015978</td>\n", " <td>0.012732</td>\n",
" <td>0.014682</td>\n", " <td>0.016109</td>\n",
" <td>0.044379</td>\n", " <td>0.013385</td>\n",
" <td>NaN</td>\n", " <td>0.044301</td>\n",
" <td>0.001035</td>\n",
" <td>0.010204</td>\n", " <td>0.010204</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20170126</th>\n", " <th>20170126</th>\n",
" <td>-0.020041</td>\n", " <td>-0.019464</td>\n",
" <td>-0.021258</td>\n", " <td>-0.025560</td>\n",
" <td>-0.022369</td>\n", " <td>-0.020658</td>\n",
" <td>-0.059697</td>\n", " <td>-0.022100</td>\n",
" <td>NaN</td>\n", " <td>-0.060265</td>\n",
" <td>-0.012598</td>\n",
" <td>-0.023771</td>\n", " <td>-0.023771</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20170428</th>\n", " <th>20170428</th>\n",
" <td>-0.002274</td>\n", " <td>-0.001801</td>\n",
" <td>-0.002592</td>\n", " <td>-0.002122</td>\n",
" <td>-0.004142</td>\n", " <td>-0.002404</td>\n",
" <td>-0.023021</td>\n", " <td>-0.005674</td>\n",
" <td>NaN</td>\n", " <td>-0.024018</td>\n",
" <td>0.001904</td>\n",
" <td>-0.005774</td>\n", " <td>-0.005774</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20170731</th>\n", " <th>20170731</th>\n",
" <td>0.011702</td>\n", " <td>0.011713</td>\n",
" <td>0.019268</td>\n", " <td>0.011232</td>\n",
" <td>0.013829</td>\n", " <td>0.019221</td>\n",
" <td>0.059428</td>\n", " <td>0.014053</td>\n",
" <td>0.057224</td>\n",
" <td>NaN</td>\n", " <td>NaN</td>\n",
" <td>0.006147</td>\n", " <td>0.006539</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20171031</th>\n", " <th>20171031</th>\n",
" <td>0.003293</td>\n", " <td>0.002639</td>\n",
" <td>0.005881</td>\n", " <td>0.003016</td>\n",
" <td>0.000926</td>\n", " <td>0.005941</td>\n",
" <td>-0.029590</td>\n", " <td>0.000648</td>\n",
" <td>-0.028303</td>\n",
" <td>NaN</td>\n", " <td>NaN</td>\n",
" <td>-0.004027</td>\n", " <td>-0.004027</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20180131</th>\n", " <th>20180131</th>\n",
" <td>0.004570</td>\n", " <td>0.003547</td>\n",
" <td>0.003125</td>\n", " <td>0.012166</td>\n",
" <td>0.000928</td>\n", " <td>0.001947</td>\n",
" <td>-0.020015</td>\n", " <td>0.007171</td>\n",
" <td>-0.010036</td>\n",
" <td>NaN</td>\n", " <td>NaN</td>\n",
" <td>0.000615</td>\n", " <td>0.000615</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20180427</th>\n", " <th>20180427</th>\n",
" <td>0.014117</td>\n", " <td>0.015265</td>\n",
" <td>-0.003806</td>\n", " <td>0.003159</td>\n",
" <td>0.010817</td>\n", " <td>-0.002346</td>\n",
" <td>-0.047110</td>\n", " <td>0.007313</td>\n",
" <td>-0.048233</td>\n",
" <td>NaN</td>\n", " <td>NaN</td>\n",
" <td>0.022204</td>\n", " <td>0.022204</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20180731</th>\n", " <th>20180731</th>\n",
" <td>0.014024</td>\n", " <td>0.014830</td>\n",
" <td>0.000813</td>\n", " <td>0.011327</td>\n",
" <td>0.003028</td>\n", " <td>0.000054</td>\n",
" <td>-0.033606</td>\n", " <td>0.001534</td>\n",
" <td>-0.034461</td>\n",
" <td>NaN</td>\n", " <td>NaN</td>\n",
" <td>0.015181</td>\n", " <td>0.013986</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20181031</th>\n", " <th>20181031</th>\n",
" <td>0.009379</td>\n", " <td>0.011083</td>\n",
" <td>-0.011397</td>\n", " <td>0.003144</td>\n",
" <td>0.004041</td>\n", " <td>-0.011893</td>\n",
" <td>-0.036301</td>\n", " <td>0.003947</td>\n",
" <td>-0.036704</td>\n",
" <td>NaN</td>\n", " <td>NaN</td>\n",
" <td>0.006238</td>\n", " <td>0.006238</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20190131</th>\n", " <th>20190131</th>\n",
" <td>0.021428</td>\n", " <td>0.021673</td>\n",
" <td>0.019541</td>\n", " <td>0.017712</td>\n",
" <td>0.022368</td>\n", " <td>0.019758</td>\n",
" <td>0.032370</td>\n", " <td>0.021598</td>\n",
" <td>0.031469</td>\n",
" <td>NaN</td>\n", " <td>NaN</td>\n",
" <td>0.025188</td>\n", " <td>0.025188</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20190430</th>\n", " <th>20190430</th>\n",
" <td>0.002617</td>\n", " <td>0.000929</td>\n",
" <td>0.027850</td>\n", " <td>0.016787</td>\n",
" <td>0.013551</td>\n", " <td>0.027705</td>\n",
" <td>0.088720</td>\n", " <td>0.013561</td>\n",
" <td>0.089841</td>\n",
" <td>NaN</td>\n", " <td>NaN</td>\n",
" <td>-0.003682</td>\n", " <td>-0.003682</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20190731</th>\n", " <th>20190731</th>\n",
" <td>0.014261</td>\n", " <td>0.014590</td>\n",
" <td>0.010767</td>\n",
" <td>0.011947</td>\n", " <td>0.011947</td>\n",
" <td>0.014983</td>\n", " <td>0.014983</td>\n",
" <td>0.009581</td>\n", " <td>0.009581</td>\n",
...@@ -1275,7 +800,8 @@ ...@@ -1275,7 +800,8 @@
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20191031</th>\n", " <th>20191031</th>\n",
" <td>0.006508</td>\n", " <td>0.006367</td>\n",
" <td>0.007767</td>\n",
" <td>0.010382</td>\n", " <td>0.010382</td>\n",
" <td>0.006459</td>\n", " <td>0.006459</td>\n",
" <td>0.020640</td>\n", " <td>0.020640</td>\n",
...@@ -1284,7 +810,8 @@ ...@@ -1284,7 +810,8 @@
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20200123</th>\n", " <th>20200123</th>\n",
" <td>0.016303</td>\n", " <td>0.015090</td>\n",
" <td>0.029505</td>\n",
" <td>0.032775</td>\n", " <td>0.032775</td>\n",
" <td>0.026450</td>\n", " <td>0.026450</td>\n",
" <td>0.084422</td>\n", " <td>0.084422</td>\n",
...@@ -1293,114 +820,153 @@ ...@@ -1293,114 +820,153 @@
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20200430</th>\n", " <th>20200430</th>\n",
" <td>0.027454</td>\n", " <td>0.027616</td>\n",
" <td>0.020395</td>\n", " <td>0.025844</td>\n",
" <td>0.028748</td>\n", " <td>0.020331</td>\n",
" <td>0.028717</td>\n",
" <td>0.007863</td>\n", " <td>0.007863</td>\n",
" <td>0.014092</td>\n", " <td>0.014092</td>\n",
" <td>0.038924</td>\n", " <td>0.038784</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20200731</th>\n", " <th>20200731</th>\n",
" <td>-0.012841</td>\n", " <td>-0.014291</td>\n",
" <td>0.035941</td>\n", " <td>0.005739</td>\n",
" <td>-0.001227</td>\n", " <td>0.036895</td>\n",
" <td>-0.000043</td>\n",
" <td>0.121145</td>\n", " <td>0.121145</td>\n",
" <td>-0.005408</td>\n", " <td>-0.007932</td>\n",
" <td>-0.025304</td>\n", " <td>-0.026045</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20201030</th>\n", " <th>20201030</th>\n",
" <td>0.004654</td>\n", " <td>0.005201</td>\n",
" <td>-0.001083</td>\n", " <td>0.000384</td>\n",
" <td>0.004374</td>\n", " <td>-0.001625</td>\n",
" <td>-0.022307</td>\n", " <td>0.004219</td>\n",
" <td>0.004667</td>\n", " <td>-0.020577</td>\n",
" <td>-0.000276</td>\n", " <td>0.004684</td>\n",
" <td>-0.000424</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20210129</th>\n", " <th>20210129</th>\n",
" <td>0.004369</td>\n", " <td>0.004101</td>\n",
" <td>0.024910</td>\n", " <td>0.015309</td>\n",
" <td>0.000346</td>\n", " <td>0.024258</td>\n",
" <td>0.032149</td>\n", " <td>0.000460</td>\n",
" <td>0.005866</td>\n", " <td>0.037616</td>\n",
" <td>0.007405</td>\n", " <td>0.005878</td>\n",
" <td>0.007355</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20210430</th>\n", " <th>20210430</th>\n",
" <td>0.010259</td>\n", " <td>0.010655</td>\n",
" <td>0.003486</td>\n", " <td>0.006568</td>\n",
" <td>0.011517</td>\n", " <td>0.003155</td>\n",
" <td>-0.005928</td>\n", " <td>0.011288</td>\n",
" <td>0.007111</td>\n", " <td>-0.006714</td>\n",
" <td>0.010197</td>\n", " <td>0.007348</td>\n",
" <td>0.010453</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20210730</th>\n", " <th>20210730</th>\n",
" <td>0.015451</td>\n", " <td>0.015336</td>\n",
" <td>0.029374</td>\n", " <td>0.025334</td>\n",
" <td>0.023611</td>\n", " <td>0.029210</td>\n",
" <td>0.096241</td>\n", " <td>0.024305</td>\n",
" <td>0.007855</td>\n", " <td>0.097959</td>\n",
" <td>0.021628</td>\n", " <td>0.008033</td>\n",
" <td>0.019500</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20211029</th>\n", " <th>20211029</th>\n",
" <td>0.007350</td>\n", " <td>0.006999</td>\n",
" <td>0.012733</td>\n", " <td>0.003477</td>\n",
" <td>0.013998</td>\n", " <td>0.012125</td>\n",
" <td>0.032817</td>\n", " <td>0.013675</td>\n",
" <td>0.004478</td>\n", " <td>0.033714</td>\n",
" <td>0.005203</td>\n", " <td>0.004655</td>\n",
" <td>0.004237</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>20211109</th>\n", " <th>20211109</th>\n",
" <td>0.001612</td>\n", " <td>0.001797</td>\n",
" <td>0.004838</td>\n", " <td>0.001714</td>\n",
" <td>0.005122</td>\n", " <td>0.004964</td>\n",
" <td>0.017640</td>\n", " <td>0.005092</td>\n",
" <td>0.001282</td>\n", " <td>0.017041</td>\n",
" <td>0.004045</td>\n", " <td>0.001259</td>\n",
" <td>0.004136</td>\n",
" </tr>\n", " </tr>\n",
" </tbody>\n", " </tbody>\n",
"</table>\n", "</table>\n",
"</div>" "</div>"
], ],
"text/plain": [ "text/plain": [
"债券型(子类) 中长期纯债型基金 可投股票型债券基金 可投转债型债券基金 可转债基金 短期纯债型基金 被动指数型债券基金\n", "债券型(子类) 中长期纯债型基金 其他债券型基金 可投股票型债券基金 可投转债型债券基金 可转债基金 短期纯债型基金 \\\n",
"level_0 \n", "level_0 \n",
"20150430 0.030347 0.072161 0.041413 0.197143 NaN 0.025235\n", "20150430 0.033952 0.020151 0.072935 0.036853 0.176267 NaN \n",
"20150731 0.017154 0.000445 0.012797 -0.162837 NaN -0.004133\n", "20150731 0.025791 -0.011187 -0.000949 0.012540 -0.109936 NaN \n",
"20151030 0.023100 0.017711 0.024471 0.007149 NaN 0.025465\n", "20151030 0.024469 0.023544 0.017814 0.021918 0.003494 NaN \n",
"20160129 0.007987 -0.009362 0.010080 -0.133095 NaN 0.017566\n", "20160129 0.013507 -0.010183 -0.008890 0.011042 -0.114681 NaN \n",
"20160429 -0.001681 0.006570 -0.000907 -0.012924 NaN -0.000324\n", "20160429 0.000898 -0.004699 0.005371 0.001707 -0.013026 -0.000941 \n",
"20160729 0.021520 0.020766 0.020973 -0.011611 NaN 0.020153\n", "20160729 0.023862 0.008070 0.021304 0.020575 -0.019919 0.009018 \n",
"20161031 0.013685 0.015978 0.014682 0.044379 NaN 0.010204\n", "20161031 0.014173 0.012732 0.016109 0.013385 0.044301 0.001035 \n",
"20170126 -0.020041 -0.021258 -0.022369 -0.059697 NaN -0.023771\n", "20170126 -0.019464 -0.025560 -0.020658 -0.022100 -0.060265 -0.012598 \n",
"20170428 -0.002274 -0.002592 -0.004142 -0.023021 NaN -0.005774\n", "20170428 -0.001801 -0.002122 -0.002404 -0.005674 -0.024018 0.001904 \n",
"20170731 0.011702 0.019268 0.013829 0.059428 NaN 0.006147\n", "20170731 0.011713 0.011232 0.019221 0.014053 0.057224 NaN \n",
"20171031 0.003293 0.005881 0.000926 -0.029590 NaN -0.004027\n", "20171031 0.002639 0.003016 0.005941 0.000648 -0.028303 NaN \n",
"20180131 0.004570 0.003125 0.000928 -0.020015 NaN 0.000615\n", "20180131 0.003547 0.012166 0.001947 0.007171 -0.010036 NaN \n",
"20180427 0.014117 -0.003806 0.010817 -0.047110 NaN 0.022204\n", "20180427 0.015265 0.003159 -0.002346 0.007313 -0.048233 NaN \n",
"20180731 0.014024 0.000813 0.003028 -0.033606 NaN 0.015181\n", "20180731 0.014830 0.011327 0.000054 0.001534 -0.034461 NaN \n",
"20181031 0.009379 -0.011397 0.004041 -0.036301 NaN 0.006238\n", "20181031 0.011083 0.003144 -0.011893 0.003947 -0.036704 NaN \n",
"20190131 0.021428 0.019541 0.022368 0.032370 NaN 0.025188\n", "20190131 0.021673 0.017712 0.019758 0.021598 0.031469 NaN \n",
"20190430 0.002617 0.027850 0.013551 0.088720 NaN -0.003682\n", "20190430 0.000929 0.016787 0.027705 0.013561 0.089841 NaN \n",
"20190731 0.014261 0.011947 0.014983 0.009581 NaN 0.018044\n", "20190731 0.014590 0.010767 0.011947 0.014983 0.009581 NaN \n",
"20191031 0.006508 0.010382 0.006459 0.020640 0.005447 0.002414\n", "20191031 0.006367 0.007767 0.010382 0.006459 0.020640 0.005447 \n",
"20200123 0.016303 0.032775 0.026450 0.084422 0.010219 0.023744\n", "20200123 0.015090 0.029505 0.032775 0.026450 0.084422 0.010219 \n",
"20200430 0.027454 0.020395 0.028748 0.007863 0.014092 0.038924\n", "20200430 0.027616 0.025844 0.020331 0.028717 0.007863 0.014092 \n",
"20200731 -0.012841 0.035941 -0.001227 0.121145 -0.005408 -0.025304\n", "20200731 -0.014291 0.005739 0.036895 -0.000043 0.121145 -0.007932 \n",
"20201030 0.004654 -0.001083 0.004374 -0.022307 0.004667 -0.000276\n", "20201030 0.005201 0.000384 -0.001625 0.004219 -0.020577 0.004684 \n",
"20210129 0.004369 0.024910 0.000346 0.032149 0.005866 0.007405\n", "20210129 0.004101 0.015309 0.024258 0.000460 0.037616 0.005878 \n",
"20210430 0.010259 0.003486 0.011517 -0.005928 0.007111 0.010197\n", "20210430 0.010655 0.006568 0.003155 0.011288 -0.006714 0.007348 \n",
"20210730 0.015451 0.029374 0.023611 0.096241 0.007855 0.021628\n", "20210730 0.015336 0.025334 0.029210 0.024305 0.097959 0.008033 \n",
"20211029 0.007350 0.012733 0.013998 0.032817 0.004478 0.005203\n", "20211029 0.006999 0.003477 0.012125 0.013675 0.033714 0.004655 \n",
"20211109 0.001612 0.004838 0.005122 0.017640 0.001282 0.004045" "20211109 0.001797 0.001714 0.004964 0.005092 0.017041 0.001259 \n",
"\n",
"债券型(子类) 被动指数型债券基金 \n",
"level_0 \n",
"20150430 0.025235 \n",
"20150731 -0.004133 \n",
"20151030 0.025465 \n",
"20160129 0.017566 \n",
"20160429 -0.000783 \n",
"20160729 0.020667 \n",
"20161031 0.010204 \n",
"20170126 -0.023771 \n",
"20170428 -0.005774 \n",
"20170731 0.006539 \n",
"20171031 -0.004027 \n",
"20180131 0.000615 \n",
"20180427 0.022204 \n",
"20180731 0.013986 \n",
"20181031 0.006238 \n",
"20190131 0.025188 \n",
"20190430 -0.003682 \n",
"20190731 0.018044 \n",
"20191031 0.002414 \n",
"20200123 0.023744 \n",
"20200430 0.038784 \n",
"20200731 -0.026045 \n",
"20201030 -0.000424 \n",
"20210129 0.007355 \n",
"20210430 0.010453 \n",
"20210730 0.019500 \n",
"20211029 0.004237 \n",
"20211109 0.004136 "
] ]
}, },
"execution_count": 25, "execution_count": 77,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
...@@ -1442,7 +1008,7 @@ ...@@ -1442,7 +1008,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.8.12" "version": "3.9.7"
} }
}, },
"nbformat": 4, "nbformat": 4,
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
"cells": [ "cells": [
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 8, "execution_count": 2,
"id": "51382765-24b4-4e5e-a118-077b276e0774", "id": "51382765-24b4-4e5e-a118-077b276e0774",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 9, "execution_count": 3,
"id": "47939edc-07d2-4c8e-b061-187806e124ea", "id": "47939edc-07d2-4c8e-b061-187806e124ea",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
...@@ -33,52 +33,32 @@ ...@@ -33,52 +33,32 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 10, "execution_count": 4,
"id": "9a596482-dd98-49dc-b717-c17177f2cd64", "id": "9a596482-dd98-49dc-b717-c17177f2cd64",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"# 获取所有目标货币型基金(清算结束日期晚于当前日)\n", "# 获取所有目标货币型基金(清算结束日期晚于当前日)\n",
"\n", "\n",
"security_ids = fd_alive_funds(today, 204)" "security_info = fd_alive_funds(today, 2205)\n",
] "security_ids = security_info.SECURITYID.unique().tolist()"
},
{
"cell_type": "code",
"execution_count": 11,
"id": "7e1a0517-e3de-4ea7-ae3c-9c2292c63260",
"metadata": {},
"outputs": [],
"source": [
"basic_info = fd_basicinfo(security_ids)\n",
"type_info = fd_typeclass(security_ids)"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 12, "execution_count": 9,
"id": "b0d0d48b-708b-447a-922b-500fbfb97600",
"metadata": {},
"outputs": [],
"source": [
"df = pd.merge(type_info[[\"SECURITYID\"]], basic_info, on=\"SECURITYID\")"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "5ccf2dc7-fea9-4d52-b15d-e8ff55fac3dc", "id": "5ccf2dc7-fea9-4d52-b15d-e8ff55fac3dc",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"# 分类\n", "# 分类\n",
"df.loc[(df[\"FDNATURE\"] == \"ETF\"), \"货币型(子类)\"] = \"场内货币型基金\"\n", "security_info.loc[(security_info.CLASSCODE.str.startswith(\"220502\")), \"货币型(子类)\"] = \"场内货币型基金\"\n",
"df.loc[(df[\"FDNATURE\"] != \"ETF\"), \"货币型(子类)\"] = \"场外货币型基金\"" "security_info.loc[(~security_info.CLASSCODE.str.startswith(\"220502\")), \"货币型(子类)\"] = \"场外货币型基金\""
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 14, "execution_count": 10,
"id": "9d34507e-9efd-479a-8b25-a095de5a552c", "id": "9d34507e-9efd-479a-8b25-a095de5a552c",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
...@@ -104,11 +84,9 @@ ...@@ -104,11 +84,9 @@
" <tr style=\"text-align: right;\">\n", " <tr style=\"text-align: right;\">\n",
" <th></th>\n", " <th></th>\n",
" <th>SECURITYID</th>\n", " <th>SECURITYID</th>\n",
" <th>FDNAME</th>\n", " <th>BEGINDATE</th>\n",
" <th>SNAMECOMP</th>\n", " <th>ENDDATE</th>\n",
" <th>FSYMBOL</th>\n", " <th>CLASSCODE</th>\n",
" <th>FDNATURE</th>\n",
" <th>INVESTSTYLE</th>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>货币型(子类)</th>\n", " <th>货币型(子类)</th>\n",
...@@ -116,57 +94,43 @@ ...@@ -116,57 +94,43 @@
" <th></th>\n", " <th></th>\n",
" <th></th>\n", " <th></th>\n",
" <th></th>\n", " <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n", " </tr>\n",
" </thead>\n", " </thead>\n",
" <tbody>\n", " <tbody>\n",
" <tr>\n", " <tr>\n",
" <th>场内货币型基金</th>\n", " <th>场内货币型基金</th>\n",
" <td>19</td>\n", " <td>41</td>\n",
" <td>19</td>\n", " <td>41</td>\n",
" <td>19</td>\n", " <td>41</td>\n",
" <td>19</td>\n", " <td>41</td>\n",
" <td>19</td>\n",
" <td>19</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>场外货币型基金</th>\n", " <th>场外货币型基金</th>\n",
" <td>542</td>\n", " <td>622</td>\n",
" <td>542</td>\n", " <td>622</td>\n",
" <td>496</td>\n", " <td>622</td>\n",
" <td>542</td>\n", " <td>622</td>\n",
" <td>542</td>\n",
" <td>542</td>\n",
" </tr>\n", " </tr>\n",
" </tbody>\n", " </tbody>\n",
"</table>\n", "</table>\n",
"</div>" "</div>"
], ],
"text/plain": [ "text/plain": [
" SECURITYID FDNAME SNAMECOMP FSYMBOL FDNATURE INVESTSTYLE\n", " SECURITYID BEGINDATE ENDDATE CLASSCODE\n",
"货币型(子类) \n", "货币型(子类) \n",
"场内货币型基金 19 19 19 19 19 19\n", "场内货币型基金 41 41 41 41\n",
"场外货币型基金 542 542 496 542 542 542" "场外货币型基金 622 622 622 622"
] ]
}, },
"execution_count": 14, "execution_count": 10,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
], ],
"source": [ "source": [
"df.groupby(\"货币型(子类)\").count()" "security_info.groupby(\"货币型(子类)\").count()"
] ]
}, },
{
"cell_type": "code",
"execution_count": null,
"id": "c46e44f3-62a7-4409-a276-e7493cbb98aa",
"metadata": {},
"outputs": [],
"source": []
},
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
"cells": [ "cells": [
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 2, "execution_count": 1,
"id": "76b46662-651d-4bcd-b554-f116051cf297", "id": "76b46662-651d-4bcd-b554-f116051cf297",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 3, "execution_count": 2,
"id": "f5d4b805-d5a3-4b4c-8429-7044e9bef831", "id": "f5d4b805-d5a3-4b4c-8429-7044e9bef831",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
...@@ -40,7 +40,7 @@ ...@@ -40,7 +40,7 @@
{ {
"data": { "data": {
"text/plain": [ "text/plain": [
"15" "40"
] ]
}, },
"execution_count": 22, "execution_count": 22,
...@@ -51,46 +51,38 @@ ...@@ -51,46 +51,38 @@
"source": [ "source": [
"# 获取所有目标基金(清算结束日期晚于当前日)\n", "# 获取所有目标基金(清算结束日期晚于当前日)\n",
"\n", "\n",
"security_ids = fd_alive_funds(today, 2204)\n", "security_info = fd_alive_funds(today, [2204, 22020803, 22021401])\n",
"security_ids = security_info.SECURITYID.unique().tolist()\n",
"len(security_ids)" "len(security_ids)"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 15, "execution_count": 23,
"id": "f5f5cc7d-c2d4-4c7f-b8a9-dd133407f9c6",
"metadata": {},
"outputs": [],
"source": [
"basic_info = fd_basicinfo(security_ids)\n",
"type_info = fd_typeclass(security_ids)"
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "52607b95-9d62-4f68-8256-984827dd0bea", "id": "52607b95-9d62-4f68-8256-984827dd0bea",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"df = pd.merge(type_info, basic_info, on=\"SECURITYID\")" "df = security_info"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 17, "execution_count": 24,
"id": "60fe66ee-a8d3-4a33-8c5a-555f68d9758c", "id": "60fe66ee-a8d3-4a33-8c5a-555f68d9758c",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"# 分类\n", "# 分类\n",
"df.loc[(df[\"INVESTSTYLE\"] == \"商品型\") & (df[\"L1CODE\"] != 6), \"另类投资型(子类)\"] = \"商品型基金\"\n", "df.loc[(~df.CLASSCODE.str.startswith(\"220409\")) & (df.CLASSCODE.str.startswith(\"2204\")), \"另类投资型(子类)\"] = \"商品型基金\"\n",
"df.loc[(df[\"L3NAME\"] == \"对冲策略基金\"), \"另类投资型(子类)\"] = \"量化对冲基金\"" "df.loc[df.CLASSCODE.str.startswith(\"2202\"), \"另类投资型(子类)\"] = \"量化对冲基金\"\n",
"df.loc[pd.isnull(df[\"另类投资型(子类)\"]), \"另类投资型(子类)\"] = \"其他另类基金\"\n",
"# df.loc[(df[\"L3NAME\"] == \"对冲策略基金\"), \"另类投资型(子类)\"] = "
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 18, "execution_count": 25,
"id": "1bb62bc7-2515-415a-8eec-087d2d1787b6", "id": "1bb62bc7-2515-415a-8eec-087d2d1787b6",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
...@@ -116,17 +108,9 @@ ...@@ -116,17 +108,9 @@
" <tr style=\"text-align: right;\">\n", " <tr style=\"text-align: right;\">\n",
" <th></th>\n", " <th></th>\n",
" <th>SECURITYID</th>\n", " <th>SECURITYID</th>\n",
" <th>L1CODE</th>\n", " <th>BEGINDATE</th>\n",
" <th>L1NAME</th>\n", " <th>ENDDATE</th>\n",
" <th>L2CODE</th>\n", " <th>CLASSCODE</th>\n",
" <th>L2NAME</th>\n",
" <th>L3CODE</th>\n",
" <th>L3NAME</th>\n",
" <th>FDNAME</th>\n",
" <th>SNAMECOMP</th>\n",
" <th>FSYMBOL</th>\n",
" <th>FDNATURE</th>\n",
" <th>INVESTSTYLE</th>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>另类投资型(子类)</th>\n", " <th>另类投资型(子类)</th>\n",
...@@ -134,369 +118,49 @@ ...@@ -134,369 +118,49 @@
" <th></th>\n", " <th></th>\n",
" <th></th>\n", " <th></th>\n",
" <th></th>\n", " <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>商品型基金</th>\n",
" <td>15</td>\n",
" <td>15</td>\n",
" <td>15</td>\n",
" <td>15</td>\n",
" <td>15</td>\n",
" <td>15</td>\n",
" <td>15</td>\n",
" <td>15</td>\n",
" <td>11</td>\n",
" <td>15</td>\n",
" <td>15</td>\n",
" <td>15</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" SECURITYID L1CODE L1NAME L2CODE L2NAME L3CODE L3NAME FDNAME \\\n",
"另类投资型(子类) \n",
"商品型基金 15 15 15 15 15 15 15 15 \n",
"\n",
" SNAMECOMP FSYMBOL FDNATURE INVESTSTYLE \n",
"另类投资型(子类) \n",
"商品型基金 11 15 15 15 "
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df.groupby(\"另类投资型(子类)\").count()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "3ba8793e-d648-4dc0-99ef-731a8c97f50e",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>SECURITYID</th>\n",
" <th>L1CODE</th>\n",
" <th>L1NAME</th>\n",
" <th>L2CODE</th>\n",
" <th>L2NAME</th>\n",
" <th>L3CODE</th>\n",
" <th>L3NAME</th>\n",
" <th>FDNAME</th>\n",
" <th>SNAMECOMP</th>\n",
" <th>FSYMBOL</th>\n",
" <th>FDNATURE</th>\n",
" <th>INVESTSTYLE</th>\n",
" </tr>\n", " </tr>\n",
" </thead>\n", " </thead>\n",
" <tbody>\n", " <tbody>\n",
" <tr>\n", " <tr>\n",
" <th>0</th>\n", " <th>其他另类基金</th>\n",
" <td>1030002375</td>\n", " <td>1</td>\n",
" <td>4</td>\n", " <td>1</td>\n",
" <td>其他类型基金</td>\n", " <td>1</td>\n",
" <td>4.1</td>\n", " <td>1</td>\n",
" <td>黄金基金</td>\n",
" <td>4.1.1</td>\n",
" <td>黄金基金</td>\n",
" <td>华安易富黄金交易型开放式证券投资基金联接基金</td>\n",
" <td>华安黄金易(ETF联接)</td>\n",
" <td>000216</td>\n",
" <td>联接基金</td>\n",
" <td>商品型</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1030002376</td>\n",
" <td>4</td>\n",
" <td>其他类型基金</td>\n",
" <td>4.1</td>\n",
" <td>黄金基金</td>\n",
" <td>4.1.1</td>\n",
" <td>黄金基金</td>\n",
" <td>华安易富黄金交易型开放式证券投资基金联接基金</td>\n",
" <td>华安黄金易(ETF联接)</td>\n",
" <td>000217</td>\n",
" <td>联接基金</td>\n",
" <td>商品型</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1030004308</td>\n",
" <td>4</td>\n",
" <td>其他类型基金</td>\n",
" <td>4.1</td>\n",
" <td>黄金基金</td>\n",
" <td>4.1.1</td>\n",
" <td>黄金基金</td>\n",
" <td>博时黄金交易型开放式证券投资基金</td>\n",
" <td>博时黄金ETF</td>\n",
" <td>000929</td>\n",
" <td>证券投资基金</td>\n",
" <td>商品型</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>3</th>\n", " <th>商品型基金</th>\n",
" <td>1030004309</td>\n", " <td>14</td>\n",
" <td>4</td>\n", " <td>14</td>\n",
" <td>其他类型基金</td>\n", " <td>14</td>\n",
" <td>4.1</td>\n", " <td>14</td>\n",
" <td>黄金基金</td>\n",
" <td>4.1.1</td>\n",
" <td>黄金基金</td>\n",
" <td>博时黄金交易型开放式证券投资基金</td>\n",
" <td>博时黄金ETF</td>\n",
" <td>000930</td>\n",
" <td>证券投资基金</td>\n",
" <td>商品型</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1030006619</td>\n",
" <td>4</td>\n",
" <td>其他类型基金</td>\n",
" <td>4.1</td>\n",
" <td>黄金基金</td>\n",
" <td>4.1.1</td>\n",
" <td>黄金基金</td>\n",
" <td>国泰黄金交易型开放式证券投资基金联接基金</td>\n",
" <td>国泰黄金ETF联接</td>\n",
" <td>000218</td>\n",
" <td>联接基金</td>\n",
" <td>商品型</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>1030006684</td>\n",
" <td>4</td>\n",
" <td>其他类型基金</td>\n",
" <td>4.1</td>\n",
" <td>黄金基金</td>\n",
" <td>4.1.1</td>\n",
" <td>黄金基金</td>\n",
" <td>易方达黄金交易型开放式证券投资基金联接基金</td>\n",
" <td>易方达黄金ETF联接</td>\n",
" <td>000307</td>\n",
" <td>联接基金</td>\n",
" <td>商品型</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>1030006637</td>\n",
" <td>4</td>\n",
" <td>其他类型基金</td>\n",
" <td>4.1</td>\n",
" <td>黄金基金</td>\n",
" <td>4.1.1</td>\n",
" <td>黄金基金</td>\n",
" <td>博时黄金交易型开放式证券投资基金联接基金</td>\n",
" <td>博时黄金ETF联接</td>\n",
" <td>002610</td>\n",
" <td>联接基金</td>\n",
" <td>商品型</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>1030006638</td>\n",
" <td>4</td>\n",
" <td>其他类型基金</td>\n",
" <td>4.1</td>\n",
" <td>黄金基金</td>\n",
" <td>4.1.1</td>\n",
" <td>黄金基金</td>\n",
" <td>博时黄金交易型开放式证券投资基金联接基金</td>\n",
" <td>博时黄金ETF联接</td>\n",
" <td>002611</td>\n",
" <td>联接基金</td>\n",
" <td>商品型</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>1030007056</td>\n",
" <td>4</td>\n",
" <td>其他类型基金</td>\n",
" <td>4.1</td>\n",
" <td>黄金基金</td>\n",
" <td>4.1.1</td>\n",
" <td>黄金基金</td>\n",
" <td>易方达黄金交易型开放式证券投资基金联接基金</td>\n",
" <td>易方达黄金ETF联接</td>\n",
" <td>002963</td>\n",
" <td>联接基金</td>\n",
" <td>商品型</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>1030009793</td>\n",
" <td>4</td>\n",
" <td>其他类型基金</td>\n",
" <td>4.1</td>\n",
" <td>黄金基金</td>\n",
" <td>4.1.1</td>\n",
" <td>黄金基金</td>\n",
" <td>国泰黄金交易型开放式证券投资基金联接基金</td>\n",
" <td>国泰黄金ETF联接</td>\n",
" <td>004253</td>\n",
" <td>联接基金</td>\n",
" <td>商品型</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>2030000492</td>\n",
" <td>4</td>\n",
" <td>其他类型基金</td>\n",
" <td>4.1</td>\n",
" <td>黄金基金</td>\n",
" <td>4.1.1</td>\n",
" <td>黄金基金</td>\n",
" <td>国泰黄金交易型开放式证券投资基金</td>\n",
" <td>None</td>\n",
" <td>518800</td>\n",
" <td>ETF</td>\n",
" <td>商品型</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>2030000493</td>\n",
" <td>4</td>\n",
" <td>其他类型基金</td>\n",
" <td>4.1</td>\n",
" <td>黄金基金</td>\n",
" <td>4.1.1</td>\n",
" <td>黄金基金</td>\n",
" <td>华安易富黄金交易型开放式证券投资基金</td>\n",
" <td>None</td>\n",
" <td>518880</td>\n",
" <td>ETF</td>\n",
" <td>商品型</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>2030002690</td>\n",
" <td>4</td>\n",
" <td>其他类型基金</td>\n",
" <td>4.1</td>\n",
" <td>黄金基金</td>\n",
" <td>4.1.1</td>\n",
" <td>黄金基金</td>\n",
" <td>易方达黄金交易型开放式证券投资基金</td>\n",
" <td>None</td>\n",
" <td>159934</td>\n",
" <td>ETF</td>\n",
" <td>商品型</td>\n",
" </tr>\n",
" <tr>\n",
" <th>13</th>\n",
" <td>2030004019</td>\n",
" <td>4</td>\n",
" <td>其他类型基金</td>\n",
" <td>4.1</td>\n",
" <td>黄金基金</td>\n",
" <td>4.1.1</td>\n",
" <td>黄金基金</td>\n",
" <td>博时黄金交易型开放式证券投资基金</td>\n",
" <td>博时黄金ETF</td>\n",
" <td>159937</td>\n",
" <td>ETF</td>\n",
" <td>商品型</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>14</th>\n", " <th>量化对冲基金</th>\n",
" <td>2030005548</td>\n", " <td>25</td>\n",
" <td>4</td>\n", " <td>25</td>\n",
" <td>其他类型基金</td>\n", " <td>25</td>\n",
" <td>4.9</td>\n", " <td>25</td>\n",
" <td>其他类型基金</td>\n",
" <td>4.9.1</td>\n",
" <td>其他类型基金</td>\n",
" <td>国投瑞银白银期货证券投资基金(LOF)</td>\n",
" <td>None</td>\n",
" <td>161226</td>\n",
" <td>LOF</td>\n",
" <td>商品型</td>\n",
" </tr>\n", " </tr>\n",
" </tbody>\n", " </tbody>\n",
"</table>\n", "</table>\n",
"</div>" "</div>"
], ],
"text/plain": [ "text/plain": [
" SECURITYID L1CODE L1NAME L2CODE L2NAME L3CODE L3NAME \\\n", " SECURITYID BEGINDATE ENDDATE CLASSCODE\n",
"0 1030002375 4 其他类型基金 4.1 黄金基金 4.1.1 黄金基金 \n", "另类投资型(子类) \n",
"1 1030002376 4 其他类型基金 4.1 黄金基金 4.1.1 黄金基金 \n", "其他另类基金 1 1 1 1\n",
"2 1030004308 4 其他类型基金 4.1 黄金基金 4.1.1 黄金基金 \n", "商品型基金 14 14 14 14\n",
"3 1030004309 4 其他类型基金 4.1 黄金基金 4.1.1 黄金基金 \n", "量化对冲基金 25 25 25 25"
"4 1030006619 4 其他类型基金 4.1 黄金基金 4.1.1 黄金基金 \n",
"5 1030006684 4 其他类型基金 4.1 黄金基金 4.1.1 黄金基金 \n",
"6 1030006637 4 其他类型基金 4.1 黄金基金 4.1.1 黄金基金 \n",
"7 1030006638 4 其他类型基金 4.1 黄金基金 4.1.1 黄金基金 \n",
"8 1030007056 4 其他类型基金 4.1 黄金基金 4.1.1 黄金基金 \n",
"9 1030009793 4 其他类型基金 4.1 黄金基金 4.1.1 黄金基金 \n",
"10 2030000492 4 其他类型基金 4.1 黄金基金 4.1.1 黄金基金 \n",
"11 2030000493 4 其他类型基金 4.1 黄金基金 4.1.1 黄金基金 \n",
"12 2030002690 4 其他类型基金 4.1 黄金基金 4.1.1 黄金基金 \n",
"13 2030004019 4 其他类型基金 4.1 黄金基金 4.1.1 黄金基金 \n",
"14 2030005548 4 其他类型基金 4.9 其他类型基金 4.9.1 其他类型基金 \n",
"\n",
" FDNAME SNAMECOMP FSYMBOL FDNATURE INVESTSTYLE \n",
"0 华安易富黄金交易型开放式证券投资基金联接基金 华安黄金易(ETF联接) 000216 联接基金 商品型 \n",
"1 华安易富黄金交易型开放式证券投资基金联接基金 华安黄金易(ETF联接) 000217 联接基金 商品型 \n",
"2 博时黄金交易型开放式证券投资基金 博时黄金ETF 000929 证券投资基金 商品型 \n",
"3 博时黄金交易型开放式证券投资基金 博时黄金ETF 000930 证券投资基金 商品型 \n",
"4 国泰黄金交易型开放式证券投资基金联接基金 国泰黄金ETF联接 000218 联接基金 商品型 \n",
"5 易方达黄金交易型开放式证券投资基金联接基金 易方达黄金ETF联接 000307 联接基金 商品型 \n",
"6 博时黄金交易型开放式证券投资基金联接基金 博时黄金ETF联接 002610 联接基金 商品型 \n",
"7 博时黄金交易型开放式证券投资基金联接基金 博时黄金ETF联接 002611 联接基金 商品型 \n",
"8 易方达黄金交易型开放式证券投资基金联接基金 易方达黄金ETF联接 002963 联接基金 商品型 \n",
"9 国泰黄金交易型开放式证券投资基金联接基金 国泰黄金ETF联接 004253 联接基金 商品型 \n",
"10 国泰黄金交易型开放式证券投资基金 None 518800 ETF 商品型 \n",
"11 华安易富黄金交易型开放式证券投资基金 None 518880 ETF 商品型 \n",
"12 易方达黄金交易型开放式证券投资基金 None 159934 ETF 商品型 \n",
"13 博时黄金交易型开放式证券投资基金 博时黄金ETF 159937 ETF 商品型 \n",
"14 国投瑞银白银期货证券投资基金(LOF) None 161226 LOF 商品型 "
] ]
}, },
"execution_count": 20, "execution_count": 25,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
], ],
"source": [ "source": [
"df" "df.groupby(\"另类投资型(子类)\").count()"
] ]
}, },
{ {
...@@ -524,7 +188,7 @@ ...@@ -524,7 +188,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.8.12" "version": "3.9.7"
} }
}, },
"nbformat": 4, "nbformat": 4,
......
...@@ -21,7 +21,7 @@ ...@@ -21,7 +21,7 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 2, "execution_count": 19,
"id": "8bf4331c-c1db-47b4-b72d-10d5ccb72657", "id": "8bf4331c-c1db-47b4-b72d-10d5ccb72657",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
...@@ -33,77 +33,157 @@ ...@@ -33,77 +33,157 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 3, "execution_count": 28,
"id": "d228ec88-a55b-4451-8a69-1a0e490b9161", "id": "d228ec88-a55b-4451-8a69-1a0e490b9161",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [
{
"data": {
"text/plain": [
"210"
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [ "source": [
"# 获取所有目标QDII基金(清算结束日期晚于当前日)\n", "# 获取所有目标QDII基金(清算结束日期晚于当前日)\n",
"\n", "\n",
"security_ids = fd_alive_funds(today, 2206)" "security_info = fd_alive_funds(today, 2206)\n",
"security_ids = security_info.SECURITYID.unique().tolist()\n",
"len(security_ids)"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 4, "execution_count": 29,
"id": "7763ee34-dbba-4297-b2d8-16fc98be8a3b", "id": "e992c24d-d125-4558-b541-251decc55097",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"basic_info = fd_basicinfo(security_ids)\n", "df = security_info"
"type_info = fd_typeclass(security_ids)"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 5, "execution_count": 30,
"id": "e12d8f3b-0570-40db-9ec3-d6804b78c686", "id": "0efd51eb-a03c-440b-b083-a36df52f9185",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [ "source": [
"df = pd.merge(type_info, basic_info, on=\"SECURITYID\")" "# 分类\n",
"df.loc[df.CLASSCODE.str.startswith(\"220601\"), \"QDII型(子类)\"] = \"QDII股票型基金\"\n",
"df.loc[df.CLASSCODE.str.startswith(\"220602\"), \"QDII型(子类)\"] = \"QDII混合型基金\"\n",
"df.loc[df.CLASSCODE.str.startswith(\"220603\"), \"QDII型(子类)\"] = \"QDII债券型基金\"\n",
"df.loc[df.CLASSCODE.isin([\"22060901\", \"22060902\", \"22060903\", \"22060904\"]), \"QDII型(子类)\"] = \"QDII另类投资基金\"\n",
"df.loc[pd.isnull(df[\"QDII型(子类)\"]), \"QDII型(子类)\"] = \"QDII其他投资基金\""
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 6, "execution_count": 31,
"id": "b3f87023-d068-4014-975c-22db615c3273", "id": "850b9707-8849-48b5-9b39-9111ab78ccc1",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
"data": { "data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>SECURITYID</th>\n",
" <th>BEGINDATE</th>\n",
" <th>ENDDATE</th>\n",
" <th>CLASSCODE</th>\n",
" </tr>\n",
" <tr>\n",
" <th>QDII型(子类)</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>QDII债券型基金</th>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" <td>51</td>\n",
" </tr>\n",
" <tr>\n",
" <th>QDII其他投资基金</th>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" </tr>\n",
" <tr>\n",
" <th>QDII另类投资基金</th>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" <td>21</td>\n",
" </tr>\n",
" <tr>\n",
" <th>QDII混合型基金</th>\n",
" <td>38</td>\n",
" <td>38</td>\n",
" <td>38</td>\n",
" <td>38</td>\n",
" </tr>\n",
" <tr>\n",
" <th>QDII股票型基金</th>\n",
" <td>96</td>\n",
" <td>96</td>\n",
" <td>96</td>\n",
" <td>96</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [ "text/plain": [
"array(['QDII股票型基金', 'QDII混合基金', 'QDII债券基金', 'QDII指数股票型基金', 'QDII商品基金',\n", " SECURITYID BEGINDATE ENDDATE CLASSCODE\n",
" 'QDII房地产信托基金', 'QDII分级子基金'], dtype=object)" "QDII型(子类) \n",
"QDII债券型基金 51 51 51 51\n",
"QDII其他投资基金 4 4 4 4\n",
"QDII另类投资基金 21 21 21 21\n",
"QDII混合型基金 38 38 38 38\n",
"QDII股票型基金 96 96 96 96"
] ]
}, },
"execution_count": 6, "execution_count": 31,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
], ],
"source": [ "source": [
"df.L3NAME.unique()" "df.groupby(\"QDII型(子类)\").count()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "0efd51eb-a03c-440b-b083-a36df52f9185",
"metadata": {},
"outputs": [],
"source": [
"# 分类\n",
"df.loc[(df[\"L3NAME\"].isin([\"QDII股票型基金\", \"QDII全球股票型基金\", \"QDII指数股票型基金\"])), \"QDII型(子类)\"] = \"QDII股票型基金\"\n",
"df.loc[df[\"L3NAME\"] == \"QDII债券基金\", \"QDII型(子类)\"] = \"QDII债券型基金\"\n",
"df.loc[(df[\"L3NAME\"].isin([\"QDII商品基金\", \"QDII房地产信托基金\"])), \"QDII型(子类)\"] = \"QDII另类投资基金\"\n",
"df.loc[(df[\"L3NAME\"].isin([\"QDII混合基金\", \"QDII分级子基金\"])), \"QDII型(子类)\"] = \"QDII混合型基金\""
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 8, "execution_count": 25,
"id": "850b9707-8849-48b5-9b39-9111ab78ccc1", "id": "0f3aec26-468c-4b17-b9c5-75119afcf005",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
...@@ -128,128 +208,136 @@ ...@@ -128,128 +208,136 @@
" <tr style=\"text-align: right;\">\n", " <tr style=\"text-align: right;\">\n",
" <th></th>\n", " <th></th>\n",
" <th>SECURITYID</th>\n", " <th>SECURITYID</th>\n",
" <th>L1CODE</th>\n", " <th>BEGINDATE</th>\n",
" <th>L1NAME</th>\n", " <th>ENDDATE</th>\n",
" <th>L2CODE</th>\n", " <th>CLASSCODE</th>\n",
" <th>L2NAME</th>\n",
" <th>L3CODE</th>\n",
" <th>L3NAME</th>\n",
" <th>FDNAME</th>\n",
" <th>SNAMECOMP</th>\n",
" <th>FSYMBOL</th>\n",
" <th>FDNATURE</th>\n",
" <th>INVESTSTYLE</th>\n",
" </tr>\n",
" <tr>\n",
" <th>QDII型(子类)</th>\n", " <th>QDII型(子类)</th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" <th></th>\n",
" </tr>\n", " </tr>\n",
" </thead>\n", " </thead>\n",
" <tbody>\n", " <tbody>\n",
" <tr>\n", " <tr>\n",
" <th>QDII债券型基金</th>\n", " <th>0</th>\n",
" <td>39</td>\n", " <td>1030000009</td>\n",
" <td>39</td>\n", " <td>20071009</td>\n",
" <td>39</td>\n", " <td>19000101</td>\n",
" <td>39</td>\n", " <td>22060101</td>\n",
" <td>39</td>\n", " <td>QDII股票型基金</td>\n",
" <td>39</td>\n",
" <td>39</td>\n",
" <td>39</td>\n",
" <td>38</td>\n",
" <td>39</td>\n",
" <td>39</td>\n",
" <td>39</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>QDII另类投资基金</th>\n", " <th>174</th>\n",
" <td>19</td>\n", " <td>2030000409</td>\n",
" <td>19</td>\n", " <td>20120809</td>\n",
" <td>19</td>\n", " <td>19000101</td>\n",
" <td>19</td>\n", " <td>22060101</td>\n",
" <td>19</td>\n", " <td>QDII股票型基金</td>\n",
" <td>19</td>\n",
" <td>19</td>\n",
" <td>19</td>\n",
" <td>9</td>\n",
" <td>19</td>\n",
" <td>19</td>\n",
" <td>19</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>QDII混合型基金</th>\n", " <th>173</th>\n",
" <td>31</td>\n", " <td>2030000408</td>\n",
" <td>31</td>\n", " <td>20120809</td>\n",
" <td>31</td>\n", " <td>19000101</td>\n",
" <td>31</td>\n", " <td>22060101</td>\n",
" <td>31</td>\n", " <td>QDII股票型基金</td>\n",
" <td>31</td>\n",
" <td>31</td>\n",
" <td>31</td>\n",
" <td>14</td>\n",
" <td>31</td>\n",
" <td>31</td>\n",
" <td>31</td>\n",
" </tr>\n", " </tr>\n",
" <tr>\n", " <tr>\n",
" <th>QDII股票型基金</th>\n", " <th>172</th>\n",
" <td>77</td>\n", " <td>2030000364</td>\n",
" <td>77</td>\n", " <td>20110929</td>\n",
" <td>77</td>\n", " <td>19000101</td>\n",
" <td>77</td>\n", " <td>22060101</td>\n",
" <td>77</td>\n", " <td>QDII股票型基金</td>\n",
" <td>77</td>\n", " </tr>\n",
" <td>77</td>\n", " <tr>\n",
" <td>77</td>\n", " <th>171</th>\n",
" <td>50</td>\n", " <td>2030000353</td>\n",
" <td>77</td>\n", " <td>20120329</td>\n",
" <td>77</td>\n", " <td>19000101</td>\n",
" <td>77</td>\n", " <td>22060101</td>\n",
" <td>QDII股票型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>61</th>\n",
" <td>1030002339</td>\n",
" <td>20130809</td>\n",
" <td>19000101</td>\n",
" <td>22060904</td>\n",
" <td>QDII另类投资基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>179</th>\n",
" <td>2030002922</td>\n",
" <td>20140409</td>\n",
" <td>19000101</td>\n",
" <td>22060908</td>\n",
" <td>QDII另类投资基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>180</th>\n",
" <td>2030002923</td>\n",
" <td>20140409</td>\n",
" <td>19000101</td>\n",
" <td>22060908</td>\n",
" <td>QDII另类投资基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>177</th>\n",
" <td>2030002876</td>\n",
" <td>20140306</td>\n",
" <td>19000101</td>\n",
" <td>22060908</td>\n",
" <td>QDII另类投资基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>178</th>\n",
" <td>2030002877</td>\n",
" <td>20140306</td>\n",
" <td>19000101</td>\n",
" <td>22060908</td>\n",
" <td>QDII另类投资基金</td>\n",
" </tr>\n", " </tr>\n",
" </tbody>\n", " </tbody>\n",
"</table>\n", "</table>\n",
"<p>210 rows × 5 columns</p>\n",
"</div>" "</div>"
], ],
"text/plain": [ "text/plain": [
" SECURITYID L1CODE L1NAME L2CODE L2NAME L3CODE L3NAME \\\n", " SECURITYID BEGINDATE ENDDATE CLASSCODE QDII型(子类)\n",
"QDII型(子类) \n", "0 1030000009 20071009 19000101 22060101 QDII股票型基金\n",
"QDII债券型基金 39 39 39 39 39 39 39 \n", "174 2030000409 20120809 19000101 22060101 QDII股票型基金\n",
"QDII另类投资基金 19 19 19 19 19 19 19 \n", "173 2030000408 20120809 19000101 22060101 QDII股票型基金\n",
"QDII混合型基金 31 31 31 31 31 31 31 \n", "172 2030000364 20110929 19000101 22060101 QDII股票型基金\n",
"QDII股票型基金 77 77 77 77 77 77 77 \n", "171 2030000353 20120329 19000101 22060101 QDII股票型基金\n",
".. ... ... ... ... ...\n",
"61 1030002339 20130809 19000101 22060904 QDII另类投资基金\n",
"179 2030002922 20140409 19000101 22060908 QDII另类投资基金\n",
"180 2030002923 20140409 19000101 22060908 QDII另类投资基金\n",
"177 2030002876 20140306 19000101 22060908 QDII另类投资基金\n",
"178 2030002877 20140306 19000101 22060908 QDII另类投资基金\n",
"\n", "\n",
" FDNAME SNAMECOMP FSYMBOL FDNATURE INVESTSTYLE \n", "[210 rows x 5 columns]"
"QDII型(子类) \n",
"QDII债券型基金 39 38 39 39 39 \n",
"QDII另类投资基金 19 9 19 19 19 \n",
"QDII混合型基金 31 14 31 31 31 \n",
"QDII股票型基金 77 50 77 77 77 "
] ]
}, },
"execution_count": 8, "execution_count": 25,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
], ],
"source": [ "source": [
"df.groupby(\"QDII型(子类)\").count()" "df.sort_values(\"CLASSCODE\")"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": null, "execution_count": null,
"id": "0f3aec26-468c-4b17-b9c5-75119afcf005", "id": "a1d39d65-9c01-43f1-ab53-9dde59c93d13",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [],
"source": [] "source": []
...@@ -271,7 +359,7 @@ ...@@ -271,7 +359,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.8.12" "version": "3.9.7"
} }
}, },
"nbformat": 4, "nbformat": 4,
......
...@@ -33,232 +33,60 @@ ...@@ -33,232 +33,60 @@
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 28, "execution_count": 4,
"id": "004a8f9f-4011-48c6-a5dd-327cce42de51", "id": "004a8f9f-4011-48c6-a5dd-327cce42de51",
"metadata": {}, "metadata": {},
"outputs": [], "outputs": [
{
"data": {
"text/plain": [
"13"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [ "source": [
"# 获取所有目标基金(清算结束日期晚于当前日)\n", "# 获取所有目标基金(清算结束日期晚于当前日)\n",
"\n", "\n",
"security_ids = fd_alive_funds(today, \"2210\")" "security_info = fd_alive_funds(today, 2210)\n",
] "security_ids = security_info.SECURITYID.unique().tolist()\n",
}, "len(security_ids)"
{
"cell_type": "code",
"execution_count": 29,
"id": "acf00858-6782-4ecb-8a87-9045810ce589",
"metadata": {},
"outputs": [],
"source": [
"basic_info = fd_basicinfo(security_ids)"
]
},
{
"cell_type": "code",
"execution_count": 31,
"id": "08bfc149-90e5-405d-a1f2-6ec750c26f9e",
"metadata": {},
"outputs": [],
"source": [
"df = basic_info[basic_info.FDNATURE == 'FOF']"
] ]
}, },
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 32, "execution_count": 7,
"id": "fc897e0e-46f1-48a2-be9a-6381086c94bf", "id": "fc897e0e-46f1-48a2-be9a-6381086c94bf",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
"data": { "data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>SECURITYID</th>\n",
" <th>FDNAME</th>\n",
" <th>SNAMECOMP</th>\n",
" <th>FSYMBOL</th>\n",
" <th>FDNATURE</th>\n",
" <th>INVESTSTYLE</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1030010449</td>\n",
" <td>南方全天候策略混合型基金中基金(FOF)</td>\n",
" <td>南方全天候策略混合(FOF)</td>\n",
" <td>005215</td>\n",
" <td>FOF</td>\n",
" <td>稳健成长型</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1030010450</td>\n",
" <td>南方全天候策略混合型基金中基金(FOF)</td>\n",
" <td>南方全天候策略混合(FOF)</td>\n",
" <td>005216</td>\n",
" <td>FOF</td>\n",
" <td>稳健成长型</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1030010443</td>\n",
" <td>华夏聚惠稳健目标风险混合型基金中基金(FOF)</td>\n",
" <td>华夏聚惠(FOF)</td>\n",
" <td>005218</td>\n",
" <td>FOF</td>\n",
" <td>稳健成长型</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1030010444</td>\n",
" <td>华夏聚惠稳健目标风险混合型基金中基金(FOF)</td>\n",
" <td>华夏聚惠(FOF)</td>\n",
" <td>005219</td>\n",
" <td>FOF</td>\n",
" <td>稳健成长型</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1030010446</td>\n",
" <td>嘉实领航资产配置混合型基金中基金(FOF)</td>\n",
" <td>嘉实领航资产配置混合(FOF)</td>\n",
" <td>005156</td>\n",
" <td>FOF</td>\n",
" <td>稳健成长型</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>1030010447</td>\n",
" <td>嘉实领航资产配置混合型基金中基金(FOF)</td>\n",
" <td>嘉实领航资产配置混合(FOF)</td>\n",
" <td>005157</td>\n",
" <td>FOF</td>\n",
" <td>稳健成长型</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>1030010441</td>\n",
" <td>海富通聚优精选混合型基金中基金(FOF)</td>\n",
" <td>None</td>\n",
" <td>005220</td>\n",
" <td>FOF</td>\n",
" <td>稳健成长型</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>1030010451</td>\n",
" <td>建信福泽安泰混合型基金中基金(FOF)</td>\n",
" <td>None</td>\n",
" <td>005217</td>\n",
" <td>FOF</td>\n",
" <td>稳健成长型</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>1030010459</td>\n",
" <td>泰达宏利全能优选混合型基金中基金(FOF)</td>\n",
" <td>泰达宏利全能混合(FOF)</td>\n",
" <td>005221</td>\n",
" <td>FOF</td>\n",
" <td>稳健成长型</td>\n",
" </tr>\n",
" <tr>\n",
" <th>9</th>\n",
" <td>1030010460</td>\n",
" <td>泰达宏利全能优选混合型基金中基金(FOF)</td>\n",
" <td>泰达宏利全能混合(FOF)</td>\n",
" <td>005222</td>\n",
" <td>FOF</td>\n",
" <td>稳健成长型</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>1030011412</td>\n",
" <td>中融量化精选混合型基金中基金(FOF)</td>\n",
" <td>中融量化精选FOF</td>\n",
" <td>005758</td>\n",
" <td>FOF</td>\n",
" <td>稳健成长型</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>1030011413</td>\n",
" <td>中融量化精选混合型基金中基金(FOF)</td>\n",
" <td>中融量化精选FOF</td>\n",
" <td>005759</td>\n",
" <td>FOF</td>\n",
" <td>稳健成长型</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>1030011474</td>\n",
" <td>前海开源裕源混合型基金中基金(FOF)</td>\n",
" <td>None</td>\n",
" <td>005809</td>\n",
" <td>FOF</td>\n",
" <td>稳健成长型</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [ "text/plain": [
" SECURITYID FDNAME SNAMECOMP FSYMBOL FDNATURE \\\n", "['1030010441',\n",
"0 1030010449 南方全天候策略混合型基金中基金(FOF) 南方全天候策略混合(FOF) 005215 FOF \n", " '1030010443',\n",
"1 1030010450 南方全天候策略混合型基金中基金(FOF) 南方全天候策略混合(FOF) 005216 FOF \n", " '1030010444',\n",
"2 1030010443 华夏聚惠稳健目标风险混合型基金中基金(FOF) 华夏聚惠(FOF) 005218 FOF \n", " '1030010446',\n",
"3 1030010444 华夏聚惠稳健目标风险混合型基金中基金(FOF) 华夏聚惠(FOF) 005219 FOF \n", " '1030010447',\n",
"4 1030010446 嘉实领航资产配置混合型基金中基金(FOF) 嘉实领航资产配置混合(FOF) 005156 FOF \n", " '1030010449',\n",
"5 1030010447 嘉实领航资产配置混合型基金中基金(FOF) 嘉实领航资产配置混合(FOF) 005157 FOF \n", " '1030010450',\n",
"6 1030010441 海富通聚优精选混合型基金中基金(FOF) None 005220 FOF \n", " '1030010451',\n",
"7 1030010451 建信福泽安泰混合型基金中基金(FOF) None 005217 FOF \n", " '1030010459',\n",
"8 1030010459 泰达宏利全能优选混合型基金中基金(FOF) 泰达宏利全能混合(FOF) 005221 FOF \n", " '1030010460',\n",
"9 1030010460 泰达宏利全能优选混合型基金中基金(FOF) 泰达宏利全能混合(FOF) 005222 FOF \n", " '1030011412',\n",
"10 1030011412 中融量化精选混合型基金中基金(FOF) 中融量化精选FOF 005758 FOF \n", " '1030011413',\n",
"11 1030011413 中融量化精选混合型基金中基金(FOF) 中融量化精选FOF 005759 FOF \n", " '1030011474']"
"12 1030011474 前海开源裕源混合型基金中基金(FOF) None 005809 FOF \n",
"\n",
" INVESTSTYLE \n",
"0 稳健成长型 \n",
"1 稳健成长型 \n",
"2 稳健成长型 \n",
"3 稳健成长型 \n",
"4 稳健成长型 \n",
"5 稳健成长型 \n",
"6 稳健成长型 \n",
"7 稳健成长型 \n",
"8 稳健成长型 \n",
"9 稳健成长型 \n",
"10 稳健成长型 \n",
"11 稳健成长型 \n",
"12 稳健成长型 "
] ]
}, },
"execution_count": 32, "execution_count": 7,
"metadata": {}, "metadata": {},
"output_type": "execute_result" "output_type": "execute_result"
} }
], ],
"source": [ "source": [
"df" "security_ids"
] ]
}, },
{ {
...@@ -286,7 +114,7 @@ ...@@ -286,7 +114,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.8.12" "version": "3.9.7"
} }
}, },
"nbformat": 4, "nbformat": 4,
......
...@@ -72,12 +72,24 @@ def nearest_report_date(date): ...@@ -72,12 +72,24 @@ def nearest_report_date(date):
def fd_alive_funds(trade_dt, class_code=None): def fd_alive_funds(trade_dt, class_code=None):
if class_code: if class_code:
if isinstance(class_code, str) or isinstance(class_code, int):
condition = f" CLASSCODE like '{class_code}%' AND "
else:
condition = []
for c in class_code:
condition.append(f" CLASSCODE like '{c}%' ")
condition = "OR".join(condition)
condition = "(" + condition + ") AND"
query = f""" query = f"""
select SECODE FROM TQ_FD_TYPE select SECODE as SECURITYID, BEGINDATE, ENDDATE, CLASSCODE FROM TQ_FD_TYPE
WHERE WHERE
ISVALID = 1 AND ISVALID = 1 AND
CLASSCODE like '{class_code}%' AND {condition}
TYPESTYLE = '22' AND TYPESTYLE = '22' AND
BEGINDATE <= '{trade_dt}' AND BEGINDATE <= '{trade_dt}' AND
(ENDDATE>='{trade_dt}' or ENDDATE = '19000101') (ENDDATE>='{trade_dt}' or ENDDATE = '19000101')
...@@ -85,7 +97,7 @@ def fd_alive_funds(trade_dt, class_code=None): ...@@ -85,7 +97,7 @@ def fd_alive_funds(trade_dt, class_code=None):
""" """
else: else:
query = f""" query = f"""
select SECODE FROM TQ_FD_TYPE select SECODE as SECURITYID,BEGINDATE, ENDDATE, CLASSCODE FROM TQ_FD_TYPE
WHERE WHERE
ISVALID = 1 AND ISVALID = 1 AND
BEGINDATE <= '{trade_dt}' AND BEGINDATE <= '{trade_dt}' AND
...@@ -93,8 +105,7 @@ def fd_alive_funds(trade_dt, class_code=None): ...@@ -93,8 +105,7 @@ def fd_alive_funds(trade_dt, class_code=None):
(ENDDATE>='{trade_dt}' or ENDDATE = '19000101') (ENDDATE>='{trade_dt}' or ENDDATE = '19000101')
ORDER BY SECODE; ORDER BY SECODE;
""" """
sec_codes = read_sql(query)["SECODE"].unique().tolist() return read_sql(query)
return sec_codes
def fd_basicinfo(security_ids=None, trade_dt=None): def fd_basicinfo(security_ids=None, trade_dt=None):
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment