VALYNOX
VALYNOXSTRATEGY RESEARCH TECHNOLOGY
AlphaPrimeAlphaPrime
ACADEMY / Backtesting and validation

Monthly returns backtest table: what it shows that net profit hides

A monthly returns table shows how a backtest's net profit arrived: which months held it, how many months lost in a row, how long equity took to recover and whether every year contributed. Build it from closed trades after costs, then check top-three concentration, streaks, recovery, seasonality and yearly totals before you trust the total.

By · Published · updated · Editorial policy

Contents
  1. What does a monthly returns table show that total net profit hides?
  2. How do you build the monthly returns table?
  3. How do you spot profit concentrated in a few months?
  4. How long should recovery from a losing streak take?
  5. Is monthly seasonality real or noise?
  6. How consistent is the strategy across years?
  7. Frequently asked questions
  8. References

What does a monthly returns table show that total net profit hides?

A monthly returns backtest table shows how the net profit arrived: which months held it, how many months lost in a row, how long the equity took to recover, and whether each year contributed. One total hides all of that. Two strategies with the same net profit can be a steady grind and a lucky streak.

A monthly returns table is a grid with one row per year and one column per calendar month, where each cell holds the strategy's net result for that month after commission and slippage. Think of a marathon result. The finishing time is one number. The split times for each kilometre tell you whether the runner held a steady pace or sprinted twice and walked the rest. The finishing time cannot tell the two apart; the splits can. Net profit is the finishing time. The monthly table is the splits. This is why net profit is the least useful number on a backtest report, and the argument of this article is that the monthly grid should be read before it.

A backtest replays a rule on old prices; what backtesting in futures trading actually replays explains the mechanics. The summary page of that replay gives Sharpe ratio, maximum drawdown and growth rate, and how to read a backtest report's Sharpe, Sortino, CAGR and max DD covers each one. Those figures are averages and extremes. The monthly table is the only view that shows the order in which things happened.

What you want to knowNet profit aloneMonthly returns table
Did a few months make the whole result?Cannot tellSort the months, read the top three
How many losing months in a row?Cannot tellCount the longest run of negative cells
How long until a new equity high?Cannot tellCount months from peak to recovery
Did every year contribute?Cannot tellRead the yearly total column
Is one calendar month special?Cannot tellRead one column down across years

Hypothetical example

Strategy A and strategy B both show a net profit of $24,000 over four years of daily bars. In A, three months hold $21,000 of it and the other 45 months add up to $3,000, with 19 of them negative. In B, the best month is $1,800, 31 months are positive and no month holds more than 8 percent of the total. The report page shows the same net profit for both. The monthly grid shows that A was three events and B was a pattern.

Two hypothetical strategies make the same net profit over 48 months: in A three large months hold 88 percent of the total among small gains and losses, in B modest gains arrive month after month with no dominant month Same profit, two stories Hypothetical · red cell = losing month A: +$24k B: +$24k 3 months: 88% No big month The total hides how it was made. So: read the monthly grid first.
Same net profit, two different stories. The left grid is three lucky months; the right grid is a result that arrived month after month.

How do you build the monthly returns table?

Build the table from the trade list: give every closed trade to the month it closed in, add up the net results per month, lay the sums out as years by months, then add a yearly total column and a count of positive months. The whole job takes four steps and a spreadsheet, and the order matters because each step feeds the next.

  1. Export the trade list with exit dates and net results. Net means after commission and slippage. A table built from gross results overstates every cell and hides that small winning months were losses in a real account.
  2. Assign each trade to its exit month. A trade opened 28 March and closed 3 April belongs to April. Using the exit month keeps the table consistent with the closed-trade equity curve. For strategies that hold positions for many weeks, you can instead value open positions at each month end (mark-to-market); pick one method and keep it for every strategy you compare.
  3. Sum the net results per month and fill the grid. Rows are years, columns are January to December. A month with no closed trade gets zero, not a blank, so the positive-month count is honest.
  4. Add a yearly total column and the count of positive months. Write the count as a fraction, for example 8 of 12. Also add the count of months with at least one trade, so you know whether a zero cell means "flat" or "no trade".
Four steps build the monthly table: export net trades, assign each to its exit month, sum per month into the grid, add yearly totals; one trade closed on 3 April for plus 400 dollars is followed into the April cell and the year total Trade list to monthly grid One trade, followed to its cell Net trade list Exit month Sum per month Add year total 3 Apr, +$400 April April cell In year total Each trade lands in its exit month. So: use net results after costs.
From trade list to monthly grid in four steps. One trade is followed from its exit date to the cell it lands in.

