def test_representation(self): test_period = ClassicRiskMetrics.risk_metric_period( start_session=self.start_session, end_session=self.end_session, algorithm_returns=self.algo_returns, benchmark_returns=self.benchmark_returns, algorithm_leverages=pd.Series(0.0, index=self.algo_returns.index)) metrics = { "algorithm_period_return", "benchmark_period_return", "treasury_period_return", "period_label", "excess_return", "trading_days", "benchmark_volatility", "algo_volatility", "sharpe", "sortino", "beta", "alpha", "max_drawdown", "max_leverage", } self.assertEqual(set(test_period), metrics)
def test_representation(self): test_period = ClassicRiskMetrics.risk_metric_period( start_session=self.start_session, end_session=self.end_session, algorithm_returns=self.algo_returns, benchmark_returns=self.benchmark_returns, algorithm_leverages=pd.Series( 0.0, index=self.algo_returns.index ) ) metrics = { "algorithm_period_return", "benchmark_period_return", "treasury_period_return", "period_label", "excess_return", "trading_days", "benchmark_volatility", "algo_volatility", "sharpe", "sortino", "beta", "alpha", "max_drawdown", "max_leverage", } self.assertEqual(set(test_period), metrics)
def test_sharpe_value_when_benchmark_null(self): # Sharpe is displayed as '0.0' instead of np.nan null_returns = factory.create_returns_from_list([0.0] * 251, self.sim_params) test_period = ClassicRiskMetrics.risk_metric_period( start_session=self.start_session, end_session=self.end_session, algorithm_returns=null_returns, benchmark_returns=null_returns, algorithm_leverages=pd.Series(0.0, index=self.algo_returns.index)) self.assertEqual(test_period['sharpe'], 0.0)
def test_sharpe_value_when_null(self): # Sharpe is displayed as '0.0' instead of np.nan null_returns = factory.create_returns_from_list( [0.0]*251, self.sim_params ) test_period = ClassicRiskMetrics.risk_metric_period( start_session=self.start_session, end_session=self.end_session, algorithm_returns=null_returns, benchmark_returns=self.benchmark_returns, algorithm_leverages=pd.Series( 0.0, index=self.algo_returns.index ) ) self.assertEqual(test_period['sharpe'], 0.0)
def test_algorithm_leverages(self): # Max leverage for an algorithm with 'None' as leverage is 0. for period, expected_len in zip(PERIODS, [12, 10, 7, 1]): self.assertEqual( [x['max_leverage'] for x in self.metrics[period]], [0.0] * expected_len, ) test_period = ClassicRiskMetrics.risk_metric_period( start_session=self.start_session, end_session=self.end_session, algorithm_returns=self.algo_returns, benchmark_returns=self.benchmark_returns, algorithm_leverages=pd.Series([.01, .02, .03])) # This return period has a list instead of None for algorithm_leverages # Confirm that max_leverage is set to the max of those values self.assertEqual(test_period['max_leverage'], .03)
def test_algorithm_leverages(self): # Max leverage for an algorithm with 'None' as leverage is 0. for period, expected_len in zip(PERIODS, [12, 10, 7, 1]): self.assertEqual( [x['max_leverage'] for x in self.metrics[period]], [0.0] * expected_len, ) test_period = ClassicRiskMetrics.risk_metric_period( start_session=self.start_session, end_session=self.end_session, algorithm_returns=self.algo_returns, benchmark_returns=self.benchmark_returns, algorithm_leverages=pd.Series([.01, .02, .03]) ) # This return period has a list instead of None for algorithm_leverages # Confirm that max_leverage is set to the max of those values self.assertEqual(test_period['max_leverage'], .03)