Beispiel #1
0
 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 = risk.RiskReport(
         self.algo_returns,
         self.sim_params,
         benchmark_returns=self.benchmark_returns,
         trading_calendar=self.trading_calendar,
         treasury_curves=self.env.treasury_curves,
     )
 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)
     )
Beispiel #3
0
    def init_instance_fixtures(self):
        super(TestRisk, self).init_instance_fixtures()

        start_date = datetime.datetime(year=2006,
                                       month=1,
                                       day=1,
                                       hour=0,
                                       minute=0,
                                       tzinfo=pytz.utc)
        end_date = datetime.datetime(year=2006,
                                     month=12,
                                     day=29,
                                     tzinfo=pytz.utc)

        self.sim_params = SimulationParameters(
            period_start=start_date,
            period_end=end_date,
            trading_schedule=self.trading_schedule,
        )

        self.algo_returns_06 = factory.create_returns_from_list(
            answer_key.ALGORITHM_RETURNS.values, self.sim_params)

        self.cumulative_metrics_06 = risk.RiskMetricsCumulative(
            self.sim_params,
            treasury_curves=self.env.treasury_curves,
            trading_schedule=self.trading_schedule,
        )

        for dt, returns in answer_key.RETURNS_DATA.iterrows():
            self.cumulative_metrics_06.update(dt, returns['Algorithm Returns'],
                                              returns['Benchmark Returns'],
                                              0.0)
Beispiel #4
0
 def test_drawdown(self):
     returns = factory.create_returns_from_list([1.0, -0.5, 0.8, 0.17, 1.0, -0.1, -0.45], self.sim_params)
     # 200, 100, 180, 210.6, 421.2, 379.8, 208.494
     metrics = risk.RiskMetricsPeriod(
         returns.index[0], returns.index[-1], returns, env=self.env, benchmark_returns=self.env.benchmark_returns
     )
     self.assertEqual(metrics.max_drawdown, 0.505)
    def init_instance_fixtures(self):
        super(TestRisk, self).init_instance_fixtures()

        start_date = datetime.datetime(
            year=2006,
            month=1,
            day=1,
            hour=0,
            minute=0,
            tzinfo=pytz.utc)
        end_date = datetime.datetime(
            year=2006, month=12, day=29, tzinfo=pytz.utc)

        self.sim_params = SimulationParameters(
            period_start=start_date,
            period_end=end_date,
            trading_schedule=self.trading_schedule,
        )

        self.algo_returns_06 = factory.create_returns_from_list(
            answer_key.ALGORITHM_RETURNS.values,
            self.sim_params
        )

        self.cumulative_metrics_06 = risk.RiskMetricsCumulative(
            self.sim_params,
            treasury_curves=self.env.treasury_curves,
            trading_schedule=self.trading_schedule,
        )

        for dt, returns in answer_key.RETURNS_DATA.iterrows():
            self.cumulative_metrics_06.update(dt,
                                              returns['Algorithm Returns'],
                                              returns['Benchmark Returns'],
                                              0.0)
 def test_factory(self):
     returns = [0.1] * 100
     r_objects = factory.create_returns_from_list(returns, self.sim_params)
     self.assertLessEqual(
         r_objects.index[-1],
         pd.Timestamp('2006-12-31', tz='UTC')
     )
    def setUp(self):
        start_date = datetime.datetime(
            year=2006,
            month=1,
            day=1,
            hour=0,
            minute=0,
            tzinfo=pytz.utc)
        end_date = datetime.datetime(
            year=2006, month=12, day=29, tzinfo=pytz.utc)

        self.sim_params = SimulationParameters(
            period_start=start_date,
            period_end=end_date
        )

        self.algo_returns_06 = factory.create_returns_from_list(
            answer_key.ALGORITHM_RETURNS.values,
            self.sim_params
        )

        self.cumulative_metrics_06 = risk.RiskMetricsCumulative(
            self.sim_params)

        for dt, returns in answer_key.RETURNS_DATA.iterrows():
            self.cumulative_metrics_06.update(dt,
                                              returns['Algorithm Returns'],
                                              returns['Benchmark Returns'])