Keep the costs you used in the backtest unchanged when you build the table. If the backtest charged $20 commission and $10 slippage per trade, the monthly cells already include that, and the table should say so in its heading. When the strategy report already lays the result out by period, you skip the spreadsheet: the Performance Report in AlphaPrime (Valynox) includes periodic performance alongside the equity curve, drawdown and trade list, so the grid described here is read from the performance report rather than rebuilt by hand.

How do you spot profit concentrated in a few months?

Sort the months from best to worst, add up the best three, and divide by the net profit; when removing those three months leaves the result flat or negative, the backtest describes a few lucky episodes rather than a repeatable edge. Profit concentration is the share of total net profit that sits in a small number of months. The formula behind this section:

top-three share = (best month + second-best month + third-best month) ÷ net profit

Here best month, second-best month and third-best month are the three largest monthly net results from the grid, and net profit is the total of all months. A share of 0.9 means the three best months hold 90 percent of the result and every other month together holds 10 percent.

Top-three shareWhat it usually meansWhat to do next
Under about 30 percentProfit spread across many monthsMove on to streaks and recovery
About 30 to 60 percentA few strong months plus a steady baseRemove the top three and confirm the rest is still positive
Above about 60 percentThe result is a handful of episodesFind what those months had in common and ask if it repeats

Hypothetical example

A strategy shows $30,000 net profit over 60 months. Sorted, the best three months are $9,000, $7,500 and $6,000, which add up to $22,500. The top-three share is 22,500 ÷ 30,000 = 0.75. Without those three months the other 57 months hold $7,500, about $130 per month on average. That is not flat, but it is a quarter of the headline, and the three big months all fell in the same volatile spring. The strategy made most of its money in one kind of market.

Hypothetical monthly results sorted from best to worst: the top three months hold 75 percent of the net profit over 60 months, the other 57 months together hold 25 percent Three months made 75% Hypothetical: $30k over 60 months Top 3: 75% Other 57: 25% Sorted best to worst Without them, a quarter is left. So: check what those months shared.
Months sorted from best to worst. The bracket over the three dark bars is the top-three share; the long bracket is what every other month contributed.

The reason concentration matters is selection. When a search tries many rule variants and keeps the best, the kept one tends to be the variant whose rules happened to line up with the biggest moves in that history, and those moves live in a few months. Bailey, Borwein, López de Prado and Zhu (2014) show that the best result from a large search is inflated by exactly this effect; why the best backtest in a search is usually inflated walks through their argument. A concentrated monthly table is the visible fingerprint of that inflation.

The run below shows how this looks on a real search result. AlphaPrime searched NQ daily bars from 2019-01-02 to 2025-06-30, long and short, one contract, with $20 commission and $10 slippage per trade, and kept one candidate out of about a thousand it tried, for its return against its drawdown. The candidate uses a Vortex indicator rule as its only entry and exit, with no stop, target or filter; it is a stand-in rule built from a standard indicator, not a study of monthly tables themselves. Picking the kept candidate after the fact flatters it, so the numbers describe that one backtest and nothing more.

Source: AlphaPrime product engine (CPU), run 2026-10-31. NQ daily bars, 2019-01-02 to 2025-06-30, long and short, 1 contract, $20 commission and $10 slippage per trade.

NumberResult
Net profit (closed trades)$61,655
Max drawdown$38,185
Trades68
Win rate63.24%
Profit factor1.597
Average trade$906.69
Time in market7.45%
Read the shape, not the height. Long flat stretches are months with no closed trade; each steep step is a month or two that will sit at the top of the sorted list.
Read the shape, not the height. Long flat stretches are months with no closed trade; each steep step is a month or two that will sit at the top of the sorted list. NQ · daily · 2019-01-02 to 2025-06-30 · CPU engine backtest

Two numbers in the box tell you what the monthly table of this run must look like before you build it. There are 68 trades across 78 months, fewer than one trade a month, and time in market is 7.45 percent, so the rule is flat for more than nine days in ten. Most cells in its grid will be zero with no trade, and the result has to be concentrated in the months that held a trade. For a rule that trades this rarely, concentration by itself is expected; the question the table answers is whether the months outside the top three still add up to something, and whether the max drawdown of $38,185 against a net profit of $61,655 was one long losing stretch or several. Neither of those can be read from net profit, and a candidate that passed this check would still need the later checks in strategy validation before it meant anything.

