Merge pull request #915 from quantopian/remove-perf-periods

MAINT: Remove perf_periods member.
This commit is contained in:
Eddie Hebert
2015-12-15 15:34:36 -05:00
2 changed files with 20 additions and 27 deletions
+5 -1
View File
@@ -256,7 +256,11 @@ def check_perf_tracker_serialization(perf_tracker):
for k in scalar_keys:
nt.assert_equal(getattr(test, k), getattr(perf_tracker, k), k)
for period in test.perf_periods:
perf_periods = (
test.cumulative_performance,
test.todays_performance
)
for period in perf_periods:
nt.assert_true(hasattr(period, '_position_tracker'))
+15 -26
View File
@@ -111,8 +111,6 @@ class PerformanceTracker(object):
self.position_tracker = PositionTracker(asset_finder=env.asset_finder)
self.perf_periods = []
if self.emission_rate == 'daily':
self.all_benchmark_returns = pd.Series(
index=self.trading_days)
@@ -145,7 +143,6 @@ class PerformanceTracker(object):
asset_finder=self.env.asset_finder,
)
self.cumulative_performance.position_tracker = self.position_tracker
self.perf_periods.append(self.cumulative_performance)
# this performance period will span just the current market day
self.todays_performance = PerformancePeriod(
@@ -161,8 +158,6 @@ class PerformanceTracker(object):
)
self.todays_performance.position_tracker = self.position_tracker
self.perf_periods.append(self.todays_performance)
self.saved_dt = self.period_start
# one indexed so that we reach 100%
self.day_count = 0.0
@@ -239,8 +234,8 @@ class PerformanceTracker(object):
def update_performance(self):
# calculate performance as of last trade
for perf_period in self.perf_periods:
perf_period.calculate_performance()
self.cumulative_performance.calculate_performance()
self.todays_performance.calculate_performance()
def get_portfolio(self, performance_needs_update):
if performance_needs_update:
@@ -292,8 +287,8 @@ class PerformanceTracker(object):
# updates last sale, and pays out a cash adjustment if applicable
cash_adjustment = self.position_tracker.update_last_sale(event)
if cash_adjustment != 0:
for perf_period in self.perf_periods:
perf_period.handle_cash_payment(cash_adjustment)
self.cumulative_performance.handle_cash_payment(cash_adjustment)
self.todays_performance.handle_cash_payment(cash_adjustment)
def process_trade(self, event):
self._handle_event_price(event)
@@ -302,8 +297,8 @@ class PerformanceTracker(object):
self._handle_event_price(event)
self.txn_count += 1
self.position_tracker.execute_transaction(event)
for perf_period in self.perf_periods:
perf_period.handle_execution(event)
self.cumulative_performance.handle_execution(event)
self.todays_performance.handle_execution(event)
def process_dividend(self, dividend):
@@ -312,18 +307,18 @@ class PerformanceTracker(object):
def process_split(self, event):
leftover_cash = self.position_tracker.handle_split(event)
if leftover_cash > 0:
for perf_period in self.perf_periods:
perf_period.handle_cash_payment(leftover_cash)
self.cumulative_performance.handle_cash_payment(leftover_cash)
self.todays_performance.handle_cash_payment(leftover_cash)
def process_order(self, event):
for perf_period in self.perf_periods:
perf_period.record_order(event)
self.cumulative_performance.record_order(event)
self.todays_performance.record_order(event)
def process_commission(self, event):
self.position_tracker.handle_commission(event)
for perf_period in self.perf_periods:
perf_period.handle_commission(event)
self.cumulative_performance.handle_commission(event)
self.todays_performance.handle_commission(event)
def process_benchmark(self, event):
if self.sim_params.data_frequency == 'minute' and \
@@ -394,9 +389,8 @@ class PerformanceTracker(object):
net_cash_payment = position_tracker.pay_dividends(dividends_payable)
for period in self.perf_periods:
# notify periods to update their stats
period.handle_dividends_paid(net_cash_payment)
self.cumulative_performance.handle_dividends_paid(net_cash_payment)
self.todays_performance.handle_dividends_paid(net_cash_payment)
def check_asset_auto_closes(self, next_trading_day):
"""
@@ -553,9 +547,6 @@ class PerformanceTracker(object):
state_dict['_dividend_count'] = self._dividend_count
# we already store perf periods as attributes
del state_dict['perf_periods']
STATE_VERSION = 4
state_dict[VERSION_LABEL] = STATE_VERSION
@@ -575,12 +566,10 @@ class PerformanceTracker(object):
self.dividend_frame = pickle.loads(state['dividend_frame'])
# properly setup the perf periods
self.perf_periods = []
p_types = ['cumulative', 'todays', 'minute']
p_types = ['cumulative', 'todays']
for p_type in p_types:
name = p_type + '_performance'
period = getattr(self, name, None)
if period is None:
continue
period._position_tracker = self.position_tracker
self.perf_periods.append(period)