Beispiel #8
0
    def setUp(self):
        start_date = datetime.datetime(
            year=2006,
            month=1,
            day=1,
            hour=0,
            minute=0,
            tzinfo=pytz.utc)
        end_date = datetime.datetime(
            year=2006, month=12, day=29, tzinfo=pytz.utc)

        self.sim_params = SimulationParameters(
            period_start=start_date,
            period_end=end_date
        )

        self.algo_returns_06 = factory.create_returns_from_list(
            answer_key.ALGORITHM_RETURNS.values,
            self.sim_params
        )

        self.cumulative_metrics_06 = risk.RiskMetricsCumulative(
            self.sim_params)

        for dt, returns in answer_key.RETURNS_DATA.iterrows():
            self.cumulative_metrics_06.update(dt,
                                              returns['Algorithm Returns'],
                                              returns['Benchmark Returns'])
Beispiel #9
0
    def setUp(self):

        start_date = datetime.datetime(year=2006,
                                       month=1,
                                       day=1,
                                       hour=0,
                                       minute=0,
                                       tzinfo=pytz.utc)
        end_date = datetime.datetime(year=2006,
                                     month=12,
                                     day=31,
                                     tzinfo=pytz.utc)

        self.sim_params = SimulationParameters(period_start=start_date,
                                               period_end=end_date)

        self.algo_returns_06 = factory.create_returns_from_list(
            RETURNS, self.sim_params)

        self.metrics_06 = risk.RiskReport(self.algo_returns_06,
                                          self.sim_params)

        start_08 = datetime.datetime(year=2008,
                                     month=1,
                                     day=1,
                                     hour=0,
                                     minute=0,
                                     tzinfo=pytz.utc)

        end_08 = datetime.datetime(year=2008,
                                   month=12,
                                   day=31,
                                   tzinfo=pytz.utc)
        self.sim_params08 = SimulationParameters(period_start=start_08,
                                                 period_end=end_08)
    def init_instance_fixtures(self):
        super(TestRisk, self).init_instance_fixtures()

        start_session = pd.Timestamp("2006-01-01", tz='UTC')
        end_session = pd.Timestamp("2006-12-29", tz='UTC')

        self.sim_params = SimulationParameters(
            start_session=start_session,
            end_session=end_session,
            trading_calendar=self.trading_calendar,
        )
        self.algo_returns = factory.create_returns_from_list(
            RETURNS,
            self.sim_params
        )
        self.cumulative_metrics = risk.RiskMetricsCumulative(
            self.sim_params,
            treasury_curves=self.env.treasury_curves,
            trading_calendar=self.trading_calendar,
        )
        for dt, returns in self.algo_returns.iteritems():
            self.cumulative_metrics.update(
                dt,
                returns,
                BENCHMARK_BASE,
                0.0
            )
    def init_instance_fixtures(self):
        super(TestRisk, self).init_instance_fixtures()

        start_session = pd.Timestamp("2006-01-01", tz='UTC')
        end_session = pd.Timestamp("2006-12-29", tz='UTC')

        self.sim_params = SimulationParameters(
            start_session=start_session,
            end_session=end_session,
            trading_calendar=self.trading_calendar,
        )

        self.algo_returns_06 = factory.create_returns_from_list(
            answer_key.ALGORITHM_RETURNS.values,
            self.sim_params
        )

        self.cumulative_metrics_06 = risk.RiskMetricsCumulative(
            self.sim_params,
            treasury_curves=self.env.treasury_curves,
            trading_calendar=self.trading_calendar,
        )

        for dt, returns in answer_key.RETURNS_DATA.iterrows():
            self.cumulative_metrics_06.update(dt,
                                              returns['Algorithm Returns'],
                                              returns['Benchmark Returns'],
                                              0.0)
Beispiel #12
0
 def test_drawdown(self):
     returns = factory.create_returns_from_list(
         [1.0, -0.5, 0.8, .17, 1.0, -0.1, -0.45], self.sim_params)
     #200, 100, 180, 210.6, 421.2, 379.8, 208.494
     metrics = risk.RiskMetricsBatch(returns[0].date, returns[-1].date,
                                     returns)
     self.assertEqual(metrics.max_drawdown, 0.505)
