def process_order(order): split_order = order.replace("/", " ").split(" ") product = which_substring(order, p.products_list) product_index = split_order.index(product) product_description = split_order[0:product_index] order_description = split_order[product_index+1:] months = [m for m in product_description if m in p.months] strikes = [float(k) for k in product_description if isfloat(k)] direction = get_direction(" ".join(order_description)) prices, quantities = get_prices_and_quantities(order_description, direction) order_object = Order(prices, quantities, direction, product, months, strikes) if not (prices and quantities and direction and product and months and strikes): print("Bad order - try again") return False else: return order_object.to_string()
def get_prices_and_quantities(order_desc, direction): first_number_index = [1 if isfloat(e) else 0 for e in order_desc].index(1) info = order_desc[first_number_index:] if direction == "bid": prices = [float(info[0])] quantities = [int(info[3])] elif direction == "offer": prices = [float(info[2])] quantities = [int(info[0])] elif direction == "market": prices = [float(info[0]), float(info[2])] quantities = [int(info[3])] if "up" not in info: quantities.append(int(info[5])) else: return False, False return prices, quantities
def risk_reversal(order): split_order = order.split(" ") months_order = [m for m in split_order if m in p.months] strikes = [float(k) for k in split_order if isfloat(k)]