Ejemplo n.º 1
0
    def test_algo_with_rl_violation_cumulative(self):
        """
        Add a new restriction, run a test long after both
        knowledge dates, make sure stock from original restriction
        set is still disallowed.
        """
        sim_params = factory.create_simulation_parameters(
            start=list(
                LEVERAGED_ETFS.keys())[0] + timedelta(days=7), num_days=4)

        with security_list_copy():
            add_security_data(['AAPL'], [])
            trade_history = factory.create_trade_history(
                'BZQ',
                [10.0, 10.0, 11.0, 11.0],
                [100, 100, 100, 300],
                timedelta(days=1),
                sim_params,
                env=self.env,
            )
            self.source = SpecificEquityTrades(event_list=trade_history,
                                               env=self.env)
            algo = RestrictedAlgoWithoutCheck(
                symbol='BZQ', sim_params=sim_params, env=self.env)
            with self.assertRaises(TradingControlViolation) as ctx:
                algo.run(self.source)

            self.check_algo_exception(algo, ctx, 0)
Ejemplo n.º 2
0
 def test_security_add_delete(self):
     with security_list_copy():
         def get_datetime():
             return datetime(2015, 1, 27, tzinfo=pytz.utc)
         rl = SecurityListSet(get_datetime, self.env.asset_finder)
         self.assertNotIn("BZQ", rl.leveraged_etf_list)
         self.assertNotIn("URTY", rl.leveraged_etf_list)
Ejemplo n.º 3
0
 def test_security_add_delete(self):
     with security_list_copy():
         def get_datetime():
             return datetime(2015, 1, 27, tzinfo=pytz.utc)
         add_security_data([], ['BZQ', 'URTY'])
         rl = SecurityListSet(get_datetime)
         self.assertNotIn("BZQ", rl.leveraged_etf_list)
         self.assertNotIn("URTY", rl.leveraged_etf_list)
Ejemplo n.º 4
0
 def test_security_add(self):
     def get_datetime():
         return datetime(2015, 1, 27, tzinfo=pytz.utc)
     with security_list_copy():
         add_security_data(['AAPL', 'GOOG'], [])
         rl = SecurityListSet(get_datetime)
         self.assertIn("AAPL", rl.leveraged_etf_list)
         self.assertIn("GOOG", rl.leveraged_etf_list)
         self.assertIn("BZQ", rl.leveraged_etf_list)
         self.assertIn("URTY", rl.leveraged_etf_list)
Ejemplo n.º 5
0
    def test_algo_without_rl_violation_after_delete(self):
        with security_list_copy():
            # add a delete statement removing bzq
            # write a new delete statement file to disk
            add_security_data([], ['BZQ'])

            sim_params = factory.create_simulation_parameters(
                start=self.extra_knowledge_date, num_days=3)
            trade_history = factory.create_trade_history(
                'BZQ', [10.0, 10.0, 11.0, 11.0], [100, 100, 100, 300],
                timedelta(days=1), sim_params)
            self.source = SpecificEquityTrades(event_list=trade_history)
            algo = RestrictedAlgoWithoutCheck(symbol='BZQ',
                                              sim_params=sim_params)
            algo.run(self.source)
Ejemplo n.º 6
0
 def test_security_add(self):
     def get_datetime():
         return datetime(2015, 1, 27, tzinfo=pytz.utc)
     with security_list_copy():
         add_security_data(['AAPL', 'GOOG'], [])
         rl = SecurityListSet(get_datetime, self.env.asset_finder)
         should_exist = [
             asset.sid for asset in
             [self.env.asset_finder.lookup_symbol(
                 symbol,
                 as_of_date=self.extra_knowledge_date
             ) for symbol in ["AAPL", "GOOG", "BZQ", "URTY"]]
         ]
         for sid in should_exist:
             self.assertIn(sid, rl.leveraged_etf_list)