How long should recovery from a losing streak take?

Count the longest run of losing months and, separately, the months from the equity peak back to a new high, then judge both against how often the strategy trades and the drawdown you are prepared to sit through live. A losing streak is the number of consecutive months with a negative net result. Recovery time is the number of months from an equity peak until the equity first exceeds that peak again. They are different numbers, and the second is usually the longer one, because a streak can be followed by small positive months that climb back slowly.

A hypothetical 24-month equity line peaks, falls for five losing months, then climbs slowly and only passes the old peak 13 months after it was set: the losing streak is 5 months, the recovery time 13 months Recovery outlasts the streak Hypothetical equity, 24 months Peak New high Streak: 5 months Recovery: 13 months No new high for 13 months. So: set your limit before you look.
The streak ends when a month turns positive. The recovery ends only when equity passes its old peak, which can take much longer.
MeasureLosing streakRecovery time
What you countConsecutive negative monthsMonths from peak to new high
Ends whenFirst positive monthEquity exceeds the old peak
What it testsYour patience with red numbersYour patience with no progress
Typical relationShorterLonger, often two to three times the streak

Judge the streak against trade frequency first. A strategy that closes one trade a month and wins 55 percent of its months will, by chance alone, produce a run of four losing months somewhere inside a six-year history; each month has a 45 percent chance of being negative, and four in a row at any given starting point is roughly one chance in 25, with 78 starting points to try. Four losing months in such a table is not a signal of anything. Seven or eight would be worth a closer look at what the market did in that stretch.

Judge the recovery time against yourself. Write down, before you read the table, the longest period without a new equity high you would accept while trading real money. Many traders find that twelve months of no progress is where they start changing settings, which is the moment a good strategy is usually abandoned. If the backtest already shows a recovery longer than your written limit, the live version will show a longer one. Magdon-Ismail and Atiya (2004) show that the expected maximum drawdown grows with the length of the period observed, so a six-year backtest understates the worst drawdown, and the longest recovery, that a twenty-year live record would contain. The drawdown calculator computes the depth and recovery of each drawdown from an equity series, and how to measure maximum drawdown explains how the depth is read.

Hypothetical example

A monthly table shows a peak in March of year two. April to August are five losing months totalling −$9,000. September to the following February are six small positive months adding $6,000. Equity passes the March peak in April of year three. The losing streak is five months. The recovery time is 13 months. A trader who wrote "twelve months" as a limit would have stopped trading one month before the new high.

Is monthly seasonality real or noise?

A calendar month is a real pattern only when it shows the same sign in most years and no single year makes its average; one huge year inside a column is noise that the mean hides. Seasonality is a tendency for a particular calendar month to produce results of the same sign year after year. Reading one column of the grid downward is the test, and the average at the bottom of the column is the least useful part of it.

One hypothetical calendar month over seven years in two strategies with the same average: on the left six of seven years are positive with similar sizes, on the right one very large year makes the average while the other years are small and mostly negative Repeats, or one big year? Same month, 7 years · dashed = average 6 of 7 up One big year One year can fake a season. So: drop the best year, recheck.
Both columns average the same. The left one repeats; the right one is a single year wearing a seasonal label.

Three conditions have to hold before a month earns a place in a rule:

  1. Same sign in most years. With seven years of data, at least five of seven should agree. Four of seven is a coin toss.
  2. No single year holds more than half the column's total. Remove the largest year and recompute the average. If the sign flips, the pattern was that year.
  3. A reason you can name. Quarterly expiry, index rebalancing dates, a known holiday schedule. A month that is positive for no reason you can state is more likely to be noise, because there are twelve columns and one of them will look special by chance.

That last point is the statistical heart of the matter. Harvey and Liu (2015) argue that a result found by testing many possibilities needs a higher bar than a result from a single test, and twelve calendar months are twelve tests. Testing them on a grid that also contains a few concentrated months, as the previous section described, makes the problem worse: the big months land in some column and that column looks seasonal. Check concentration first, then seasonality.

Hypothetical example

The October column over seven years reads +$400, +$600, +$9,000, −$300, +$500, −$200, +$700. The average is about $1,500, which looks like a strong month. Remove the $9,000 year and the other six average about $280 with four of six positive. The pattern is weakly present, but the headline average was made by one year. A rule that trades October harder because of the $1,500 average is a bet on that one year repeating.

How consistent is the strategy across years?

