Skip to content

Commit

Permalink
Merge 735d6f4 into 4c334c6
Browse files Browse the repository at this point in the history
  • Loading branch information
jbredeche committed Apr 21, 2017
2 parents 4c334c6 + 735d6f4 commit 2f3f2db
Show file tree
Hide file tree
Showing 19 changed files with 325 additions and 282 deletions.
36 changes: 13 additions & 23 deletions tests/finance/test_blotter.py
Expand Up @@ -151,10 +151,9 @@ def test_cancel(self):
self.assertEqual(list(blotter.open_orders), [self.asset_25])

def test_blotter_eod_cancellation(self):
blotter = Blotter('minute', self.asset_finder,
cancel_policy=EODCancel())
blotter = Blotter('minute', cancel_policy=EODCancel())

# Make two orders for the same sid, so we can test that we are not
# Make two orders for the same asset, so we can test that we are not
# mutating the orders list as we are cancelling orders
blotter.order(self.asset_24, 100, MarketOrder())
blotter.order(self.asset_24, -100, MarketOrder())
Expand All @@ -175,8 +174,7 @@ def test_blotter_eod_cancellation(self):
self.assertEqual(order.status, ORDER_STATUS.CANCELLED)

def test_blotter_never_cancel(self):
blotter = Blotter('minute', self.asset_finder,
cancel_policy=NeverCancel())
blotter = Blotter('minute', cancel_policy=NeverCancel())

blotter.order(self.asset_24, 100, MarketOrder())

Expand All @@ -190,8 +188,7 @@ def test_blotter_never_cancel(self):
self.assertEqual(blotter.new_orders[0].status, ORDER_STATUS.OPEN)

def test_order_rejection(self):
blotter = Blotter(self.sim_params.data_frequency,
self.asset_finder)
blotter = Blotter(self.sim_params.data_frequency)

# Reject a nonexistent order -> no order appears in new_order,
# no exceptions raised out
Expand Down Expand Up @@ -220,8 +217,7 @@ def test_order_rejection(self):

# Do it again, but reject it at a later time (after tradesimulation
# pulls it from new_orders)
blotter = Blotter(self.sim_params.data_frequency,
self.asset_finder)
blotter = Blotter(self.sim_params.data_frequency)
new_open_id = blotter.order(self.asset_24, 10, MarketOrder())
new_open_order = blotter.open_orders[self.asset_24][0]
self.assertEqual(new_open_id, new_open_order.id)
Expand All @@ -237,8 +233,7 @@ def test_order_rejection(self):

# You can't reject a filled order.
# Reset for paranoia
blotter = Blotter(self.sim_params.data_frequency,
self.asset_finder)
blotter = Blotter(self.sim_params.data_frequency)
blotter.slippage_models[Equity] = FixedSlippage()
filled_id = blotter.order(self.asset_24, 100, MarketOrder())
filled_order = None
Expand Down Expand Up @@ -303,8 +298,7 @@ def test_order_hold(self):
expected_status = ORDER_STATUS.OPEN if expected_open else \
ORDER_STATUS.FILLED

blotter = Blotter(self.sim_params.data_frequency,
self.asset_finder)
blotter = Blotter(self.sim_params.data_frequency)
open_id = blotter.order(self.asset_24, order_size, MarketOrder())
open_order = blotter.open_orders[self.asset_24][0]
self.assertEqual(open_id, open_order.id)
Expand All @@ -326,8 +320,7 @@ def test_order_hold(self):
self.assertEqual(filled_order.open_amount, expected_open)

def test_prune_orders(self):
blotter = Blotter(self.sim_params.data_frequency,
self.asset_finder)
blotter = Blotter(self.sim_params.data_frequency)

blotter.order(self.asset_24, 100, MarketOrder())
open_order = blotter.open_orders[self.asset_24][0]
Expand All @@ -343,7 +336,7 @@ def test_prune_orders(self):

other_order = Order(
dt=blotter.current_dt,
sid=self.asset_25,
asset=self.asset_25,
amount=1
)

Expand All @@ -354,10 +347,8 @@ def test_batch_order_matches_multiple_orders(self):
Ensure the effect of order_batch is the same as multiple calls to
order.
"""
blotter1 = Blotter(self.sim_params.data_frequency,
self.asset_finder)
blotter2 = Blotter(self.sim_params.data_frequency,
self.asset_finder)
blotter1 = Blotter(self.sim_params.data_frequency)
blotter2 = Blotter(self.sim_params.data_frequency)
for i in range(1, 4):
order_arg_lists = [
(self.asset_24, i * 100, MarketOrder()),
Expand Down Expand Up @@ -386,7 +377,6 @@ def test_batch_order_matches_multiple_orders(self):
def test_slippage_and_commission_dispatching(self):
blotter = Blotter(
self.sim_params.data_frequency,
self.asset_finder,
equity_slippage=FixedSlippage(spread=0.0),
future_slippage=FixedSlippage(spread=2.0),
equity_commission=PerTrade(cost=1.0),
Expand All @@ -406,7 +396,7 @@ def test_slippage_and_commission_dispatching(self):
equity_txn = txns[0]
self.assertEqual(
equity_txn.price,
bar_data.current(equity_txn.sid, 'price'),
bar_data.current(equity_txn.asset, 'price'),
)
self.assertEqual(commissions[0]['cost'], 1.0)

Expand All @@ -416,6 +406,6 @@ def test_slippage_and_commission_dispatching(self):
future_txn = txns[1]
self.assertEqual(
future_txn.price,
bar_data.current(future_txn.sid, 'price') + 1.0,
bar_data.current(future_txn.asset, 'price') + 1.0,
)
self.assertEqual(commissions[1]['cost'], 2.0)
8 changes: 4 additions & 4 deletions tests/finance/test_commissions.py
Expand Up @@ -21,16 +21,16 @@ def generate_order_and_txns(self):
asset1 = self.asset_finder.retrieve_asset(1)

# one order
order = Order(dt=None, sid=asset1, amount=500)
order = Order(dt=None, asset=asset1, amount=500)

# three fills
txn1 = Transaction(sid=asset1, amount=230, dt=None,
txn1 = Transaction(asset=asset1, amount=230, dt=None,
price=100, order_id=order.id)

txn2 = Transaction(sid=asset1, amount=170, dt=None,
txn2 = Transaction(asset=asset1, amount=170, dt=None,
price=101, order_id=order.id)

txn3 = Transaction(sid=asset1, amount=100, dt=None,
txn3 = Transaction(asset=asset1, amount=100, dt=None,
price=102, order_id=order.id)

return order, [txn1, txn2, txn3]
Expand Down

0 comments on commit 2f3f2db

Please sign in to comment.