def test_08_all_share_index(self): exchange = sssm.Exchange() exchange.trades = [ sssm.Trade(stock=MMock(symbol='TEA'), quantity=16, action=sssm.TradeType.buy, price=100), sssm.Trade(stock=MMock(symbol='POP'), quantity=32, action=sssm.TradeType.buy, price=50), sssm.Trade(stock=MMock(symbol='POP'), quantity=64, action=sssm.TradeType.buy, price=100) ] self.assertAlmostEqual(91.2870929, exchange.all_share_index(duration=FIVE_MINUTES))
def test_05_volume_weighted_price_by_stock(self): exchange = sssm.Exchange() stock = MMock(symbol='TEST') exchange.trades = [ sssm.Trade(stock=stock, quantity=16, action=sssm.TradeType.buy, price=100), sssm.Trade(stock=stock, quantity=32, action=sssm.TradeType.buy, price=50) ] self.assertAlmostEqual(66.666666666, exchange.price_by_stock('TEST', duration=5*60))
def test_04_record_multiple_trades(self): exchange = sssm.Exchange() trades = [MMock(), MMock(), MMock(), MMock(), MMock()] for trade in trades: exchange.record_trade(trade) # Test that trades are recorded self.assertEqual(5, len(exchange.trades)) # Test append order preserved self.assertEqual(trades[4], exchange.trades[-1]) self.assertEqual(trades[0], exchange.trades[0])
def test_07_volume_weighted_price_by_stock_duration(self): exchange = sssm.Exchange() stock = MMock(symbol='TEST') exchange.trades = [ sssm.Trade(stock=stock, quantity=16, action=sssm.TradeType.buy, price=100), sssm.Trade(stock=stock, quantity=32, action=sssm.TradeType.buy, price=50), sssm.Trade(stock=stock, quantity=64, action=sssm.TradeType.buy, price=100) ] # Move trade out of specified time interval exchange.trades[0].timestamp = (datetime.utcnow() - timedelta(seconds=FIVE_MINUTES+10)) self.assertAlmostEqual(83.3333333, exchange.price_by_stock('TEST', duration=FIVE_MINUTES))
def test_02_record_trade(self): exchange = sssm.Exchange() trade = MMock() exchange.record_trade(trade) # Test that the last trade is appended to the end of list type class self.assertEqual(trade, exchange.trades[-1])
def test_01_create_exchange(self): exchange = sssm.Exchange() # Test that the Exchange is initialised empty self.assertEqual(0, len(exchange.trades))
def test_09_all_share_index_none(self): exchange = sssm.Exchange() # No trades added so the share index is None/NULL rather than Zero/0 self.assertIsNone(exchange.all_share_index(duration=FIVE_MINUTES))
def test_06_none_volume_weighted_price_by_stock(self): exchange = sssm.Exchange() self.assertIsNone(exchange.price_by_stock('TEST', duration=5*60))