{% extends "base.html" %} {% block title %}fx-quant — Backtest Results{% endblock %} {% block content %}

Backtest Results

{% if not summaries %}
No backtest results found. Run the backtester first.
{% endif %} {% for s in summaries %}
{% if s.strategy_name %}{{ s.strategy_name }} — {% endif %}{{ s.instrument }} / {{ s.granularity }} Run: {{ s.run_time[:19] }} | {{ s.data_range.bars | default(0) }} bars ({{ s.data_range.start[:10] }} to {{ s.data_range.end[:10] }})
Starting Equity
${{ "{:,.2f}".format(s.metrics.starting_equity) }}
Final Equity
${{ "{:,.2f}".format(s.metrics.final_equity) }}
Total Return
{{ "{:+.2f}".format(s.metrics.total_return_pct) }}%
Max Drawdown
{{ "{:.2f}".format(s.metrics.max_drawdown_pct) }}%
Win Rate
{{ "{:.1f}".format(s.metrics.win_rate_pct) }}%
Sharpe
{{ "{:.2f}".format(s.metrics.sharpe_ratio) }}
Trades: {{ s.metrics.num_trades }} ({{ s.metrics.round_trips }} round-trips)
Monthly P&L
{% for m in s.monthly_pnl %} {% endfor %}
Month Start Equity End Equity P&L ($) P&L (%) Performance
{{ m.month }} ${{ "{:,.2f}".format(m.start_equity) }} ${{ "{:,.2f}".format(m.end_equity) }} {{ "{:+,.2f}".format(m.pnl) }} {{ "{:+.2f}".format(m.pnl_pct) }}% {% set bar_width = [m.pnl_pct | abs * 10, 100] | min %} {% if m.pnl >= 0 %}
{% else %}
{% endif %}
{% endfor %} {% endblock %}