Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in
Toggle navigation
F
fof
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Dr.李
fof
Commits
52149dd6
Commit
52149dd6
authored
Feb 26, 2022
by
Dr.李
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
added manager index notebook
parent
e3a7f558
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
874 additions
and
84 deletions
+874
-84
utility.py
fof/utility.py
+43
-7
010 fund manager.ipynb
manager/010 fund manager.ipynb
+0
-77
010 基金经理指数.ipynb
manager/010 基金经理指数.ipynb
+831
-0
No files found.
fof/utility.py
View file @
52149dd6
...
...
@@ -433,20 +433,18 @@ def stk_return(start_date, end_date, security_ids=None):
return
read_sql
(
query
,
source
=
"mysql"
)
.
sort_values
(
"security_code"
)
.
reset_index
(
drop
=
True
)
def
fd_manager
(
manager_ids
,
manager_names
=
None
,
start_date
=
None
,
end_date
=
None
):
def
fd_manager
(
manager_ids
=
None
,
manager_names
=
None
,
start_date
=
None
,
end_date
=
None
):
if
manager_ids
:
manager_ids
=
_join_ids
(
manager_ids
)
elif
manager_names
:
manager_names
=
_join_ids
(
manager_names
)
else
:
raise
ValueError
(
"manager_ids and manager_names can't be set empty both"
)
if
manager_ids
:
query
=
f
"""
SELECT MANAGERCODE, MANAGERNAME, COMPCODE, COMPNAME, SECODE as SECURITYID, BEGINDATE, ENDDATE FROM TQ_FD_MGPERFORMANCE
WHERE
BEGINDATE <= '{_to_yyyymmdd(end_date)}' AND
ENDDATE >= '{_to_yyyymmdd(start_date)}'
AND
(ENDDATE >= '{_to_yyyymmdd(start_date)}' OR ENDDATE = '19000101')
AND
MANAGERCODE in ({manager_ids}) AND
ISVALID = 1
"""
...
...
@@ -454,10 +452,48 @@ def fd_manager(manager_ids, manager_names=None, start_date=None, end_date=None):
query
=
f
"""
SELECT MANAGERCODE, MANAGERNAME, COMPCODE, COMPNAME, SECODE as SECURITYID, BEGINDATE, ENDDATE FROM TQ_FD_MGPERFORMANCE
WHERE
BEGINDATE <= '{_to_yyyymmdd(end_date)}' AND
ENDDATE >= '{_to_yyyymmdd(start_date)}'
AND
(ENDDATE >= '{_to_yyyymmdd(start_date)}' OR ENDDATE = '19000101')
AND
MANAGERNAME in ({manager_names}) AND
ISVALID = 1
"""
else
:
query
=
f
"""
SELECT MANAGERCODE, MANAGERNAME, COMPCODE, COMPNAME, SECODE as SECURITYID, BEGINDATE, ENDDATE FROM TQ_FD_MGPERFORMANCE
WHERE
BEGINDATE <= '{_to_yyyymmdd(end_date)}' AND
(ENDDATE >= '{_to_yyyymmdd(start_date)}' OR ENDDATE = '19000101') AND
ISVALID = 1
"""
return
read_sql
(
query
)
.
sort_values
(
"MANAGERCODE"
)
.
reset_index
(
drop
=
True
)
def
fd_fund_mktv
(
security_ids
,
trade_dt
):
nav_df
=
fd_qtfdnav
(
security_ids
,
trade_dt
)
sec_id_strs
=
_join_ids
(
security_ids
)
query
=
f
"""
SELECT SECODE as SECURITYID, REPORTDATE, INIFDSHARE * 10000 as INIFDSHARE, ENDFDSHARE * 10000 as ENDFDSHARE FROM TQ_FD_SHARE
WHERE
REPORTDATE <= '{_to_yyyymmdd(trade_dt)}' AND
SECODE IN ({sec_id_strs}) AND
ISVALID = 1
ORDER BY REPORTDATE
"""
shares_df
=
read_sql
(
query
)
.
sort_values
(
"SECURITYID"
)
.
reset_index
(
drop
=
True
)
shares_df
=
shares_df
.
groupby
(
"SECURITYID"
,
as_index
=
False
)
.
last
()
df
=
pd
.
merge
(
nav_df
[[
"SECURITYID"
,
"UNITNAV"
,
"NAVGRTD"
]],
shares_df
[[
"SECURITYID"
,
"ENDFDSHARE"
]],
on
=
"SECURITYID"
)
df
[
"MKTV"
]
=
df
[
"UNITNAV"
]
*
df
[
"ENDFDSHARE"
]
return
df
def
fd_rl_classification
(
security_ids
,
trade_dt
):
sec_id_strs
=
_join_ids
(
security_ids
)
query
=
f
"""
SELECT security_id as SECURITYID, rl_class, rl_class_name, rl_sub_class, rl_sub_class_name FROM fd_rl_classification
WHERE
trade_date = '{_to_yyyymmdd(trade_dt)}' AND
security_id in ({sec_id_strs}) AND
flag = 1
"""
return
read_sql
(
query
,
source
=
"mysql"
)
.
sort_values
(
"SECURITYID"
)
.
reset_index
(
drop
=
True
)
manager/010 fund manager.ipynb
deleted
100644 → 0
View file @
e3a7f558
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"id": "ca389ee5-b800-4682-bfab-a22a6247bd67",
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"sys.path.append(\"../\")\n",
"import datetime as dt\n",
"from fof.utility import fd_manager\n",
"from PyFin.api import *"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "008213ed-f569-4535-8519-7a5b1b06503c",
"metadata": {},
"outputs": [],
"source": [
"trade_dt = adjustDateByCalendar(\"china.sse\", \"2015-01-01\").strftime(\"%Y%m%d\")"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "be10d317-bca6-41db-9b54-56573cd564a6",
"metadata": {},
"outputs": [],
"source": [
"funds = fd_manager(\"30057809\", start_date='20100101', end_date='20220226')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "44022a45-2da2-4ee9-a107-f842f396317f",
"metadata": {},
"outputs": [],
"source": [
"funds"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "321f0f1d-c5c9-4591-8b67-e3ab9dbd1a11",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
manager/010 基金经理指数.ipynb
0 → 100644
View file @
52149dd6
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "ca389ee5-b800-4682-bfab-a22a6247bd67",
"metadata": {},
"outputs": [],
"source": [
"import sys\n",
"sys.path.append(\"../\")\n",
"import datetime as dt\n",
"from fof.utility import (\n",
" fd_manager,\n",
" fd_fund_mktv,\n",
" fd_rl_classification\n",
")\n",
"import pandas as pd\n",
"from PyFin.api import *"
]
},
{
"cell_type": "markdown",
"id": "63c680ce-57a7-4376-90fa-629c80fd5b82",
"metadata": {},
"source": [
"# 1. Prepare Data\n",
"-----------------------"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "008213ed-f569-4535-8519-7a5b1b06503c",
"metadata": {},
"outputs": [],
"source": [
"trade_dt = adjustDateByCalendar(\"china.sse\", \"2022-02-01\").strftime(\"%Y%m%d\")"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "be10d317-bca6-41db-9b54-56573cd564a6",
"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>MANAGERCODE</th>\n",
" <th>MANAGERNAME</th>\n",
" <th>COMPCODE</th>\n",
" <th>COMPNAME</th>\n",
" <th>SECURITYID</th>\n",
" <th>BEGINDATE</th>\n",
" <th>ENDDATE</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>80000243</td>\n",
" <td>长信基金管理有限责任公司</td>\n",
" <td>1030008874</td>\n",
" <td>20170109</td>\n",
" <td>19000101</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>80000243</td>\n",
" <td>长信基金管理有限责任公司</td>\n",
" <td>1030010453</td>\n",
" <td>20171109</td>\n",
" <td>19000101</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>80000243</td>\n",
" <td>长信基金管理有限责任公司</td>\n",
" <td>1030011585</td>\n",
" <td>20180809</td>\n",
" <td>19000101</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>80000243</td>\n",
" <td>长信基金管理有限责任公司</td>\n",
" <td>1030010116</td>\n",
" <td>20180830</td>\n",
" <td>19000101</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>80000243</td>\n",
" <td>长信基金管理有限责任公司</td>\n",
" <td>2030000115</td>\n",
" <td>20150313</td>\n",
" <td>19000101</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" MANAGERCODE MANAGERNAME COMPCODE COMPNAME SECURITYID BEGINDATE \\\n",
"0 30322345 左金保 80000243 长信基金管理有限责任公司 1030008874 20170109 \n",
"1 30322345 左金保 80000243 长信基金管理有限责任公司 1030010453 20171109 \n",
"2 30322345 左金保 80000243 长信基金管理有限责任公司 1030011585 20180809 \n",
"3 30322345 左金保 80000243 长信基金管理有限责任公司 1030010116 20180830 \n",
"4 30322345 左金保 80000243 长信基金管理有限责任公司 2030000115 20150313 \n",
"\n",
" ENDDATE \n",
"0 19000101 \n",
"1 19000101 \n",
"2 19000101 \n",
"3 19000101 \n",
"4 19000101 "
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 获取指定日,基金经理在管基金\n",
"funds = fd_manager(\"30322345\", start_date=trade_dt, end_date=trade_dt)\n",
"funds.head()"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "ffbac3af-39d6-4cd3-95cb-705c32380985",
"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>UNITNAV</th>\n",
" <th>NAVGRTD</th>\n",
" <th>ENDFDSHARE</th>\n",
" <th>MKTV</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1030000867</td>\n",
" <td>1.9650</td>\n",
" <td>1.708075</td>\n",
" <td>1.385083e+08</td>\n",
" <td>2.721688e+08</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1030004356</td>\n",
" <td>1.5530</td>\n",
" <td>1.569653</td>\n",
" <td>1.991231e+08</td>\n",
" <td>3.092382e+08</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1030005207</td>\n",
" <td>1.8904</td>\n",
" <td>1.689080</td>\n",
" <td>2.636247e+08</td>\n",
" <td>4.983561e+08</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1030007006</td>\n",
" <td>1.1860</td>\n",
" <td>0.168919</td>\n",
" <td>5.582928e+08</td>\n",
" <td>6.621352e+08</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1030008874</td>\n",
" <td>1.7560</td>\n",
" <td>1.679213</td>\n",
" <td>3.007749e+06</td>\n",
" <td>5.281608e+06</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" SECURITYID UNITNAV NAVGRTD ENDFDSHARE MKTV\n",
"0 1030000867 1.9650 1.708075 1.385083e+08 2.721688e+08\n",
"1 1030004356 1.5530 1.569653 1.991231e+08 3.092382e+08\n",
"2 1030005207 1.8904 1.689080 2.636247e+08 4.983561e+08\n",
"3 1030007006 1.1860 0.168919 5.582928e+08 6.621352e+08\n",
"4 1030008874 1.7560 1.679213 3.007749e+06 5.281608e+06"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 在管基金规模\n",
"funds_mktv = fd_fund_mktv(funds.SECURITYID.unique(), trade_dt=trade_dt)\n",
"funds_mktv.head()"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "3dc7be9d-e8c2-4566-bf14-d617ea230c14",
"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>rl_class</th>\n",
" <th>rl_class_name</th>\n",
" <th>rl_sub_class</th>\n",
" <th>rl_sub_class_name</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>1030000867</td>\n",
" <td>9902</td>\n",
" <td>混合型基金</td>\n",
" <td>990202</td>\n",
" <td>高权益仓位混合型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>1030004356</td>\n",
" <td>9901</td>\n",
" <td>股票型基金</td>\n",
" <td>990102</td>\n",
" <td>普通股票型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>1030005207</td>\n",
" <td>9901</td>\n",
" <td>股票型基金</td>\n",
" <td>990102</td>\n",
" <td>普通股票型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>1030007006</td>\n",
" <td>9902</td>\n",
" <td>混合型基金</td>\n",
" <td>990202</td>\n",
" <td>高权益仓位混合型基金</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1030008874</td>\n",
" <td>9902</td>\n",
" <td>混合型基金</td>\n",
" <td>990202</td>\n",
" <td>高权益仓位混合型基金</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" SECURITYID rl_class rl_class_name rl_sub_class rl_sub_class_name\n",
"0 1030000867 9902 混合型基金 990202 高权益仓位混合型基金\n",
"1 1030004356 9901 股票型基金 990102 普通股票型基金\n",
"2 1030005207 9901 股票型基金 990102 普通股票型基金\n",
"3 1030007006 9902 混合型基金 990202 高权益仓位混合型基金\n",
"4 1030008874 9902 混合型基金 990202 高权益仓位混合型基金"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 获取基金分类信息\n",
"bonds_class_codes = [\"990301\", \"990302\", \"990303\", \"990304\", \"990305\", \"990306\", \"990399\", \"990501\", \"990502\", \"990205\", \"990402\", \"990603\"]\n",
"funds_rl_classification = fd_rl_classification(funds_mktv.SECURITYID, trade_dt)\n",
"funds_rl_classification.head()"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "1055c68c-3875-489b-acaa-a9046d98a2c1",
"metadata": {},
"outputs": [],
"source": [
"# 计算分类\n",
"total_df = pd.merge(funds_mktv, funds_rl_classification, on=\"SECURITYID\")"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "00d6c888-682e-43c5-8c57-420a279effa3",
"metadata": {},
"outputs": [],
"source": [
"market_manager_index_ret = total_df.MKTV @ total_df.NAVGRTD / (1e-10 + total_df.MKTV.sum()) / 100.0\n",
"flags = total_df.rl_sub_class.isin(bonds_class_codes)\n",
"bond_market_manager_index_ret = total_df[flags].MKTV @ total_df[flags].NAVGRTD / (1e-10 + total_df[flags].MKTV.sum()) / 100.0\n",
"equity_market_manager_index_ret = total_df[~flags].MKTV @ total_df[~flags].NAVGRTD / (1e-10 + total_df[~flags].MKTV.sum()) / 100.0"
]
},
{
"cell_type": "markdown",
"id": "36e0e9b4-2c82-4a48-a6d9-a4a5d14151f7",
"metadata": {},
"source": [
"## 1.1 Put it all together"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "e1817df4-ce3f-48ca-b656-2a17abc18f8e",
"metadata": {},
"outputs": [],
"source": [
"def cal_manager_index_ret(manager_ids, trade_dt):\n",
" funds = fd_manager(manager_ids, start_date=trade_dt, end_date=trade_dt)\n",
" funds_mktv = fd_fund_mktv(funds.SECURITYID.unique(), trade_dt=trade_dt)\n",
" \n",
" bonds_class_codes = [\"990301\", \"990302\", \"990303\", \"990304\", \"990305\", \"990306\", \"990399\", \"990501\", \"990502\", \"990205\", \"990402\", \"990603\"]\n",
" funds_rl_classification = fd_rl_classification(funds_mktv.SECURITYID, trade_dt)\n",
" \n",
" total_df = pd.merge(funds, funds_mktv, on=\"SECURITYID\")\n",
" total_df = pd.merge(total_df, funds_rl_classification, on=\"SECURITYID\")\n",
" \n",
" def calc(g):\n",
" market_manager_index_ret = g.MKTV @ g.NAVGRTD / (1e-10 + g.MKTV.sum()) / 100.0\n",
" flags = g.rl_sub_class.isin(bonds_class_codes)\n",
" bond_market_manager_index_ret = g[flags].MKTV @ g[flags].NAVGRTD / (1e-10 + g[flags].MKTV.sum()) / 100.0\n",
" equity_market_manager_index_ret = g[~flags].MKTV @ g[~flags].NAVGRTD / (1e-10 + g[~flags].MKTV.sum()) / 100.0\n",
" return pd.Series(\n",
" dict(MANAGERNAME=g.MANAGERNAME.values[0], all=market_manager_index_ret, bond=bond_market_manager_index_ret, equity=equity_market_manager_index_ret)\n",
" )\n",
" return total_df.groupby(\"MANAGERCODE\", as_index=False).apply(calc)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "3225d437-56a8-4fc6-80bc-22456a356754",
"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>MANAGERCODE</th>\n",
" <th>MANAGERNAME</th>\n",
" <th>all</th>\n",
" <th>bond</th>\n",
" <th>equity</th>\n",
" <th>trade_date</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>30189744</td>\n",
" <td>张坤</td>\n",
" <td>0.039522</td>\n",
" <td>0.0</td>\n",
" <td>0.039522</td>\n",
" <td>20220207</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>0.009627</td>\n",
" <td>0.0</td>\n",
" <td>0.009627</td>\n",
" <td>20220207</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" MANAGERCODE MANAGERNAME all bond equity trade_date\n",
"0 30189744 张坤 0.039522 0.0 0.039522 20220207\n",
"1 30322345 左金保 0.009627 0.0 0.009627 20220207"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"res = cal_manager_index_ret([\"30322345\", \"30189744\"], trade_dt=trade_dt)\n",
"res[\"trade_date\"] = trade_dt\n",
"res"
]
},
{
"cell_type": "markdown",
"id": "f8725110-12d9-475a-8687-d2985f51c9b1",
"metadata": {},
"source": [
"# 2. 基金经理指数\n",
"------------------"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "3b18ed34-2864-472b-b5ed-460e27d1ab4e",
"metadata": {},
"outputs": [],
"source": [
"start_dt = \"2022-01-01\"\n",
"end_dt = \"2022-02-01\"\n",
"\n",
"trade_dates = [d.strftime(\"%Y%m%d\") for d in bizDatesList(\"china.sse\", start_dt, end_dt)]"
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "0b15eb76-4a60-4bd5-bf40-a93f0f9255e8",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"2022-02-26 20:52:14.442717 : 20220104\n",
"2022-02-26 20:52:35.783732 : 20220105\n",
"2022-02-26 20:52:56.740246 : 20220106\n",
"2022-02-26 20:53:16.887966 : 20220107\n",
"2022-02-26 20:53:42.567207 : 20220110\n",
"2022-02-26 20:54:07.289536 : 20220111\n",
"2022-02-26 20:54:33.584606 : 20220112\n",
"2022-02-26 20:55:03.079815 : 20220113\n",
"2022-02-26 20:55:27.821764 : 20220114\n",
"2022-02-26 20:55:56.362991 : 20220117\n",
"2022-02-26 20:56:20.024529 : 20220118\n",
"2022-02-26 20:56:43.735811 : 20220119\n",
"2022-02-26 20:57:07.604535 : 20220120\n",
"2022-02-26 20:57:34.089679 : 20220121\n",
"2022-02-26 20:58:00.446535 : 20220124\n",
"2022-02-26 20:58:25.516419 : 20220125\n",
"2022-02-26 20:58:49.720528 : 20220126\n",
"2022-02-26 20:59:13.330575 : 20220127\n",
"2022-02-26 20:59:37.040424 : 20220128\n"
]
}
],
"source": [
"dfs = []\n",
"for trade_dt in trade_dates:\n",
" print(dt.datetime.now(), \":\", trade_dt)\n",
" manager_ids = fd_manager(start_date=trade_dt, end_date=trade_dt).MANAGERCODE.unique().tolist()\n",
" res = cal_manager_index_ret(manager_ids, trade_dt)\n",
" res[\"trade_date\"] = trade_dt\n",
" dfs.append(res)"
]
},
{
"cell_type": "code",
"execution_count": 25,
"id": "c1e84b66-9528-444e-aa7a-dd784352cf28",
"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>MANAGERCODE</th>\n",
" <th>MANAGERNAME</th>\n",
" <th>all</th>\n",
" <th>bond</th>\n",
" <th>equity</th>\n",
" <th>trade_date</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>757</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>-0.011036</td>\n",
" <td>0.0</td>\n",
" <td>-0.011036</td>\n",
" <td>20220104</td>\n",
" </tr>\n",
" <tr>\n",
" <th>758</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>-0.020597</td>\n",
" <td>0.0</td>\n",
" <td>-0.020597</td>\n",
" <td>20220105</td>\n",
" </tr>\n",
" <tr>\n",
" <th>758</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>0.003278</td>\n",
" <td>0.0</td>\n",
" <td>0.003278</td>\n",
" <td>20220106</td>\n",
" </tr>\n",
" <tr>\n",
" <th>767</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>-0.006381</td>\n",
" <td>0.0</td>\n",
" <td>-0.006381</td>\n",
" <td>20220107</td>\n",
" </tr>\n",
" <tr>\n",
" <th>758</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>0.004087</td>\n",
" <td>0.0</td>\n",
" <td>0.004087</td>\n",
" <td>20220110</td>\n",
" </tr>\n",
" <tr>\n",
" <th>758</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>-0.008969</td>\n",
" <td>0.0</td>\n",
" <td>-0.008969</td>\n",
" <td>20220111</td>\n",
" </tr>\n",
" <tr>\n",
" <th>759</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>0.012165</td>\n",
" <td>0.0</td>\n",
" <td>0.012165</td>\n",
" <td>20220112</td>\n",
" </tr>\n",
" <tr>\n",
" <th>759</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>-0.015069</td>\n",
" <td>0.0</td>\n",
" <td>-0.015069</td>\n",
" <td>20220113</td>\n",
" </tr>\n",
" <tr>\n",
" <th>766</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>-0.000082</td>\n",
" <td>0.0</td>\n",
" <td>-0.000082</td>\n",
" <td>20220114</td>\n",
" </tr>\n",
" <tr>\n",
" <th>753</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>0.012872</td>\n",
" <td>0.0</td>\n",
" <td>0.012872</td>\n",
" <td>20220117</td>\n",
" </tr>\n",
" <tr>\n",
" <th>755</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>0.005892</td>\n",
" <td>0.0</td>\n",
" <td>0.005892</td>\n",
" <td>20220118</td>\n",
" </tr>\n",
" <tr>\n",
" <th>755</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>-0.014009</td>\n",
" <td>0.0</td>\n",
" <td>-0.014009</td>\n",
" <td>20220119</td>\n",
" </tr>\n",
" <tr>\n",
" <th>754</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>-0.012030</td>\n",
" <td>0.0</td>\n",
" <td>-0.012030</td>\n",
" <td>20220120</td>\n",
" </tr>\n",
" <tr>\n",
" <th>763</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>-0.009188</td>\n",
" <td>0.0</td>\n",
" <td>-0.009188</td>\n",
" <td>20220121</td>\n",
" </tr>\n",
" <tr>\n",
" <th>752</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>0.008311</td>\n",
" <td>0.0</td>\n",
" <td>0.008311</td>\n",
" <td>20220124</td>\n",
" </tr>\n",
" <tr>\n",
" <th>753</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>-0.024946</td>\n",
" <td>0.0</td>\n",
" <td>-0.024946</td>\n",
" <td>20220125</td>\n",
" </tr>\n",
" <tr>\n",
" <th>753</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>0.005885</td>\n",
" <td>0.0</td>\n",
" <td>0.005885</td>\n",
" <td>20220126</td>\n",
" </tr>\n",
" <tr>\n",
" <th>754</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>-0.019892</td>\n",
" <td>0.0</td>\n",
" <td>-0.019892</td>\n",
" <td>20220127</td>\n",
" </tr>\n",
" <tr>\n",
" <th>762</th>\n",
" <td>30322345</td>\n",
" <td>左金保</td>\n",
" <td>-0.005132</td>\n",
" <td>0.0</td>\n",
" <td>-0.005132</td>\n",
" <td>20220128</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" MANAGERCODE MANAGERNAME all bond equity trade_date\n",
"757 30322345 左金保 -0.011036 0.0 -0.011036 20220104\n",
"758 30322345 左金保 -0.020597 0.0 -0.020597 20220105\n",
"758 30322345 左金保 0.003278 0.0 0.003278 20220106\n",
"767 30322345 左金保 -0.006381 0.0 -0.006381 20220107\n",
"758 30322345 左金保 0.004087 0.0 0.004087 20220110\n",
"758 30322345 左金保 -0.008969 0.0 -0.008969 20220111\n",
"759 30322345 左金保 0.012165 0.0 0.012165 20220112\n",
"759 30322345 左金保 -0.015069 0.0 -0.015069 20220113\n",
"766 30322345 左金保 -0.000082 0.0 -0.000082 20220114\n",
"753 30322345 左金保 0.012872 0.0 0.012872 20220117\n",
"755 30322345 左金保 0.005892 0.0 0.005892 20220118\n",
"755 30322345 左金保 -0.014009 0.0 -0.014009 20220119\n",
"754 30322345 左金保 -0.012030 0.0 -0.012030 20220120\n",
"763 30322345 左金保 -0.009188 0.0 -0.009188 20220121\n",
"752 30322345 左金保 0.008311 0.0 0.008311 20220124\n",
"753 30322345 左金保 -0.024946 0.0 -0.024946 20220125\n",
"753 30322345 左金保 0.005885 0.0 0.005885 20220126\n",
"754 30322345 左金保 -0.019892 0.0 -0.019892 20220127\n",
"762 30322345 左金保 -0.005132 0.0 -0.005132 20220128"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"final_report = pd.concat(dfs)\n",
"final_report[final_report.MANAGERCODE == '30322345']"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "215df6f9-032d-46e6-8e9c-fabbfefff472",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.7"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment