Commit 94e941a0 authored by Dr.李's avatar Dr.李

added manager

parent 041faa29
......@@ -243,11 +243,18 @@ def _to_yyyy_mm_dd(trade_dt):
return trade_dt
else:
return f"{trade_dt[0:4]}-{trade_dt[4:6]}-{trade_dt[6:8]}"
def _to_yyyymmdd(trade_dt):
if len(trade_dt) == 8:
return trade_dt
else:
return f"{trade_dt[0:4]}{trade_dt[5:7]}{trade_dt[8:10]}"
def _security_ids(security_ids):
def _join_ids(security_ids):
if isinstance(security_ids, str):
sec_id_strs = security_ids
sec_id_strs = "'" + security_ids + "'"
elif security_ids is None:
sec_id_strs = None
else:
......@@ -256,7 +263,7 @@ def _security_ids(security_ids):
def fd_skdetail(security_ids, trade_dt):
p_id_strs = _security_ids(security_ids)
p_id_strs = _join_ids(security_ids)
query = f"""
SELECT SECODE as pid, SKCODE as security_code, SKNAME, HOLDMKTCAP, HOLDAMT, NAVRTO FROM TQ_FD_SKDETAIL
......@@ -272,7 +279,7 @@ def fd_skdetail(security_ids, trade_dt):
def risk_exposure(start_date, end_date, security_ids=None):
sec_id_strs = _security_ids(security_ids)
sec_id_strs = _join_ids(security_ids)
if sec_id_strs:
query = f"""
......@@ -306,7 +313,7 @@ def risk_return(start_date, end_date):
def specific_return(start_date, end_date, security_ids=None):
sec_id_strs = _security_ids(security_ids)
sec_id_strs = _join_ids(security_ids)
if sec_id_strs:
query = f"""
......@@ -340,7 +347,7 @@ def risk_cov(start_date, end_date, model="short"):
def special_risk(start_date, end_date, model="short", security_ids=None):
sec_id_strs = _security_ids(security_ids)
sec_id_strs = _join_ids(security_ids)
if sec_id_strs:
query = f"""
......@@ -380,7 +387,7 @@ def index_component(index_code, start_date, end_date):
def sw_industry_daily(start_date, end_date, level=1, security_ids=None):
sec_id_strs = _security_ids(security_ids)
sec_id_strs = _join_ids(security_ids)
if sec_id_strs:
query = f"""
SELECT trade_date, security_code, industry_code{level} as industry_code, industry_name{level} as industry_name FROM sw_industry_daily
......@@ -402,7 +409,7 @@ def sw_industry_daily(start_date, end_date, level=1, security_ids=None):
def stk_return(start_date, end_date, security_ids=None):
sec_id_strs = _security_ids(security_ids)
sec_id_strs = _join_ids(security_ids)
if sec_id_strs:
query = f"""
SELECT security_code, min(trade_date) as start_date, max(trade_date) as end_date, exp(sum(log(1.0 + change_pct / 100.))) AS chg_pct FROM stk_daily_price_pro
......@@ -423,3 +430,17 @@ def stk_return(start_date, end_date, security_ids=None):
GROUP BY security_code;
"""
return read_sql(query, source="mysql").sort_values("security_code").reset_index(drop=True)
def fd_manager(manager_ids, start_date, end_date):
manager_ids = _join_ids(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
MANAGERCODE in ({manager_ids}) AND
ISVALID = 1
"""
return read_sql(query).sort_values("MANAGERCODE").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
}
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