Spaces:
Sleeping
Sleeping
| """ | |
| MarketMind — Entry Point. | |
| Run a multi-agent market simulation. | |
| Usage: | |
| python run_simulation.py # offline mode, 100 ticks | |
| python run_simulation.py --ticks 200 # offline, 200 ticks | |
| python run_simulation.py --llm # vLLM mode (requires server running) | |
| python run_simulation.py --llm --url http://host:8000/v1 | |
| """ | |
| import argparse | |
| import sys | |
| from engine.simulation import SimulationEngine, SimulationConfig | |
| 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 | |
| def build_default_agents() -> list: | |
| """ | |
| Default agent composition: the baseline 5-agent mix. | |
| Per spec Experiment A: 2 momentum + 1 mean-reversion + 1 fundamental + 1 noise. | |
| Plus 1 market maker for liquidity. | |
| """ | |
| return [ | |
| MomentumAgent("momentum_1"), | |
| MomentumAgent("momentum_2"), | |
| MeanReversionAgent("meanrev_1"), | |
| FundamentalAgent("fundamental_1", fair_value=100.0), | |
| MarketMakerAgent("marketmaker_1"), | |
| NoiseTrader("noise_1"), | |
| ] | |
| def main(): | |
| parser = argparse.ArgumentParser(description="MarketMind Simulation") | |
| parser.add_argument("--ticks", type=int, default=100, help="Number of simulation ticks") | |
| parser.add_argument("--price", type=float, default=100.0, help="Initial price") | |
| parser.add_argument("--llm", action="store_true", help="Use vLLM inference (requires server)") | |
| parser.add_argument("--url", type=str, default="http://localhost:8000/v1", help="vLLM server URL") | |
| parser.add_argument("--model", type=str, default="Qwen/Qwen2.5-7B-Instruct", help="Model name") | |
| parser.add_argument("--api-key", type=str, default="EMPTY", help="API Key for Hugging Face Serverless or other secured endpoints") | |
| parser.add_argument("--output", type=str, default="output", help="Output directory for CSVs") | |
| parser.add_argument("--seed", type=int, default=42, help="Random seed for reproducibility") | |
| args = parser.parse_args() | |
| config = SimulationConfig( | |
| num_ticks=args.ticks, | |
| initial_price=args.price, | |
| use_llm=args.llm, | |
| vllm_base_url=args.url, | |
| vllm_model=args.model, | |
| vllm_api_key=args.api_key, | |
| output_dir=args.output, | |
| seed=args.seed, | |
| ) | |
| agents = build_default_agents() | |
| engine = SimulationEngine(agents, config) | |
| engine.run() | |
| if __name__ == "__main__": | |
| main() | |