Source code for awt_quant.forecast.stochastic.run_simulations
"""Run Stock Forecast Simulations using SPDEMCSimulator.This script allows running single and multiple stock simulations with different configurations.Usage: python run_simulations.py --symbol AAPL --mode single python run_simulations.py --mode multi"""importargparseimporttimeitimportnumpyasnpimportpandasaspdimporttorchfromawt_quant.utilsimportfinancial_calendar_days_before# Default Parameters
[docs]defrun_single_simulation(symbol):""" Runs a single simulation for a given stock symbol. """print(f"\nRunning single simulation for {symbol}")# Dynamic training splittrain_test_split=np.random.uniform(0.685,0.8)total_observations=round(forecast_periods[-1]/(1-train_test_split))start_date=financial_calendar_days_before(end_dates[0],total_observations,calendar)start_time=timeit.default_timer()fromawt_quant.forecast.stochastic.pde_forecastimportSPDEMCSimulatorsim=SPDEMCSimulator(symbol,eq_class,start_date,end_dates[0],dt,num_paths,plot_vol)sim.download_data(train_test_split)sim.set_parameters()sim.simulate(eq_class)sim.plot_simulation(eq_class)forecast,errors=sim.backtest()print(f"Execution Time: {timeit.default_timer()-start_time:.2f} seconds")returnforecast,errors
[docs]defrun_multiple_simulations(symbols):""" Runs multiple simulations across different stock symbols. """print("\nRunning multiple simulations for symbols:",symbols)results=[]forsymbolinsymbols:forend_dateinend_dates:fortrain_test_splitintrain_test_splits:total_observations=round(forecast_periods[-1]/(1-train_test_split))start_date=financial_calendar_days_before(end_date,total_observations,calendar)start_time=timeit.default_timer()print(f"\nSimulating {symbol} for end date {end_date}, split {train_test_split:.2f}")fromawt_quant.forecast.stochastic.pde_forecastimportSPDEMCSimulatorsim=SPDEMCSimulator(symbol,eq_class,start_date,end_date,dt,num_paths,plot_vol)sim.download_data(train_test_split)sim.set_parameters()sim.simulate(eq_class)forecast,errors=sim.backtest()errors['symbol']=symbolerrors['end_date']=end_dateresults.append(errors)print(f"Execution Time: {timeit.default_timer()-start_time:.2f} seconds")returnpd.DataFrame(results)
if__name__=="__main__":
[docs]parser=argparse.ArgumentParser(description="Run SPDEMCSimulator for stock forecasting")
parser.add_argument("--symbol",type=str,help="Stock symbol to simulate (default: AAPL)",default="AAPL")parser.add_argument("--mode",type=str,choices=["single","multi"],default="single",help="Choose simulation mode: 'single' (one stock) or 'multi' (multiple)")args=parser.parse_args()ifargs.mode=="single":run_single_simulation(args.symbol)else:stock_list=['AAPL','MSFT','GOOGL','TSLA']df_results=run_multiple_simulations(stock_list)print(df_results)