Read the yearly total column together with the number of positive months in each year, and treat a strategy whose whole result lives in one or two years as a single bet on one market condition. Backtest consistency is the degree to which each year, and each month within the year, contributes to the final result rather than a few periods carrying the rest. The yearly column is the coarsest view of the grid and the fastest to read.

Two hypothetical seven-year records with the same total net profit: the consistent one is modestly positive every year with seven to nine positive months, the lumpy one has one year holding nearly the whole total and other years near zero with four to six positive months Every year, or one year? Both +$21k · number = up months of 12 Consistent Lumpy 8 7 9 8 7 9 8 5 4 6 6 4 5 5 Lumpy: one year carries it all. So: count positive months per year.
Seven years, two records. Yearly totals and positive-month counts together separate a strategy that worked each year from one that worked once.
Pattern in the yearly columnWhat it suggestsLive risk
Every year positive, 7 to 9 positive months eachEdge present across conditionsLow chance that the next year is unlike all the tested ones
Most years positive, one or two small negative yearsNormal variation around an edgePlan for a negative year; the table says it happens
One year holds most of the total, others near zeroRule fitted to one market conditionLive result depends on that condition returning
Early years strong, recent years flatPossible decay of the patternThe most recent years are the ones you will trade into

The fourth row deserves a closer look, because the recent years carry the most weight. A grid in which the first three years hold the profit and the last three are flat describes a rule that may have stopped working, and no total can show that. This is the same question that walk-forward testing asks in a stricter form: the yearly column of an ordinary backtest uses rules that saw every year, while a walk-forward result uses rules chosen before each year began. How to read the sign of walk-forward out-of-sample P&L explains why the sign of each forward segment, not its size, is the first thing to read, and the same reading applies to the yearly totals here.

For index futures such as NQ, this check has a specific meaning. The period 2019 to 2025 contains a long rising stretch, a sharp fall in early 2020 and a long decline in 2022. A long-only rule can show a good total from the rising years alone. A rule tested long and short, like the run shown earlier, has the chance to contribute in 2022 as well, and its yearly column shows whether it did. Count the positive months per year alongside the totals: a year with a positive total and four positive months out of twelve was one or two trades, not a year of edge.

Open the trade list of your most recent backtest and build the grid before you read anything else on the report. Write down four numbers: the top-three share, the longest losing streak in months, the longest recovery in months, and the number of positive years out of the total. Then compare the recovery figure with the limit you wrote for yourself. If the backtest already exceeds it, that is the decision, and no net profit figure changes it.

Frequently asked questions

How do you read a monthly returns table?

Read it in four passes. Sort the cells and check how much of the net profit the best three months hold. Count the longest run of negative months and the months from each equity peak to a new high. Read each calendar column downward to see whether a month repeats its sign across years. Finally read the yearly total column with the count of positive months per year, so you know whether every year contributed or one year carried the rest.

How do you spot profit concentrated in a few months?

Sort the monthly results from largest to smallest and add up the top three. Divide by the total net profit to get the top-three share. When that share is above about 60 percent, remove those three months and look at what remains; if the rest is flat or negative, the backtest describes a few episodes rather than a pattern that repeats. Check what those months had in common, such as one volatile stretch, before trusting the total.

How long should a recovery from a losing streak take?

There is no universal number; the right limit depends on how often the strategy trades and how long you can sit without a new equity high while trading real money. Write that limit down before you read the table. Then count the months from each equity peak to the next new high in the backtest. The longest of those is a lower bound for what live trading will show, because longer histories contain deeper and longer drawdowns than shorter ones.

Is monthly seasonality real or noise?

Treat a calendar month as seasonal only when it has the same sign in most of the tested years, no single year holds more than half of the column's total, and you can name a reason for it. An average made by one very large year is noise that the mean hides. With twelve months to look at, one will look special by chance, so a month that passes all three conditions in a backtest still deserves a check on data the rule has not seen.

References

  • Bailey, D. H., Borwein, J., López de Prado, M., & Zhu, Q. J. (2014). Pseudo-Mathematics and Financial Charlatanism: The Effects of Backtest Overfitting on Out-of-Sample Performance. Notices of the American Mathematical Society, 61(5), 458–471.
  • Harvey, C. R., & Liu, Y. (2015). Backtesting. The Journal of Portfolio Management, 42(1), 13–28.
  • Magdon-Ismail, M., & Atiya, A. F. (2004). Maximum Drawdown. Risk, 17(10), 99–102.