Commit 46e8a56c authored by 赵杰's avatar 赵杰

rank_df

parent b0bbed02
...@@ -77,8 +77,11 @@ def single_evaluation(fund_id, invest_type=2, index_id='000905.SH'): ...@@ -77,8 +77,11 @@ def single_evaluation(fund_id, invest_type=2, index_id='000905.SH'):
end_date = datetime.datetime(datetime.date.today().year, end_date = datetime.datetime(datetime.date.today().year,
datetime.date.today().month, 1) - datetime.timedelta(1) datetime.date.today().month, 1) - datetime.timedelta(1)
start_date = cal_date(end_date, 'Y', 1) start_date = cal_date(end_date, 'Y', 1)
if invest_type == 0:
z_score = search_rank(fund_rank, fund_id, metric='z_score') rank_df = tx_fund_rank
else:
rank_df = fund_rank
z_score = search_rank(rank_df, fund_id, metric='z_score')
total_level = np.select([z_score >= 80, total_level = np.select([z_score >= 80,
70 <= z_score < 80, 70 <= z_score < 80,
z_score < 70], [0, 1, 2]).item() z_score < 70], [0, 1, 2]).item()
...@@ -93,7 +96,7 @@ def single_evaluation(fund_id, invest_type=2, index_id='000905.SH'): ...@@ -93,7 +96,7 @@ def single_evaluation(fund_id, invest_type=2, index_id='000905.SH'):
compare = pd.merge(index_return_monthly, fund_return_monthly, how='inner', left_index=True, right_index=True) compare = pd.merge(index_return_monthly, fund_return_monthly, how='inner', left_index=True, right_index=True)
fund_win_rate = ((compare[fund_id] - compare['pct_chg']) > 0).sum() / compare[fund_id].count() fund_win_rate = ((compare[fund_id] - compare['pct_chg']) > 0).sum() / compare[fund_id].count()
return_rank = search_rank(fund_rank, fund_id, metric='annual_return_rank') return_rank = search_rank(rank_df, fund_id, metric='annual_return_rank')
return_level = np.select([return_rank >= 0.8, return_level = np.select([return_rank >= 0.8,
0.7 <= return_rank < 0.8, 0.7 <= return_rank < 0.8,
0.6 <= return_rank < 0.7, 0.6 <= return_rank < 0.7,
...@@ -101,8 +104,8 @@ def single_evaluation(fund_id, invest_type=2, index_id='000905.SH'): ...@@ -101,8 +104,8 @@ def single_evaluation(fund_id, invest_type=2, index_id='000905.SH'):
return_bool = 1 if return_level > 2 else 0 return_bool = 1 if return_level > 2 else 0
return_triple = return_level - 1 if return_level >= 2 else return_level return_triple = return_level - 1 if return_level >= 2 else return_level
drawdown_rank = search_rank(fund_rank, fund_id, metric='max_drawdown_rank') drawdown_rank = search_rank(rank_df, fund_id, metric='max_drawdown_rank')
drawdown_value = search_rank(fund_rank, fund_id, metric='max_drawdown') drawdown_value = search_rank(rank_df, fund_id, metric='max_drawdown')
drawdown_level = np.select([drawdown_rank >= 0.8, drawdown_level = np.select([drawdown_rank >= 0.8,
0.7 <= drawdown_rank < 0.8, 0.7 <= drawdown_rank < 0.8,
0.6 <= drawdown_rank < 0.7, 0.6 <= drawdown_rank < 0.7,
...@@ -110,7 +113,7 @@ def single_evaluation(fund_id, invest_type=2, index_id='000905.SH'): ...@@ -110,7 +113,7 @@ def single_evaluation(fund_id, invest_type=2, index_id='000905.SH'):
drawdown_bool = 1 if drawdown_level > 2 else 0 drawdown_bool = 1 if drawdown_level > 2 else 0
drawdown_triple = drawdown_level - 1 if drawdown_level >= 2 else drawdown_level drawdown_triple = drawdown_level - 1 if drawdown_level >= 2 else drawdown_level
sharp_rank = search_rank(fund_rank, fund_id, metric='sharp_ratio_rank') sharp_rank = search_rank(rank_df, fund_id, metric='sharp_ratio_rank')
sharp_level = np.select([sharp_rank >= 0.8, sharp_level = np.select([sharp_rank >= 0.8,
0.6 <= sharp_rank < 0.8, 0.6 <= sharp_rank < 0.8,
sharp_rank < 0.6], [0, 1, 2]).item() sharp_rank < 0.6], [0, 1, 2]).item()
......
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