Swing_Quant_Engine / backend /backtesting /run_sample_test.py
SiddharthVenba's picture
Initial commit for HF Space
75d9b3c
Raw
History Blame Contribute Delete
1.8 kB
"""
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()