From acd0aeacf05eb2feb238abf2d253fe02de47254e Mon Sep 17 00:00:00 2001 From: Eddie Hebert Date: Wed, 16 Apr 2014 15:58:29 -0400 Subject: [PATCH] PERF: Reduce number of times the downside mask is created. Assign the downside mask, `rets < mar` to a value instead of calculating the downsides twice. --- zipline/finance/risk/risk.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/zipline/finance/risk/risk.py b/zipline/finance/risk/risk.py index f1199148..faeb1a28 100644 --- a/zipline/finance/risk/risk.py +++ b/zipline/finance/risk/risk.py @@ -107,7 +107,8 @@ def sharpe_ratio(algorithm_volatility, algorithm_return, treasury_return): def downside_risk(algorithm_returns, mean_returns, normalization_factor): rets = algorithm_returns.round(8) mar = mean_returns.round(8) - downside_diff = (rets[rets < mar] - mar[rets < mar]) + mask = rets < mar + downside_diff = rets[mask] - mar[mask] if len(downside_diff) <= 1: return 0.0 return np.std(downside_diff, ddof=1) * math.sqrt(normalization_factor)