mirror of
https://github.com/wassname/catalyst.git
synced 2026-09-10 11:50:32 +08:00
MAINT: Use pd.Series for benchmarks and algorithm returns in risk.
Instead of lists, use pd.Series, so that memory is preallocated.
This commit is contained in:
@@ -1019,9 +1019,6 @@ class TestPerformanceTracker(unittest.TestCase):
|
||||
expected_size = len(txns) / 2 * -25
|
||||
self.assertEqual(cumulative_pos.amount, expected_size)
|
||||
|
||||
self.assertEqual(perf_tracker.last_close,
|
||||
perf_tracker.cumulative_risk_metrics.end_date)
|
||||
|
||||
self.assertEqual(len(perf_messages),
|
||||
sim_params.days_in_period)
|
||||
|
||||
|
||||
+4
-4
@@ -135,9 +135,9 @@ class TestRisk(unittest.TestCase):
|
||||
def test_trading_days_06(self):
|
||||
returns = factory.create_returns_from_range(self.sim_params)
|
||||
metrics = risk.RiskReport(returns, self.sim_params)
|
||||
self.assertEqual([x.trading_days for x in metrics.year_periods],
|
||||
self.assertEqual([x.num_trading_days for x in metrics.year_periods],
|
||||
[251])
|
||||
self.assertEqual([x.trading_days for x in metrics.month_periods],
|
||||
self.assertEqual([x.num_trading_days for x in metrics.month_periods],
|
||||
[20, 19, 23, 19, 22, 22, 20, 23, 20, 22, 21, 20])
|
||||
|
||||
def test_benchmark_volatility_06(self):
|
||||
@@ -625,10 +625,10 @@ class TestRisk(unittest.TestCase):
|
||||
def test_trading_days_08(self):
|
||||
returns = factory.create_returns_from_range(self.sim_params08)
|
||||
metrics = risk.RiskReport(returns, self.sim_params08)
|
||||
self.assertEqual([x.trading_days for x in metrics.year_periods],
|
||||
self.assertEqual([x.num_trading_days for x in metrics.year_periods],
|
||||
[253])
|
||||
|
||||
self.assertEqual([x.trading_days for x in metrics.month_periods],
|
||||
self.assertEqual([x.num_trading_days for x in metrics.month_periods],
|
||||
[21, 20, 20, 22, 21, 21, 22, 21, 21, 23, 19, 22])
|
||||
|
||||
def test_benchmark_volatility_08(self):
|
||||
|
||||
@@ -19,6 +19,7 @@ import datetime
|
||||
import pytz
|
||||
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
|
||||
import zipline.finance.risk as risk
|
||||
import zipline.finance.trading as trading
|
||||
@@ -52,7 +53,17 @@ class RiskCompareIterativeToBatch(unittest.TestCase):
|
||||
else:
|
||||
start_date = trading.environment.next_trading_day(self.start_date)
|
||||
|
||||
risk_metrics_refactor = risk.RiskMetricsIterative(start_date)
|
||||
self.all_benchmark_returns = pd.Series({
|
||||
x.date: x.returns
|
||||
for x in trading.environment.benchmark_returns
|
||||
if x.date >= self.start_date
|
||||
})
|
||||
|
||||
start_index = trading.environment.trading_days.searchsorted(start_date)
|
||||
end_date = trading.environment.trading_days[
|
||||
start_index + len(RETURNS)]
|
||||
|
||||
risk_metrics_refactor = risk.RiskMetricsIterative(start_date, end_date)
|
||||
todays_date = start_date
|
||||
|
||||
cur_returns = []
|
||||
@@ -77,17 +88,24 @@ class RiskCompareIterativeToBatch(unittest.TestCase):
|
||||
#assert that when original raises exception, same
|
||||
#exception is raised by risk_metrics_refactor
|
||||
np.testing.assert_raises(
|
||||
type(e), risk_metrics_refactor.update, todays_date, ret)
|
||||
type(e),
|
||||
risk_metrics_refactor.update,
|
||||
todays_date,
|
||||
self.all_benchmark_returns[todays_return_obj.date]
|
||||
)
|
||||
continue
|
||||
|
||||
risk_metrics_refactor.update(todays_date, ret)
|
||||
risk_metrics_refactor.update(
|
||||
todays_date,
|
||||
ret,
|
||||
self.all_benchmark_returns[todays_return_obj.date])
|
||||
|
||||
self.assertEqual(
|
||||
risk_metrics_original.start_date,
|
||||
risk_metrics_refactor.start_date)
|
||||
self.assertEqual(
|
||||
risk_metrics_original.end_date,
|
||||
risk_metrics_refactor.end_date)
|
||||
risk_metrics_refactor.algorithm_returns.index[-1])
|
||||
self.assertEqual(
|
||||
risk_metrics_original.treasury_period_return,
|
||||
risk_metrics_refactor.treasury_period_return)
|
||||
|
||||
Reference in New Issue
Block a user