Starter repo for task 1 of the JPMC software engineering program import json import random import urllib.request
QUERY = "http://localhost:8080/query?id={}"
N = 500
def getDataPoint(quote): """Produce all the needed values to generate a datapoint""" stock = quote['stock'] bid_price = float(quote['top_bid']['price']) ask_price = float(quote['top_ask']['price']) price = (bid_price + ask_price) / 2 return stock, bid_price, ask_price, price
def getRatio(price_a, price_b): """Get ratio of price_a and price_b""" if price_b == 0: # when price_b is 0, avoid throwing ZeroDivisionError return None return price_a / price_b
if name == "main": # Query the price once every N seconds. for _ in iter(range(N)): quotes = json.loads(urllib.request.urlopen(QUERY.format(random.random())).read())
# Extract data points and calculate ratio
prices = {}
for quote in quotes:
stock, bid_price, ask_price, price = getDataPoint(quote)
prices[stock] = price
print("Quoted %s at (bid:%s, ask:%s, price:%s)" % (stock, bid_price, ask_price, price))
# Check if both stocks are in the prices dictionary
if "ABC" in prices and "DEF" in prices:
ratio = getRatio(prices["ABC"], prices["DEF"])
if ratio is not None:
print("Ratio %s" % ratio)
# Add your trading strategy based on the ratio here