def test_asset_lookup(self): metadata = { 0: { 'symbol': 'PLAY', 'asset_type': 'equity', 'start_date': '2002-01-01', 'end_date': '2004-01-01' }, 1: { 'symbol': 'PLAY', 'asset_type': 'equity', 'start_date': '2005-01-01', 'end_date': '2006-01-01' }, 2: { 'symbol': 'OMG15', 'asset_type': 'future' } } algo = TradingAlgorithm(asset_metadata=metadata) # Test before either PLAY existed algo.datetime = pd.Timestamp('2001-12-01', tz='UTC') self.assertEqual(2, algo.symbol('OMG15')) with self.assertRaises(SymbolNotFound): algo.symbol('PLAY') with self.assertRaises(SymbolNotFound): algo.symbols('PLAY', 'OMG15') # Test when first PLAY exists algo.datetime = pd.Timestamp('2002-12-01', tz='UTC') self.assertEqual(2, algo.symbol('OMG15')) self.assertEqual(0, algo.symbol('PLAY')) list_result = algo.symbols('PLAY', 'OMG15') self.assertEqual(0, list_result[0]) self.assertEqual(2, list_result[1]) # Test after first PLAY ends algo.datetime = pd.Timestamp('2004-12-01', tz='UTC') self.assertEqual(2, algo.symbol('OMG15')) self.assertEqual(0, algo.symbol('PLAY')) # Test after second PLAY begins algo.datetime = pd.Timestamp('2005-12-01', tz='UTC') self.assertEqual(2, algo.symbol('OMG15')) self.assertEqual(1, algo.symbol('PLAY')) # Test after second PLAY ends algo.datetime = pd.Timestamp('2006-12-01', tz='UTC') self.assertEqual(2, algo.symbol('OMG15')) self.assertEqual(1, algo.symbol('PLAY')) list_result = algo.symbols('PLAY', 'OMG15') self.assertEqual(1, list_result[0]) self.assertEqual(2, list_result[1]) # Test lookup SID self.assertIsInstance(algo.sid(0), Equity) self.assertIsInstance(algo.sid(1), Equity) self.assertIsInstance(algo.sid(2), Future)
def test_asset_lookup(self): metadata = {0: {'symbol': 'PLAY', 'asset_type': 'equity', 'start_date': '2002-01-01', 'end_date': '2004-01-01'}, 1: {'symbol': 'PLAY', 'asset_type': 'equity', 'start_date': '2005-01-01', 'end_date': '2006-01-01'}, 2: {'symbol': 'OMG15', 'asset_type': 'future'}} algo = TradingAlgorithm(asset_metadata=metadata) # Test before either PLAY existed algo.datetime = pd.Timestamp('2001-12-01', tz='UTC') self.assertEqual(2, algo.symbol('OMG15')) with self.assertRaises(SymbolNotFound): algo.symbol('PLAY') with self.assertRaises(SymbolNotFound): algo.symbols('PLAY', 'OMG15') # Test when first PLAY exists algo.datetime = pd.Timestamp('2002-12-01', tz='UTC') self.assertEqual(2, algo.symbol('OMG15')) self.assertEqual(0, algo.symbol('PLAY')) list_result = algo.symbols('PLAY', 'OMG15') self.assertEqual(0, list_result[0]) self.assertEqual(2, list_result[1]) # Test after first PLAY ends algo.datetime = pd.Timestamp('2004-12-01', tz='UTC') self.assertEqual(2, algo.symbol('OMG15')) self.assertEqual(0, algo.symbol('PLAY')) # Test after second PLAY begins algo.datetime = pd.Timestamp('2005-12-01', tz='UTC') self.assertEqual(2, algo.symbol('OMG15')) self.assertEqual(1, algo.symbol('PLAY')) # Test after second PLAY ends algo.datetime = pd.Timestamp('2006-12-01', tz='UTC') self.assertEqual(2, algo.symbol('OMG15')) self.assertEqual(1, algo.symbol('PLAY')) list_result = algo.symbols('PLAY', 'OMG15') self.assertEqual(1, list_result[0]) self.assertEqual(2, list_result[1]) # Test lookup SID self.assertIsInstance(algo.sid(0), Equity) self.assertIsInstance(algo.sid(1), Equity) self.assertIsInstance(algo.sid(2), Future)
def test_future_chain(self): """ Tests the future_chain API function. """ metadata = { 0: { 'symbol': 'CLG06', 'root_symbol': 'CL', 'asset_type': 'future', 'start_date': pd.Timestamp('2005-12-01', tz='UTC'), 'notice_date': pd.Timestamp('2005-12-20', tz='UTC'), 'expiration_date': pd.Timestamp('2006-01-20', tz='UTC') }, 1: { 'root_symbol': 'CL', 'symbol': 'CLK06', 'asset_type': 'future', 'start_date': pd.Timestamp('2005-12-01', tz='UTC'), 'notice_date': pd.Timestamp('2006-03-20', tz='UTC'), 'expiration_date': pd.Timestamp('2006-04-20', tz='UTC') }, 2: { 'symbol': 'CLQ06', 'root_symbol': 'CL', 'asset_type': 'future', 'start_date': pd.Timestamp('2005-12-01', tz='UTC'), 'notice_date': pd.Timestamp('2006-06-20', tz='UTC'), 'expiration_date': pd.Timestamp('2006-07-20', tz='UTC') }, 3: { 'symbol': 'CLX06', 'root_symbol': 'CL', 'asset_type': 'future', 'start_date': pd.Timestamp('2006-02-01', tz='UTC'), 'notice_date': pd.Timestamp('2006-09-20', tz='UTC'), 'expiration_date': pd.Timestamp('2006-10-20', tz='UTC') } } algo = TradingAlgorithm(asset_metadata=metadata) algo.datetime = pd.Timestamp('2006-12-01', tz='UTC') # Check that the fields of the FutureChain object are set correctly cl = algo.future_chain('CL') self.assertEqual(cl.root_symbol, 'CL') self.assertEqual(cl.as_of_date, algo.datetime) # Check the fields are set correctly if an as_of_date is supplied as_of_date = pd.Timestamp('1952-08-11', tz='UTC') cl = algo.future_chain('CL', as_of_date=as_of_date) self.assertEqual(cl.root_symbol, 'CL') self.assertEqual(cl.as_of_date, as_of_date) cl = algo.future_chain('CL', as_of_date='1952-08-11') self.assertEqual(cl.root_symbol, 'CL') self.assertEqual(cl.as_of_date, as_of_date) # Check that weird capitalization is corrected cl = algo.future_chain('cL') self.assertEqual(cl.root_symbol, 'CL') cl = algo.future_chain('cl') self.assertEqual(cl.root_symbol, 'CL') # Check that invalid root symbols raise RootSymbolNotFound with self.assertRaises(RootSymbolNotFound): algo.future_chain('CLZ') with self.assertRaises(RootSymbolNotFound): algo.future_chain('')
def test_future_chain(self): """ Tests the future_chain API function. """ metadata = { 0: { 'symbol': 'CLG06', 'root_symbol': 'CL', 'asset_type': 'future', 'start_date': pd.Timestamp('2005-12-01', tz='UTC'), 'notice_date': pd.Timestamp('2005-12-20', tz='UTC'), 'expiration_date': pd.Timestamp('2006-01-20', tz='UTC')}, 1: { 'root_symbol': 'CL', 'symbol': 'CLK06', 'asset_type': 'future', 'start_date': pd.Timestamp('2005-12-01', tz='UTC'), 'notice_date': pd.Timestamp('2006-03-20', tz='UTC'), 'expiration_date': pd.Timestamp('2006-04-20', tz='UTC')}, 2: { 'symbol': 'CLQ06', 'root_symbol': 'CL', 'asset_type': 'future', 'start_date': pd.Timestamp('2005-12-01', tz='UTC'), 'notice_date': pd.Timestamp('2006-06-20', tz='UTC'), 'expiration_date': pd.Timestamp('2006-07-20', tz='UTC')}, 3: { 'symbol': 'CLX06', 'root_symbol': 'CL', 'asset_type': 'future', 'start_date': pd.Timestamp('2006-02-01', tz='UTC'), 'notice_date': pd.Timestamp('2006-09-20', tz='UTC'), 'expiration_date': pd.Timestamp('2006-10-20', tz='UTC')} } algo = TradingAlgorithm(asset_metadata=metadata) algo.datetime = pd.Timestamp('2006-12-01', tz='UTC') # Check that the fields of the FutureChain object are set correctly cl = algo.future_chain('CL') self.assertEqual(cl.root_symbol, 'CL') self.assertEqual(cl.as_of_date, algo.datetime) # Check the fields are set correctly if an as_of_date is supplied as_of_date = pd.Timestamp('1952-08-11', tz='UTC') cl = algo.future_chain('CL', as_of_date=as_of_date) self.assertEqual(cl.root_symbol, 'CL') self.assertEqual(cl.as_of_date, as_of_date) cl = algo.future_chain('CL', as_of_date='1952-08-11') self.assertEqual(cl.root_symbol, 'CL') self.assertEqual(cl.as_of_date, as_of_date) # Check that weird capitalization is corrected cl = algo.future_chain('cL') self.assertEqual(cl.root_symbol, 'CL') cl = algo.future_chain('cl') self.assertEqual(cl.root_symbol, 'CL') # Check that invalid root symbols raise RootSymbolNotFound with self.assertRaises(RootSymbolNotFound): algo.future_chain('CLZ') with self.assertRaises(RootSymbolNotFound): algo.future_chain('')