def testShiftedSecurityValueHolder(self): mm = SecurityMovingAverage(2, 'close') shifted1 = mm.shift(1) data1 = {'aapl': {'close': 1.0}, 'ibm': {'close': 2.0}, 'goog': {'close': 3.0}} shifted1.push(data1) calculated = shifted1.value for name in calculated.index(): self.assertTrue(np.isnan(calculated[name])) data2 = {'aapl': {'close': 2.0}, 'ibm': {'close': 3.0}, 'goog': {'close': 4.0}} shifted1.push(data2) expected = SeriesValues({'aapl': 1.0, 'ibm': 2.0, 'goog': 3.0}) calculated = shifted1.value for name in expected.index(): self.assertAlmostEqual(expected[name], calculated[name]) data3 = ({'aapl': {'close': 3.0}, 'ibm': {'close': 4.0}, 'goog': {'close': 5.0}}) shifted1.push(data3) expected = SeriesValues({'aapl': 1.5, 'ibm': 2.5, 'goog': 3.5}) calculated = shifted1.value for name in expected.index(): self.assertAlmostEqual(expected[name], calculated[name])
def testSecurityValuesInit(self): data = np.array([1, 2, 3]) index = ['c', 'b', 'a'] test = SeriesValues(data, dict(zip(index, range(len(index))))) expected = dict(zip(index, data)) for name in test.index(): self.assertEqual(test[name], expected[name])
def testDeltaSecurityValueHolder(self): mm = SecurityMovingAverage(2, 'close') delta1 = SecurityDeltaValueHolder(mm, 2) data1 = {'aapl': {'close': 1.0}, 'ibm': {'close': 2.0}, 'goog': {'close': 3.0}} delta1.push(data1) calculated = delta1.value for name in calculated.index(): self.assertTrue(np.isnan(calculated[name])) data2 = {'aapl': {'close': 2.0}, 'ibm': {'close': 3.0}, 'goog': {'close': 4.0}} delta1.push(data2) data3 = {'aapl': {'close': 3.0}, 'ibm': {'close': 4.0}, 'goog': {'close': 5.0}} delta1.push(data3) expected = SeriesValues({'aapl': 1.5, 'ibm': 1.5, 'goog': 1.5}) calculated = delta1.value for name in expected.index(): self.assertAlmostEqual(expected[name], calculated[name]) data4 = ({'aapl': {'close': 4.0}, 'ibm': {'close': 5.0}, 'goog': {'close': 6.0}}) delta1.push(data4) expected = SeriesValues({'aapl': 2.0, 'ibm': 2.0, 'goog': 2.0}) calculated = delta1.value for name in expected.index(): self.assertAlmostEqual(expected[name], calculated[name])
def testSecurityValuesUnit(self): data = np.array([3, -2, np.nan, np.nan, 4, 5]) index = [1, 2, 3, 4, 5, 6] test = SeriesValues(data, index) test = test.unit() expected = SeriesValues(data / np.nansum(np.abs(data)), dict(zip(index, range(len(index))))) for name in test.index(): if np.isnan(test[name]): self.assertTrue(np.isnan(expected[name])) else: self.assertEqual(test[name], expected[name])
def testSecurityConstArrayValueHolder(self): constArray = SecurityConstArrayValueHolder({'a': 1.0, 'b': 2.0}) testValue = constArray.value expectedValue = SeriesValues(np.array([1.0, 2.0]), index=['a', 'b']) for name in expectedValue.index(): self.assertAlmostEqual(testValue[name], expectedValue[name]) testValue = constArray.value_by_name('a') self.assertAlmostEqual(1.0, testValue) testValue = constArray.value_by_names(['b', 'a', 'c']) expectedValue = SeriesValues(np.array([2.0, 1.0, np.nan]), index=['b', 'a', 'c']) np.testing.assert_array_almost_equal(testValue.values, expectedValue.values) self.assertEqual(testValue.name_mapping, expectedValue.name_mapping)