def testSecurityMovingHistoricalWindow(self): window = 5 mh = SecurityMovingHistoricalWindow(window, 'close') benchmark = {'aapl': deque(maxlen=window), 'ibm': deque(maxlen=window)} for i in range(len(self.aapl['close'])): data = {'aapl': {'close': self.aapl['close'][i]}, 'ibm': {'close': self.ibm['close'][i]}} mh.push(data) for name in benchmark: benchmark[name].append(data[name]['close']) if i >= 1: # check by get item methon container = mh.value for k in range(min(i + 1, window)): calculated = mh[k] for name in calculated.index(): self.assertAlmostEqual(calculated[name], benchmark[name][-1 - k], "at index {0} positon {1} and symbol {2}\n" "expected: {3}\n" "calculated: {4}".format(i, k, name, benchmark[name][-1], calculated[name])) # check by value method for k in range(min(i + 1, window)): for name in calculated.index(): self.assertAlmostEqual(container[name][k], benchmark[name][-1 - k], "at index {0} positon {1} and symbol {2}\n" "expected: {3}\n" "calculated: {4}".format(i, k, name, benchmark[name][-1], container[name][k]))
def testSecurityMovingHistoricalWindow(self): window = 5 mh = SecurityMovingHistoricalWindow(window, 'close') benchmark = {'aapl': deque(maxlen=window), 'ibm': deque(maxlen=window)} for i in range(len(self.aapl['close'])): data = {'aapl': {'close': self.aapl['close'][i]}, 'ibm': {'close': self.ibm['close'][i]}} mh.push(data) for name in benchmark: benchmark[name].append(data[name]['close']) if i >= 1: # check by get item methon container = mh.value for k in range(min(i + 1, window)): calculated = mh[k] for name in calculated.index: self.assertAlmostEqual(calculated[name], benchmark[name][-1 - k], "at index {0} positon {1} and symbol {2}\n" "expected: {3}\n" "calculated: {4}".format(i, k, name, benchmark[name][-1], calculated[name])) # check by value method for k in range(min(i + 1, window)): for name in calculated.index: self.assertAlmostEqual(container[name][k], benchmark[name][-1 - k], "at index {0} positon {1} and symbol {2}\n" "expected: {3}\n" "calculated: {4}".format(i, k, name, benchmark[name][-1], container[name][k]))
def testSecurityMovingHistoricalWindowPickle(self): window = 10 ma = SecurityMovingHistoricalWindow(window, ['x']) data = dict(aapl=dict(x=1.), ibm=dict(x=2.)) data2 = dict(aapl=dict(x=2.), ibm=dict(x=3.)) ma.push(data) ma.push(data2) with tempfile.NamedTemporaryFile('w+b', delete=False) as f: pickle.dump(ma, f) with open(f.name, 'rb') as f2: pickled = pickle.load(f2) for name in ma.value.index(): np.testing.assert_array_almost_equal(ma.value[name], pickled.value[name]) os.unlink(f.name) for v in np.random.rand(20): data['aapl']['x'] = v data['ibm']['x'] = v + 1. ma.push(data) with tempfile.NamedTemporaryFile('w+b', delete=False) as f: pickle.dump(ma, f) with open(f.name, 'rb') as f2: pickled = pickle.load(f2) for name in ma.value.index(): np.testing.assert_array_almost_equal(ma.value[name], pickled.value[name]) os.unlink(f.name)
def testSecurityMovingHistoricalWindowDeepcopy(self): window = 10 ma = SecurityMovingHistoricalWindow(window, ['x']) data = dict(aapl=dict(x=1.), ibm=dict(x=2.)) data2 = dict(aapl=dict(x=2.), ibm=dict(x=3.)) ma.push(data) ma.push(data2) copied = copy.deepcopy(ma) for name in ma.value.index(): np.testing.assert_array_almost_equal(ma.value[name], copied.value[name]) for v in np.random.rand(20): data['aapl']['x'] = v data['ibm']['x'] = v + 1. ma.push(data) copied = copy.deepcopy(ma) for name in ma.value.index(): np.testing.assert_array_almost_equal(ma.value[name], copied.value[name])
def HIST(window, dependency='x'): return SecurityMovingHistoricalWindow(window, dependency)
def HIST(window, dependency='x', symbolList=None): return SecurityMovingHistoricalWindow(window, dependency, symbolList)