From 9b73373978fdc6ae7f567e472b497c9d47eed852 Mon Sep 17 00:00:00 2001 From: Eddie Hebert Date: Tue, 23 Jul 2013 13:17:10 -0400 Subject: [PATCH] BUG: Revert returns cov to use ddof of 1. Fix the spreadsheet to apply a factor of COUNT / COUNT - 1 to the COVAR value. Also, go back to using the C[1][1] index instead of calculating var independently. --- tests/risk/risk-answer-key-checksums | 1 + zipline/finance/risk.py | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/tests/risk/risk-answer-key-checksums b/tests/risk/risk-answer-key-checksums index 8c0f9c51..f2c17fc8 100644 --- a/tests/risk/risk-answer-key-checksums +++ b/tests/risk/risk-answer-key-checksums @@ -1,3 +1,4 @@ 3ac0773c4be4e9e5bacd9c6fa0e03e15 3a5fae958c8bac684f1773fa8dff7810 19d580890e211a122e9e746f07c80cbc +70cfe3677a0ff401c801b8628e125d8f diff --git a/zipline/finance/risk.py b/zipline/finance/risk.py index f2ea6edd..0dfec3e1 100644 --- a/zipline/finance/risk.py +++ b/zipline/finance/risk.py @@ -482,11 +482,11 @@ class RiskMetricsBase(object): returns_matrix = np.vstack([self.algorithm_returns, self.benchmark_returns]) - C = np.cov(returns_matrix, ddof=0) + C = np.cov(returns_matrix, ddof=1) eigen_values = la.eigvals(C) condition_number = max(eigen_values) / min(eigen_values) algorithm_covariance = C[0][1] - benchmark_variance = np.var(self.benchmark_returns, ddof=1) + benchmark_variance = C[1][1] beta = algorithm_covariance / benchmark_variance return (