quant-ai / backend /tests /test_cpp_bindings.py
Ypeng12's picture
feat(ai): add cpp low latency engine and advanced ml alpha models
ae5ecc5
Raw History Blame Contribute Delete
1.78 kB
# backend/tests/test_cpp_bindings.py
"""
Unit test suite for C++ Pybind11 Low-Latency Quant Engine bindings.
Verifies microsecond Order Flow Imbalance (OFI), MicroPrice, VWAP, and EMA.
"""
import sys
import os
import pytest
import numpy as np
# Add C++ build directory to sys.path
cpp_build_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "../../cpp_engine/build"))
if cpp_build_dir not in sys.path:
sys.path.insert(0, cpp_build_dir)
def test_cpp_quant_engine_import_and_math():
try:
import cpp_quant_engine as cqe
# Test MicroPrice static calculation
p_micro = cqe.FastAlphaEngine.calculate_micro_price(100.0, 100.2, 500.0, 300.0)
assert p_micro == pytest.approx(100.125, abs=0.001)
# Test Order Book Imbalance static calculation
obi = cqe.FastAlphaEngine.calculate_obi(600.0, 400.0)
assert obi == pytest.approx(0.20, abs=0.001)
# Test Fast EMA vector calculation
prices = [100.0, 102.0, 104.0, 103.0, 105.0]
ema_vals = cqe.FastAlphaEngine.fast_ema(prices, 9)
assert len(ema_vals) == len(prices)
assert ema_vals[-1] > prices[0]
# Test Real-Time Tick Processing Engine
engine = cqe.FastAlphaEngine(20)
tick = cqe.MarketTick(1.0, 100.0, 100.2, 500.0, 300.0, 100.1, 1000.0)
payload = engine.process_tick(tick)
assert payload.micro_price == pytest.approx(100.125, abs=0.001)
assert payload.order_book_imbalance == pytest.approx(0.25, abs=0.001)
assert payload.vwap == pytest.approx(100.1, abs=0.001)
print("✅ C++ Pybind11 Engine Integration PASSED!")
except ImportError:
pytest.skip("cpp_quant_engine dynamic library not yet compiled in cpp_engine/build")