Beispiel #13
0
 def test_drawdown(self):
     returns = factory.create_returns_from_list(
         [1.0, -0.5, 0.8, .17, 1.0, -0.1, -0.45], self.sim_params)
     #200, 100, 180, 210.6, 421.2, 379.8, 208.494
     metrics = risk.RiskMetricsBatch(returns[0].date,
                                     returns[-1].date,
                                     returns)
     self.assertEqual(metrics.max_drawdown, 0.505)
Beispiel #14
0
    def setUp(self):

        start_date = datetime.datetime(
            year=2006,
            month=1,
            day=1,
            hour=0,
            minute=0,
            tzinfo=pytz.utc)
        end_date = datetime.datetime(
            year=2006, month=12, day=31, tzinfo=pytz.utc)

        self.benchmark_returns, self.treasury_curves = \
            factory.load_market_data()

        self.trading_env = TradingEnvironment(
            self.benchmark_returns,
            self.treasury_curves,
            period_start=start_date,
            period_end=end_date
        )

        self.onesec = datetime.timedelta(seconds=1)
        self.oneday = datetime.timedelta(days=1)
        self.tradingday = datetime.timedelta(hours=6, minutes=30)
        self.dt = datetime.datetime.utcnow()

        self.algo_returns_06 = factory.create_returns_from_list(
            RETURNS,
            self.trading_env
        )

        self.metrics_06 = risk.RiskReport(
            self.algo_returns_06,
            self.trading_env
        )

        start_08 = datetime.datetime(
            year=2008,
            month=1,
            day=1,
            hour=0,
            minute=0,
            tzinfo=pytz.utc)

        end_08 = datetime.datetime(
            year=2008,
            month=12,
            day=31,
            tzinfo=pytz.utc
        )
        self.trading_env08 = TradingEnvironment(
            self.benchmark_returns,
            self.treasury_curves,
            period_start=start_08,
            period_end=end_08
        )
Beispiel #15
0
    def setUp(self):

        start_date = datetime.datetime(
            year=2006,
            month=1,
            day=1,
            hour=0,
            minute=0,
            tzinfo=pytz.utc)
        end_date = datetime.datetime(
            year=2006, month=12, day=31, tzinfo=pytz.utc)

        self.benchmark_returns, self.treasury_curves = \
            factory.load_market_data()

        self.trading_env = TradingEnvironment(
            self.benchmark_returns,
            self.treasury_curves,
            period_start=start_date,
            period_end=end_date
        )

        self.onesec = datetime.timedelta(seconds=1)
        self.oneday = datetime.timedelta(days=1)
        self.tradingday = datetime.timedelta(hours=6, minutes=30)
        self.dt = datetime.datetime.utcnow()

        self.algo_returns_06 = factory.create_returns_from_list(
            RETURNS,
            self.trading_env
        )

        self.metrics_06 = risk.RiskReport(
            self.algo_returns_06,
            self.trading_env
        )

        start_08 = datetime.datetime(
            year=2008,
            month=1,
            day=1,
            hour=0,
            minute=0,
            tzinfo=pytz.utc)

        end_08 = datetime.datetime(
            year=2008,
            month=12,
            day=31,
            tzinfo=pytz.utc
        )
        self.trading_env08 = TradingEnvironment(
            self.benchmark_returns,
            self.treasury_curves,
            period_start=start_08,
            period_end=end_08
        )
Beispiel #16
0
    def init_instance_fixtures(self):
        super(TestRisk, self).init_instance_fixtures()

        start_date = datetime.datetime(
            year=2006,
            month=1,
            day=1,
            hour=0,
            minute=0,
            tzinfo=pytz.utc)
        end_date = datetime.datetime(
            year=2006, month=12, day=31, tzinfo=pytz.utc)

        self.sim_params = SimulationParameters(
            period_start=start_date,
            period_end=end_date,
            trading_schedule=self.trading_schedule,
        )

        self.algo_returns_06 = factory.create_returns_from_list(
            RETURNS,
            self.sim_params
        )

        self.benchmark_returns_06 = \
            answer_key.RETURNS_DATA['Benchmark Returns']

        self.metrics_06 = risk.RiskReport(
            self.algo_returns_06,
            self.sim_params,
            benchmark_returns=self.benchmark_returns_06,
            trading_schedule=self.trading_schedule,
            treasury_curves=self.env.treasury_curves,
        )

        start_08 = datetime.datetime(
            year=2008,
            month=1,
            day=1,
            hour=0,
            minute=0,
            tzinfo=pytz.utc)

        end_08 = datetime.datetime(
            year=2008,
            month=12,
            day=31,
            tzinfo=pytz.utc
        )
        self.sim_params08 = SimulationParameters(
            period_start=start_08,
            period_end=end_08,
            trading_schedule=self.trading_schedule,
        )
