def init_instance_fixtures(self): super(TestRisk, self).init_instance_fixtures() self.start_session = pd.Timestamp("2006-01-01", tz='UTC') self.end_session = self.trading_calendar.minute_to_session_label( pd.Timestamp("2006-12-31", tz='UTC'), direction="previous" ) self.sim_params = SimulationParameters( start_session=self.start_session, end_session=self.end_session, trading_calendar=self.trading_calendar, ) self.algo_returns = factory.create_returns_from_list( RETURNS, self.sim_params ) self.benchmark_returns = factory.create_returns_from_list( BENCHMARK, self.sim_params ) self.metrics = ClassicRiskMetrics.risk_report( algorithm_returns=self.algo_returns, benchmark_returns=self.benchmark_returns, algorithm_leverages=pd.Series(0.0, index=self.algo_returns.index) )
def test_partial_month(self): start_session = self.trading_calendar.minute_to_session_label( pd.Timestamp("1993-02-01", tz="UTC") ) # 1992 and 1996 were leap years total_days = 365 * 5 + 2 end_session = start_session + datetime.timedelta(days=total_days) sim_params90s = SimulationParameters( start_session=start_session, end_session=end_session, trading_calendar=self.trading_calendar, ) returns = factory.create_returns_from_range(sim_params90s) returns = returns[:-10] # truncate the returns series to end mid-month metrics = ClassicRiskMetrics.risk_report( algorithm_returns=returns, # use returns from the fixture to ensure that we have enough data. benchmark_returns=self.BENCHMARK_RETURNS, algorithm_leverages=pd.Series(0.0, index=returns.index), ) total_months = 60 self.check_metrics(metrics, total_months, start_session)
def test_partial_month(self): start_session = self.trading_calendar.minute_to_session_label( pd.Timestamp("1993-02-01", tz='UTC') ) # 1992 and 1996 were leap years total_days = 365 * 5 + 2 end_session = start_session + datetime.timedelta(days=total_days) sim_params90s = SimulationParameters( start_session=start_session, end_session=end_session, trading_calendar=self.trading_calendar, ) returns = factory.create_returns_from_range(sim_params90s) returns = returns[:-10] # truncate the returns series to end mid-month metrics = ClassicRiskMetrics.risk_report( algorithm_returns=returns, # use returns from the fixture to ensure that we have enough data. benchmark_returns=self.BENCHMARK_RETURNS, algorithm_leverages=pd.Series(0.0, index=returns.index) ) total_months = 60 self.check_metrics(metrics, total_months, start_session)
def test_treasury_returns(self): returns = factory.create_returns_from_range(self.sim_params) metrics = ClassicRiskMetrics.risk_report( algorithm_returns=returns, benchmark_returns=self.benchmark_returns, algorithm_leverages=pd.Series(0.0, index=returns.index)) # These values are all expected to be zero because we explicity zero # out the treasury period returns as they are no longer actually used. for period in PERIODS: self.assertEqual( [x['treasury_period_return'] for x in metrics[period]], [0.0] * len(metrics[period]), )
def test_treasury_returns(self): returns = factory.create_returns_from_range(self.sim_params) metrics = ClassicRiskMetrics.risk_report( algorithm_returns=returns, benchmark_returns=self.env.benchmark_returns, algorithm_leverages=pd.Series(0.0, index=returns.index) ) # These values are all expected to be zero because we explicity zero # out the treasury period returns as they are no longer actually used. for period in PERIODS: self.assertEqual( [x['treasury_period_return'] for x in metrics[period]], [0.0] * len(metrics[period]), )
def test_benchmarkrange(self): start_session = self.trading_calendar.minute_to_session_label( pd.Timestamp("2008-01-01", tz='UTC')) end_session = self.trading_calendar.minute_to_session_label( pd.Timestamp("2010-01-01", tz='UTC'), direction="previous") sim_params = SimulationParameters( start_session=start_session, end_session=end_session, trading_calendar=self.trading_calendar, ) returns = factory.create_returns_from_range(sim_params) metrics = ClassicRiskMetrics.risk_report( algorithm_returns=returns, # use returns from the fixture to ensure that we have enough data. benchmark_returns=self.BENCHMARK_RETURNS, algorithm_leverages=pd.Series(0.0, index=returns.index)) self.check_metrics(metrics, 24, start_session)
def test_benchmarkrange(self): start_session = self.trading_calendar.minute_to_session_label( pd.Timestamp("2008-01-01", tz='UTC') ) end_session = self.trading_calendar.minute_to_session_label( pd.Timestamp("2010-01-01", tz='UTC'), direction="previous" ) sim_params = SimulationParameters( start_session=start_session, end_session=end_session, trading_calendar=self.trading_calendar, ) returns = factory.create_returns_from_range(sim_params) metrics = ClassicRiskMetrics.risk_report( algorithm_returns=returns, benchmark_returns=self.env.benchmark_returns, algorithm_leverages=pd.Series(0.0, index=returns.index) ) self.check_metrics(metrics, 24, start_session)