def test_jnk(self): pos = AverageCostProfitAndLoss() pos.add_fill(203, 38.7556) self.assertAlmostEqual(pos.realized_pnl, 0.) self.assertAlmostEqual(pos.get_unrealized_pnl(38.7556), 0.) pos.add_fill(-203, 38.7654) self.assertAlmostEqual(pos.realized_pnl, 1.989400) self.assertAlmostEqual(pos.get_unrealized_pnl(38.7654), 0.) pos.add_fill(-203, 38.7950) self.assertAlmostEqual(pos.realized_pnl, 0.) self.assertAlmostEqual(pos.get_unrealized_pnl(38.7950), 0.) pos.add_fill(203, 38.8443) self.assertAlmostEqual(pos.realized_pnl, 203. * (38.7950 - 38.8443)) self.assertAlmostEqual(pos.get_unrealized_pnl(38.8443), 0.)
def test_jnk(self): pos = AverageCostProfitAndLoss() pos.add_fill(203, 38.7556) self.assertAlmostEqual(pos.realized_pnl, 0.) self.assertAlmostEqual(pos.get_unrealized_pnl(38.7556), 0.) pos.add_fill(-203, 38.7654) self.assertAlmostEqual(pos.realized_pnl, 1.989400) self.assertAlmostEqual(pos.get_unrealized_pnl(38.7654), 0.) pos.add_fill(-203, 38.7950) self.assertAlmostEqual(pos.realized_pnl, 0.) self.assertAlmostEqual(pos.get_unrealized_pnl(38.7950), 0.) pos.add_fill(203, 38.8443) self.assertAlmostEqual(pos.realized_pnl, 203. * (38.7950 - 38.8443)) self.assertAlmostEqual(pos.get_unrealized_pnl(38.8443), 0.)
def test_stack(self): pos = AverageCostProfitAndLoss() pos.add_fill(1, 80.0) pos.add_fill(-3, 102.0) pos.add_fill(-2, 98.0) pos.add_fill(3, 90.0) pos.add_fill(-2, 100.0) self.assertEqual(-3, pos.quantity) self.assertAlmostEqual(-300., pos.cost) self.assertAlmostEqual(52., pos.realized_pnl) self.assertAlmostEqual(-3., pos.get_unrealized_pnl(101.)) self.assertAlmostEqual(49., pos.get_total_pnl(101.))
def test_stack(self): pos = AverageCostProfitAndLoss() pos.add_fill(1, 80.0) pos.add_fill(-3, 102.0) pos.add_fill(-2, 98.0) pos.add_fill(3, 90.0) pos.add_fill(-2, 100.0) self.assertEqual(-3, pos.quantity) self.assertAlmostEqual(-300., pos.cost) self.assertAlmostEqual(52., pos.realized_pnl) self.assertAlmostEqual(-3., pos.get_unrealized_pnl(101.)) self.assertAlmostEqual(49., pos.get_total_pnl(101.))