def test_leave_qty(self): order = Order( NewOrderRequest(cl_id='test', cl_ord_id=1, inst_id=1, action=OrdAction.BUY, type=OrdType.LIMIT, qty=1000, limit_price=18.5)) self.assertEqual(1000, order.leave_qty()) er1 = ExecutionReport(cl_id='test', cl_ord_id=1, ord_id=1, er_id=1, inst_id=1, last_qty=800, last_price=18.4, status=OrdStatus.PARTIALLY_FILLED) order.on_exec_report(er1) self.assertEqual(200, order.leave_qty()) er2 = ExecutionReport(cl_id='test', cl_ord_id=1, ord_id=1, er_id=2, inst_id=1, last_qty=200, last_price=18.4, status=OrdStatus.FILLED) order.on_exec_report(er2) self.assertEqual(0, order.leave_qty()) self.assertTrue(order.is_done()) self.assertEquals(OrdStatus.FILLED, order.status)
def test_exec_report_with_diff_ord_id(self): order = Order( ModelFactory.build_order_state_from_nos( ModelFactory.build_new_order_request(timestamp=0, cl_id='TestClient', cl_ord_id="1", portf_id="TestPortf", broker_id="TestBroker", inst_id="HSI@SEHK", action=Buy, type=Limit, qty=1000, limit_price=18.5))) er1 = ModelFactory.build_execution_report(timestamp=0, broker_id="TestBroker", broker_event_id="1", broker_ord_id="1", cl_id='TestClient', cl_ord_id="ERROR", inst_id="HSI@SEHK", last_qty=800, last_price=18.4, status=PartiallyFilled) with self.assertRaises(Exception) as ex: order.on_exec_report(er1)
def test_exec_report(self): order = Order( NewOrderRequest(cl_id='test', cl_ord_id=1, inst_id=1, action=OrdAction.BUY, type=OrdType.LIMIT, qty=1000, limit_price=18.5)) self.assertEqual(1000, order.leave_qty()) self.assertEqual(0, len(order.get_events(ExecutionReport))) er1 = ExecutionReport(cl_id='test', cl_ord_id=1, ord_id=1, er_id=1, inst_id=1, last_qty=800, last_price=18.4, status=OrdStatus.PARTIALLY_FILLED) order.on_exec_report(er1) self.assertEqual(1, len(order.get_events(ExecutionReport))) self.assertTrue(er1 in order.get_events(ExecutionReport)) self.assertEqual(er1.ord_id, order.broker_ord_id) self.assertEqual(800, order.last_qty) self.assertAlmostEqual(18.4, order.last_price) self.assertEqual(800, order.filled_qty) self.assertAlmostEqual(18.4, order.avg_price) self.assertEqual(OrdStatus.PARTIALLY_FILLED, order.status) er2 = ExecutionReport(cl_id='test', cl_ord_id=1, ord_id=1, er_id=2, inst_id=1, last_qty=200, last_price=18.4, status=OrdStatus.FILLED) order.on_exec_report(er2) self.assertEqual(2, len(order.get_events(ExecutionReport))) self.assertTrue(er1 in order.get_events(ExecutionReport)) self.assertTrue(er2 in order.get_events(ExecutionReport)) self.assertEqual(er2.ord_id, order.broker_ord_id) self.assertEqual(200, order.last_qty) self.assertAlmostEqual(18.4, order.last_price) self.assertEqual(1000, order.filled_qty) self.assertAlmostEqual(18.4, order.avg_price) self.assertEqual(OrdStatus.FILLED, order.status)
def test_exec_report(self): order = Order( ModelFactory.build_order_state_from_nos( ModelFactory.build_new_order_request(timestamp=0, cl_id='TestClient', cl_ord_id="1", portf_id="TestPortf", broker_id="TestBroker", inst_id="HSI@SEHK", action=Buy, type=Limit, qty=1000, limit_price=18.5))) self.assertEqual(1000, order.leave_qty()) self.assertEqual(0, len(order.get_events(ExecutionReport))) er1 = ModelFactory.build_execution_report(timestamp=0, broker_id="TestBroker", broker_event_id="1", broker_ord_id="1", cl_id='TestClient', cl_ord_id="1", inst_id="HSI@SEHK", last_qty=800, last_price=18.4, status=PartiallyFilled) order.on_exec_report(er1) self.assertEqual(1, len(order.get_events(ExecutionReport))) self.assertTrue(er1 in order.get_events(ExecutionReport)) self.assertEqual(er1.broker_ord_id, order.broker_ord_id()) self.assertEqual(800, order.last_qty()) self.assertAlmostEqual(18.4, order.last_price()) self.assertEqual(800, order.filled_qty()) self.assertAlmostEqual(18.4, order.avg_price()) self.assertEqual(PartiallyFilled, order.status()) er2 = ModelFactory.build_execution_report(timestamp=0, broker_id="TestBroker", broker_event_id="1", broker_ord_id="1", cl_id='TestClient', cl_ord_id="1", inst_id="HSI@SEHK", last_qty=200, last_price=18.4, status=Filled) order.on_exec_report(er2) self.assertEqual(2, len(order.get_events(ExecutionReport))) self.assertTrue(er1 in order.get_events(ExecutionReport)) self.assertTrue(er2 in order.get_events(ExecutionReport)) self.assertEqual(er2.broker_ord_id, order.broker_ord_id()) self.assertEqual(200, order.last_qty()) self.assertAlmostEqual(18.4, order.last_price()) self.assertEqual(1000, order.filled_qty()) self.assertAlmostEqual(18.4, order.avg_price()) self.assertEqual(Filled, order.status())
def test_exec_report_with_diff_ord_id(self): order = Order( NewOrderRequest(cl_id='test', cl_ord_id=1, inst_id=1, action=OrdAction.BUY, type=OrdType.LIMIT, qty=1000, limit_price=18.5)) er1 = ExecutionReport(cl_id='test', cl_ord_id=2, ord_id=2, er_id=1, inst_id=1, last_qty=800, last_price=18.4, status=OrdStatus.PARTIALLY_FILLED) with self.assertRaises(Exception) as ex: order.on_exec_report(er1)
def test_exec_report(self): order = Order( NewOrderRequest(cl_id='test', cl_ord_id=1, inst_id=1, action=OrdAction.BUY, type=OrdType.LIMIT, qty=1000, limit_price=18.5)) self.assertEqual(1000, order.leave_qty()) self.assertEqual(0, len(order.get_events(ExecutionReport))) er1 = ExecutionReport(cl_id='test', cl_ord_id=1, ord_id=1, er_id=1, inst_id=1, last_qty=800, last_price=18.4, status=OrdStatus.PARTIALLY_FILLED) order.on_exec_report(er1) self.assertEqual(1, len(order.get_events(ExecutionReport))) self.assertTrue(er1 in order.get_events(ExecutionReport)) self.assertEqual(er1.ord_id, order.broker_ord_id) self.assertEqual(800, order.last_qty) self.assertAlmostEqual(18.4, order.last_price) self.assertEqual(800, order.filled_qty) self.assertAlmostEqual(18.4, order.avg_price) self.assertEqual(OrdStatus.PARTIALLY_FILLED, order.status) er2 = ExecutionReport(cl_id='test', cl_ord_id=1, ord_id=1, er_id=2, inst_id=1, last_qty=200, last_price=18.4, status=OrdStatus.FILLED) order.on_exec_report(er2) self.assertEqual(2, len(order.get_events(ExecutionReport))) self.assertTrue(er1 in order.get_events(ExecutionReport)) self.assertTrue(er2 in order.get_events(ExecutionReport)) self.assertEqual(er2.ord_id, order.broker_ord_id) self.assertEqual(200, order.last_qty) self.assertAlmostEqual(18.4, order.last_price) self.assertEqual(1000, order.filled_qty) self.assertAlmostEqual(18.4, order.avg_price) self.assertEqual(OrdStatus.FILLED, order.status)
def test_leave_qty(self): order = Order( NewOrderRequest(cl_id='test', cl_ord_id=1, inst_id=1, action=OrdAction.BUY, type=OrdType.LIMIT, qty=1000, limit_price=18.5)) self.assertEqual(1000, order.leave_qty()) er1 = ExecutionReport(cl_id='test', cl_ord_id=1, ord_id=1, er_id=1, inst_id=1, last_qty=800, last_price=18.4, status=OrdStatus.PARTIALLY_FILLED) order.on_exec_report(er1) self.assertEqual(200, order.leave_qty()) er2 = ExecutionReport(cl_id='test', cl_ord_id=1, ord_id=1, er_id=2, inst_id=1, last_qty=200, last_price=18.4, status=OrdStatus.FILLED) order.on_exec_report(er2) self.assertEqual(0, order.leave_qty()) self.assertTrue(order.is_done()) self.assertEquals(OrdStatus.FILLED, order.status)
def test_leave_qty(self): order = Order( ModelFactory.build_order_state_from_nos( ModelFactory.build_new_order_request(timestamp=0, cl_id='TestClient', cl_ord_id="1", portf_id="TestPortf", broker_id="TestBroker", inst_id="HSI@SEHK", action=Buy, type=Limit, qty=1000, limit_price=18.5))) self.assertEqual(1000, order.leave_qty()) er1 = ModelFactory.build_execution_report(timestamp=0, broker_id="TestBroker", broker_event_id="1", broker_ord_id="1", cl_id='TestClient', cl_ord_id="1", inst_id="HSI@SEHK", last_qty=800, last_price=18.4, status=PartiallyFilled) order.on_exec_report(er1) self.assertEqual(200, order.leave_qty()) er2 = ModelFactory.build_execution_report(timestamp=0, broker_id="TestBroker", broker_event_id="2", broker_ord_id="1", cl_id='TestClient', cl_ord_id="1", inst_id="HSI@SEHK", last_qty=200, last_price=18.4, status=Filled) order.on_exec_report(er2) self.assertEqual(0, order.leave_qty()) self.assertTrue(order.is_done()) self.assertEquals(Filled, order.status())
def test_exec_report_with_diff_ord_id(self): order = Order( NewOrderRequest(cl_id='test', cl_ord_id=1, inst_id=1, action=OrdAction.BUY, type=OrdType.LIMIT, qty=1000, limit_price=18.5)) er1 = ExecutionReport(cl_id='test', cl_ord_id=2, ord_id=2, er_id=1, inst_id=1, last_qty=800, last_price=18.4, status=OrdStatus.PARTIALLY_FILLED) with self.assertRaises(Exception) as ex: order.on_exec_report(er1)
def test_exec_report_with_exceed_qty(self): order = Order( ModelFactory.build_order_state_from_nos( ModelFactory.build_new_order_request(timestamp=0, cl_id='TestClient', cl_ord_id="1", portf_id="TestPortf", broker_id="TestBroker", inst_id="HSI@SEHK", action=Buy, type=Limit, qty=1000, limit_price=18.5))) self.assertEqual(1000, order.leave_qty()) self.assertEqual(0, len(order.get_events(ExecutionReport))) er1 = ModelFactory.build_execution_report(timestamp=0, broker_id="TestBroker", broker_event_id="1", broker_ord_id="1", cl_id='TestClient', cl_ord_id="1", inst_id="HSI@SEHK", last_qty=800, last_price=18.4, status=PartiallyFilled) order.on_exec_report(er1) er2 = ModelFactory.build_execution_report(timestamp=0, broker_id="TestBroker", broker_event_id="2", broker_ord_id="1", cl_id='TestClient', cl_ord_id="1", inst_id="HSI@SEHK", last_qty=200, last_price=18.4, status=Filled) order.on_exec_report(er2) er3 = ModelFactory.build_execution_report(timestamp=0, broker_id="TestBroker", broker_event_id="3", broker_ord_id="1", cl_id='TestClient', cl_ord_id="1", inst_id="HSI@SEHK", last_qty=100, last_price=18.4, status=Filled) with self.assertRaises(Exception) as ex: order.on_exec_report(er3)
def test_fill_qty(self): position = Position(1) self.assertEquals(0, position.filled_qty()) order1 = Order( NewOrderRequest(cl_id='test', cl_ord_id=1, inst_id=1, action=OrdAction.BUY, type=OrdType.LIMIT, qty=1000, limit_price=18.5)) position.add_order(order1) self.assertEquals(0, position.filled_qty()) er1 = ExecutionReport(cl_id='test', cl_ord_id=1, ord_id=1, er_id=1, inst_id=1, last_qty=500, last_price=18.4, status=OrdStatus.PARTIALLY_FILLED) order1.on_exec_report(er1) position.add_position(er1.cl_id, er1.cl_ord_id, er1.last_qty) self.assertEquals(500, position.filled_qty()) er2 = ExecutionReport(cl_id='test', cl_ord_id=1, ord_id=1, er_id=2, inst_id=1, last_qty=500, last_price=18.4, status=OrdStatus.FILLED) order1.on_exec_report(er2) position.add_position(er2.cl_id, er2.cl_ord_id, er2.last_qty) self.assertEquals(1000, position.filled_qty()) order2 = Order( NewOrderRequest(cl_id='test', cl_ord_id=2, inst_id=1, action=OrdAction.SELL, type=OrdType.LIMIT, qty=1200, limit_price=18.5)) position.add_order(order2) self.assertEquals(1000, position.filled_qty()) er3 = ExecutionReport(cl_id='test', cl_ord_id=2, ord_id=2, er_id=3, inst_id=1, last_qty=800, last_price=18.4, status=OrdStatus.PARTIALLY_FILLED) order2.on_exec_report(er3) position.add_position(er3.cl_id, er3.cl_ord_id, er3.last_qty * -1) self.assertEquals(200, position.filled_qty()) er4 = ExecutionReport(cl_id='test', cl_ord_id=2, ord_id=2, er_id=4, inst_id=1, last_qty=400, last_price=18.4, status=OrdStatus.FILLED) order2.on_exec_report(er4) position.add_position(er4.cl_id, er4.cl_ord_id, er4.last_qty * -1) self.assertEquals(-200, position.filled_qty())
def test_fill_qty(self): position = Position(1) self.assertEquals(0, position.filled_qty()) order1 = Order( NewOrderRequest(cl_id='test', cl_ord_id=1, inst_id=1, action=OrdAction.BUY, type=OrdType.LIMIT, qty=1000, limit_price=18.5)) position.add_order(order1) self.assertEquals(0, position.filled_qty()) er1 = ExecutionReport(cl_id='test', cl_ord_id=1, ord_id=1, er_id=1, inst_id=1, last_qty=500, last_price=18.4, status=OrdStatus.PARTIALLY_FILLED) order1.on_exec_report(er1) position.add_position(er1.cl_id, er1.cl_ord_id, er1.last_qty) self.assertEquals(500, position.filled_qty()) er2 = ExecutionReport(cl_id='test', cl_ord_id=1, ord_id=1, er_id=2, inst_id=1, last_qty=500, last_price=18.4, status=OrdStatus.FILLED) order1.on_exec_report(er2) position.add_position(er2.cl_id, er2.cl_ord_id, er2.last_qty) self.assertEquals(1000, position.filled_qty()) order2 = Order( NewOrderRequest(cl_id='test', cl_ord_id=2, inst_id=1, action=OrdAction.SELL, type=OrdType.LIMIT, qty=1200, limit_price=18.5)) position.add_order(order2) self.assertEquals(1000, position.filled_qty()) er3 = ExecutionReport(cl_id='test', cl_ord_id=2, ord_id=2, er_id=3, inst_id=1, last_qty=800, last_price=18.4, status=OrdStatus.PARTIALLY_FILLED) order2.on_exec_report(er3) position.add_position(er3.cl_id, er3.cl_ord_id, er3.last_qty * -1) self.assertEquals(200, position.filled_qty()) er4 = ExecutionReport(cl_id='test', cl_ord_id=2, ord_id=2, er_id=4, inst_id=1, last_qty=400, last_price=18.4, status=OrdStatus.FILLED) order2.on_exec_report(er4) position.add_position(er4.cl_id, er4.cl_ord_id, er4.last_qty * -1) self.assertEquals(-200, position.filled_qty())