From eb42d4bfbd474dc8a07913fde3f6411b2b00841d Mon Sep 17 00:00:00 2001 From: Eddie Hebert Date: Thu, 4 Apr 2013 17:11:16 -0400 Subject: [PATCH] BUG: Fix tradesimulation index into perf results when emitting minutely. The indexing into performance results during the simulation loop fails when emitting minutely since 'daily_perf' only exists on daily performance results, not the minutely results. Fix by making the key used to index into performance results depend on the emission rate. --- zipline/gens/tradesimulation.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/zipline/gens/tradesimulation.py b/zipline/gens/tradesimulation.py index 00dd0a6c..cd4b1491 100644 --- a/zipline/gens/tradesimulation.py +++ b/zipline/gens/tradesimulation.py @@ -137,6 +137,11 @@ class TradeSimulationClient(object): class AlgorithmSimulator(object): + EMISSION_TO_PERF_KEY_MAP = { + 'minute': 'intraday_perf', + 'daily': 'daily_perf' + } + def __init__(self, order_book, perf_tracker, @@ -152,6 +157,9 @@ class AlgorithmSimulator(object): self.order_book = order_book self.perf_tracker = perf_tracker + self.perf_key = self.EMISSION_TO_PERF_KEY_MAP[ + perf_tracker.emission_rate] + self.algo = algo self.algo_start = algo_start.replace(hour=0, minute=0, second=0, @@ -263,7 +271,7 @@ class AlgorithmSimulator(object): for perf_message in event.perf_messages: # append current values of recorded vars # to emitted message - perf_message['daily_perf']['recorded_vars'] =\ + perf_message[self.perf_key]['recorded_vars'] =\ self.algo.recorded_vars yield perf_message del event['perf_messages'] @@ -278,7 +286,7 @@ class AlgorithmSimulator(object): self.perf_tracker.handle_simulation_end() for message in perf_messages: - message['daily_perf']['recorded_vars'] =\ + message[self.perf_key]['recorded_vars'] =\ self.algo.recorded_vars yield message