Commit 7223c542 authored by Dr.李's avatar Dr.李

FIX: bug for wrong optimal status

parent 62cd6faf
...@@ -104,7 +104,7 @@ def er_portfolio_analysis(er: np.ndarray, ...@@ -104,7 +104,7 @@ def er_portfolio_analysis(er: np.ndarray,
risk_target=(risk_lbound, risk_ubound), risk_target=(risk_lbound, risk_ubound),
turn_over_target=turn_over_target, turn_over_target=turn_over_target,
current_position=current_position) current_position=current_position)
if status != 'optimal': if status not in ("optimal", "optimal_inaccurate"):
raise ValueError('linear programming optimizer in status: {0}'.format(status)) raise ValueError('linear programming optimizer in status: {0}'.format(status))
elif method == 'rank': elif method == 'rank':
......
...@@ -105,7 +105,7 @@ def linear_builder(er: np.ndarray, ...@@ -105,7 +105,7 @@ def linear_builder(er: np.ndarray,
current_risk_exposure <= risk_ubound.flatten(), current_risk_exposure <= risk_ubound.flatten(),
norm1(w - current_position) <= turn_over_target] norm1(w - current_position) <= turn_over_target]
objective = Minimize(-w.T * er) objective = Minimize(-w.T @ er)
prob = Problem(objective, constraints) prob = Problem(objective, constraints)
prob.solve(solver='ECOS', feastol=1e-10, abstol=1e-10, reltol=1e-10) prob.solve(solver='ECOS', feastol=1e-10, abstol=1e-10, reltol=1e-10)
......
This source diff could not be displayed because it is too large. You can view the blob instead.
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