def param_updated(self): # make sure parent updates its param super(StopWinAlgo, self).param_updated() # algo settings self.if_ema = self.param['if_ema'] # if false, use sma self.if_stop_win = self.param['if_stop_win'] #if false, don't stop win self.if_consider_spread = self.param['if_consider_spread'] #if false, don't consider spread and fee # create rolling self.long_roll = SimpleMoving(size=self.param['rolling']) self.short_roll = SimpleMoving(size=self.param['rolling']) self.long_autoreg = Autoregressive(alpha = self.param['alpha']) self.short_autoreg = Autoregressive(alpha = self.param['alpha']) self.spreadx_roll = SimpleMoving(size = self.param['rolling']) self.spready_roll = SimpleMoving(size = self.param['rolling']) self.bollinger = self.param['bollinger'] self.block = self.param['block'] self.stop_win = self.param['stop_win'] #other params self.last_long_res = -999 self.last_short_res = -999 #records self.records = {'timestamp': [], 'longs': [], 'shorts': [], 'long_mean': [], 'short_mean': [], 'long_sd': [], 'short_sd':[]} #tracker self.tracker = TradeAnalysis(self.pair.x)
def back_test(pair, date, param): tracker = TradeAnalysis(Contract(pair[0])) algo = {'class': ConstantAlgo} algo['param'] = { 'x': pair[0], 'y': pair[1], 'a': 1, 'b': 0, 'rolling': param[0], 'bollinger': param[1], 'const': param[2], 'block': 100, 'tracker': tracker } settings = { 'date': date, 'path': DATA_PATH, 'tickset': 'top', 'algo': algo, 'singletick': True } runner = PairRunner(settings) runner.run() account = runner.account history = account.history.to_dataframe(account.items) score = float(history[['pnl']].iloc[-1]) order_win = tracker.order_winning_ratio() order_profit = tracker.analyze_all_profit()[0] num_rounds = tracker.analyze_all_profit()[2] return score, order_win, order_profit, num_rounds, runner
def param_updated(self): # make sure parent updates its param super(SMAAlgo, self).param_updated() # create rolling self.long_roll = SimpleMoving(size=self.param['rolling']) self.short_roll = SimpleMoving(size=self.param['rolling']) self.spreadx_roll = SimpleMoving(size = self.param['rolling']) self.spready_roll = SimpleMoving(size = self.param['rolling']) #params self.bollinger = self.param['bollinger'] self.block = self.param['block'] self.stop_win = self.param['stop_win'] #other params self.last_long_res = -999 self.last_short_res = -999 #records self.records = {'timestamp': [], 'longs': [], 'shorts': [], 'long_mean': [], 'short_mean': [], 'long_sd': [], 'short_sd':[]} self.max_profit = 0 #tracker self.tracker = TradeAnalysis(self.pair.x)
def get_tracker(date_list, product): pair = 0 for date in date_list: pair = get_best_pair(date,market, product) if type(pair) != tuple: continue else: break return TradeAnalysis(Contract(pair[0]))