From dd61ed4e25570e853092916f58967a2ad1a461b9 Mon Sep 17 00:00:00 2001 From: Eddie Hebert Date: Thu, 20 Feb 2014 17:29:25 -0500 Subject: [PATCH] BUG: Check required fields for stdev transform. Move the assert method to the EventWindow subclass, to be consistent with other transforms; also, add the check to `handle_add`. --- zipline/transforms/stddev.py | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/zipline/transforms/stddev.py b/zipline/transforms/stddev.py index ce1a2f48..d4d1608c 100644 --- a/zipline/transforms/stddev.py +++ b/zipline/transforms/stddev.py @@ -73,16 +73,6 @@ class MovingStandardDev(with_metaclass(TransformMeta)): window.update(event) return window.get_stddev() - def assert_required_fields(self, event): - """ - We only allow events with a price field to be run through - the returns transform. - """ - if 'price' not in event: - raise WrongDataForTransform( - transform="StdDevEventWindow", - fields='price') - class MovingStandardDevWindow(EventWindow): """ @@ -100,6 +90,7 @@ class MovingStandardDevWindow(EventWindow): self.sum_sqr = 0.0 def handle_add(self, event): + self.assert_required_fields(event) self.sum += event.price self.sum_sqr += event.price ** 2 @@ -122,3 +113,13 @@ class MovingStandardDevWindow(EventWindow): return 0.0 stddev = sqrt(s_squared) return stddev + + def assert_required_fields(self, event): + """ + We only allow events with a price field to be run through + the returns transform. + """ + if 'price' not in event: + raise WrongDataForTransform( + transform="StdDevEventWindow", + fields='price')