Skip to content

Commit

Permalink
Revert "BUG: Capital change deltas rely on cash, not portfolio_value" (
Browse files Browse the repository at this point in the history
…#1470)

This reverts commit 5b1aa5e.

The paradigm is: we're calculating a new capital base for the
performance period. We are therefore using the total
portfolio_value, not just the cash, to calculate the
difference from the specified target as the algorithm
has meaningful holdings.
  • Loading branch information
John Ricklefs committed Sep 5, 2016
1 parent 9a301dc commit c09f7ab
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 11 deletions.
19 changes: 9 additions & 10 deletions tests/test_algorithm.py
Original file line number Diff line number Diff line change
Expand Up @@ -2167,7 +2167,7 @@ def make_equity_daily_bar_data(cls):
)

@parameterized.expand([
('target', 127000.0), ('delta', 50000.0)
('target', 153000.0), ('delta', 50000.0)
])
def test_capital_changes_daily_mode(self, change_type, value):
sim_params = factory.create_simulation_parameters(
Expand Down Expand Up @@ -2215,9 +2215,8 @@ def order_stuff(context, data):
capital_change_packets[0],
{'date': pd.Timestamp('2006-01-06', tz='UTC'),
'type': 'cash',
'target': value if change_type == 'target' else None,
'delta': 50000.0
})
'target': 153000.0 if change_type == 'target' else None,
'delta': 50000.0})

# 1/03: price = 10, place orders
# 1/04: orders execute at price = 11, place orders
Expand Down Expand Up @@ -2321,10 +2320,10 @@ def order_stuff(context, data):
)

@parameterized.expand([
('interday_target', [('2006-01-04', 1899.0)]),
('interday_target', [('2006-01-04', 2388.0)]),
('interday_delta', [('2006-01-04', 1000.0)]),
('intraday_target', [('2006-01-04 17:00', 908.0),
('2006-01-04 18:00', 1408.0)]),
('intraday_target', [('2006-01-04 17:00', 2186.0),
('2006-01-04 18:00', 2806.0)]),
('intraday_delta', [('2006-01-04 17:00', 500.0),
('2006-01-04 18:00', 500.0)]),
])
Expand Down Expand Up @@ -2487,10 +2486,10 @@ def order_stuff(context, data):
)

@parameterized.expand([
('interday_target', [('2006-01-04', 1899.0)]),
('interday_target', [('2006-01-04', 2388.0)]),
('interday_delta', [('2006-01-04', 1000.0)]),
('intraday_target', [('2006-01-04 17:00', 908.0),
('2006-01-04 18:00', 1408.0)]),
('intraday_target', [('2006-01-04 17:00', 2186.0),
('2006-01-04 18:00', 2806.0)]),
('intraday_delta', [('2006-01-04 17:00', 500.0),
('2006-01-04 18:00', 500.0)]),
])
Expand Down
3 changes: 2 additions & 1 deletion zipline/algorithm.py
Original file line number Diff line number Diff line change
Expand Up @@ -862,7 +862,8 @@ def calculate_capital_changes(self, dt, emission_rate, is_interday,
if capital_change['type'] == 'target':
target = capital_change['value']
capital_change_amount = target - \
(self.updated_portfolio().cash - portfolio_value_adjustment)
(self.updated_portfolio().portfolio_value -
portfolio_value_adjustment)
self.portfolio_needs_update = True

log.info('Processing capital change to target %s at %s. Capital '
Expand Down

0 comments on commit c09f7ab

Please sign in to comment.