Commit 52149dd6 authored by Dr.李's avatar Dr.李

added manager index notebook

parent e3a7f558
......@@ -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)
{
"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
}
This diff is collapsed.
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