mirror of
https://github.com/wassname/catalyst.git
synced 2026-07-07 05:49:52 +08:00
Fixes under-incrementation of risk report.
We were only incrementing the risk report by one day, and never checking to see if that day we incremented into was a trading day or not. We now increment by day until we are on a trading day. With an assist from @twiecki on: Adapted test_risk_compare_batch_iterative to work with fixed iterative risk class.
This commit is contained in:
committed by
Eddie Hebert
parent
4c3554042e
commit
d5697cdf0a
@@ -591,3 +591,7 @@ shares in position"
|
||||
cumulative_pos = perf_tracker.cumulative_performance.positions[sid]
|
||||
expected_size = txn_count / 2 * -25
|
||||
self.assertEqual(cumulative_pos.amount, expected_size)
|
||||
|
||||
self.assertEqual(perf_tracker.period_end.
|
||||
replace(hour=0, minute=0, second=0),
|
||||
perf_tracker.cumulative_risk_metrics.end_date)
|
||||
|
||||
@@ -71,10 +71,15 @@ class RiskCompareIterativeToBatch(unittest.TestCase):
|
||||
|
||||
cur_returns.append(todays_return_obj)
|
||||
|
||||
# Move forward day counter to next trading day
|
||||
todays_date += self.oneday
|
||||
while not self.trading_env.is_trading_day(todays_date):
|
||||
todays_date += self.oneday
|
||||
|
||||
try:
|
||||
risk_metrics_original = risk.RiskMetricsBatch(
|
||||
start_date=self.start_date,
|
||||
end_date=todays_date + self.oneday,
|
||||
end_date=todays_date,
|
||||
returns=cur_returns,
|
||||
trading_environment=self.trading_env
|
||||
)
|
||||
@@ -82,12 +87,10 @@ 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, ret, self.oneday)
|
||||
type(e), risk_metrics_refactor.update, ret)
|
||||
continue
|
||||
|
||||
risk_metrics_refactor.update(ret, self.oneday)
|
||||
|
||||
todays_date += self.oneday
|
||||
risk_metrics_refactor.update(ret)
|
||||
|
||||
self.assertEqual(
|
||||
risk_metrics_original.start_date,
|
||||
|
||||
@@ -277,7 +277,7 @@ class PerformanceTracker(object):
|
||||
|
||||
#update risk metrics for cumulative performance
|
||||
self.cumulative_risk_metrics.update(
|
||||
self.todays_performance.returns, datetime.timedelta(days=1))
|
||||
self.todays_performance.returns)
|
||||
|
||||
# increment the day counter before we move markers forward.
|
||||
self.day_count += 1.0
|
||||
|
||||
@@ -386,7 +386,7 @@ class RiskMetricsIterative(RiskMetricsBase):
|
||||
if x.date >= self.start_date
|
||||
]
|
||||
|
||||
def update(self, returns_in_period, dt):
|
||||
def update(self, returns_in_period):
|
||||
if self.trading_environment.is_trading_day(self.end_date):
|
||||
self.algorithm_returns.append(returns_in_period)
|
||||
self.benchmark_returns.append(
|
||||
@@ -394,7 +394,11 @@ class RiskMetricsIterative(RiskMetricsBase):
|
||||
self.trading_days += 1
|
||||
self.update_compounded_log_returns()
|
||||
|
||||
self.end_date += dt
|
||||
self.end_date += datetime.timedelta(hours=24)
|
||||
|
||||
while not self.trading_environment.is_trading_day(self.end_date):
|
||||
self.end_date += datetime.timedelta(hours=24)
|
||||
|
||||
self.end_date = self.end_date.replace(hour=0, minute=0, second=0)
|
||||
|
||||
self.algorithm_period_returns.append(
|
||||
|
||||
Reference in New Issue
Block a user