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)
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)
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)
def test_security_add_delete(self): try: 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) finally: remove_security_data_directory()
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)
def test_security_add(self): def get_datetime(): return datetime(2015, 1, 27, tzinfo=pytz.utc) try: 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) finally: remove_security_data_directory()
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(symbol='AAPL', sim_params=sim_params) with self.assertRaises(TradingControlViolation) as ctx: algo.run(self.source) self.check_algo_exception(algo, ctx, 2)
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)
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)
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)
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)
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)