Commit d18d8290 authored by pengxiong's avatar pengxiong

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

parents add80656 a8ec611a
......@@ -375,7 +375,7 @@ class EfficientFrontier(base_optimizer.BaseConvexOptimizer):
return self._solve_cvxpy_opt_problem()
def efficient_return(self, target_return, market_neutral=False):
def efficient_return(self, target_return, target_drawdown, market_neutral=False):
"""
Calculate the 'Markowitz portfolio', minimising volatility for a given target return.
......@@ -405,12 +405,13 @@ class EfficientFrontier(base_optimizer.BaseConvexOptimizer):
self.objective = cp.quad_form(self._w, self.cov_matrix)
ret = self.expected_returns.T @ self._w
drawdown = self.expected_drawdown.T @ self._w
for obj in self._additional_objectives:
self._objective += obj
self._constraints.append(ret >= target_return)
self._constraints.append(drawdown <= target_drawdown)
# The equality constraint is either "weights sum to 1" (default), or
# "weights sum to 0" (market neutral).
if market_neutral:
......
......@@ -183,13 +183,13 @@ class UserCustomerDataAdaptor:
if len(last_nav_data) < 1:
cnav_df.loc[confirm_share_date, cur_fund_id] = row["nav"]
else:
diff_nav = row["nav"] - last_nav_data.values[0]
diff_nav = Decimal(row["nav"]) - last_nav_data.values[0]
cur_cnav = last_cnav_data.values[0] + diff_nav
cnav_df.loc[confirm_share_date, cur_fund_id] = cur_cnav
else:
confirm_date_nav_data = p_nav_df[p_nav_df.index == confirm_share_date][cur_fund_id].tail(1)
confirm_date_cnav_data = p_cnav_df[p_cnav_df.index == confirm_share_date][cur_fund_id].tail(1)
diff_nav = row["nav"] - confirm_date_nav_data.values[0]
diff_nav = Decimal(row["nav"]) - confirm_date_nav_data.values[0]
cur_cnav = confirm_date_cnav_data.values[0] + diff_nav
cnav_df.loc[confirm_share_date, cur_fund_id] = cur_cnav
......@@ -278,13 +278,13 @@ class UserCustomerDataAdaptor:
if len(last_nav_data) < 1:
cnav_df.loc[confirm_share_date, cur_fund_id] = row["nav"]
else:
diff_nav = row["nav"] - last_nav_data.values[0]
diff_nav = Decimal(row["nav"]) - last_nav_data.values[0]
cur_cnav = last_cnav_data.values[0] + diff_nav
cnav_df.loc[confirm_share_date, cur_fund_id] = cur_cnav
else:
confirm_date_nav_data = p_nav_df[p_nav_df.index == confirm_share_date][cur_fund_id].tail(1)
confirm_date_cnav_data = p_cnav_df[p_cnav_df.index == confirm_share_date][cur_fund_id].tail(1)
diff_nav = row["nav"] - confirm_date_nav_data.values[0]
diff_nav = Decimal(row["nav"]) - confirm_date_nav_data.values[0]
cur_cnav = confirm_date_cnav_data.values[0] + diff_nav
cnav_df.loc[confirm_share_date, cur_fund_id] = cur_cnav
......
This diff is collapsed.
......@@ -8,7 +8,7 @@
import logging
logging.basicConfig(level=logging.INFO)
from app.api.engine import tamp_fund_engine, TAMP_SQL
from app.api.engine import tamp_fund_engine, TAMP_SQL, tamp_product_engine
from app.utils.week_evaluation import *
......
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