Exemple #1
0
class TestFuture(TestCase):

    future = Future(2468,
                    symbol='OMK15',
                    notice_date='2014-01-20',
                    expiration_date='2014-02-20',
                    contract_multiplier=500)

    def test_str(self):
        strd = self.future.__str__()
        self.assertEqual("Future(2468 [OMK15])", strd)

    def test_repr(self):
        reprd = self.future.__repr__()
        self.assertTrue("Future" in reprd)
        self.assertTrue("2468" in reprd)
        self.assertTrue("OMK15" in reprd)
        self.assertTrue("notice_date='2014-01-20'" in reprd)
        self.assertTrue("expiration_date='2014-02-20'" in reprd)
        self.assertTrue("contract_multiplier=500" in reprd)

    def test_reduce(self):
        reduced = self.future.__reduce__()
        self.assertEqual(Future, reduced[0])

    def test_to_and_from_dict(self):
        dictd = self.future.to_dict()
        self.assertTrue('notice_date' in dictd)
        self.assertTrue('expiration_date' in dictd)
        self.assertTrue('contract_multiplier' in dictd)

        from_dict = Future.from_dict(dictd)
        self.assertTrue(isinstance(from_dict, Future))
        self.assertEqual(self.future, from_dict)
Exemple #2
0
    def test_to_and_from_dict(self):
        dictd = self.future.to_dict()
        for field in _futures_defaults.keys():
            self.assertTrue(field in dictd)

        from_dict = Future.from_dict(dictd)
        self.assertTrue(isinstance(from_dict, Future))
        self.assertEqual(self.future, from_dict)
Exemple #3
0
    def test_to_and_from_dict(self):
        dictd = self.future.to_dict()
        for field in _futures_defaults.keys():
            self.assertTrue(field in dictd)

        from_dict = Future.from_dict(dictd)
        self.assertTrue(isinstance(from_dict, Future))
        self.assertEqual(self.future, from_dict)
Exemple #4
0
    def test_to_and_from_dict(self):
        dictd = self.future.to_dict()
        self.assertTrue('notice_date' in dictd)
        self.assertTrue('expiration_date' in dictd)
        self.assertTrue('contract_multiplier' in dictd)

        from_dict = Future.from_dict(dictd)
        self.assertTrue(isinstance(from_dict, Future))
        self.assertEqual(self.future, from_dict)
Exemple #5
0
    def test_to_and_from_dict(self):
        dictd = self.future.to_dict()
        self.assertTrue('notice_date' in dictd)
        self.assertTrue('expiration_date' in dictd)
        self.assertTrue('contract_multiplier' in dictd)

        from_dict = Future.from_dict(dictd)
        self.assertTrue(isinstance(from_dict, Future))
        self.assertEqual(self.future, from_dict)
Exemple #6
0
    def test_map_identifier_index_to_sids(self):
        # Build an empty finder and some Assets
        dt = pd.Timestamp('2014-01-01', tz='UTC')
        finder = AssetFinder(self.env.engine)
        asset1 = Equity(1, symbol="AAPL")
        asset2 = Equity(2, symbol="GOOG")
        asset200 = Future(200, symbol="CLK15")
        asset201 = Future(201, symbol="CLM15")

        # Check for correct mapping and types
        pre_map = [asset1, asset2, asset200, asset201]
        post_map = finder.map_identifier_index_to_sids(pre_map, dt)
        self.assertListEqual([1, 2, 200, 201], post_map)
        for sid in post_map:
            self.assertIsInstance(sid, int)

        # Change order and check mapping again
        pre_map = [asset201, asset2, asset200, asset1]
        post_map = finder.map_identifier_index_to_sids(pre_map, dt)
        self.assertListEqual([201, 2, 200, 1], post_map)
    def test_to_and_from_dict(self):
        dictd = self.future.to_dict()
        self.assertTrue("root_symbol" in dictd)
        self.assertTrue("notice_date" in dictd)
        self.assertTrue("expiration_date" in dictd)
        self.assertTrue("auto_close_date" in dictd)
        self.assertTrue("contract_multiplier" in dictd)

        from_dict = Future.from_dict(dictd)
        self.assertTrue(isinstance(from_dict, Future))
        self.assertEqual(self.future, from_dict)
