Backtest Configs

This is the configs your backtesting used.

{% for key, value in props.items() %} {% endfor %}
This data stored in Analyzer.configs
Config Term Value
{{key}} {{value | cut_if_too_long(50) }}

PnL Curve & Performance Metrics

Responsive Image

This data is stored in Analyzer.df_returns

Strategy Performance Metrics

These are calculated using ACTIVE return of your portfolio. When calculating sharpe ratio, risk-free rate is assumed to be 0.

{% for key, value in performance_metrics.items() %} {% endfor %}
This data is stored in Analyzer.performance_metrics
Term Value
{{key}} {{value | round_if_float(1) }}

Strategy Risk Metrics

{% for key, value in risk_metrics.items() %} {% endfor %}
This data is stored in Analyzer.risk_metrics
Term Value
{{key}} {{value | round_if_float(3) }}

Daily Trading & Holding PnL

Trading PnL = (close price - fill price) * position change
Holding PnL = (close price - pre-close price) * initial position

Responsive Image

This data is stored in Analyzer.df_pnl

{% if df_brinson is defined %}

Brinson Attribution

Responsive Image

This data is stored in Analyzer.df_brinson

{% endif %} {% if selected_securities|length > 0 %}

Visualization for Selected Security

{% for symbol in selected_securities %} Responsive Image {% endfor %}

Daily PnL for Selected Security

{% for symbol in selected_securities %} {{ symbol }}
{{ df_daily[symbol].to_html(classes="table table-striped", border=0) }}
{% endfor %} {% endif %} {% if rebalance_positions is not none %}

Table of Position on Re-balance Days

{% for date, df in rebalance_positions.items() %}

{{ df.to_html(classes="table table-striped", border=0) }}
{% endfor %}

This data is stored in Analyzer.rebalance_positions

{% endif %} {% if daily_position is not none %}

Table of Daily Position

{{ daily_position.to_html(classes="table table-striped", border=0) }}

This data is stored in Analyzer.daily_position

{% endif %} {% if position_change is not none %}

Table of Records of Position Changes

{% for date, df in position_change.items() %} {{ date }}
market value = {{ account[date]['market_value'] / 1000.0 | round(0) }}k, cash = {{ account[date]['cash'] / 1000.0 | round(0) }}k,
{{ df.to_html(classes="table table-striped", border=0) }} {% endfor %}

This data is stored in Analyzer.position_change

{% endif %}