29 lines
895 B
Python
29 lines
895 B
Python
import math
|
|
import sys, os
|
|
|
|
# Ensure src is on sys.path for test imports when running from repo root
|
|
SRC_PATH = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "src"))
|
|
if SRC_PATH not in sys.path:
|
|
sys.path.insert(0, SRC_PATH)
|
|
|
|
try:
|
|
from edgemarketsignal.core import EdgeSignalProcessor, SharedSignals
|
|
except Exception:
|
|
from edgemarketsignal.core import EdgeSignalProcessor, SharedSignals
|
|
|
|
|
|
def test_extract_signals_basic():
|
|
feed = {
|
|
"venue": "A",
|
|
"best_bid": (100.0, 5), # price, size
|
|
"best_ask": (100.5, 6),
|
|
"last_trade": (100.2, 1),
|
|
}
|
|
sig = EdgeSignalProcessor.extract_signals(feed)
|
|
assert isinstance(sig, SharedSignals)
|
|
# mid-price should be average of bid/ask
|
|
assert math.isclose(sig.mid_price, 100.25, rel_tol=1e-6)
|
|
# liquidity is sum of sizes
|
|
assert sig.liquidity == 11
|
|
assert sig.venue == "A"
|