{"id":1770,"date":"2026-09-10T07:50:56","date_gmt":"2026-09-10T07:50:56","guid":{"rendered":"https:\/\/sharpely.in\/blogs\/?p=1770"},"modified":"2026-09-10T07:51:09","modified_gmt":"2026-09-10T07:51:09","slug":"backtesting-101-how-to-know-if-strategy-works","status":"publish","type":"post","link":"https:\/\/sharpely.in\/blogs\/backtesting-101-how-to-know-if-strategy-works\/","title":{"rendered":"Backtesting 101: How to Know If a Strategy Actually Works"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Every investor has an idea about what makes a good stock. Buy companies with strong earnings growth. Hold stocks above their 200-day moving average. Sell when profit margins start declining. These ideas feel logical. But logic is not evidence, and in investing, the gap between a plausible-sounding idea and one that actually works in practice can cost you years of capital.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Backtesting bridges that gap. It applies your investment rules systematically to historical data, simulates the trades those rules would have generated, and shows you, with actual numbers, what would have happened if you had followed those rules over a defined period. Done correctly, it is the closest thing to a scientific experiment that individual investors can run on their own strategies.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Done incorrectly, backtesting is one of the most dangerous tools in investing, because it can produce impressive-looking results that have no connection to how the strategy will actually perform going forward.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This article explains what backtesting is, how to interpret the metrics a backtest produces, why bias-free and point-in-time data is the non-negotiable foundation of any valid backtest, and the mistakes that make most backtests meaningless.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What Is Backtesting?<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A backtest simulates a strategy by applying a defined set of rules to historical data and tracking the hypothetical portfolio that would have resulted. At its core, it answers one question: <strong>if I had followed these rules in the past, what would have happened?<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A simple example: suppose your strategy is to buy the top 20 stocks ranked by 6-month price momentum from the Nifty 500 universe, hold them for one month, and then rebalance. A backtest would go back to, say, January 2020, identify which 20 stocks had the highest 6-month returns as of that date, simulate buying them in equal weights, hold for one month, sell, identify the new top 20 as of February 2020, buy again, and so on through September 2026. The result is a simulated portfolio with a complete return history.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">That return history can then be compared to a benchmark, typically the Nifty 50 or Nifty 500, and analysed across dozens of metrics: total return, annualised CAGR, volatility, maximum drawdown, win rate, Sharpe Ratio, and more.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The purpose is not to prove the strategy worked in the past; that is easy to engineer with enough data manipulation. The purpose is to <strong>build a well-founded expectation of how the strategy will behave going forward<\/strong>, based on how it behaved across a range of historical market conditions.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Why Bias-Free, Point-in-Time Data Is Everything<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The most important, and most commonly violated, principle in backtesting is the use of <strong>bias-free, point-in-time data<\/strong>. This is what separates a backtest that means something from one that produces an illusion of performance.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Survivorship Bias: The Most Common Trap<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Survivorship bias occurs when a backtest uses only the companies that <strong>currently exist<\/strong> in a universe, ignoring the companies that existed historically but have since been delisted, merged, or gone bankrupt. It is one of the most pervasive problems in retail backtesting.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Consider the Nifty 500. The current Nifty 500 is a list of the 500 companies that are successful enough to be in the index today. But in 2015, the Nifty 500 contained many different companies \u2014 some of which have since been removed because they underperformed, became insolvent, or were acquired. A backtest that uses the current Nifty 500 constituents and goes back to 2015 <strong>is effectively selecting its investment universe from the future<\/strong>; it knows which companies survived, and naturally avoids the ones that did not.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The result is an artificially inflated return, because the backtest never holds any company that went to zero or was delisted at a loss. In reality, any investor running that strategy in 2015 would have owned some of those companies. The backtest does not reflect what they would have experienced.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A survivorship-bias-free backtest uses a <strong>complete historical universe<\/strong> that includes all companies that were in the investment universe at the time, including those that subsequently failed. This is what separates a meaningful backtest from a flattering one.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Look-Ahead Bias: Using Information That Did Not Exist Yet<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Look-ahead bias occurs when a backtest uses data that would not have been available to an investor at the time the decision was being made. This is subtler than survivorship bias but equally damaging.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The most common example: financial data. A company&#8217;s Q1 FY26 results are filed with BSE in August 2026. If a backtest uses those results to make investment decisions for July 2026, before the results were filed, it has look-ahead bias. The strategy appears to know things that were not yet public information.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">This is why <strong>point-in-time data<\/strong> is essential. Every data point used in a backtest must reflect what was actually available to an investor at the exact moment the simulated decision was made, not what was later reported, revised, or restated. Revenue figures get restated. EPS estimates get revised. Index constituents get updated retroactively. A backtest that does not handle these correctly produces results that are literally impossible to have achieved.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>Overfitting: Designing Rules That Work in the Past But Not the Future<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Overfitting is the subtlest and most intellectually dangerous of the biases. It happens when a strategy is designed, consciously or unconsciously, by tweaking parameters until the backtest looks good, rather than starting from a logical thesis and testing it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">With enough parameters and enough tweaking, you can always make a strategy look impressive on historical data. Change the momentum lookback from 6 months to 7 months. Adjust the P\/E threshold from 25 to 22. Add a market cap filter. Each tweak improves the backtest slightly. By the time you have made twenty such adjustments, the strategy fits the historical data perfectly, and will almost certainly fail going forward, because you have optimised for noise rather than signal.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The antidote to overfitting is twofold. First, <strong>start from an economic or behavioural rationale<\/strong>, use factors and thresholds that have logical explanations for why they should work, not just ones that happened to work in your specific dataset. Second, <strong>test the strategy across multiple market regimes<\/strong>, bull markets, bear markets, sideways markets, high-volatility periods, and check that it holds up reasonably across all of them rather than working spectacularly in one specific period.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>How to Read a Backtest Report: The Metrics That Matter<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A well-constructed backtest generates dozens of metrics. Not all of them are equally important. Here is a structured guide to reading a backtest report \u2014 organised from the metrics that matter most to those that provide supporting context.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"540\" src=\"https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-4-1024x540.png\" alt=\"\" class=\"wp-image-1771\" srcset=\"https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-4-1024x540.png 1024w, https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-4-300x158.png 300w, https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-4-767x404.png 767w, https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-4-1536x810.png 1536w, https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-4-2048x1079.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>1. CAGR vs Benchmark CAGR: Does the Strategy Actually Outperform?<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The first and most obvious question: does the strategy beat the benchmark? <strong>CAGR (Compound Annual Growth Rate)<\/strong> is the annualised return of the strategy over the backtest period. Comparing it to the benchmark CAGR tells you whether the strategy adds value above simply holding an index fund.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A strategy that delivers 18% CAGR against a benchmark CAGR of 13% has outperformed by 5 percentage points annually. Compounded over 5 years, that is the difference between a \u20b910 lakh investment growing to \u20b922.9 lakh (strategy) versus \u20b918.5 lakh (benchmark).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">However, CAGR alone is insufficient. A strategy with a higher CAGR that also has significantly higher volatility and deeper drawdowns may not be worth the additional risk \u2014 which is why the metrics below are necessary complements.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>2. Cumulative Return: The Absolute Picture<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Cumulative return shows the total gain from the start to the end of the backtest period, not annualised. It is the simplest expression of what happened to a notional investment. Seeing <strong>a portfolio grow from \u20b910 lakh to \u20b924 lakh (+141%) against a benchmark growth of 37%<\/strong> over the same period immediately communicates the magnitude of outperformance in terms any investor can understand.<\/p>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"390\" src=\"https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-5-1024x390.png\" alt=\"\" class=\"wp-image-1772\" srcset=\"https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-5-1024x390.png 1024w, https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-5-300x114.png 300w, https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-5-767x292.png 767w, https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-5.png 1466w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>3. Maximum Drawdown: The Worst You Would Have Experienced<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Maximum drawdown (Max DD) measures the largest peak-to-trough decline in the portfolio&#8217;s value over the backtest period, the worst loss you would have experienced if you had invested at the worst possible time. This is the <strong>most important risk metric<\/strong> in a backtest.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A strategy with a Max DD of \u201335% is telling you: at some point in the backtest, if you had invested at the peak, you would have watched your portfolio lose 35% of its value before recovering. <strong>The question you must honestly answer is: could you have held through that?<\/strong> An investor who would have sold during a 35% drawdown \u2014 which most retail investors would \u2014 cannot practically use a strategy that requires holding through one.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Always compare the strategy&#8217;s Max DD to the benchmark&#8217;s Max DD. A strategy with a higher CAGR but also a significantly higher Max DD is taking on more risk to generate those returns. Whether that trade-off is acceptable depends entirely on your risk tolerance.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>4. Sharpe Ratio: Return Per Unit of Risk<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The <strong>Sharpe Ratio<\/strong> measures how much excess return the strategy generates for each unit of volatility it takes on. A higher Sharpe Ratio means more return per unit of risk, a more efficient strategy. The formula is: (Strategy Return \u2013 Risk-Free Rate) \u00f7 Standard Deviation of Returns.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As a rough guide: a Sharpe Ratio above 1.0 is generally considered good for an equity strategy; above 1.5 is strong. A strategy with a Sharpe of 1.3 vs a benchmark Sharpe of 0.5 is delivering significantly better risk-adjusted returns \u2014 not just higher raw returns, but higher returns relative to the volatility the investor has to absorb.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>5. Sortino Ratio: Penalising Only Downside Volatility<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">The Sortino Ratio is a refinement of the Sharpe Ratio. Where Sharpe penalises all volatility \u2014 both upside and downside \u2014 the <strong>Sortino Ratio only penalises downside volatility<\/strong> (returns below the minimum acceptable return). This is arguably more meaningful for investors who do not mind volatile upside but want to minimise volatile downside.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A strategy with a high Sortino Ratio relative to both its Sharpe and the benchmark&#8217;s Sortino indicates that most of its volatility is on the upside \u2014 the kind of volatility investors actually welcome.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>6. Alpha: What the Strategy Added Beyond Market Exposure<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Alpha measures the return generated by the strategy <strong>above and beyond what its market exposure would predict<\/strong>. A Beta of 1.03 and an Alpha of 20% means the strategy moved broadly in line with the market (beta close to 1) but generated 20 percentage points of additional annual return that cannot be explained by simply riding market direction. That additional return is the strategy&#8217;s value-add, its excess performance attributable to stock selection or timing rather than market exposure.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>7. RoMaD: Return Over Maximum Drawdown<\/strong><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">RoMaD (Return over Maximum Drawdown) is a practical risk-adjusted metric that divides the strategy&#8217;s annualised return by its maximum drawdown. It answers: for every rupee of maximum loss I would have had to absorb, how much annual return did I get?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A RoMaD of 1.4 means the strategy generated 1.4x its maximum drawdown in annual returns, a reasonable trade-off. The benchmark&#8217;s RoMaD is the comparison point. If the strategy&#8217;s RoMaD is significantly higher than the benchmark&#8217;s, the strategy is generating more return per unit of maximum downside risk \u2014 a strong signal of quality beyond raw performance.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>8. Calendar Year Returns: Does It Hold Up Across Different Markets?<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"237\" src=\"https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-6-1024x237.png\" alt=\"\" class=\"wp-image-1773\" srcset=\"https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-6-1024x237.png 1024w, https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-6-300x69.png 300w, https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-6-765x177.png 765w, https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-6.png 1460w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Calendar year returns break the backtest into annual slices and compare the strategy against the benchmark year by year. This is one of the most revealing sections of any backtest report because it shows <strong>whether the outperformance is consistent or concentrated in one or two lucky years<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A strategy that outperformed in 2023 (+14% vs +12%), 2024 (+31% vs +16%), 2025 (+30% vs +8%), and 2026 YTD (+24% vs \u20132%) is demonstrating consistent outperformance across multiple different market environments \u2014 a bull year, a volatile year, and a down year. That consistency is far more meaningful than a single year of spectacular outperformance with mediocre performance in all others.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Pay particular attention to <strong>down-market years<\/strong>, years where the benchmark was negative or flat. A good strategy should ideally show smaller losses than the benchmark in bad years (capital protection) while delivering larger gains in good years (upside participation). If the strategy only outperforms in strong bull markets but underperforms badly when markets fall, it is a leveraged market bet rather than a genuine alpha-generating strategy.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>9. Trade Summary Metrics: The Mechanical Reality<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"540\" src=\"https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-7-1024x540.png\" alt=\"\" class=\"wp-image-1774\" srcset=\"https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-7-1024x540.png 1024w, https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-7-300x158.png 300w, https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-7-768x405.png 768w, https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-7-1536x810.png 1536w, https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-7-2048x1081.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The trade summary shows the mechanics of how the strategy generates returns. Key metrics:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Win Rate:<\/strong> What percentage of individual trades were profitable. A win rate of 60% means 6 out of every 10 trades made money. Note that win rate alone is meaningless without knowing the average win and average loss sizes; a strategy with a 40% win rate but an average win 3x larger than the average loss is profitable overall.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Average Win vs Average Loss:<\/strong> The relationship between these two numbers is the strategy&#8217;s <strong>profit factor<\/strong>, the ratio of average gain to average loss. A strategy with an average win of 18% and an average loss of 4.5% has a profit factor of 4:1, meaning even with a win rate below 50%, the strategy is significantly profitable because winners are much larger than losers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Total Trades:<\/strong> A low number of trades can make statistical significance questionable. A strategy that made 15 trades over 3 years may look impressive but does not have enough data points to draw reliable conclusions. A strategy with 500+ trades provides much stronger statistical evidence that the results are not due to chance.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><strong>10. Trailing Returns: How It Looks Across Different Time Windows<\/strong><\/h3>\n\n\n\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"507\" src=\"https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-8-1024x507.png\" alt=\"\" class=\"wp-image-1775\" srcset=\"https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-8-1024x507.png 1024w, https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-8-300x148.png 300w, https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-8-766x379.png 766w, https:\/\/sharpely.in\/blogs\/wp-content\/uploads\/2026\/09\/image-8.png 1500w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Trailing returns show performance across multiple fixed windows ending on the backtest&#8217;s end date: month-to-date, 3 months, 6 months, 1 year, 3 years, 5 years. This is useful for understanding <strong>how the strategy has performed in recent periods relative to its longer-term average<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A strategy showing strong 1-year trailing returns that are significantly above its 3-year annualised CAGR is in a period of unusual outperformance, which may mean the strategy is overheated and due to revert, or it may reflect genuine acceleration. A strategy where recent trailing returns are below the long-term CAGR is in a period of relative underperformance, which may or may not be a concern depending on whether there is a logical reason for the weakness.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Advanced Risk Metrics: What the Numbers Below the Headline Tell You<\/strong><\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td><strong>Metric<\/strong><\/td><td><strong>What It Measures<\/strong><\/td><td><strong>What to Look For<\/strong><\/td><\/tr><tr><td>Volatility (ann.)<\/td><td>Standard deviation of returns, annualised<\/td><td>Lower is better for the same return. Compare to benchmark; significant excess volatility requires a commensurate return premium.<\/td><\/tr><tr><td>Daily VaR (Value at Risk)<\/td><td>Maximum expected daily loss at a 95% confidence level<\/td><td>A VaR of \u20132% means you should not expect to lose more than 2% on any given day more than 5% of the time. Higher VaR = higher tail risk.<\/td><\/tr><tr><td>Expected Shortfall (cVaR)<\/td><td>Average loss on the days when VaR is breached<\/td><td>More conservative than VaR, captures the severity of tail events, not just the probability of them. Important for understanding worst-case scenarios.<\/td><\/tr><tr><td>Longest Drawdown Days<\/td><td>How many consecutive days the portfolio was below its previous peak<\/td><td>A long drawdown duration tests investor patience. A strategy that takes 2 years to recover from a drawdown will see many investors abandon it before the recovery.<\/td><\/tr><tr><td>Win Quarter % \/ Win Year %<\/td><td>Percentage of quarters or years where strategy beat benchmark<\/td><td>High win-quarter and win-year percentages indicate consistent rather than lumpy outperformance. 75%+ win year is a strong signal.<\/td><\/tr><tr><td>Best\/Worst Month<\/td><td>The single best and single worst calendar month in the backtest<\/td><td>Shows the range of outcomes you might experience in any given month. Relevant for investors with shorter time horizons.<\/td><\/tr><tr><td>Skew<\/td><td>Asymmetry of the return distribution<\/td><td>Negative skew means the strategy occasionally has large losses (even if average performance is good). Positive skew is generally preferable \u2014 small frequent losses, occasional large gains.<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>What Makes a Backtest Trustworthy: A Checklist<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before trusting any backtest result, including your own, run through these questions:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>1. Is the universe survivorship-bias free?<\/strong> Does the backtest include companies that were in the universe at the time, including those that were subsequently delisted or went bankrupt? If the universe is only current constituents projected back in time, the results are inflated.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>2. Is point-in-time data used?<\/strong> Are financial metrics calculated using only data that was publicly available at the time each decision was made? If quarterly results filed in August are being used for July decisions, there is look-ahead bias.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>3. Does the strategy have an economic or behavioural rationale?<\/strong> Is there a logical reason why the strategy should work \u2014 a factor premium, a behavioural bias being exploited, an information edge? Or does the strategy appear to work only because it was tuned to fit the historical data?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>4. Has it been tested across multiple market regimes?<\/strong> Does the strategy hold up in bull markets and bear markets? In high-volatility and low-volatility environments? In large-cap-dominated periods and small-cap periods? A strategy that only works in one type of market is not a robust strategy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>5. Are transaction costs included?<\/strong> Brokerage, STT, exchange charges, and bid-ask spreads are real costs that compound over hundreds of trades. A strategy that generates 20% annual returns before costs but makes 200 trades per year with significant transaction costs per trade may net much less. Costs must be modelled realistically.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>6. Is the backtest period long enough?<\/strong> A 2-year backtest that happened to be a strong bull market proves very little. A good backtest covers at least one full market cycle, including a significant correction, to show how the strategy behaves across different conditions. Five to seven years is the minimum; ten years or more is meaningfully better.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>7. How many rules and parameters does the strategy have?<\/strong> Simpler strategies with fewer parameters are less likely to be overfit. A 20-condition strategy that produces excellent backtested results is far more suspicious than a 4-condition strategy with similar results \u2014 because the more conditions, the more opportunities to have tuned them to historical data.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Running a Backtest on sharpely<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">sharpely&#8217;s <a href=\"https:\/\/sharpely.in\/stocks\/build-custom-strategy\">Strategy Builder<\/a> includes a built-in backtest engine designed around the principles described above. The backtest uses <strong>survivorship-bias-free historical data<\/strong>, meaning the universe at each rebalancing date reflects the companies that actually existed and were tradeable at that time, not the current universe projected backwards. Financial data used for screening is point-in-time; the screener conditions at each rebalancing date use only data that was publicly available as of that date.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">When you build a strategy on sharpely, defining entry conditions, exit conditions, stop-loss rules, position sizing, and rebalancing frequency, the backtest simulates every rebalancing decision across the historical period you select. The output includes the full suite of metrics discussed in this article: portfolio growth vs benchmark, CAGR, Max Drawdown, Sharpe, Sortino, Alpha, RoMaD, calendar year returns, trailing returns, trade summary statistics, and the full range of risk metrics including VaR, Expected Shortfall, and drawdown analysis.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Transaction costs: STT, exchange charges, and other non-broker costs are modelled and shown separately, so you can see the net performance after realistic costs rather than a pre-cost figure that overstates what you would actually have earned.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The backtest report also includes <strong>trade logs<\/strong>, a record of every simulated buy and sell decision, which stock was traded, at what price, and what the outcome was. This lets you audit the strategy&#8217;s historical decisions rather than just accepting the aggregate statistics.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><strong>Key Takeaways<\/strong><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Backtesting is the closest thing to a scientific experiment for investment strategies.<\/strong> It applies defined rules to historical data and shows what would have happened, turning a hypothesis into evidence.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>The data quality is more important than the results.<\/strong> A backtest built on survivorship-biased or non-point-in-time data produces results that are literally impossible to have achieved. Bias-free, point-in-time data is the non-negotiable foundation of any valid backtest.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>CAGR is the headline; Max Drawdown is the truth.<\/strong> High CAGR with a drawdown you could not have psychologically held through is a strategy you cannot practically use. Always read both together.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Sharpe, Sortino, and RoMaD reveal whether the returns are efficient.<\/strong> A strategy that generates 20% CAGR with a Sharpe of 0.4 is taking on enormous risk for that return. One with 18% CAGR and a Sharpe of 1.4 is doing the same job far more efficiently.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Calendar year returns and trade statistics reveal whether results are consistent or lucky.<\/strong> Consistent outperformance across multiple different market environments, including a down year, is the strongest signal that a strategy has a genuine edge rather than good timing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>A great backtest is the beginning of the process, not the end.<\/strong> A strategy that passes all the checks above is worth deploying carefully, with small initial capital, monitored closely, and adjusted if its real-world performance diverges systematically from its backtest behaviour in ways that cannot be explained by market regime differences.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Every investor has an idea about what makes a good stock. Buy companies with strong earnings growth. Hold stocks above their 200-day moving average. Sell when profit margins start declining. These ideas feel logical. But logic is not evidence, and in investing, the gap between a plausible-sounding idea and one that actually works in practice &#8230; <a title=\"Backtesting 101: How to Know If a Strategy Actually Works\" class=\"read-more\" href=\"https:\/\/sharpely.in\/blogs\/backtesting-101-how-to-know-if-strategy-works\/\" aria-label=\"Read more about Backtesting 101: How to Know If a Strategy Actually Works\">Read more<\/a><\/p>\n","protected":false},"author":4,"featured_media":1776,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,11],"tags":[62,163,19,190,188,186,192,191,63,189,164,187],"class_list":["post-1770","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-investor-education","category-research-tools","tag-alpha","tag-backtesting","tag-cagr","tag-calendar-year-returns","tag-max-drawdown","tag-point-in-time-data","tag-quantitative-investing","tag-romad","tag-sharpe-ratio","tag-sortino-ratio","tag-strategy-builder","tag-survivorship-bias","generate-columns","tablet-grid-50","mobile-grid-100","grid-parent","grid-33"],"_links":{"self":[{"href":"https:\/\/sharpely.in\/blogs\/wp-json\/wp\/v2\/posts\/1770","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/sharpely.in\/blogs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/sharpely.in\/blogs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/sharpely.in\/blogs\/wp-json\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/sharpely.in\/blogs\/wp-json\/wp\/v2\/comments?post=1770"}],"version-history":[{"count":1,"href":"https:\/\/sharpely.in\/blogs\/wp-json\/wp\/v2\/posts\/1770\/revisions"}],"predecessor-version":[{"id":1777,"href":"https:\/\/sharpely.in\/blogs\/wp-json\/wp\/v2\/posts\/1770\/revisions\/1777"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/sharpely.in\/blogs\/wp-json\/wp\/v2\/media\/1776"}],"wp:attachment":[{"href":"https:\/\/sharpely.in\/blogs\/wp-json\/wp\/v2\/media?parent=1770"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/sharpely.in\/blogs\/wp-json\/wp\/v2\/categories?post=1770"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/sharpely.in\/blogs\/wp-json\/wp\/v2\/tags?post=1770"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}