Example #1
0
    def map_quote(quote: dict) -> dict:
        instrument_id = parse_instrument_url(quote["instrument"])

        plucked = {
            "instrument_id": instrument_id,
            **pluck(DESIRED_QUOTE_KEYS, quote)
        }
        plucked["updated_at"] = parse_updated_at(plucked["updated_at"])
        return plucked
Example #2
0
    def update_index_symbol(datum: dict) -> pymongo.operations.UpdateOne:
        data = {
            "timestamp": timestamp,
            "has_traded": datum.get("has_traded"),
            "updated_at": parse_updated_at(datum.get("updated_at")),
            "trading_halted": datum.get("trading_halted"),
        }
        instrument_id = parse_instrument_url(datum["instrument"])

        return pymongo.operations.UpdateOne({"instrument_id": instrument_id},
                                            {"$set": data})
Example #3
0
def store_fundamentals(data, collection: pymongo.collection.Collection):
    if not data:
        return

    for datum in data:
        if not datum:
            continue

        print(datum)
        instrument_id = parse_instrument_url(datum["instrument"])
        doc = {**omit("instrument", datum), "instrument_id": instrument_id}

        try:
            collection.replace_one({"instrument_id": instrument_id}, doc, True)
        except Exception as e:
            print(f"Error storing fundamentals: {e}")
Example #4
0
    def reduce_popularity(acc: dict, datum: dict) -> dict:
        instrument_id = parse_instrument_url(datum["instrument"])

        return {**acc, instrument_id: datum["num_open_positions"]}