From de0cfd4072a2890235d4383377079d0f8ca39346 Mon Sep 17 00:00:00 2001 From: fawce Date: Mon, 14 May 2012 15:31:51 -0400 Subject: [PATCH] fixed bugs in transform calculations. --- zipline/finance/movingaverage.py | 8 ++++---- zipline/finance/returns.py | 14 ++++++++------ zipline/finance/trading.py | 11 +++-------- zipline/finance/vwap.py | 2 +- 4 files changed, 16 insertions(+), 19 deletions(-) diff --git a/zipline/finance/movingaverage.py b/zipline/finance/movingaverage.py index db495d9d..329b631e 100644 --- a/zipline/finance/movingaverage.py +++ b/zipline/finance/movingaverage.py @@ -7,16 +7,16 @@ class MovingAverageTransform(BaseTransform): def init(self, daycount=3): self.daycount = daycount - self.by_sid = defaultdict(MovingAverage) + self.by_sid = defaultdict(self._create) def transform(self, event): - cur = self.by_sid(event.sid) + cur = self.by_sid[event.sid] cur.update(event) self.state['value'] = cur.average return self.state - def create_vwap(self): - return DailyVWAP(self.daycount) + def _create(self): + return MovingAverage(self.daycount) class MovingAverage(object): diff --git a/zipline/finance/returns.py b/zipline/finance/returns.py index 3c258bee..e8d3ce34 100644 --- a/zipline/finance/returns.py +++ b/zipline/finance/returns.py @@ -4,17 +4,19 @@ from collections import defaultdict from zipline.messaging import BaseTransform -class WindowTransform(BaseTransform): +class ReturnsTransform(BaseTransform): - def init(self, daycount=3): - self.daycount = daycount - self.by_sid = defaultdict(DailyReturns) + def init(self): + self.by_sid = defaultdict(self._create) def transform(self, event): - cur = self.by_sid(event.sid) + cur = self.by_sid[event.sid] cur.update(event) - self.state['value'] = cur.vwap + self.state['value'] = cur.returns return self.state + + def _create(self): + return ReturnsFromPriorClose() class ReturnsFromPriorClose(object): """ diff --git a/zipline/finance/trading.py b/zipline/finance/trading.py index 6e3d92a9..1910aff5 100644 --- a/zipline/finance/trading.py +++ b/zipline/finance/trading.py @@ -1,7 +1,6 @@ import datetime import pytz import math -import pandas import time from collections import Counter @@ -14,7 +13,7 @@ import zipline.util as qutil import zipline.protocol as zp import zipline.finance.performance as perf -from zipline.protocol_utils import Enum, namedict +from zipline.protocol_utils import Enum, ndict # the simulation style enumerates the available transaction simulation # strategies. @@ -43,10 +42,7 @@ class TradeSimulationClient(qmsg.Component): self.txn_sim = TransactionSimulator(sim_style) assert self.trading_environment.frame_index != None - self.event_frame = pandas.DataFrame( - index=self.trading_environment.frame_index - ) - + self.event_frame = ndict() self.perf = perf.PerformanceTracker(self.trading_environment) @property @@ -178,8 +174,7 @@ class TradeSimulationClient(qmsg.Component): def queue_event(self, event): if self.event_queue == None: self.event_queue = [] - series = event.as_series() - self.event_queue.append(series) + self.event_queue.append(event) def get_frame(self): for event in self.event_queue: diff --git a/zipline/finance/vwap.py b/zipline/finance/vwap.py index f409ce4d..9ef07299 100644 --- a/zipline/finance/vwap.py +++ b/zipline/finance/vwap.py @@ -12,7 +12,7 @@ class VWAPTransform(BaseTransform): self.by_sid = defaultdict(self.create_vwap) def transform(self, event): - cur = self.by_sid(event.sid) + cur = self.by_sid[event.sid] cur.update(event) self.state['value'] = cur.vwap return self.state