def test_getRatio_calculate(self): quotes = [{ 'price': { 'bid_price': 100, 'ask_price': 50 } }, { 'price': { 'bid_price': 100, 'ask_price': 35 } }] for quote in quotes: self.assertEquals( getRatio(quote['price']['bid_price'], quote['price']['ask_price']), quote['price']['bid_price'] / quote['price']['ask_price']) quotes = [{ 'price': { 'bid_price': 100, 'ask_price': 0 } }, { 'price': { 'bid_price': 0, 'ask_price': 35 } }] expected = [ quotes[0]['price']['bid_price'], quotes[1]['price']['ask_price'] ] for quote, exp in zip(quotes, expected): self.assertEquals( getRatio(quote['price']['bid_price'], quote['price']['ask_price']), exp)
def test_getRatio_calculateRatio(self): quotes = [{ 'top_ask': { 'price': 119.2, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 120.48, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 121.68, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 117.87, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }] """ ------------ Add the assertion below ------------ """ for quote in quotes: self.assertEqual( getRatio(quote['top_bid']['price'], quote['top_ask']['price']), (quote['top_bid']['price'] / quote['top_ask']['price'])) self.assertEqual( getRatio(quote['top_ask']['price'], quote['top_bid']['price']), (quote['top_ask']['price'] / quote['top_bid']['price']))
def test_getRatio_priceBZero(self): + price_a = 119.2 + price_b = 0 + self.assertIsNone(getRatio(price_a, price_b)) + def test_getRatio_priceAZero(self): + price_a = 0 + price_b = 121.68 + self.assertEqual(getRatio(price_a, price_b), 0) + def test_getRatio_greaterThan1(self): + price_a = 346.48 + price_b = 166.39 + self.assertGreater(getRatio(price_a, price_b), 1) + + def test_getRatio_LessThan1(self): + price_a = 166.39 + price_b = 356.48 + self.assertLess(getRatio(price_a, price_b), 1) + + def test_getRatio_exactlyOne(self): + price_a = 356.48 + price_b = 356.48 + self.assertEqual(getRatio(price_a, price_b), 1) if __name__ == '__main__': unittest.main()
def test_getRatio_CalculateRatio(self): price_a = 150 price_b = 143 price_c = 124 price_d = 135 price_zero = 0 self.assertEqual(getRatio(price_a, price_b), 150 / 143) self.assertEqual(getRatio(price_c, price_d), 124 / 135) self.assertEqual(getRatio(price_b, price_zero), None)
def test_getRatio_calculateRatio(self): quotes = [ {'top_ask': {'price': 119.2, 'size': 36}, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': {'price': 120.48, 'size': 109}, 'id': '0.109974697771', 'stock': 'ABC'}, {'top_ask': {'price': 121.68, 'size': 4}, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': {'price': 117.87, 'size': 81}, 'id': '0.109974697771', 'stock': 'DEF'}, {'top_ask': {'price': 0, 'size': 36}, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': {'price': 0, 'size': 109}, 'id': '0.109974697771', 'stock': 'ABC'}, {'top_ask': {'price': 0, 'size': 4}, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': {'price': 0, 'size': 81}, 'id': '0.109974697771', 'stock': 'DEF'} ] self.assertEqual(getRatio((quotes[0]['top_ask']['price']+quotes[0]['top_bid']['price'])/2,(quotes[1]['top_ask']['price']+quotes[1]['top_bid']['price'])/2), (quotes[0]['top_ask']['price']+quotes[0]['top_bid']['price'])/(quotes[1]['top_ask']['price']+quotes[1]['top_bid']['price'])) self.assertEqual(getRatio((quotes[0]['top_ask']['price']+quotes[0]['top_bid']['price'])/2,(quotes[3]['top_ask']['price']+quotes[3]['top_bid']['price'])/2), None) self.assertEqual(getRatio((quotes[2]['top_ask']['price']+quotes[2]['top_bid']['price'])/2,(quotes[1]['top_ask']['price']+quotes[1]['top_bid']['price'])/2), 0)
def test_getDataPoint_priceZero(self): price_a=[121,0,232] price_b=[0,0,123] number_of_prices=len(price_a) for i in range(number_of_prices): if price_a[i]==0 and price_b[i]!=0: self.assertEqual(getRatio(price_a[i],price_b[i]), 0) elif price_b[i]==0: self.assertEqual(getRatio(price_a[i],price_b[i]), None) else: self.assertEqual(getRatio(price_a[i],price_b[i]), price_a[i]/price_b[i])
def test_getRatio_calculatorPriceBidGreatorThanAsk(self): quotes = [{ 'top_ask': { 'price': 119.2, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 120.48, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 121.68, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 117.87, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }] for quote in quotes: self.assertEqual( getRatio(quote), (quote['stock'], quote['top_bid']['price'], quote['top_ask']['price'], (quote['top_bid']['price'] + quote['top_ask']['price']) / 2))
def test_getRatio_priceAEqualsZero(self): quotes = [{ 'top_ask': { 'price': 0, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 0, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 121.68, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 122.87, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }] """ ------------ Add the assertion below ------------ """ prices = {} for quote in quotes: stock, bid_price, ask_price, price = getDataPoint(quote) prices[stock] = price self.assertEqual(getRatio(prices['ABC'], prices['DEF']), 0)
def test_getDataPoint_calculateRatio(self): quotes = [{ 'top_ask': { 'price': 120.2, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 156.48, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 121.68, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 98.87, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }] prices = {} for x in quotes: stock, bid_price, ask_price, price = getDataPoint(x) prices[stock] = price self.assertEqual(getRatio(prices['ABC'], prices['DEF']), (prices['ABC'] / prices['DEF']))
def test_getRatio(self): quotes= [ {'price_a' : 0, 'price_b': 120}, {'price_a': 120,'price_b' : 0} ] for quote in quotes: self.assertEqual(getRatio(quote['price_a'],quote['price_b'] ),(quote['price_a']/quote['price_b']))
def test_getRatio_calculateStockBZero(self): quotes = [{ 'top_ask': { 'price': 119.2, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 120.48, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 0, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 0, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }] # getRatio when price B is zero prices = {} for quote in quotes: price = getDataPoint(quote)[3] stock = getDataPoint(quote)[0] # Assign key value pair for ABC/DEF prices[stock] = price self.assertEqual(getRatio(prices["ABC"], prices["DEF"]), None)
def test_getRatio_price_b_isZero(self): quotes = [{ 'top_ask': { 'price': 119.2, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 120.48, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 0, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 0, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }] prices = {} for quote in quotes: prices[quote['stock']] = (quote['top_bid']['price'] + quote['top_ask']['price']) / 2 print(prices) self.assertEqual(getRatio(prices['ABC'], prices['DEF']), None)
def test_getRatio_calculateRatio_ratioEqualsOne(self): quotes = [{ 'top_ask': { 'price': 100.01, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 100.01, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 100.01, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 100.01, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }] price_a = (quotes[0]['top_ask']['price'] + quotes[0]['top_bid']['price']) / 2 price_b = (quotes[1]['top_ask']['price'] + quotes[1]['top_bid']['price']) / 2 self.assertEqual(getRatio(price_a, price_b), 1)
def test_getRatio_calculateRatio(self): quotes = [ {'top_ask': {'price': 119.2, 'size': 36}, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': {'price': 120.48, 'size': 109}, 'id': '0.109974697771', 'stock': 'ABC'}, {'top_ask': {'price': 121.68, 'size': 4}, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': {'price': 117.87, 'size': 81}, 'id': '0.109974697771', 'stock': 'DEF'} ] for quote in quotes: self.assertEqual(getRatio(quote['top_ask']['price'], quote['top_bid']['price']), quote['top_ask']['price'] / quote['top_bid']['price']) def test_getRatio_calculateRatio_priceB_0(self): #Test to verify when priceB(Denominator) is 0 quotes = [ {'top_ask': {'price': 119.2, 'size': 36}, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': {'price': 0, 'size': 109}, 'id': '0.109974697771', 'stock': 'ABC'}, {'top_ask': {'price': 121.68, 'size': 4}, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': {'price': 0, 'size': 81}, 'id': '0.109974697771', 'stock': 'DEF'} ] for quote in quotes: self.assertEqual(getRatio(quote['top_ask']['price'], quote['top_bid']['price']), None) def test_getRatio_greaterThanOne(self): price_a = 121.68 price_b = 119.2 self.assertGreater(getRatio(price_a, price_b), 1) def test_getRatio_LessThanOne(self): price_a = 119.2 price_b = 121.68 self.assertLess(getRatio(price_a, price_b), 1)
def test_getDataPoint_calculatePrice(self): quotes = [{ 'top_ask': { 'price': 121.2, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 120.48, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 121.68, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 117.87, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }] """ ------------ Add the assertion below ------------ """ # The following are the test cases for this self.assertEqual(getDataPoint(quotes[0]), ('ABC', 120.48, 121.2, 120.84)) # #quotes[0] is actually the quote that we need self.assertEqual(getDataPoint(quotes[1]), ('DEF', 117.87, 121.68, 119.775)) self.assertEqual(getRatio(1, 1), 1)
def test_getRatio_zeroDivision(self): price_a = [0, 1, 2, 99.9] price_b = [0, 0, 0, 0] # getRatio should return None for all divisions by zero expected = [None, None, None, None] for i in range(len(price_a)): self.assertIsNone(getRatio(price_a[i], price_b[i]))
def test_getRatio_returnNoneIfDenominatorIsZero(self): quotes = [{ 'top_ask': { 'price': 119.2, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 120.48, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 121.68, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 117.87, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }] for quote in quotes: self.assertEqual(getRatio(quote['top_bid']['price'], 0), None)
def test_getRatio(self): nums = [ { 'price_a': 45, 'price_b': 35 }, { 'price_a': 18, 'price_b': 69 }, { 'price_a': 0, 'price_b': 25 }, { 'price_a': 178, 'price_b': 0 }, { 'price_a': 0, 'price_b': 0 }, { 'price_a': 35, 'price_b': 35 }, { 'price_a': 99999995848, 'price_b': 6431684651 }, ] for num in nums: ans = None if num[ 'price_b'] == 0 else num['price_a'] / num['price_b'] self.assertEqual(getRatio(num['price_a'], num['price_b']), ans)
def test_getRatio_calculateRatio_ratioGreaterThanOne(self): quotes = [{ 'top_ask': { 'price': 200.42, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 300.12, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 121.68, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 117.87, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }] price_a = (quotes[0]['top_ask']['price'] + quotes[0]['top_bid']['price']) / 2 price_b = (quotes[1]['top_ask']['price'] + quotes[1]['top_bid']['price']) / 2 self.assertGreater(getRatio(price_a, price_b), 1)
def test_getRatio_calculateRatio_priceBEqualsZero(self): quotes = [{ 'top_ask': { 'price': 121.2, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 120.48, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 0, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 0, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }] price_a = (quotes[0]['top_ask']['price'] + quotes[0]['top_bid']['price']) / 2 price_b = (quotes[1]['top_ask']['price'] + quotes[1]['top_bid']['price']) / 2 self.assertIsNone(getRatio(price_a, price_b))
def test_getRatio_CalculateRatio_PriceB_Zero(self): quotes = [{ 'top_ask': { 'price': 121.2, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 0, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 121.68, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 0, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }] for quote in quotes: self.assertEqual( getRatio(quote['top_ask']['price'], quote['top_bid']['price']), None)
def test_getRatio(self): quotes = [{ 'top_ask': { 'price': 119.2, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 120.48, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 121.68, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 117.87, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }] """ ------------ Add the assertion below ------------ """ price_a = getDataPoint(quotes[0])[2] price_b = getDataPoint(quotes[1])[2] ratio = price_a / price_b self.assertEqual(getRatio(price_a, price_b), ratio)
def test_randomTesting_getRatio(self): for _ in range(1000): a = random.randint(1, 501) b = random.randint(1, 501) result = a / b self.assertEqual(getRatio(a, b), result)
def test_getRatio_calculateRatio(self): quotes = [{ 'top_ask': { 'price': 121.2, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 120.48, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 121.68, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 117.87, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }] stock_ABC_price = (quotes[0]['top_ask']['price'] + quotes[0]['top_bid']['price']) / 2 stock_DEF_price = (quotes[1]['top_ask']['price'] + quotes[1]['top_bid']['price']) / 2 self.assertEqual(getRatio(stock_ABC_price, stock_DEF_price), stock_ABC_price / stock_DEF_price)
def testGetRatioForTopAsk(self): quotes = [{ 'top_ask': { 'price': 119.2, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 120.48, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 121.68, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 117.87, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }] self.assertEqual( getRatio(quotes[0]['top_ask']['price'], quotes[1]['top_ask']['price']), (119.2 / 121.68))
def test_getRatio(self): price_a = [0, 1, 2, 5, 3, 1, 2] price_b = [3, 1, 2, 0, 6, 3, 1] correct = [0, 1, 1, None, 0.5, 0.3333333333333333, 2] for val in range(len(price_b)): result = getRatio(price_a[val], price_b[val]) self.assertEqual(result, correct[val])
def test_getRatio_calculatePriceBidGreaterThanAsk(self): quotes = [{ 'top_ask': { 'price': 119.2, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 120.48, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 121.68, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 117.87, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }] """ ------------ Add the assertion below ------------ """ prices = {} for q in quotes: stock, bid_price, ask_price, price = getDataPoint(q) prices[stock] = price self.assertEqual(getRatio(prices['ABC'], prices['DEF']), (prices['ABC'] / prices['DEF']))
def test_getRatio_zero_priceB(self): quotes = [{ 'top_ask': { 'price': 119.2, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 120.48, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 0, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 0, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }] pricedict = {} for quote in quotes: stock, bid_price, ask_price, price = getDataPoint(quote) pricedict[stock] = price self.assertEqual(getRatio(pricedict['ABC'], pricedict['DEF']), (None))
def test_getRatio_calculateRatioPriceBIsZero(self): quotes = [{ 'top_ask': { 'price': 121.2, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 120.48, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 121.68, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 117.87, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }] stock, bid_price, ask_price, price = getDataPoint(quotes[0]) price_a = price price_b = 0 self.assertEqual(getRatio(price_a, price_b), None)
def test_getRatio_divide(self): quotes = [{ 'top_ask': { 'price': 119.2, 'size': 36 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 120.48, 'size': 109 }, 'id': '0.109974697771', 'stock': 'ABC' }, { 'top_ask': { 'price': 121.68, 'size': 4 }, 'timestamp': '2019-02-11 22:06:30.572453', 'top_bid': { 'price': 117.87, 'size': 81 }, 'id': '0.109974697771', 'stock': 'DEF' }] for quote in quotes: self.assertAlmostEqual( getRatio(quote['top_ask']['price'], quote['top_bid']['price']), quote['top_ask']['price'] / quote['top_bid']['price'])