Commit e85fed5b authored by 李宗熹's avatar 李宗熹

评价修改

parent a12f0fb3
......@@ -373,7 +373,7 @@ class PortfolioDiagnose(object):
if proposal in fund_rank['fund_id'].to_list():
proposal_z_score = search_rank(fund_rank, proposal, metric='z_score')
proposal_strategy = fund_rank[fund_rank['fund_id'] == proposal]['substrategy'].values[0]
# proposal_strategy = fund_rank[fund_rank['fund_id'] == proposal]['substrategy'].values[0]
else:
continue
......@@ -430,24 +430,32 @@ class PortfolioDiagnose(object):
mu = expected_returns.mean_historical_return(propose_portfolio, frequency=min(self.freq_list))
S = risk_models.sample_cov(propose_portfolio, frequency=min(self.freq_list))
dd = expected_returns.drawdown_from_prices(propose_portfolio)
# if self.client_type == 1:
# proposal_risk = [[x, get_risk_level(search_rank(fund_rank, x, metric='substrategy'))] for x in
# self.proposal_fund]
# self.proposal_fund = list(filter(lambda x: x[1] != 3, proposal_risk))
# propose_portfolio.columns]
# self.proposal_fund = list(filter(lambda x: x[1] != 'H', proposal_risk))
# drop_fund_list = list(filter(lambda x: x[1] = 'H', proposal_risk))
# proposal_portfolio = list((set(self.portfolio) - set(self.no_data_fund) - set(self.replace_pair.keys())) | \
# (set(self.proposal_fund) | set(self.replace_pair.values())))
# propose_portfolio.drop()
propose_risk_mapper = dict()
for fund in propose_portfolio.columns:
propose_risk_mapper[fund] = str(get_risk_level(search_rank(fund_rank, fund, metric='substrategy')))
risk_upper = {"H": 0.0}
risk_lower = {"L": 0.6, "M": 0.4}
# risk_upper = {"H": 0.0}
# risk_lower = {"L": 0.6, "M": 0.4}
w_low = 1e6 / self.invest_amount
ef = EfficientFrontier(mu, S, expected_drawdown=dd)
ef.add_sector_constraints(propose_risk_mapper, risk_lower, risk_upper)
# ef.add_sector_constraints(propose_risk_mapper, risk_lower, risk_upper)
# weights = ef.nonconvex_objective(deviation_risk_parity, ef.cov_matrix)
ef.efficient_drawdown(drawdown_limit=0.5)
ef.efficient_return(0.3)
clean_weights = ef.clean_weights()
# ef.portfolio_performance(verbose=True)
ef.portfolio_performance(verbose=True)
self.new_weights = np.array(list(clean_weights.values()))
print(clean_weights)
end4 = time.time()
......@@ -607,10 +615,10 @@ class PortfolioDiagnose(object):
else:
evaluation = choose_bad_evaluation(data)
ret = ""
ret = []
for k, v in evaluation.items():
# print(translate_single(content[k], v))
ret = ret + sentence[k] % translate_single(content[k], v)
ret.append(sentence[k] % translate_single(content[k], v))
fund_name = get_fund_name(fund_id).values[0][0]
return {'name': fund_name, 'data': ret}
......
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