Beispiel #17
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)
Beispiel #18
0
 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 = risk.RiskReport(
         self.algo_returns,
         self.sim_params,
         benchmark_returns=self.benchmark_returns,
         trading_calendar=self.trading_calendar,
         treasury_curves=self.env.treasury_curves,
     )
 def test_drawdown(self):
     returns = factory.create_returns_from_list(
         [1.0, -0.5, 0.8, .17, 1.0, -0.1, -0.45], self.sim_params)
     # 200, 100, 180, 210.6, 421.2, 379.8, 208.494
     metrics = risk.RiskMetricsPeriod(
         returns.index[0],
         returns.index[-1],
         returns,
         env=self.env,
         benchmark_returns=self.env.benchmark_returns,
     )
     self.assertEqual(metrics.max_drawdown, 0.505)
    def setUp(self):

        start_date = datetime.datetime(
            year=2006,
            month=1,
            day=1,
            hour=0,
            minute=0,
            tzinfo=pytz.utc)
        end_date = datetime.datetime(
            year=2006, month=12, day=31, tzinfo=pytz.utc)

        self.sim_params = SimulationParameters(
            period_start=start_date,
            period_end=end_date,
            env=self.env,
        )

        self.algo_returns_06 = factory.create_returns_from_list(
            RETURNS,
            self.sim_params
        )

        self.benchmark_returns_06 = \
            answer_key.RETURNS_DATA['Benchmark Returns']

        self.metrics_06 = risk.RiskReport(
            self.algo_returns_06,
            self.sim_params,
            benchmark_returns=self.benchmark_returns_06,
            env=self.env,
        )

        start_08 = datetime.datetime(
            year=2008,
            month=1,
            day=1,
            hour=0,
            minute=0,
            tzinfo=pytz.utc)

        end_08 = datetime.datetime(
            year=2008,
            month=12,
            day=31,
            tzinfo=pytz.utc
        )
        self.sim_params08 = SimulationParameters(
            period_start=start_08,
            period_end=end_08,
            env=self.env,
        )
Beispiel #21
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 = RiskMetricsPeriod(
         start_session=self.start_session,
         end_session=self.end_session,
         returns=null_returns,
         benchmark_returns=self.benchmark_returns,
         trading_calendar=self.trading_calendar,
         treasury_curves=self.env.treasury_curves,
     )
     assert test_period.sharpe == 0.0
Beispiel #22
0
def compute_full(results, sim_params):

    returns_risk = create_returns_from_list([ret for ret in results.returns],
                                            sim_params)

    # Compute metrics for the entire backtesting period
    riskMetrics = RiskMetricsPeriod(sim_params.first_open,
                                    sim_params.last_close, returns_risk)

    # Compute RiskMetricsBase on a rolling basis for several terms.
    riskReport = RiskReport(returns_risk, sim_params)

    return riskReport, riskMetrics
 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 = RiskMetricsPeriod(
         start_session=self.start_session,
         end_session=self.end_session,
         returns=null_returns,
         benchmark_returns=self.benchmark_returns,
         trading_calendar=self.trading_calendar,
     )
     assert test_period.sharpe == 0.0
