""" Sample Backtest Script — Test the walk-forward engine on a small subset. """ import logging from backend.backtesting.backtester import run_portfolio_backtest from config import INDIA_UNIVERSE, US_UNIVERSE # Setup logging logging.basicConfig(level=logging.INFO, format="%(asctime)s [%(levelname)s] %(message)s") def main(): # 1. Select a small test universe (5 India, 5 US) test_tickers = INDIA_UNIVERSE[:5] + US_UNIVERSE[:5] # 2. Run backtest for last 1 year print(f"Starting sample backtest on: {test_tickers}") results = run_portfolio_backtest(test_tickers, period="1y", initial_capital=10_00_000) if "error" in results: print(f"Error: {results['error']}") return # 3. Print Summary metrics = results["metrics"] print("\n" + "="*40) print(" BACKTEST RESULTS SUMMARY") print("="*40) print(f"Total Return: {metrics['total_return_pct']}%") print(f"Max Drawdown: {metrics['max_drawdown_pct']}%") print(f"Win Rate: {metrics['win_rate_pct']}%") print(f"Total Trades: {metrics['total_trades']}") print(f"Final Equity: ₹{metrics['final_equity']:,.2f}") print("="*40) # 4. Run Monte Carlo Stress Test if results["trades"]: from backend.backtesting.monte_carlo import run_monte_carlo, print_mc_report mc_stats, _ = run_monte_carlo(results["trades"], 10_00_000) print_mc_report(mc_stats) # List last 5 trades if results["trades"]: print("\nLast 5 Trades:") for t in results["trades"][-5:]: status = t.get("status", "Open") print(f"- {t['ticker']}: Entry {t['entry_price']} | Exit {t.get('exit_price', 'N/A')} | PnL {t.get('pnl', 0):.2f} | {status}") if __name__ == "__main__": main()