| """Quick smoke test for all Phase 2 imports.""" |
| import sys |
| sys.path.insert(0, ".") |
|
|
| from engine.order_book import OrderBook, Order, Side, Trade |
| from engine.market_state import market_state_to_string |
| from engine.metrics import MetricsEngine, TickMetrics |
| from agents.base_agent import BaseAgent, AgentState |
| from agents.momentum_agent import MomentumAgent |
| from agents.mean_reversion_agent import MeanReversionAgent |
| from agents.fundamental_agent import FundamentalAgent |
| from agents.market_maker_agent import MarketMakerAgent |
| from agents.noise_trader import NoiseTrader |
| from inference.prompt_templates import MOMENTUM_CHARTER, get_fundamental_charter |
| from inference.vllm_client import VLLMClient, parse_llm_output |
|
|
| |
| agents = [ |
| MomentumAgent("mom_1"), |
| MomentumAgent("mom_2"), |
| MeanReversionAgent("mr_1"), |
| FundamentalAgent("fund_1", fair_value=100.0), |
| MarketMakerAgent("mm_1"), |
| NoiseTrader("noise_1"), |
| ] |
| for a in agents: |
| print(f" {a.agent_type:15s} id={a.agent_id}") |
|
|
| |
| f = FundamentalAgent("f_test", fair_value=42.50) |
| assert "42.50" in f.charter, f"Fair value not in charter: {f.charter[:80]}" |
| print(" Fundamental charter injection: OK") |
|
|
| |
| assert parse_llm_output('{"action":"buy","price":99.5,"quantity":3}') is not None |
| assert parse_llm_output('```json\n{"action":"sell","price":101,"quantity":5}\n```') is not None |
| assert parse_llm_output("garbage") is None |
| assert parse_llm_output('{"action":"hold"}')["action"] == "hold" |
| print(" LLM output parser: OK") |
|
|
| |
| book = OrderBook() |
| book.set_tick(1) |
| book.submit_order(Order("b1", Side.BUY, 99.0, 5, 1)) |
| book.submit_order(Order("s1", Side.SELL, 101.0, 5, 2)) |
| state_str = market_state_to_string(book, "m1", 0, 10000.0, [100.0, 99.5, 100.2]) |
| assert "Best Bid: 99.00" in state_str |
| assert "Best Ask: 101.00" in state_str |
| assert "Your Position: 0 units" in state_str |
| print(" Market state serializer: OK") |
|
|
| print("\nAll Phase 2 checks passed.") |
|
|