Beispiel #24
0
    def init_instance_fixtures(self):
        super(TestRisk, self).init_instance_fixtures()

        start_date = datetime.datetime(year=2006,
                                       month=1,
                                       day=1,
                                       hour=0,
                                       minute=0,
                                       tzinfo=pytz.utc)
        end_date = datetime.datetime(year=2006,
                                     month=12,
                                     day=31,
                                     tzinfo=pytz.utc)

        self.sim_params = SimulationParameters(
            period_start=start_date,
            period_end=end_date,
            trading_schedule=self.trading_schedule,
        )

        self.algo_returns_06 = factory.create_returns_from_list(
            RETURNS, self.sim_params)

        self.benchmark_returns_06 = \
            answer_key.RETURNS_DATA['Benchmark Returns']

        self.metrics_06 = risk.RiskReport(
            self.algo_returns_06,
            self.sim_params,
            benchmark_returns=self.benchmark_returns_06,
            trading_schedule=self.trading_schedule,
            treasury_curves=self.env.treasury_curves,
        )

        start_08 = datetime.datetime(year=2008,
                                     month=1,
                                     day=1,
                                     hour=0,
                                     minute=0,
                                     tzinfo=pytz.utc)

        end_08 = datetime.datetime(year=2008,
                                   month=12,
                                   day=31,
                                   tzinfo=pytz.utc)
        self.sim_params08 = SimulationParameters(
            period_start=start_08,
            period_end=end_08,
            trading_schedule=self.trading_schedule,
        )
Beispiel #25
0
    def setUp(self):

        start_date = datetime.datetime(
            year=2006,
            month=1,
            day=1,
            hour=0,
            minute=0,
            tzinfo=pytz.utc)
        end_date = datetime.datetime(
            year=2006, month=12, day=31, tzinfo=pytz.utc)

        self.sim_params = SimulationParameters(
            period_start=start_date,
            period_end=end_date
        )

        self.onesec = datetime.timedelta(seconds=1)
        self.oneday = datetime.timedelta(days=1)
        self.tradingday = datetime.timedelta(hours=6, minutes=30)
        self.dt = datetime.datetime.utcnow()

        self.algo_returns_06 = factory.create_returns_from_list(
            RETURNS,
            self.sim_params
        )

        self.metrics_06 = risk.RiskReport(
            self.algo_returns_06,
            self.sim_params
        )

        start_08 = datetime.datetime(
            year=2008,
            month=1,
            day=1,
            hour=0,
            minute=0,
            tzinfo=pytz.utc)

        end_08 = datetime.datetime(
            year=2008,
            month=12,
            day=31,
            tzinfo=pytz.utc
        )
        self.sim_params08 = SimulationParameters(
            period_start=start_08,
            period_end=end_08
        )
Beispiel #26
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)
Beispiel #27
0
    def setUp(self):

        start_date = datetime.datetime(
            year=2006,
            month=1,
            day=1,
            hour=0,
            minute=0,
            tzinfo=pytz.utc)
        end_date = datetime.datetime(
            year=2006, month=12, day=31, tzinfo=pytz.utc)

        self.sim_params = SimulationParameters(
            period_start=start_date,
            period_end=end_date
        )

        self.algo_returns_06 = factory.create_returns_from_list(
            RETURNS,
            self.sim_params
        )

        self.metrics_06 = risk.RiskReport(
            self.algo_returns_06,
            self.sim_params
        )

        start_08 = datetime.datetime(
            year=2008,
            month=1,
            day=1,
            hour=0,
            minute=0,
            tzinfo=pytz.utc)

        end_08 = datetime.datetime(
            year=2008,
            month=12,
            day=31,
            tzinfo=pytz.utc
        )
        self.sim_params08 = SimulationParameters(
            period_start=start_08,
            period_end=end_08
        )
