Commit df75ef5a authored by jichao's avatar jichao

613回测

parent 32bdb40e
...@@ -20,7 +20,8 @@ class DateCurve(DriftSolver): ...@@ -20,7 +20,8 @@ class DateCurve(DriftSolver):
def get_drift(self, day, risk: PortfoliosRisk): def get_drift(self, day, risk: PortfoliosRisk):
last_re = rrs.get_last_one(max_date=day, risk=risk, effective=True) last_re = rrs.get_last_one(max_date=day, risk=risk, effective=True)
return self.diff_threshold - self.init_factor * (day - last_re['date']).days ** 4 result = self.diff_threshold - self.init_factor * (day - last_re['date']).days ** 4
return max(0, result)
@component(bean_name='high-weight') @component(bean_name='high-weight')
......
...@@ -21,8 +21,7 @@ class CurveDrift(BaseRebalanceSignal): ...@@ -21,8 +21,7 @@ class CurveDrift(BaseRebalanceSignal):
SignalType.CRISIS_ONE, SignalType.CRISIS_ONE,
SignalType.CRISIS_TWO, SignalType.CRISIS_TWO,
SignalType.MARKET_RIGHT, SignalType.MARKET_RIGHT,
SignalType.INIT, SignalType.INIT
SignalType.LOW_BUY
] ]
def is_trigger(self, day, risk: PortfoliosRisk) -> bool: def is_trigger(self, day, risk: PortfoliosRisk) -> bool:
...@@ -35,7 +34,7 @@ class CurveDrift(BaseRebalanceSignal): ...@@ -35,7 +34,7 @@ class CurveDrift(BaseRebalanceSignal):
normal_weight = round(sum([x[1] for x in normal_portfolio.items() if x[0] in datum_ids]), 2) normal_weight = round(sum([x[1] for x in normal_portfolio.items() if x[0] in datum_ids]), 2)
hold_portfolio = self._hold.get_portfolios_weight(day, risk) hold_portfolio = self._hold.get_portfolios_weight(day, risk)
hold_weight = round(sum([x[1] for x in hold_portfolio.items() if x[0] in datum_ids]), 2) hold_weight = round(sum([x[1] for x in hold_portfolio.items() if x[0] in datum_ids]), 2)
return normal_weight - hold_weight >= self._solver.get_drift(day, risk) return abs(normal_weight - hold_weight) >= self._solver.get_drift(day, risk)
@property @property
def signal_type(self) -> SignalType: def signal_type(self) -> SignalType:
......
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