Report
Select the backtest name and assets you want to include in the report. Selecting specific assets from the list will eliminate them from the report. You can include them again later if you chose the Use Portfolio Ratio option.
Get Report button
![[GetReportsButtonDialog-General-UserPortfolioRatio.png|GetReportsButtonDialog-General-UserPortfolioRatio.png]]
Use Portfolio Ratio
This is best described with a concrete example. Let's assume that we are investing $1000 in three assets BTC/USDT. ETH/USDT, BNB/USDT. But we have greater confidence in the growth potential of ETH/USDT currently. Therefore, we are interested in giving this asset a larger percentage of our investment capital. The ratio values in this dialog allow you to reflect this in the backtest investment strategy.
Asset | Ratio | Allocated funds |
---|---|---|
BTC/USDT | 1 | $250 |
ETH/USDT | 2 | $500 |
BNB/USDT | 1 | $250 |
As you can see from the table above, based on the assigned ratios, the capital is divided by the sum of the ratios and the amount invested is calculated by multiplying this increment with the investment ratio assigned to each asset.
Max Trade
The value of Max Trade limits the number of open trades at any point in time. The following tables give a more detailed outline of how this feature works and combines with the Portfolio Ratio values.
Max Trade same as asset number
Notice in the case below that when the software had an open ETH/USDT trade and received another buy signal because it already had an open position in this asset it did nothing. But when a buy signal for the other two assets was received it entered the market. Max Trade = 3 Portfolio Mode = fixed Total Funds = $1000
Signal ID | Asset | Portfolio Ratio | Fund allocation | Funds Remaining |
---|---|---|---|---|
1 | ETH/USDT | 2 | ||
2 | ETH/USDT | 2 | ||
3 | BTC/USDT | 1 | ||
3 | BNB/USDT | 1 |
Max Trade less than asset number
Here the backtest is told not to have more than two open trades at any point i.e. never trade more than two assets. Max Trade = 2 Portfolio Mode = fixed Total Funds = $1000
Signal ID | Asset | Portfolio Ratio | Fund allocation | Funds Remaining |
---|---|---|---|---|
1 | ETH/USDT | 2 | ||
2 | ETH/USDT | 2 | ||
3 | BTC/USDT | 1 | ||
4 | BNB/USDT | 1 | No funds for trade | $0 |
Max Trade is one
Here the backtest is told not to have more than one open trade at any point i.e. never trade more than one asset. Max Trade = 1 Portfolio Mode = fixed Total Funds = $1000
Signal ID | Asset | Portfolio Ratio | Fund allocation | Funds Remaining |
---|---|---|---|---|
1 | ETH/USDT | 2 | ||
2 | ETH/USDT | 2 | ||
3 | BTC/USDT | 1 | No funds for trade | $0 |
4 | BNB/USDT | 1 | No funds for trade | $0 |
Portfolio Mode
Mode | Description |
---|---|
fixed | Trades with fixed capital. Losses cause a reduction in capital, gains do not increase the bet size |
compound | Trades with fixed capital. Losses cause a reduction in capital but gains are added back in for investing |
borrow | The software assumes infinite capital but tracks how much it had to borrow to keep investing |
Let's assume we are investing $1000 in one asset. The investments go as follows:
ID | Returns (%) |
---|---|
1 | -30% |
2 | +100% |
3 | +20% |
We will now look at how each of the modes mentioned above will affect the backtest logic.
Fixed
Under fixed mode the backtest will always attempt to enter trades with the maximum asset value available up to the original amount intended for investment i.e. profits are not included in new trades, but losses cause the investment amount to be reduced as there is no more capital at hand.
ID | Investment Amount | Profit / Loss | Portfolio Value | Portfolio profit |
---|---|---|---|---|
1 | $700 | -30% | ||
2 | $1400 | 40% | ||
3 | $1600 | 60% |
Compound
Under compound mode the backtest will always attempt to enter trades with all the money available to it in the account. Therefore, as you can see below the investment amount has increases when there are profits.
ID | Investment Amount | Profit / Loss | Portfolio Value | Portfolio profit |
---|---|---|---|---|
1 | $700 | -30% | ||
2 | $1400 | 40% | ||
3 | $1680 | 68% |
Borrow
Under borrow mode, the backtest will assume it has access to an infinite pool of capital and will borrow to ensure that its investment amount remains the same as the initial amount it started with. Therefore, the portfolio profits will be different at every stage, and we can work out if the strategy worked if the invested capital was larger than interim losses. This mode also will give you a sense of how much risk this strategy carries in different market conditions.
ID | Investment Amount | Profit / Loss | Portfolio Value | Borrow | Portfolio profit |
---|---|---|---|---|---|
1 | -30% | ||||
2 | 70% | ||||
3 | 90% |
Tables & Charts
Performance Report (backtest summary)
This table contains important information and performance metrics regarding the backtest. The most important metrics are colour coded (green for positive, red for negative) for better visual interpretability. Here is the general definitions for each metric:
Name | Description |
---|---|
Profit | The percentage of profit made - e.g. if 100, the initial money has been doubled. |
Backtest Time | The time range on which the backtest is taken. |
Number of backtest days | The number of days in the time range. |
Time in market | The percentage of the total time that the backtest was trading / in a trade. |
Number of trades | Total number of trades made across the timeframe. |
Win rate | The ratio of trades with a positive profit to all profits |
Market change | The change in market price across the timeframe. |
Sharpe Ratio | The performance adjusted for risk by comparing it against a risk-free method. |
Calmar Ratio | Similar to sharpe ratio, a measure of risk vs. reward of the backtest |
Max Drawdown | The maximum drop in holdings from a peak |
Mean step | The average number of steps taken per trade - correlates to pyramiding. If pyramiding is 0, this value is always 1. The value of pyramiding + 1 is always an upper bound on the mean step. |
Best Trade Profit | The highest profit between trades |
Worst Trade Profit | The lowest profit between trades |
Best Pair | The asset in which the highest profit was seen |
Worst Pair | The asset in which the lowest profit was seen |
Use cases:
The profit value is the primary indicator of a strategy's success. If the backtest has not profited (has 0 or negative profit), it shows that the chosen signals do not indicate good buying/selling points.
The max drawdown is another important metric. If the backtest has a really low max drawdown (i.e. really negative below -15 or -20), it indicates that it might lose significant holdings at some point. If this happens early on, then it might not be able to recover for later. Higher max drawdowns (above -10) indicate stability and steady returns.
The number of trades can be used to add context. If a backtest makes really high profits but has only traded 10 times in one year, then it might be attributed more to random chance. Backtests with a high number of trades are more reliable and less likely to occur randomly.
Sharpe & Calmar ratio: These ratios are metrics of risk vs. reward. A higher value indicates more profit for less risk. Directly correlated to having higher profits and lower drawdowns.
Portfolio -vs- Holding
A graph showing the performance of the portfolio against the market. By double-clicking an asset name you can single it out to view it by itself, and by clicking an asset that isn't shown you can show it on the graph. Here are some interpretations that can be derived from this chart:
By comparing the portfolio performance to the market's change in price, periods of profit/drawdowns can become apparent. E.G. for a backtest with no short signal, it is expected that the portfolio performance goes down when the market is bearish.
Looking at the ending date of the market can provide a comparison metric. If the portfolio is below the market's price level, then it means that buying the asset at the beginning and making no trades would have yielded better profits. This can signal if a strategy is good or bad.
Trading Positions Summary Report
This section holds information about the trades made during the backtest. It is presented in three tables based on the type of trade made (all trades, long position trades short position trades). Each table also has three sections based on the profit made on the trade (all trades, trades with positive profit as a win, trades with negative profit as a loss). Here are the definitions for the terms used in the tables:
Name | Description |
---|---|
∑ profit | The sum of the profits of the trades. This value is independent of the mode of the report, as it considers each trading position independently. Note: "The trades" refer only to the trades/positions that match the table (all/short/long) or section within the table (all/win/loss). |
Average Profit | The average profit made across trades. |
Worst Profit | The worst profit made across trades. |
Best Profit | The best profit made across trades. |
Number of position | The number of trades made. |
Max profit in day | The maximum profit that was made in a day across the time range. |
Min profit in day | The min profit that was made in a day across the time range. |
First position date | The date of the first trade. |
Last position date | The date of the last trade. |
Mean step | The average number of steps taken per trade. The mean step in the general report is calculated across all trades (long, short, win, loss). |
Average duration | The average time taken per trade. |
Min duration | The minimum time duration across trades. |
Max duration | The maximum time duration across trades. |
Show all trade positions
This table shows every single trade that was made. It holds information such as when the trade was opened/closed, why it was closed, what type of trade it was, etc.
The "draw up" & "draw down" columns refer to the price level during the trade: The maximum percentage increase between the opening & closing of the position is the draw up. The maximum **decrease **is the drawdown.
The "affected profit" column refers to the entire portfolio: The percentage that the profit of the entire portfolio was affected by that asset's trade.
Daily Performance Metric Report
This is a table that compares the backtest performance against the market benchmark (called holding). It contains numerical statistics from the line chart in the "portfolio vs. holdings" section for ease of analysis. Categorize Report (Seasonal Report) This table breaks the trades made into unique time-based categories. Each row has information (e.g. the number of trades, the standard deviation of profits per trade, ...) about the trades done in a specific time range - the "categorize" column shows this time range. The first rows of the table represent the trades done per the specified annum. The next rows represent trades per quarter, then per week, then per day, etc. Usage:
Similar to the monthly heatmap & the annual returns chart - gives context on when the backtest performed well/poorly. It gives numerical metrics for the performance that can be used to quantitatively compare backtests (non-visual).
Signal Report
It is possible to run backtests with multiple signals. A "signal" can have multiple sub-signals joined together - or short & long signals can be both used in a backtest. The purpose of this section is to see the performance of each signal independent of the others - mainly concerning the profit that they made (and its statistics), and the number of trades they had won/lost. This can therefore be used to judge the strength of an indicator or a strategy. It is important to note that joining multiple indicators together will create dependencies between the indicators themselves. The joint signal's performance may significantly differ from the sum of each individual sub-signal performance. This section does not eliminate the dependency and the results here also may differ if each signal was backtested by itself. The purpose is to show the performance of the sub-signals while also considering the interdependence between them.
Cumulative Returns
A chart that shows the performance of the backtest against the benchmark by its cumulative returns. Shows the chart across the portfolio, and is the same as the chart drawn in the portfolio vs. holding section. Usage:
Compare rising and falling periods of the backtest's returns against the market. This can provide context as to when the backtest performed well (or not well), which can be used to justify performance. E.G. In periods where the market is bearish, a backtest with only a long signal will typically perform poorly and have no returns.
Returns
The percentage return of the trades made in the backtest across time. Usage:
Mimics what would have happened if you traded using the strategy during the given time range. This can be used to judge the strength of the strategy.
Distribution Returns
A histogram of the daily return percentages of the backtest, compared against the market.
Cumulative Returns on Logarithmic Scale
Same as the cumulative returns chart, but with a logarithmic scale to better visualize the performance.
Annual returns
The return percentage of the backtest per year. The average across all years is also highlighted. Usage:
The backtest's performance can be seen across different years, which can provide context depending on the year (e.g. if a particular year had bullish markets). A consistent performance across years can indicate the stability and reliability of the strategy, given that the time range is not relatively short (1 year).
Rolling Returns
A chart of the rolling return percentages of the backtest vs. the market. The rolling window is 6 months, hence why the chart will only show the data after the initial 6-month period.
Rolling Volatility
Same as rolling returns, but with volatility. The average volatility is also highlighted.
Rolling Beta
Same as rolling returns, but with the beta value. The average beta value is also highlighted.
Rolling Sharpe
Same as rolling returns, but with the sharpe ratio. The average sharpe ratio is also highlighted.
Cumulative Returns Volatility matched to benchmark
Same as the cumulative returns graph, adjusted for volatility.
Monthly Returns Distribution
A histogram showing the distribution of the monthly return percentages. The average monthly return percentage is also highlighted. Usage:
Can be used in conjunction with the heatmap to determine the most common performance of the backtest (i.e. if the strategy was used, what would be the most likely result per month).
Monthly Returns Heatmap
A heatmap of the monthly returns - useful for determining the months in which the backtest performed well/poorly. Usage:
Adds further context to the performance of the backtest. Months can be compared and contrasted to see the best and worst monthly performances of the backtest. This will give a sense of when the strategy worked vs. when it didn't, and to what extent did the strategy manage to succeed.
Months with no returns can be considered periods of time when there were no trades being made.
Drawdown Periods
A chart showing the periods where the cumulative returns decrease substantially (fall from a peak). The drawdown period ends when the returns manage to climb back up to that peak. Usage:
Gives context to periods where the backtest was performing poorly. Shows how much time it generally takes to recover from a drop. This can be used to judge if a strategy is robust to drawdowns & falling return periods.
Drawdown Underwater
Graph of the drawdown percentages from the previous peak. When the cumulative returns are increasing, the graph flatlines at 0 until they start to drop. The drawdown percentage is calculated from the last peak in cumulative returns. Usage:
Mainly supplements the "drawdown periods" chart in adding context to periods of poor performance. Also shows the magnitude of the drop in holdings, highlighting the worst ones.
Position Profit-Duration
A chart that shows the returns of a trade compared to its duration. Every "whisker" in the graph represents a trade - they are all opened at return percentage 0%, and the coloured dot on the whisker shows at what return percentage they were closed. The y-axis corresponds to the duration of the trade: if a position is closed 5 days after it was opened, it will be higher than if it was closed 1 day afterward. The endings of a whisker show the maximum and the minimum return percentage that they reached in the duration of the trade. Usage:
Can be used to determine stop-loss/take-profit percentages. If you fix a percentage return value as the "stop loss" percentage, any trade that is closed on the left side of the value (more negative) is eliminated and losses are minimized. Max Steps A chart that shows the number of steps taken (number of open trades at a time - related to pyramiding) across the time range. The price level has been compressed and shown above the chart of the steps - which is labelled as the "market". Usage:
Used to determine an appropriate pyramiding value. If there are few trades at the maximum step level (equal to the pyramiding value + 1), then increasing the pyramiding value is likely to do nothing. If there are many trades at that level, then increasing the pyramiding value can potentially improve the performance.