Beispiel #28
0
 def test_index_mismatch_exception(self):
     # An exception is raised when returns and benchmark returns
     # have indexes that do not match
     bench_params = SimulationParameters(
         start_session=pd.Timestamp("2006-02-01", tz='UTC'),
         end_session=pd.Timestamp("2006-02-28", tz='UTC'),
         trading_calendar=self.trading_calendar,
     )
     benchmark = factory.create_returns_from_list([BENCHMARK_BASE] * 19,
                                                  bench_params)
     with np.testing.assert_raises(Exception):
         RiskMetricsPeriod(
             start_session=self.start_session,
             end_session=self.end_session,
             returns=self.algo_returns,
             benchmark_returns=benchmark,
             trading_calendar=self.trading_calendar,
             treasury_curves=self.env.treasury_curves,
         )
    def init_instance_fixtures(self):
        super(TestRisk, self).init_instance_fixtures()

        start_session = pd.Timestamp("2006-01-01", tz='UTC')
        end_session = pd.Timestamp("2006-12-29", tz='UTC')

        self.sim_params = SimulationParameters(
            start_session=start_session,
            end_session=end_session,
            trading_calendar=self.trading_calendar,
        )
        self.algo_returns = factory.create_returns_from_list(
            RETURNS, self.sim_params)
        self.cumulative_metrics = risk.RiskMetricsCumulative(
            self.sim_params,
            trading_calendar=self.trading_calendar,
        )
        for dt, returns in self.algo_returns.iteritems():
            self.cumulative_metrics.update(dt, returns, BENCHMARK_BASE, 0.0)
 def test_index_mismatch_exception(self):
     # An exception is raised when returns and benchmark returns
     # have indexes that do not match
     bench_params = SimulationParameters(
         start_session=pd.Timestamp("2006-02-01", tz='UTC'),
         end_session=pd.Timestamp("2006-02-28", tz='UTC'),
         trading_calendar=self.trading_calendar,
     )
     benchmark = factory.create_returns_from_list(
         [BENCHMARK_BASE]*19,
         bench_params
     )
     with np.testing.assert_raises(Exception):
         RiskMetricsPeriod(
             start_session=self.start_session,
             end_session=self.end_session,
             returns=self.algo_returns,
             benchmark_returns=benchmark,
             trading_calendar=self.trading_calendar,
         )
Beispiel #31
0
def compute(results, sim_params):

    trading_dates = results.index
    idx = np.where(trading_dates.year[0:-1] != trading_dates.year[1:])[0]

    # include the last element for the most recent year
    idx_last = trading_dates.shape[0] - 1
    if idx_last not in idx:
        idx = np.append(idx, idx_last)

    returns_risk = create_returns_from_list([ret for ret in results.returns],
                                            sim_params)

    dt_ranges = []
    yoy_metrics = []
    for i in range(len(idx)):
        if i == 0:
            tBeg = trading_dates[0].tz_localize('UTC')
        else:
            tBeg = trading_dates[idx[i - 1]].tz_localize('UTC')
        tEnd = trading_dates[idx[i]].tz_localize('UTC')
        dt_ranges.append([tBeg, tEnd, tEnd.year])

    # append full range
    dt_ranges.append([
        trading_dates[0].tz_localize('UTC'),
        trading_dates[-1].tz_localize('UTC'), 'All'
    ])

    for rng in dt_ranges:
        (tBeg, tEnd, year) = rng
        metrics = None
        try:
            metrics = RiskMetricsPeriod(tBeg, tEnd, returns_risk)
            dMetrics = metrics.to_dict()
            dMetrics['year'] = year
            yoy_metrics.append(dMetrics)
        except Exception, e:
            print e
            yoy_metrics.append({'year': year})
Beispiel #32
0
 def test_factory(self):
     returns = [0.1] * 100
     r_objects = factory.create_returns_from_list(returns, self.trading_env)
     self.assertTrue(r_objects[-1].date <=
                     datetime.datetime(
                         year=2006, month=12, day=31, tzinfo=pytz.utc))
Beispiel #33
0
 def test_factory(self):
     returns = [0.1] * 100
     r_objects = factory.create_returns_from_list(returns, self.sim_params)
     self.assertTrue(r_objects[-1].date <=
                     datetime.datetime(
                         year=2006, month=12, day=31, tzinfo=pytz.utc))
Beispiel #34
0
 def test_factory(self):
     returns = [0.1] * 100
     r_objects = factory.create_returns_from_list(returns, self.sim_params)
     assert r_objects.index[-1] <= pd.Timestamp("2006-12-31", tz="UTC")
Beispiel #35
0
 def test_factory(self):
     returns = [0.1] * 100
     r_objects = factory.create_returns_from_list(returns, self.sim_params)
     self.assertTrue(r_objects.index[-1] <=
                     datetime.datetime(
                         year=2006, month=12, day=31, tzinfo=pytz.utc))
Beispiel #36
0
        self.day_count += 1

