from framework import component, autowired from api import SignalBuilder, PortfoliosRisk, SignalType from rebalance.dao import robo_rebalance_signal as rrs @component(bean_name='curve-drift') class CurveDrift(SignalBuilder): @property def exclude_last_type(self): return [ SignalType.CRISIS_ONE, SignalType.CRISIS_TWO, SignalType.MARKET_RIGHT, SignalType.INIT, SignalType.LOW_BUY ] def get_signal(self, day, risk: PortfoliosRisk): last_re = rrs.get_last_one(max_date=day, risk=risk, effective=True) if last_re is None or SignalType(last_re['type']) in self.exclude_last_type: return None