Commit e41f62d2 authored by Dr.李's avatar Dr.李

update api

parent 2387388e
This diff is collapsed.
This diff is collapsed.
...@@ -239,7 +239,10 @@ def fd_skdetail(security_ids, trade_dt): ...@@ -239,7 +239,10 @@ def fd_skdetail(security_ids, trade_dt):
ISVALID = 1 AND ISVALID = 1 AND
SECODE in ({sec_id_strs}) SECODE in ({sec_id_strs})
""" """
return read_sql(query).sort_values("SECURITYID") df = read_sql(query).sort_values("SECURITYID")
total_value = df.HOLDMKTCAP.sum()
df["pct"] = df.HOLDMKTCAP / total_value
return df
def _to_yyyy_mm_dd(trade_dt): def _to_yyyy_mm_dd(trade_dt):
...@@ -249,7 +252,7 @@ def _to_yyyy_mm_dd(trade_dt): ...@@ -249,7 +252,7 @@ def _to_yyyy_mm_dd(trade_dt):
return f"{trade_dt[0:4]}-{trade_dt[4:6]}-{trade_dt[6:8]}" return f"{trade_dt[0:4]}-{trade_dt[4:6]}-{trade_dt[6:8]}"
def risk_exposure(security_ids, trade_dt): def risk_exposure(security_ids, start_date, end_date):
if isinstance(security_ids, str): if isinstance(security_ids, str):
sec_id_strs = security_ids sec_id_strs = security_ids
else: else:
...@@ -258,26 +261,54 @@ def risk_exposure(security_ids, trade_dt): ...@@ -258,26 +261,54 @@ def risk_exposure(security_ids, trade_dt):
query = f""" query = f"""
SELECT trade_date, security_code, {','.join(RISK_STYLES)}, {','.join(INDUSTRY_STYLES)} FROM risk_exposure SELECT trade_date, security_code, {','.join(RISK_STYLES)}, {','.join(INDUSTRY_STYLES)} FROM risk_exposure
WHERE WHERE
trade_date = '{_to_yyyy_mm_dd(trade_dt)}' AND trade_date >= '{_to_yyyy_mm_dd(start_date)}' AND
is_verify = 1 AND trade_date <= '{_to_yyyy_mm_dd(end_date)}' AND
flag = 1 AND flag = 1 AND
security_code IN ({sec_id_strs}) security_code IN ({sec_id_strs})
""" """
return read_sql(query, source="mysql").sort_values("security_code") return read_sql(query, source="mysql").sort_values(["trade_date", "security_code"])
def risk_cov(trade_dt, model="short"): def risk_return(start_date, end_date):
query = f""" query = f"""
SELECT * FROM risk_cov_{model} SELECT trade_date, {','.join(RISK_STYLES)}, {','.join(INDUSTRY_STYLES)} FROM risk_return
WHERE WHERE
trade_date = '{_to_yyyy_mm_dd(trade_dt)}' AND trade_date >= '{_to_yyyy_mm_dd(start_date)}' AND
is_verify = 1 AND trade_date <= '{_to_yyyy_mm_dd(end_date)}' AND
flag = 1 flag = 1
""" """
return read_sql(query, source="mysql").sort_values("FactorID") return read_sql(query, source="mysql").sort_values(["trade_date"])
def special_risk(security_ids, trade_dt, model="short"): def specific_return(security_ids, start_date, end_date):
if isinstance(security_ids, str):
sec_id_strs = security_ids
else:
sec_id_strs = ",".join(["'" + s + "'" for s in security_ids])
query = f"""
SELECT trade_date, security_code, secShortName, symbol, spret FROM specific_return
WHERE
trade_date >= '{_to_yyyy_mm_dd(start_date)}' AND
trade_date <= '{_to_yyyy_mm_dd(end_date)}' AND
flag = 1 AND
security_code IN ({sec_id_strs})
"""
return read_sql(query, source="mysql").sort_values(["trade_date", "security_code"])
def risk_cov(start_date, end_date, model="short"):
query = f"""
SELECT trade_date, FactorID, {','.join(RISK_STYLES)}, {','.join(INDUSTRY_STYLES)} FROM risk_cov_{model}
WHERE
trade_date >= '{_to_yyyy_mm_dd(start_date)}' AND
trade_date <= '{_to_yyyy_mm_dd(end_date)}' AND
flag = 1
"""
return read_sql(query, source="mysql").sort_values(["trade_date", "FactorID"])
def special_risk(security_ids, start_date, end_date, model="short"):
if isinstance(security_ids, str): if isinstance(security_ids, str):
sec_id_strs = security_ids sec_id_strs = security_ids
else: else:
...@@ -286,15 +317,15 @@ def special_risk(security_ids, trade_dt, model="short"): ...@@ -286,15 +317,15 @@ def special_risk(security_ids, trade_dt, model="short"):
query = f""" query = f"""
SELECT trade_date, security_code, secShortName, symbol, SRISK FROM specific_risk_{model} SELECT trade_date, security_code, secShortName, symbol, SRISK FROM specific_risk_{model}
WHERE WHERE
trade_date = '{_to_yyyy_mm_dd(trade_dt)}' AND trade_date >= '{_to_yyyy_mm_dd(start_date)}' AND
is_verify = 1 AND trade_date <= '{_to_yyyy_mm_dd(end_date)}' AND
flag = 1 AND flag = 1 AND
security_code IN ({sec_id_strs}) security_code IN ({sec_id_strs})
""" """
return read_sql(query, source="mysql").sort_values("security_code") return read_sql(query, source="mysql").sort_values(["trade_date", "security_code"])
def index_component(index_code, trade_dt): def index_component(index_code, start_date, end_date):
query = f""" query = f"""
SELECT index_component.trade_date, index_component.security_code, `index`.sname, `index`.weighing FROM `index` SELECT index_component.trade_date, index_component.security_code, `index`.sname, `index`.weighing FROM `index`
JOIN index_component ON JOIN index_component ON
...@@ -302,17 +333,16 @@ def index_component(index_code, trade_dt): ...@@ -302,17 +333,16 @@ def index_component(index_code, trade_dt):
`index`.isymbol = index_component.isymbol AND `index`.isymbol = index_component.isymbol AND
`index`.symbol = index_component.symbol `index`.symbol = index_component.symbol
WHERE WHERE
`index`.trade_date = '{_to_yyyy_mm_dd(trade_dt)}' AND `index`.trade_date >= '{_to_yyyy_mm_dd(start_date)}' AND
`index`.is_verify = 1 AND `index`.trade_date <= '{_to_yyyy_mm_dd(end_date)}' AND
`index`.flag = 1 AND `index`.flag = 1 AND
index_component.is_verify = 1 AND
index_component.flag = 1 AND index_component.flag = 1 AND
index_component.isecurity_code = '{index_code}'; index_component.isecurity_code = '{index_code}';
""" """
return read_sql(query, source="mysql").sort_values("security_code") return read_sql(query, source="mysql").sort_values(["trade_date", "security_code"])
def sw_industry_daily(security_ids, trade_dt, level=1): def sw_industry_daily(security_ids, start_date, end_date, level=1):
if isinstance(security_ids, str): if isinstance(security_ids, str):
sec_id_strs = security_ids sec_id_strs = security_ids
else: else:
...@@ -321,27 +351,26 @@ def sw_industry_daily(security_ids, trade_dt, level=1): ...@@ -321,27 +351,26 @@ def sw_industry_daily(security_ids, trade_dt, level=1):
query = f""" query = f"""
SELECT trade_date, security_code, industry_code{level} as industry_code, industry_name{level} as industry_name FROM sw_industry_daily SELECT trade_date, security_code, industry_code{level} as industry_code, industry_name{level} as industry_name FROM sw_industry_daily
WHERE WHERE
trade_date = '{_to_yyyy_mm_dd(trade_dt)}' AND trade_date >= '{_to_yyyy_mm_dd(start_date)}' AND
is_verify = 1 AND trade_date <= '{_to_yyyy_mm_dd(end_date)}' AND
flag = 1 AND flag = 1 AND
security_code IN ({sec_id_strs}) security_code IN ({sec_id_strs})
""" """
return read_sql(query, source="mysql").sort_values("security_code") return read_sql(query, source="mysql").sort_values(["trade_date", "security_code"])
def stk_return_range(security_ids, start_date, end_date): def stk_return(security_ids, start_date, end_date):
if isinstance(security_ids, str): if isinstance(security_ids, str):
sec_id_strs = security_ids sec_id_strs = security_ids
else: else:
sec_id_strs = ",".join(["'" + s + "'" for s in security_ids]) sec_id_strs = ",".join(["'" + s + "'" for s in security_ids])
query = f""" query = f"""
SELECT security_code, min(trade_date) as start_date, max(trade_date) as end_date, exp(sum(log(change_pct / 100.0 + 1.0))) - 1.0 as rtn FROM stk_daily_price_pro SELECT trade_date, security_code, change_pct / 100. FROM stk_daily_price_pro
WHERE WHERE
trade_date >= '{_to_yyyy_mm_dd(start_date)}' AND trade_date >= '{_to_yyyy_mm_dd(start_date)}' AND
trade_date <= '{_to_yyyy_mm_dd(end_date)}' AND trade_date <= '{_to_yyyy_mm_dd(end_date)}' AND
security_code IN ({sec_id_strs}) AND security_code IN ({sec_id_strs}) AND
flag = 1 flag = 1
GROUP BY security_code;
""" """
return read_sql(query, source="mysql").sort_values("security_code") return read_sql(query, source="mysql").sort_values(["trade_date", "security_code"])
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