if __name__ == '__main__':
    data = load_bars_from_yahoo(stocks=sym_list, indexes={}, start=start, end=end)
    trend_trader = trend_trader()
    results = trend_trader.run(data)

    ###########################################################################
    # Generate metrics
    print 'Generating Risk Report...........'
    print 'Using S&P500 as benchmark........'

    start = results.first_valid_index().replace(tzinfo=pytz.utc)
    end = results.last_valid_index().replace(tzinfo=pytz.utc)
    env = trading.SimulationParameters(start, end)
    returns_risk = create_returns_from_list(results.returns, env)
    
    algo_returns = RiskMetricsBase(start, end, returns_risk).algorithm_period_returns
    benchmark_returns = RiskMetricsBase(start, end, returns_risk).benchmark_period_returns
    excess_return = RiskMetricsBase(start, end, returns_risk).excess_return
    algo_volatility = RiskMetricsBase(start, end, returns_risk).algorithm_volatility
    benchmark_volatility = RiskMetricsBase(start, end, returns_risk).benchmark_volatility
    sharpe = RiskMetricsBase(start, end, returns_risk).sharpe
    sortino = RiskMetricsBase(start, end, returns_risk).sortino
    information = RiskMetricsBase(start, end, returns_risk).information
    beta = RiskMetricsBase(start, end, returns_risk).beta
    alpha = RiskMetricsBase(start, end, returns_risk).alpha
    max_drawdown = RiskMetricsBase(start, end, returns_risk).max_drawdown
    
    print '---------Risk Metrics---------'
    print 'Algorithm Returns: ' + str(round(algo_returns * 100,4)) + '%'
                                                          tzinfo=pytz.UTC),
                                        10000,
                                        emission_rate='daily')

sim_params_minute = SimulationParameters(datetime.datetime(2013,
                                                           6,
                                                           19,
                                                           tzinfo=pytz.UTC),
                                         datetime.datetime(2013,
                                                           6,
                                                           19,
                                                           tzinfo=pytz.UTC),
                                         10000,
                                         emission_rate='minute')

returns = factory.create_returns_from_list([1.0], sim_params_daily)

argument_list = [
    (Blotter, ()), (Order, (datetime.datetime(2013, 6,
                                              19), 8554, 100)), (PerShare, ()),
    (PerTrade, ()), (PerDollar, ()), (PerformancePeriod, (10000, )),
    (Position, (8554, )), (PositionTracker, ()),
    (PerformanceTracker, (sim_params_minute, )),
    (RiskMetricsCumulative, (sim_params_minute, )),
    (RiskMetricsPeriod, (returns.index[0], returns.index[0], returns)),
    (RiskReport, (returns, sim_params_minute)), (FixedSlippage, ()),
    (Transaction, (8554, 10, datetime.datetime(2013, 6, 19), 100, "0000")),
    (VolumeShareSlippage, ()), (Account, ()), (Portfolio, ()),
    (ProtocolPosition, (8554, ))
]
Beispiel #38
0
        new_case.insert(0, key)
        results.append(new_case)
    return results


sim_params_daily = SimulationParameters(
    datetime.datetime(2013, 6, 19, tzinfo=pytz.UTC),
    datetime.datetime(2013, 6, 19, tzinfo=pytz.UTC),
    10000,
    emission_rate='daily')
sim_params_minute = SimulationParameters(
    datetime.datetime(2013, 6, 19, tzinfo=pytz.UTC),
    datetime.datetime(2013, 6, 19, tzinfo=pytz.UTC),
    10000,
    emission_rate='minute')
returns = factory.create_returns_from_list(
    [1.0], sim_params_daily)


def object_serialization_cases(skip_daily=False):
    # Wrapped in a function to recreate DI objects.
    cases = [
        (Blotter, (), {}, 'repr'),
        (Order, (datetime.datetime(2013, 6, 19), 8554, 100), {}, 'dict'),
        (PerShare, (), {}, 'dict'),
        (PerTrade, (), {}, 'dict'),
        (PerDollar, (), {}, 'dict'),
        (PerformancePeriod,
            (10000,), {'position_tracker': PositionTracker()}, 'to_dict'),
        (Position, (8554,), {}, 'dict'),
        (PositionTracker, (), {}, 'dict'),
        (PerformanceTracker, (sim_params_minute,), {}, 'to_dict'),