Ejemplo n.º 7
0
    def test_security_add(self, env=None):
        def get_datetime():
            return datetime(2015, 1, 27, tzinfo=pytz.utc)

        with security_list_copy():
            add_security_data(['AAPL', 'GOOG'], [])
            rl = SecurityListSet(get_datetime)
            should_exist = [
                asset.sid for asset in [
                    env.asset_finder.lookup_symbol(
                        symbol, as_of_date=self.extra_knowledge_date)
                    for symbol in ["AAPL", "GOOG", "BZQ", "URTY"]
                ]
            ]
            for sid in should_exist:
                self.assertIn(sid, rl.leveraged_etf_list)
Ejemplo n.º 8
0
    def test_algo_with_rl_violation_after_add(self):
        with security_list_copy():
            add_security_data(['AAPL'], [])
            sim_params = factory.create_simulation_parameters(
                start=self.trading_day_before_first_kd, num_days=4)
            trade_history = factory.create_trade_history(
                'AAPL', [10.0, 10.0, 11.0, 11.0], [100, 100, 100, 300],
                timedelta(days=1),
                sim_params,
                env=self.env)
            self.source = SpecificEquityTrades(event_list=trade_history,
                                               env=self.env)
            algo = RestrictedAlgoWithoutCheck(symbol='AAPL',
                                              sim_params=sim_params,
                                              env=self.env)
            with self.assertRaises(TradingControlViolation) as ctx:
                algo.run(self.source)

            self.check_algo_exception(algo, ctx, 2)
Ejemplo n.º 9
0
    def test_algo_with_rl_violation_after_add(self):
        with security_list_copy():
            add_security_data(['AAPL'], [])
            sim_params = factory.create_simulation_parameters(
                start=self.trading_day_before_first_kd, num_days=4)
            trade_history = factory.create_trade_history(
                'AAPL',
                [10.0, 10.0, 11.0, 11.0],
                [100, 100, 100, 300],
                timedelta(days=1),
                sim_params
            )
            self.source = SpecificEquityTrades(event_list=trade_history)
            algo = RestrictedAlgoWithoutCheck(
                sid='AAPL', sim_params=sim_params)
            with self.assertRaises(TradingControlViolation) as ctx:
                algo.run(self.source)

            self.check_algo_exception(algo, ctx, 2)
Ejemplo n.º 10
0
    def test_algo_without_rl_violation_after_delete(self):
        with security_list_copy():
            # add a delete statement removing bzq
            # write a new delete statement file to disk
            add_security_data([], ['BZQ'])

            sim_params = factory.create_simulation_parameters(
                start=self.extra_knowledge_date, num_days=3)
            trade_history = factory.create_trade_history(
                'BZQ',
                [10.0, 10.0, 11.0, 11.0],
                [100, 100, 100, 300],
                timedelta(days=1),
                sim_params
            )
            self.source = SpecificEquityTrades(event_list=trade_history)
            algo = RestrictedAlgoWithoutCheck(
                sid='BZQ', sim_params=sim_params)
            algo.run(self.source)
Ejemplo n.º 11
0
    def test_algo_with_rl_violation_cumulative(self):
        """
        Add a new restriction, run a test long after both
        knowledge dates, make sure stock from original restriction
        set is still disallowed.
        """
        sim_params = factory.create_simulation_parameters(
            start=list(LEVERAGED_ETFS.keys())[0] + timedelta(days=7),
            num_days=4)

        with security_list_copy():
            add_security_data(['AAPL'], [])
            trade_history = factory.create_trade_history(
                'BZQ', [10.0, 10.0, 11.0, 11.0], [100, 100, 100, 300],
                timedelta(days=1), sim_params)
            self.source = SpecificEquityTrades(event_list=trade_history)
            algo = RestrictedAlgoWithoutCheck(symbol='BZQ',
                                              sim_params=sim_params)
            with self.assertRaises(TradingControlViolation) as ctx:
                algo.run(self.source)

            self.check_algo_exception(algo, ctx, 0)