[{"data":1,"prerenderedAt":768},["ShallowReactive",2],{"doc-analytics/historical-performance":3},{"id":4,"title":5,"appLink":6,"body":7,"category":750,"description":751,"extension":752,"level":753,"meta":754,"navigation":755,"next":756,"path":757,"related":758,"seo":761,"stem":762,"tags":763,"__hash__":767,"_path":757},"docs/docs/analytics/historical-performance.md","Historical Performance and Backtesting","/analytics/opportunities",{"type":8,"value":9,"toc":701},"minimark",[10,14,25,30,33,36,40,43,59,65,69,74,77,80,91,95,98,101,121,125,128,138,141,145,148,152,158,161,166,192,196,201,204,209,220,224,229,232,237,263,271,275,280,283,288,292,295,299,309,313,400,404,410,416,422,428,432,435,439,442,448,451,455,458,464,467,471,474,480,483,487,491,498,501,505,508,511,517,521,524,538,542,545,559,562,566,570,573,577,580,584,587,591,594,598,601,605,609,612,616,619,623,626,630,633,637,640,644,649,652,657,660,665,668,673,676,681,684,688,696],[11,12,5],"h1",{"id":13},"historical-performance-and-backtesting",[15,16,17],"blockquote",{},[18,19,20,24],"p",{},[21,22,23],"strong",{},"Educational Resource:"," This guide explains quantitative analysis and historical testing methods. These are educational tools for understanding market patterns, not predictive guarantees. All investments involve risk and past performance does not guarantee future results.",[26,27,29],"h2",{"id":28},"what-is-backtesting","What is Backtesting?",[18,31,32],{},"Backtesting is how we validate whether a pattern actually worked in the past. Think of it like checking the weather forecast's accuracy by comparing predictions to what actually happened.",[18,34,35],{},"For every opportunity score you see, we've tested that pattern against years of historical data to verify it's real - not random noise.",[26,37,39],{"id":38},"why-historical-testing-matters","Why Historical Testing Matters",[18,41,42],{},"Anyone can find a pattern that worked once or twice. The hard part is finding patterns that work consistently across:",[44,45,46,50,53,56],"ul",{},[47,48,49],"li",{},"Different market conditions (bull markets, bear markets, sideways markets)",[47,51,52],{},"Multiple companies and sectors",[47,54,55],{},"Various time periods",[47,57,58],{},"Different volatility regimes",[18,60,61,64],{},[21,62,63],{},"Our backtesting answers one question:"," \"If I saw this pattern before, what happened next?\"",[26,66,68],{"id":67},"how-we-validate-patterns","How We Validate Patterns",[70,71,73],"h3",{"id":72},"step-1-pattern-identification","Step 1: Pattern Identification",[18,75,76],{},"We scan historical data looking for relationships between events (like insider buying) and outcomes (like price changes).",[18,78,79],{},"Example pattern:",[81,82,87],"pre",{"className":83,"code":85,"language":86},[84],"language-text","WHEN insiders bought heavily (signal)\nWHAT HAPPENED to the stock 30 days later? (outcome)\n","text",[88,89,85],"code",{"__ignoreMap":90},"",[70,92,94],{"id":93},"step-2-historical-testing","Step 2: Historical Testing",[18,96,97],{},"We find every time this pattern appeared in our database and measure what happened next.",[18,99,100],{},"For a pattern to qualify, we need:",[44,102,103,109,115],{},[47,104,105,108],{},[21,106,107],{},"Minimum 30 occurrences"," - No cherry-picking",[47,110,111,114],{},[21,112,113],{},"Correlation ≥ 0.3"," - Pattern must be meaningful",[47,116,117,120],{},[21,118,119],{},"p-value \u003C 0.05"," - Less than 5% chance it's random",[70,122,124],{"id":123},"step-3-out-of-sample-validation","Step 3: Out-of-Sample Validation",[18,126,127],{},"This is the key that separates real patterns from overfitting.",[18,129,130,133,134,137],{},[21,131,132],{},"Training Period:"," We identify the pattern using data from 2010-2020\n",[21,135,136],{},"Testing Period:"," We verify it still works on data from 2021-2024 (data the model never saw)",[18,139,140],{},"If the pattern only works on training data, we discard it. We only show patterns that work on fresh data.",[26,142,144],{"id":143},"reading-backtest-results","Reading Backtest Results",[18,146,147],{},"When you view an opportunity's historical performance, here's what each metric tells you:",[70,149,151],{"id":150},"success-rate","Success Rate",[18,153,154,157],{},[21,155,156],{},"What it is:"," Percentage of times the pattern preceded the expected outcome",[18,159,160],{},"Example: \"72% success rate\" = the pattern worked 72 out of 100 times",[18,162,163],{},[21,164,165],{},"How to interpret:",[44,167,168,174,180,186],{},[47,169,170,173],{},[21,171,172],{},"Above 70%:"," Strong historical reliability",[47,175,176,179],{},[21,177,178],{},"60-70%:"," Good consistency",[47,181,182,185],{},[21,183,184],{},"50-60%:"," Moderate - requires additional confirmation",[47,187,188,191],{},[21,189,190],{},"Below 50%:"," Not worth trading (worse than coin flip)",[70,193,195],{"id":194},"average-return","Average Return",[18,197,198,200],{},[21,199,156],{}," The average price change when this pattern appeared historically",[18,202,203],{},"Example: \"+8.2% average return over 30 days\"",[18,205,206],{},[21,207,208],{},"Important caveats:",[44,210,211,214,217],{},[47,212,213],{},"Averages hide outliers (one +50% move can skew the average)",[47,215,216],{},"Check median return too (less influenced by extremes)",[47,218,219],{},"Look at distribution - are returns consistent or highly variable?",[70,221,223],{"id":222},"sample-size","Sample Size",[18,225,226,228],{},[21,227,156],{}," How many times we've tested this pattern",[18,230,231],{},"Example: \"n=156 occurrences\"",[18,233,234],{},[21,235,236],{},"Why it matters:",[44,238,239,245,251,257],{},[47,240,241,244],{},[21,242,243],{},"n ≥ 100:"," High confidence in the pattern",[47,246,247,250],{},[21,248,249],{},"n = 50-100:"," Moderate confidence",[47,252,253,256],{},[21,254,255],{},"n = 30-50:"," Use caution, smaller sample",[47,258,259,262],{},[21,260,261],{},"n \u003C 30:"," Not enough data (we filter these out)",[18,264,265,266],{},"Learn more: ",[267,268,270],"a",{"href":269},"/docs/analytics/sample-size-importance","Sample Size Importance",[70,272,274],{"id":273},"time-periods-tested","Time Periods Tested",[18,276,277,279],{},[21,278,156],{}," The date range we validated this pattern across",[18,281,282],{},"Example: \"Tested across 2015-2024 (10 years)\"",[18,284,285,287],{},[21,286,236],{},"\nPatterns that work across different market regimes (2015 bull market, 2020 crash, 2022 bear market) are more robust than patterns that only worked in one environment.",[26,289,291],{"id":290},"real-example-insider-buying-pattern","Real Example: Insider Buying Pattern",[18,293,294],{},"Let's walk through actual backtest results for an insider buying pattern:",[70,296,298],{"id":297},"pattern-description","Pattern Description",[18,300,301,304,305,308],{},[21,302,303],{},"Signal:"," Net insider buying ≥ $500K over 20 days\n",[21,306,307],{},"Outcome:"," 30-day forward returns",[70,310,312],{"id":311},"backtest-results","Backtest Results",[314,315,316,332],"table",{},[317,318,319],"thead",{},[320,321,322,326,329],"tr",{},[323,324,325],"th",{},"Metric",[323,327,328],{},"Value",[323,330,331],{},"Interpretation",[333,334,335,346,356,367,378,389],"tbody",{},[320,336,337,340,343],{},[338,339,223],"td",{},[338,341,342],{},"n=156",[338,344,345],{},"Well-tested pattern",[320,347,348,350,353],{},[338,349,151],{},[338,351,352],{},"68%",[338,354,355],{},"Works more than 2/3 of the time",[320,357,358,361,364],{},[338,359,360],{},"Avg Return",[338,362,363],{},"+6.4%",[338,365,366],{},"Positive expected value",[320,368,369,372,375],{},[338,370,371],{},"Median Return",[338,373,374],{},"+4.2%",[338,376,377],{},"Typical outcome (less skewed)",[320,379,380,383,386],{},[338,381,382],{},"Correlation",[338,384,385],{},"r=0.58",[338,387,388],{},"Strong relationship",[320,390,391,394,397],{},[338,392,393],{},"p-value",[338,395,396],{},"\u003C0.001",[338,398,399],{},"Highly statistically significant",[70,401,403],{"id":402},"what-this-tells-us","What This Tells Us",[18,405,406,409],{},[21,407,408],{},"Reliability:"," With 156 tests and 68% success rate, this pattern has strong historical support.",[18,411,412,415],{},[21,413,414],{},"Expected Outcome:"," When this pattern appears, the median stock rose 4.2% over the next 30 days. The average is higher (6.4%) suggesting some big winners pulled the average up.",[18,417,418,421],{},[21,419,420],{},"Statistical Confidence:"," The p-value \u003C0.001 means there's less than 0.1% chance this is random. It's a real pattern.",[18,423,424,427],{},[21,425,426],{},"Practical Application:"," This is a high-quality setup. Not guaranteed, but historically it's worked more often than not.",[26,429,431],{"id":430},"understanding-performance-distribution","Understanding Performance Distribution",[18,433,434],{},"Historical performance isn't just about averages - it's about the range of outcomes.",[70,436,438],{"id":437},"best-case-scenario","Best Case Scenario",[18,440,441],{},"The top 10% of historical occurrences:",[81,443,446],{"className":444,"code":445,"language":86},[84],"+15% to +25% returns\n",[88,447,445],{"__ignoreMap":90},[18,449,450],{},"These are the home runs - but they're not typical.",[70,452,454],{"id":453},"typical-scenario","Typical Scenario",[18,456,457],{},"The middle 50% of historical occurrences:",[81,459,462],{"className":460,"code":461,"language":86},[84],"+2% to +8% returns\n",[88,463,461],{"__ignoreMap":90},[18,465,466],{},"This is what you should expect most of the time.",[70,468,470],{"id":469},"worst-case-scenario","Worst Case Scenario",[18,472,473],{},"The bottom 10% of historical occurrences:",[81,475,478],{"className":476,"code":477,"language":86},[84],"-5% to -12% returns\n",[88,479,477],{"__ignoreMap":90},[18,481,482],{},"Even strong patterns fail sometimes. This shows the downside risk.",[26,484,486],{"id":485},"limitations-of-historical-testing","Limitations of Historical Testing",[70,488,490],{"id":489},"_1-past-future","1. Past ≠ Future",[18,492,493,494,497],{},"The most important limitation: ",[21,495,496],{},"history doesn't repeat perfectly",".",[18,499,500],{},"Market conditions change. Regulatory environments shift. Technology evolves. A pattern that worked for 10 years might stop working tomorrow.",[70,502,504],{"id":503},"_2-survivorship-bias","2. Survivorship Bias",[18,506,507],{},"We can only test on companies that still exist. Companies that went bankrupt aren't in the database anymore.",[18,509,510],{},"This means historical returns might be slightly optimistic because they don't include complete failures.",[18,512,265,513],{},[267,514,516],{"href":515},"/docs/advanced/survivorship-bias","Survivorship Bias",[70,518,520],{"id":519},"_3-market-impact","3. Market Impact",[18,522,523],{},"Our backtests assume you could trade at historical prices. In reality:",[44,525,526,529,532,535],{},[47,527,528],{},"Large orders move the market",[47,530,531],{},"Liquidity varies",[47,533,534],{},"Slippage occurs",[47,536,537],{},"Trading costs matter",[70,539,541],{"id":540},"_4-regime-changes","4. Regime Changes",[18,543,544],{},"Market structure changes over time:",[44,546,547,550,553,556],{},[47,548,549],{},"Algorithm trading increased",[47,551,552],{},"Options markets grew",[47,554,555],{},"Information spreads faster",[47,557,558],{},"Retail participation exploded",[18,560,561],{},"A pattern from 2015 might work differently in 2024.",[26,563,565],{"id":564},"how-we-address-these-limitations","How We Address These Limitations",[70,567,569],{"id":568},"_1-out-of-sample-testing","1. Out-of-Sample Testing",[18,571,572],{},"We always test on data the model hasn't seen. This catches overfitting before it reaches you.",[70,574,576],{"id":575},"_2-multiple-time-periods","2. Multiple Time Periods",[18,578,579],{},"We validate across bull markets, bear markets, and everything in between. Patterns must work in different environments.",[70,581,583],{"id":582},"_3-statistical-rigor","3. Statistical Rigor",[18,585,586],{},"We use strict significance thresholds (p \u003C 0.05) and require minimum sample sizes (n ≥ 30).",[70,588,590],{"id":589},"_4-regular-revalidation","4. Regular Revalidation",[18,592,593],{},"We continuously retest patterns as new data arrives. If a pattern stops working, we remove it.",[70,595,597],{"id":596},"_5-transparent-reporting","5. Transparent Reporting",[18,599,600],{},"We show you the sample size, correlation strength, and confidence levels. You can judge quality yourself.",[26,602,604],{"id":603},"using-historical-performance-in-your-research","Using Historical Performance in Your Research",[70,606,608],{"id":607},"step-1-check-the-sample-size","Step 1: Check the Sample Size",[18,610,611],{},"Before anything else, verify n ≥ 50. Smaller samples are less reliable.",[70,613,615],{"id":614},"step-2-examine-success-rate","Step 2: Examine Success Rate",[18,617,618],{},"Look for patterns with ≥60% historical success rate for your risk tolerance.",[70,620,622],{"id":621},"step-3-understand-the-distribution","Step 3: Understand the Distribution",[18,624,625],{},"Don't just look at average returns. Check the range of outcomes. Can you handle the downside?",[70,627,629],{"id":628},"step-4-verify-statistical-significance","Step 4: Verify Statistical Significance",[18,631,632],{},"Confirm the correlation is strong (r ≥ 0.5) and the p-value is low (p \u003C 0.05).",[70,634,636],{"id":635},"step-5-consider-current-context","Step 5: Consider Current Context",[18,638,639],{},"Is the market regime similar to the historical testing period? Or have things changed?",[26,641,643],{"id":642},"common-questions","Common Questions",[18,645,646],{},[21,647,648],{},"Q: If the backtest shows 70% success rate, will my trade have a 70% chance of success?",[18,650,651],{},"A: Not exactly. The 70% reflects historical frequency. Your actual trade faces unique circumstances the backtest never saw. Think of it as \"similar setups worked 70% of the time historically.\"",[18,653,654],{},[21,655,656],{},"Q: Why don't you show me every pattern you test?",[18,658,659],{},"A: We filter aggressively. For every pattern you see, we tested dozens that failed our quality standards. We only show high-probability setups.",[18,661,662],{},[21,663,664],{},"Q: Can I see the raw backtest data?",[18,666,667],{},"A: Pro subscribers can export historical performance data for deeper analysis. The Opportunity Detail panel shows summary statistics for all users.",[18,669,670],{},[21,671,672],{},"Q: How often do you update backtests?",[18,674,675],{},"A: Continuously. As new data arrives, we revalidate patterns. If performance degrades, we adjust scores or remove the pattern.",[18,677,678],{},[21,679,680],{},"Q: What if a pattern stops working?",[18,682,683],{},"A: This happens. When we detect degradation, we reduce the pattern's weight in the score or remove it entirely. We monitor performance in real-time.",[26,685,687],{"id":686},"next-steps","Next Steps",[18,689,690,691,695],{},"Ready to understand the technical details? Learn about our ",[267,692,694],{"href":693},"/docs/advanced/backtesting-methodology","Backtesting Methodology"," to see how we build and validate patterns.",[18,697,698,699,497],{},"Want to understand why some patterns are more reliable? Read about ",[267,700,270],{"href":269},{"title":90,"searchDepth":702,"depth":702,"links":703},2,[704,705,706,712,718,723,728,734,741,748,749],{"id":28,"depth":702,"text":29},{"id":38,"depth":702,"text":39},{"id":67,"depth":702,"text":68,"children":707},[708,710,711],{"id":72,"depth":709,"text":73},3,{"id":93,"depth":709,"text":94},{"id":123,"depth":709,"text":124},{"id":143,"depth":702,"text":144,"children":713},[714,715,716,717],{"id":150,"depth":709,"text":151},{"id":194,"depth":709,"text":195},{"id":222,"depth":709,"text":223},{"id":273,"depth":709,"text":274},{"id":290,"depth":702,"text":291,"children":719},[720,721,722],{"id":297,"depth":709,"text":298},{"id":311,"depth":709,"text":312},{"id":402,"depth":709,"text":403},{"id":430,"depth":702,"text":431,"children":724},[725,726,727],{"id":437,"depth":709,"text":438},{"id":453,"depth":709,"text":454},{"id":469,"depth":709,"text":470},{"id":485,"depth":702,"text":486,"children":729},[730,731,732,733],{"id":489,"depth":709,"text":490},{"id":503,"depth":709,"text":504},{"id":519,"depth":709,"text":520},{"id":540,"depth":709,"text":541},{"id":564,"depth":702,"text":565,"children":735},[736,737,738,739,740],{"id":568,"depth":709,"text":569},{"id":575,"depth":709,"text":576},{"id":582,"depth":709,"text":583},{"id":589,"depth":709,"text":590},{"id":596,"depth":709,"text":597},{"id":603,"depth":702,"text":604,"children":742},[743,744,745,746,747],{"id":607,"depth":709,"text":608},{"id":614,"depth":709,"text":615},{"id":621,"depth":709,"text":622},{"id":628,"depth":709,"text":629},{"id":635,"depth":709,"text":636},{"id":642,"depth":702,"text":643},{"id":686,"depth":702,"text":687},"analytics","Learn how we validate opportunity scores using historical data and what backtesting tells us about pattern reliability","md","intermediate",{},true,"advanced/backtesting-methodology","/docs/analytics/historical-performance",[759,756,760],"analytics/understanding-drivers","analytics/sample-size-importance",{"title":5,"description":751},"docs/analytics/historical-performance",[764,750,765,766],"backtesting","validation","historical-data","uwqHnpQ5Fk9dVnUXBROgrnLR4pZuhu4PtyGz-_DvLlI",1785844391712]