def __init__(self, code, t1dict=None, t0dict=None, positions=False): """ :param code: str, 场内基金代码,eg SH501018 :param t1dict: Dict[str, float]. 用来预测 T-1 净值的基金组合持仓,若为空自动去 holdings 中寻找。 :param t0ict: Dict[str, float]. 用来预测 T 实时净值的基金组合持仓,若为空自动去 holdings 中寻找。 :param positions: bool. 仓位是否浮动,默认固定仓位。 """ self.code = code self.fcode = "F" + code[2:] if not t1dict: self.t1dict = holdings.get(code[2:], None) if not self.t1dict: raise ValueError("Please provide t1dict for prediction") else: self.t1dict = t1dict if not t0dict: self.t0dict = holdings.get(code[2:] + "rt", None) else: self.t0dict = t0dict self.position_cache = {} self.t1value_cache = {} self.t2value_cache = None # t0 实时净值自然不 cache self.positions = positions self.position_zero = sum([v for _, v in self.t1dict.items()]) self.now = dt.datetime.now(tz=tz_bj).replace(tzinfo=None) self.today = self.now.replace(hour=0, minute=0, second=0, microsecond=0) self.t1_type = "未计算" self.bar_cache = {} self.t0_delta = None self.t1_delta = None
def __init__(self, code, t1dict=None, t0dict=None, positions=False, fetch=False, save=False): """ :param code: str, 场内基金代码,eg SH501018 :param t1dict: Dict[str, float]. 用来预测 T-1 净值的基金组合持仓,若为空自动去 holdings 中寻找。 :param t0ict: Dict[str, float]. 用来预测 T 实时净值的基金组合持仓,若为空自动去 holdings 中寻找。 :param positions: bool. 仓位是否浮动,默认固定仓位。 :param fetch: bool, default True. 优先从 backend fetch t1。 :param save: bool, default True. 将 t1 缓存到 backend。 """ self.code = code self.fcode = "F" + code[2:] self.fetch = fetch self.save = save if not t1dict: self.t1dict = holdings.get(code[2:], None) if not self.t1dict: raise ValueError("Please provide t1dict for prediction") else: self.t1dict = t1dict if not t0dict: self.t0dict = holdings.get(code[2:] + "rt", None) else: self.t0dict = t0dict self.position_cache = {} self.t1value_cache = {} self.t2value_cache = None # t0 实时净值自然不 cache self.positions = positions self.position_zero = sum([v for _, v in self.t1dict.items()]) self.now = dt.datetime.now(tz=tz_bj).replace(tzinfo=None) self.today = self.now.replace(hour=0, minute=0, second=0, microsecond=0) self.t1_type = "未计算" self.bar_cache = {} self.t0_delta = None self.t1_delta = None # 不建议直接使用以上两者看变化量,在手动 set 后,以上两者可能继续为 None if fetch: df = fetch_backend("t1-" + code) if df is not None: df["date"] = pd.to_datetime(df["date"]) for i, r in df.iterrows(): self.set_t1(float(r["t1"]), r["date"].strftime("%Y-%m-%d")) self.set_position(float(r["pos"]), r["date"].strftime("%Y-%m-%d")) else: # nodf emptydf = pd.DataFrame({"date": [], "t1": [], "pos": []}) save_backend("t1-" + code, emptydf, header=True)
def __init__(self, code, t0dict=None): """ :param code: :param t0dict: """ self.code = code self.fcode = "F" + code[2:] if not t0dict: t0dict = holdings.get(code[2:], None) if not t0dict: raise ValueError("Please provide t0dict for prediction") if isinstance(t0dict, str): t0dict = {t0dict: 100} self.t0dict = t0dict self.t1value_cache = None self.now = dt.datetime.now(tz=tz_bj).replace(tzinfo=None) self.today = self.now.replace(hour=0, minute=0, second=0, microsecond=0)