From aaf2fae2b82a6848982f64d35c6bb288e445ac29 Mon Sep 17 00:00:00 2001 From: fawce Date: Thu, 5 Apr 2012 12:43:43 -0400 Subject: [PATCH] patched guard logic in max drawdown calculation. needs real work. --- zipline/component.py | 9 --------- zipline/finance/risk.py | 6 +++--- zipline/finance/trading.py | 4 +++- 3 files changed, 6 insertions(+), 13 deletions(-) diff --git a/zipline/component.py b/zipline/component.py index 7f947ee9..0004051f 100644 --- a/zipline/component.py +++ b/zipline/component.py @@ -189,9 +189,6 @@ class Component(object): self.stop_tic = time.time() - # shouldn't block if we've done our job correctly - # self.context.term() - def run(self, catch_exceptions=True): """ Run the component. @@ -214,12 +211,6 @@ class Component(object): self.shutdown() self.teardown_sockets() - #else: - #try: - #self._run() - #finally: - #self.shutdown() - #self.teardown_sockets() def working(self): """ diff --git a/zipline/finance/risk.py b/zipline/finance/risk.py index 009ec884..918ad083 100644 --- a/zipline/finance/risk.py +++ b/zipline/finance/risk.py @@ -237,11 +237,11 @@ class RiskMetrics(): compounded_returns = [] cur_return = 0.0 for r in self.algorithm_returns: - if(r != -1.0): + try: cur_return = math.log(1.0 + r) + cur_return #this is a guard for a single day returning -100% - else: - qutil.LOGGER.warn("negative 100 percent return, zeroing the returns") + except ValueError: + qutil.LOGGER.warn("{cur} return, zeroing the returns".format(cur=cur_return)) cur_return = 0.0 compounded_returns.append(cur_return) diff --git a/zipline/finance/trading.py b/zipline/finance/trading.py index 21848086..13d6d9ec 100644 --- a/zipline/finance/trading.py +++ b/zipline/finance/trading.py @@ -358,7 +358,8 @@ class TradingEnvironment(object): treasury_curves, period_start=None, period_end=None, - capital_base=None + capital_base=None, + max_drawdown=None ): self.trading_days = [] @@ -370,6 +371,7 @@ class TradingEnvironment(object): self.period_end = period_end self.capital_base = capital_base self.period_trading_days = None + self.max_drawdown = max_drawdown for bm in benchmark_returns: self.trading_days.append(bm.date)