Commit 5bcbf4c8 authored by pengxiong's avatar pengxiong

Merge remote-tracking branch 'origin/manage' into manage

parents caa8801e 184b3a5d
# -*- coding: UTF-8 -*-
"""
@author:Zongxi.Li
@file:test.py
@time:2021/01/15
"""
# -*- encoding: utf-8 -*-
# -----------------------------------------------------------------------------
# @File Name : fund_service.py
......@@ -71,10 +65,9 @@ def single_evaluation(fund_id, invest_type=2, index_id='000905.SH'):
3、在风险方面,该基金抵御风险能力优秀/良好/一般,在同类基金中处于高/中/低等水平,最大回撤为x%,高于/持平/低于同类基金平均水平;
4、该基金收益较好/较差的同时回撤较大/较小,也就是说,该基金在用较大/较小风险换取较大/较小收益,存在较高/较低风险;
5、基金经理,投资年限5.23年,经验丰富;投资能力较强,生涯中共管理过X只基金,历任的X只基金平均业绩在同类中处于上游水平,其中x只排名在前x%;生涯年化回报率x%,同期大盘只有x%
Args:
fund_id:
Returns:
:param fund_id: 基金ID
:param index_id: 指数ID
:param invest_type: 投资类型:0:公募 1:私募 2:探普优选
"""
end_date = datetime.datetime(datetime.date.today().year,
datetime.date.today().month, 1) - datetime.timedelta(1)
......@@ -171,14 +164,25 @@ def single_evaluation(fund_id, invest_type=2, index_id='000905.SH'):
return evaluation_dict
def fund_index_compare(fund_id, invest_type=2, index_id='000905.SH'):
start_date = datetime.datetime(2000, 1, 1)
index_daily = get_index_daily(index_id, start_date)
fund_nav = get_tamp_nav(fund_id, start_date, invest_type=invest_type)
fund_nav = rename_col(fund_nav, fund_id)
compare = pd.merge(index_daily, fund_nav, how='inner', left_index=True, right_index=True)
compare[index_id + '_return_ratio'] = (compare[index_id] / compare[index_id].iloc[0] - 1) * 100
compare[fund_id + '_return_ratio'] = (compare[fund_id] / compare[fund_id].iloc[0] - 1) * 100
return compare
def get_fund_evaluation(args):
"""返回个基点评和雷达图"""
fund_id = args.get('fund_id')
invest_type = args.get('invest_type')
print(single_evaluation(fund_id='HF00005AFK'))
print(get_radar_data('HF00005AFK'))
if __name__ == '__main__':
print(single_evaluation(fund_id='HF00005AFK'))
print(get_radar_data('HF00005AFK'))
\ No newline at end of file
# print(single_evaluation(fund_id='HF00005AFK'))
# print(get_radar_data('HF00005AFK'))
test = fund_index_compare(fund_id="HF00005AFK")
\ No newline at end of file
......@@ -194,7 +194,7 @@ def get_index_daily(index_id, start_date):
cur = tamp_product_session.execute(sql)
data = cur.fetchall()
df = pd.DataFrame(list(data), columns=['ts_code', 'trade_date', ' close'])
df = pd.DataFrame(list(data), columns=['ts_code', 'trade_date', 'close'])
df.rename({'ts_code': 'fund_id', 'trade_date': 'end_date', 'close': 'adj_nav'}, axis=1, inplace=True)
df['end_date'] = pd.to_datetime(df['end_date'])
df.set_index('end_date', drop=True, inplace=True)
......@@ -1019,8 +1019,8 @@ class PortfolioDiagnose(object):
# 指数收益
index_return = index_return[index_return.index >= group_order_start_date]
start_index_return = index_return[" close"].values[0]
index_return["new_index_return"] = (index_return[" close"] - start_index_return) / (1 + start_index_return)
start_index_return = index_return[self.index_id].values[0]
index_return["new_index_return"] = (index_return[self.index_id] - start_index_return) / (1 + start_index_return)
index_return_ratio = index_return["new_index_return"].values[-1]
index_return_ratio_year = annual_return(index_return["new_index_return"].values[-1], index_return["new_index_return"], n_freq)
index_volatility = volatility(index_return["new_index_return"]+1, n_freq)
......
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