from __future__ import annotations from pathlib import Path import numpy as np import pandas as pd from multi_swarm.genome.hypothesis import HypothesisAgentGenome, ModelTier from multi_swarm.llm.client import CompletionResult from multi_swarm.orchestrator.run import RunConfig, run_phase1 class MockLLMClient: def complete( self, genome: HypothesisAgentGenome, system: str, user: str, max_tokens: int = 2000, ) -> CompletionResult: text = ( "```lisp\n" "(strategy" " (when (gt (indicator rsi 14) 70.0) (entry-short))" " (when (lt (indicator rsi 14) 30.0) (entry-long)))\n" "```" ) return CompletionResult( text=text, input_tokens=120, output_tokens=60, tier=genome.model_tier, model="mock", ) def main() -> None: idx = pd.date_range("2024-01-01", periods=1000, freq="1h", tz="UTC") close = 100 + np.cumsum(np.random.RandomState(0).normal(0.01, 1.0, 1000)) ohlcv = pd.DataFrame( {"open": close, "high": close + 0.5, "low": close - 0.5, "close": close, "volume": 1.0}, index=idx, ) cfg = RunConfig( run_name="smoke", population_size=3, n_generations=1, elite_k=1, tournament_k=2, p_crossover=0.5, seed=0, model_tier=ModelTier.C, db_path=Path("./runs.db"), ) run_id = run_phase1(cfg, ohlcv=ohlcv, llm=MockLLMClient()) # type: ignore[arg-type] print(f"Smoke run completed: {run_id}") if __name__ == "__main__": main()