def test_l3_feed():
    book = L3OrderBook(
        instrument_id=TestStubs.audusd_id(),
        price_precision=5,
        size_precision=0,
    )
    # Updates that cause the book to fail integrity checks will be deleted
    # immediately, but we may get also delete later.
    skip_deletes = []
    i = 0
    for i, m in enumerate(TestDataProvider.l3_feed()):  # noqa (B007)
        if m["op"] == "update":
            book.update(order=m["order"])
            try:
                book.check_integrity()
            except AssertionError:
                book.delete(order=m["order"])
                skip_deletes.append(m["order"].id)
        elif m["op"] == "delete" and m["order"].id not in skip_deletes:
            book.delete(order=m["order"])
        book.check_integrity()
    assert i == 100_047
    assert book.best_ask_level().price == 61405.27923706
    assert book.best_ask_level().volume() == 0.12227
    assert book.best_bid_level().price == Price.from_int(61391)
    assert book.best_bid_level().volume() == 1
Ejemplo n.º 2
0
def sample_book():
    ob = L3OrderBook(TestStubs.audusd_id())
    orders = [
        Order(price=0.900, volume=20, side=OrderSide.SELL),
        Order(price=0.887, volume=10, side=OrderSide.SELL),
        Order(price=0.886, volume=5, side=OrderSide.SELL),
        Order(price=0.830, volume=4, side=OrderSide.BUY),
        Order(price=0.820, volume=1, side=OrderSide.BUY),
    ]
    for order in orders:
        ob.add(order)
    return ob
def test_orderbook_updates(benchmark):
    # We only care about the actual updates here, so instantiate orderbook and
    # load updates outside of benchmark
    ob = L3OrderBook(TestStubs.audusd_id())
    feed = TestDataProvider.l3_feed()
    assert len(feed) == 100048  # 100k updates

    # benchmark something
    ob = benchmark(run_l3_test, ob=ob, feed=feed)

    # Assertions from integration test
    assert ob.best_ask_level().price() == 61405.27923706
    assert ob.best_ask_level().volume() == 0.12227
    assert ob.best_bid_level().price() == 61391
    assert ob.best_bid_level().volume() == 1
Ejemplo n.º 4
0
def sample_book():
    ob = L3OrderBook(
        instrument_id=TestStubs.audusd_id(),
        price_precision=5,
        size_precision=0,
    )
    orders = [
        Order(price=0.90000, size=20.0, side=OrderSide.SELL),
        Order(price=0.88700, size=10.0, side=OrderSide.SELL),
        Order(price=0.88600, size=5.0, side=OrderSide.SELL),
        Order(price=0.83000, size=4.0, side=OrderSide.BUY),
        Order(price=0.82000, size=1.0, side=OrderSide.BUY),
    ]
    for order in orders:
        ob.add(order)
    return ob
Ejemplo n.º 5
0
def test_orderbook_updates(benchmark):
    # We only care about the actual updates here, so instantiate orderbook and
    # load updates outside of benchmark
    book = L3OrderBook(
        instrument_id=TestStubs.audusd_id(),
        price_precision=5,
        size_precision=0,
    )
    feed = TestStubs.l3_feed()
    assert len(feed) == 100048  # 100k updates

    # benchmark something
    # book = benchmark(run_l3_test, book=book, feed=feed)
    benchmark.pedantic(run_l3_test,
                       args=(book, feed),
                       rounds=10,
                       iterations=10,
                       warmup_rounds=5)
def test_orderbook_updates(benchmark):
    # We only care about the actual updates here, so instantiate orderbook and
    # load updates outside of benchmark
    book = L3OrderBook(
        instrument_id=TestStubs.audusd_id(),
        price_precision=5,
        size_precision=0,
    )
    feed = TestDataProvider.l3_feed()
    assert len(feed) == 100048  # 100k updates

    # benchmark something
    # book = benchmark(run_l3_test, book=book, feed=feed)
    run_l3_test(book, feed)

    # Assertions from integration test
    assert book.best_ask_level().price == 61405.27923706
    assert book.best_ask_level().volume() == 0.12227
    assert book.best_bid_level().price == 61391.0
    assert book.best_bid_level().volume() == 1.0
Ejemplo n.º 7
0
def test_l3_feed():
    ob = L3OrderBook(TestStubs.audusd_id())
    # Updates that cause the book to fail integrity checks will be deleted
    # immediately, but we may get also delete later.
    skip_deletes = []
    i = 0
    for i, m in enumerate(TestDataProvider.l3_feed()):
        if m["op"] == "update":
            ob.update(order=m["order"])
            try:
                ob.check_integrity()
            except AssertionError:
                ob.delete(order=m["order"])
                skip_deletes.append(m["order"].id)
        elif m["op"] == "delete" and m["order"].id not in skip_deletes:
            ob.delete(order=m["order"])
        ob.check_integrity()
    assert i == 100_047
    assert ob.best_ask_level().price() == 61405.27923706
    assert ob.best_ask_level().volume() == 0.12227
    assert ob.best_bid_level().price() == 61391
    assert ob.best_bid_level().volume() == 1