def test_datasource_exception(self): self.zipline_test_config['trade_source'] = ExceptionSource() zipline = simfactory.create_test_zipline( **self.zipline_test_config ) with self.assertRaises(ZeroDivisionError): output, _ = drain_zipline(self, zipline)
def test_datasource_exception(self): self.zipline_test_config["trade_source"] = ExceptionSource() zipline = simfactory.create_test_zipline(**self.zipline_test_config) with self.assertRaises(ZeroDivisionError) as ctx: output, _ = drain_zipline(self, zipline) self.assertEqual(ctx.exception.message, "integer division or modulo by zero")
def test_datasource_exception(self): self.zipline_test_config['trade_source'] = ExceptionSource() zipline = simfactory.create_test_zipline(**self.zipline_test_config) with self.assertRaises(ZeroDivisionError) as ctx: output, _ = drain_zipline(self, zipline) self.assertEqual(ctx.exception.message, 'integer division or modulo by zero')
def test_tranform_exception(self): exc_tnfm = StatefulTransform(ExceptionTransform) self.zipline_test_config['transforms'] = [exc_tnfm] zipline = simfactory.create_test_zipline(**self.zipline_test_config) with self.assertRaises(AssertionError) as ctx: output, _ = drain_zipline(self, zipline) self.assertEqual(ctx.exception.message, 'An assertion message')
def test_tranform_exception(self): exc_tnfm = StatefulTransform(ExceptionTransform) self.zipline_test_config["transforms"] = [exc_tnfm] zipline = simfactory.create_test_zipline(**self.zipline_test_config) with self.assertRaises(AssertionError) as ctx: output, _ = drain_zipline(self, zipline) self.assertEqual(ctx.exception.message, "An assertion message")
def test_order_methods(self): """Only test that order methods can be called without error. Correct filling of orders is tested in zipline. """ test_algo = TradingAlgorithm(script=call_all_order_methods, sim_params=self.sim_params) set_algo_instance(test_algo) self.zipline_test_config["algorithm"] = test_algo self.zipline_test_config["trade_count"] = 200 zipline = simfactory.create_test_zipline(**self.zipline_test_config) output, _ = drain_zipline(self, zipline)
def test_exception_in_handle_data(self): # Simulation # ---------- self.zipline_test_config["algorithm"] = ExceptionAlgorithm( "handle_data", self.zipline_test_config["sid"], sim_params=factory.create_simulation_parameters() ) zipline = simfactory.create_test_zipline(**self.zipline_test_config) with self.assertRaises(Exception) as ctx: output, _ = drain_zipline(self, zipline) self.assertEqual(ctx.exception.message, "Algo exception in handle_data")
def test_zerodivision_exception_in_handle_data(self): # Simulation # ---------- self.zipline_test_config["algorithm"] = DivByZeroAlgorithm( self.zipline_test_config["sid"], sim_params=factory.create_simulation_parameters() ) zipline = simfactory.create_test_zipline(**self.zipline_test_config) with self.assertRaises(ZeroDivisionError) as ctx: output, _ = drain_zipline(self, zipline) self.assertEqual(ctx.exception.message, "integer division or modulo by zero")
def _algo_record_float_magic_should_pass(self, var_type): test_algo = TradingAlgorithm(script=record_float_magic % var_type, sim_params=self.sim_params) set_algo_instance(test_algo) self.zipline_test_config["algorithm"] = test_algo self.zipline_test_config["trade_count"] = 200 zipline = simfactory.create_test_zipline(**self.zipline_test_config) output, _ = drain_zipline(self, zipline) self.assertEqual(len(output), 252) incr = [] for o in output[:200]: incr.append(o["daily_perf"]["recorded_vars"]["data"]) np.testing.assert_array_equal(incr, [np.nan] * 200)
def test_zerodivision_exception_in_handle_data(self): # Simulation # ---------- self.zipline_test_config['algorithm'] = \ DivByZeroAlgorithm( self.zipline_test_config['sid'], sim_params=factory.create_simulation_parameters(), env=self.env ) zipline = simfactory.create_test_zipline(**self.zipline_test_config) with self.assertRaises(ZeroDivisionError): output, _ = drain_zipline(self, zipline)
def test_algo_record_vars(self): test_algo = TradingAlgorithm(script=record_variables, sim_params=self.sim_params) set_algo_instance(test_algo) self.zipline_test_config["algorithm"] = test_algo self.zipline_test_config["trade_count"] = 200 zipline = simfactory.create_test_zipline(**self.zipline_test_config) output, _ = drain_zipline(self, zipline) self.assertEqual(len(output), 252) incr = [] for o in output[:200]: incr.append(o["daily_perf"]["recorded_vars"]["incr"]) np.testing.assert_array_equal(incr, range(1, 201))
def test_zerodivision_exception_in_handle_data(self): # Simulation # ---------- self.zipline_test_config['algorithm'] = \ DivByZeroAlgorithm( self.zipline_test_config['sid'] ) zipline = simfactory.create_test_zipline(**self.zipline_test_config) with self.assertRaises(ZeroDivisionError) as ctx: output, _ = drain_zipline(self, zipline) self.assertEqual(ctx.exception.message, 'integer division or modulo by zero')
def test_exception_in_handle_data(self): # Simulation # ---------- self.zipline_test_config['algorithm'] = \ ExceptionAlgorithm( 'handle_data', self.zipline_test_config['sid'] ) zipline = simfactory.create_test_zipline(**self.zipline_test_config) with self.assertRaises(Exception) as ctx: output, _ = drain_zipline(self, zipline) self.assertEqual(ctx.exception.message, 'Algo exception in handle_data')
def test_zerodivision_exception_in_handle_data(self): # Simulation # ---------- self.zipline_test_config['algorithm'] = \ DivByZeroAlgorithm( self.zipline_test_config['sid'], sim_params=factory.create_simulation_parameters() ) zipline = simfactory.create_test_zipline( **self.zipline_test_config ) with self.assertRaises(ZeroDivisionError): output, _ = drain_zipline(self, zipline)
def test_order_methods(self): """Only test that order methods can be called without error. Correct filling of orders is tested in zipline. """ test_algo = TradingAlgorithm( script=call_all_order_methods, sim_params=self.sim_params, ) set_algo_instance(test_algo) self.zipline_test_config['algorithm'] = test_algo self.zipline_test_config['trade_count'] = 200 zipline = simfactory.create_test_zipline(**self.zipline_test_config) output, _ = drain_zipline(self, zipline)
def test_portfolio_in_init(self): """ Test that accessing portfolio in init doesn't break. """ test_algo = TradingAlgorithm( script=access_portfolio_in_init, sim_params=self.sim_params, ) set_algo_instance(test_algo) self.zipline_test_config['algorithm'] = test_algo self.zipline_test_config['trade_count'] = 1 zipline = simfactory.create_test_zipline(**self.zipline_test_config) output, _ = drain_zipline(self, zipline)
def test_exception_in_handle_data(self): # Simulation # ---------- self.zipline_test_config['algorithm'] = \ ExceptionAlgorithm( 'handle_data', self.zipline_test_config['sid'], sim_params=factory.create_simulation_parameters(), env=self.env ) zipline = simfactory.create_test_zipline(**self.zipline_test_config) with self.assertRaises(Exception) as ctx: output, _ = drain_zipline(self, zipline) self.assertEqual(str(ctx.exception), 'Algo exception in handle_data')
def test_account_in_init(self): """ Test that accessing account in init doesn't break. """ test_algo = TradingAlgorithm( script=access_account_in_init, sim_params=self.sim_params, ) set_algo_instance(test_algo) self.zipline_test_config['algorithm'] = test_algo self.zipline_test_config['trade_count'] = 1 zipline = simfactory.create_test_zipline( **self.zipline_test_config) output, _ = drain_zipline(self, zipline)
def _algo_record_float_magic_should_pass(self, var_type): test_algo = TradingAlgorithm( script=record_float_magic % var_type, sim_params=self.sim_params, ) set_algo_instance(test_algo) self.zipline_test_config['algorithm'] = test_algo self.zipline_test_config['trade_count'] = 200 zipline = simfactory.create_test_zipline(**self.zipline_test_config) output, _ = drain_zipline(self, zipline) self.assertEqual(len(output), 252) incr = [] for o in output[:200]: incr.append(o['daily_perf']['recorded_vars']['data']) np.testing.assert_array_equal(incr, [np.nan] * 200)
def test_set_portfolio(self): """ Are we protected against overwriting an algo's portfolio? """ # Simulation # ---------- self.zipline_test_config["algorithm"] = SetPortfolioAlgorithm( self.zipline_test_config["sid"], sim_params=factory.create_simulation_parameters() ) zipline = simfactory.create_test_zipline(**self.zipline_test_config) with self.assertRaises(AttributeError) as ctx: output, _ = drain_zipline(self, zipline) self.assertEqual(ctx.exception.message, "can't set attribute")
def test_exception_in_handle_data(self): # Simulation # ---------- self.zipline_test_config['algorithm'] = \ ExceptionAlgorithm( 'handle_data', self.zipline_test_config['sid'] ) zipline = simfactory.create_test_zipline( **self.zipline_test_config ) with self.assertRaises(Exception) as ctx: output, _ = drain_zipline(self, zipline) self.assertEqual(ctx.exception.message, 'Algo exception in handle_data')
def test_set_portfolio(self): """ Are we protected against overwriting an algo's portfolio? """ # Simulation # ---------- self.zipline_test_config['algorithm'] = \ SetPortfolioAlgorithm( self.zipline_test_config['sid'], sim_params=factory.create_simulation_parameters(), env=self.env ) zipline = simfactory.create_test_zipline(**self.zipline_test_config) with self.assertRaises(AttributeError): output, _ = drain_zipline(self, zipline)
def test_zerodivision_exception_in_handle_data(self): # Simulation # ---------- self.zipline_test_config['algorithm'] = \ DivByZeroAlgorithm( self.zipline_test_config['sid'] ) zipline = simfactory.create_test_zipline( **self.zipline_test_config ) with self.assertRaises(ZeroDivisionError) as ctx: output, _ = drain_zipline(self, zipline) self.assertEqual(ctx.exception.message, 'integer division or modulo by zero')
def test_algo_record_vars(self): test_algo = TradingAlgorithm( script=record_variables, sim_params=self.sim_params, ) set_algo_instance(test_algo) self.zipline_test_config['algorithm'] = test_algo self.zipline_test_config['trade_count'] = 200 zipline = simfactory.create_test_zipline(**self.zipline_test_config) output, _ = drain_zipline(self, zipline) self.assertEqual(len(output), 252) incr = [] for o in output[:200]: incr.append(o['daily_perf']['recorded_vars']['incr']) np.testing.assert_array_equal(incr, range(1, 201))
def test_set_portfolio(self): """ Are we protected against overwriting an algo's portfolio? """ # Simulation # ---------- self.zipline_test_config['algorithm'] = \ SetPortfolioAlgorithm( self.zipline_test_config['sid'] ) zipline = simfactory.create_test_zipline(**self.zipline_test_config) with self.assertRaises(AttributeError) as ctx: output, _ = drain_zipline(self, zipline) self.assertEqual(ctx.exception.message, "can't set attribute")
def test_set_portfolio(self): """ Are we protected against overwriting an algo's portfolio? """ # Simulation # ---------- self.zipline_test_config['algorithm'] = \ SetPortfolioAlgorithm( self.zipline_test_config['sid'], sim_params=factory.create_simulation_parameters() ) zipline = simfactory.create_test_zipline( **self.zipline_test_config ) with self.assertRaises(AttributeError): output, _ = drain_zipline(self, zipline)
def test_exception_in_handle_data(self): # Simulation # ---------- self.zipline_test_config['algorithm'] = \ ExceptionAlgorithm( 'handle_data', self.zipline_test_config['sid'], sim_params=factory.create_simulation_parameters(), env=self.env ) zipline = simfactory.create_test_zipline( **self.zipline_test_config ) with self.assertRaises(Exception) as ctx: output, _ = drain_zipline(self, zipline) self.assertEqual(str(ctx.exception), 'Algo exception in handle_data')