Пример #1
0
    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)
Пример #2
0
    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)
Пример #3
0
 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)
Пример #4
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)
Пример #5
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)
Пример #6
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)