Commit 1647ce65 authored by wenwen.tang's avatar wenwen.tang 😕
parent 9ebf8977
...@@ -218,7 +218,7 @@ class FundDividendSortinoAssetOptimize(SortinoAssetOptimize): ...@@ -218,7 +218,7 @@ class FundDividendSortinoAssetOptimize(SortinoAssetOptimize):
def get_groups(self, day=None): def get_groups(self, day=None):
funds = pd.DataFrame(self.get_filtered_funds(day)) funds = pd.DataFrame(self.get_filtered_funds(day))
if len(funds) < get_config('portfolios.solver.asset-count')[0]: if len(funds) < get_config('portfolios.solver.asset-count')[0]:
raise ValueError(f"基金优选个数小于{get_config('portfolios.solver.asset-count')[0]},请调整参数") raise ValueError(f"{day}==基金优选个数小于{get_config('portfolios.solver.asset-count')[0]},请调整参数")
result = [] result = []
if self.asset_include: if self.asset_include:
include = list(self.asset_include.keys())[0] include = list(self.asset_include.keys())[0]
...@@ -233,14 +233,15 @@ class FundDividendSortinoAssetOptimize(SortinoAssetOptimize): ...@@ -233,14 +233,15 @@ class FundDividendSortinoAssetOptimize(SortinoAssetOptimize):
def get_pct_change(self, fund_ids, day): def get_pct_change(self, fund_ids, day):
if not self._config: if not self._config:
raise exception(f"find optimize, but not found sortino config.") raise exception(f"find optimize, but not found sortino config.")
days = [day - relativedelta(days=1, **dict_remove(x, ('weight', 'name'))) for x in self._config] days = [day - relativedelta(days=7, **dict_remove(x, ('weight', 'name'))) for x in self._config]
days.append(day - relativedelta(days=1, **self.annual_volatility_section[0])) days.append(day - relativedelta(days=7, **self.annual_volatility_section[0]))
start = filter_weekend(sorted(days)[0]) start = filter_weekend(sorted(days)[0])
fund_navs = pd.DataFrame(self._navs.get_fund_navs(fund_ids=tuple(fund_ids), min_date=start, max_date=day)) fund_navs = pd.DataFrame(self._navs.get_fund_navs(fund_ids=tuple(fund_ids), min_date=start, max_date=day))
if not fund_navs.empty: if not fund_navs.empty:
fund_navs.sort_values('nav_date', inplace=True) fund_navs.sort_values('nav_date', inplace=True)
fund_navs = fund_navs.pivot_table(index='nav_date', columns='fund_id', values='nav_cal') fund_navs = fund_navs.pivot_table(index='nav_date', columns='fund_id', values='nav_cal')
fund_navs.fillna(method='ffill', inplace=True) fund_navs.fillna(method='ffill', inplace=True)
fund_navs = fund_navs.loc[fund_navs.index >= start + relativedelta(days=6)]
fund_navs.dropna(axis=1, inplace=True) fund_navs.dropna(axis=1, inplace=True)
result = round(fund_navs.pct_change().dropna(), 4) result = round(fund_navs.pct_change().dropna(), 4)
result.reset_index(inplace=True) result.reset_index(inplace=True)
......
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