Exemple #8
0
 def setUpClass(cls):
     cls.future = Future(2468,
                         symbol='OMH15',
                         root_symbol='OM',
                         notice_date=pd.Timestamp('2014-01-20', tz='UTC'),
                         expiration_date=pd.Timestamp('2014-02-20',
                                                      tz='UTC'),
                         auto_close_date=pd.Timestamp('2014-01-18',
                                                      tz='UTC'),
                         contract_multiplier=500)
     cls.future2 = Future(0,
                          symbol='CLG06',
                          root_symbol='CL',
                          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'))
     env = TradingEnvironment()
     env.write_data(
         futures_identifiers=[TestFuture.future, TestFuture.future2])
     cls.asset_finder = env.asset_finder
Exemple #9
0
    def test_consume_asset_as_identifier(self):
        # Build some end dates
        eq_end = pd.Timestamp('2012-01-01', tz='UTC')
        fut_end = pd.Timestamp('2008-01-01', tz='UTC')

        # Build some simple Assets
        equity_asset = Equity(1, symbol="TESTEQ", end_date=eq_end)
        future_asset = Future(200, symbol="TESTFUT", end_date=fut_end)

        # Consume the Assets
        finder = AssetFinder()
        finder.consume_identifiers([equity_asset, future_asset])

        # Test equality with newly built Assets
        self.assertEqual(equity_asset, finder.retrieve_asset(1))
        self.assertEqual(future_asset, finder.retrieve_asset(200))
        self.assertEqual(eq_end, finder.retrieve_asset(1).end_date)
        self.assertEqual(fut_end, finder.retrieve_asset(200).end_date)
Exemple #10
0
class TestFuture(TestCase):
    future = Future(
        2468,
        symbol='OMH15',
        root_symbol='OM',
        notice_date=pd.Timestamp('2014-01-20', tz='UTC'),
        expiration_date=pd.Timestamp('2014-02-20', tz='UTC'),
        contract_multiplier=500
    )

    def test_str(self):
        strd = self.future.__str__()
        self.assertEqual("Future(2468 [OMH15])", strd)

    def test_repr(self):
        reprd = self.future.__repr__()
        self.assertTrue("Future" in reprd)
        self.assertTrue("2468" in reprd)
        self.assertTrue("OMH15" in reprd)
        self.assertTrue("root_symbol='OM'" in reprd)
        self.assertTrue(("notice_date=Timestamp('2014-01-20 00:00:00+0000', "
                        "tz='UTC')") in reprd)
        self.assertTrue("expiration_date=Timestamp('2014-02-20 00:00:00+0000'"
                        in reprd)
        self.assertTrue("contract_multiplier=500" in reprd)

    def test_reduce(self):
        reduced = self.future.__reduce__()
        self.assertEqual(Future, reduced[0])

    def test_to_and_from_dict(self):
        dictd = self.future.to_dict()
        self.assertTrue('root_symbol' in dictd)
        self.assertTrue('notice_date' in dictd)
        self.assertTrue('expiration_date' in dictd)
        self.assertTrue('contract_multiplier' in dictd)

        from_dict = Future.from_dict(dictd)
        self.assertTrue(isinstance(from_dict, Future))
        self.assertEqual(self.future, from_dict)

    def test_root_symbol(self):
        self.assertEqual('OM', self.future.root_symbol)
Exemple #11
0
    def lookup_future_symbol(self, symbol):
        """ Return the Future object for a given symbol.

        Parameters
        ----------
        symbol : str
            The symbol of the desired contract.

        Returns
        -------
        Future
            A Future object.

        Raises
        ------
        SymbolNotFound
            Raised when no contract named 'symbol' is found.

        """

        data = self._select_asset_by_symbol(self.futures_contracts, symbol)\
                   .execute().fetchone()

        # If no data found, raise an exception
        if not data:
            raise SymbolNotFound(symbol=symbol)

        # If we find a contract, check whether it's been cached
        try:
            return self._future_cache[data['sid']]
        except KeyError:
            pass

        # Build the Future object from its parameters
        data = dict(data.items())
        _convert_asset_timestamp_fields(data)
        future = Future(**data)

        # Cache the Future object.
        self._future_cache[data['sid']] = future

        return future
Exemple #12
0
    def _retrieve_futures_contract(self, sid):
        """
        Retrieve the Future object of a given sid.
        """
        try:
            return self._future_cache[sid]
        except KeyError:
            pass

        data = self.select_future_by_sid(sid).execute().fetchone()
        # Convert 'data' from a RowProxy object to a dict, to allow assignment
        data = dict(data.items())
        if data:
            _convert_asset_str_fields(data)
            _convert_asset_timestamp_fields(data)

            future = Future(**data)
        else:
            future = None

        self._future_cache[sid] = future
        return future