In partnership with

The $4 Billion Problem Hiding in Nearly Every Fast-Food Location

You show up to your favorite fast-food restaurant for a quick meal. But the line is too long, and you’re starving. So you bail.

You’re not alone. 93% of monthly fast-food visitors in America say their top frustration is long lines. And while you miss out on chicken nuggets and fries, restaurant owners lose significant revenue they can’t afford to miss.

So brands like White Castle use Miso Robotics’ AI-powered kitchen restaurant robots to run their fry stations, keeping kitchen operations smooth, workers safe, and customers happy.

Aided by a collaboration with NVIDIA, Miso’s AI-powered Flippy Fry Station robot works 2X faster than average fry cooks. That means operators serve more customers and unlock up to 3X more profits per location. And that means much shorter lines for you.

This is a paid advertisement for Miso Robotics’ Regulation A offering. Please read the offering circular at invest.misorobotics.com.


Elite Quant Plan – 14-Day Free Trial (This Week Only)

No card needed. Cancel anytime. Zero risk.

You get immediate access to:

  • Full code from every article (including today’s HMM notebook)

  • Private GitHub repos & templates

  • All premium deep dives (3–5 per month)

  • 2 × 1-on-1 calls with me

  • One custom bot built/fixed for you

Try the entire Elite experience for 14 days — completely free.

→ Start your free trial now 👇

(Doors close in 7 days or when the post goes out of the spotlight — whichever comes first.)

See you on the inside.

👉 Upgrade Now

🔔 Limited-Time Holiday Deal: 20% Off Our Complete 2026 Playbook! 🔔

Level up before the year ends!

AlgoEdge Insights: 30+ Python-Powered Trading Strategies – The Complete 2026 Playbook

30+ battle-tested algorithmic trading strategies from the AlgoEdge Insights newsletter – fully coded in Python, backtested, and ready to deploy. Your full arsenal for dominating 2026 markets.

Special Promo: Use code SPRING2026 for 20% off

Valid only until March 20, 2026 — act fast!

👇 Buy Now & Save 👇

Instant access to every strategy we've shared, plus exclusive extras.

— AlgoEdge Insights Team

Premium Members – Your Full Notebook Is Ready

The complete Google Colab notebook from today’s article (with live data, full Hidden Markov Model, interactive charts, statistics, and one-click CSV export) is waiting for you.

Preview of what you’ll get:

Inside:

  • Automated Data Retrieval: A "plug-and-play" script that fetches 14 years of historical data for 40+ S&P 500 giants directly from Yahoo Finance.

  • The "Overreaction" Engine: A custom Python implementation of the Rolling Z-Score, used to mathematically identify when the market has "lost its cool" (statistical extremes).

  • Contrarian Strategy Backtest: A full simulation of the De Bondt & Thaler hypothesis—automatically buying the "Losers" and shorting the "Winners" to see if they actually revert to the mean.

  • Dynamic Holding Logic: Interactive code that manages "time-in-market," simulating a 60-day recovery window to capture the "snap-back" effect of human emotion.

  • Benchmark Comparison: A side-by-side performance overlay against the S&P 500 (SPY), proving whether "buying the blood in the streets" actually beats a simple index fund.

  • Risk & "Pain" Profiling: Visual Drawdown Analysis that shows the terrifying dips you would have had to endure (like the 2020 crash) to achieve the strategy's returns.

  • Version-Proof Code: A refined, robust script that bypasses common yfinance Multi-Index errors, making it beginner-friendly even for those new to Pandas.

  • Behavioral Finance Lab: A sandbox for curiosity—users can tweak the "panic threshold" (Z-score) or holding periods to discover their own unique market signals.

Free readers – you already got the full breakdown and visuals in the article. Paid members – you get the actual tool.

Not upgraded yet? Fix that in 10 seconds here👇

Google Collab Notebook With Full Code Is Available In the End Of The Article Behind The Paywall 👇 (For Paid Subs Only)

1. Introduction

Have you ever overreacted to something, only to reflect later and think, ‘Maybe I went a bit overboard’? Now, imagine the stock market — a vast, complex entity influenced by countless decisions made every second — doing the same thing. Getting caught up in the frenzy of news, events, and sentiments, and perhaps swinging more dramatically than the situation warrants.

Back in 1985, De Bondt and Thaler asked a similar question with their paper, “Does the Stock Market Overreact?” that challenged the longstanding efficient market hypothesis (EMH). The EMH, in its essence, postulates that stock prices reflect all available information, implying a nearly impossible task of consistently outperforming the market through either expert analysis or sheer luck.

De Bondt and Thaler, through their research, suggested otherwise. They argued that the market, driven by human investors, might sometimes swing to extremes — overreacting to both good and bad news. Their seminal work laid the foundation for what we now know as behavioral finance, a field that delves deep into the psychological intricacies of investor decisions.

Wall Street Just Named the Most Crowded Trades of 2026

AI stocks. Metals. Crypto.

Surprise, surprise; gold crashed 16%. Silver plunged 34%. Bitcoin dropped to 1 year lows.

All supposedly "uncorrelated" assets moving in lockstep largely because of overleveraged margin.

JPM strategists warn that the same leverage is still a risk.

Those markets may be recovering now, but cascading liquidations could trigger quickly across several asset classes simultaneously.

So much for diversifying away risk, right?

But get this–

70,819 everyday investors have allocated $1.3 billion fractionally across 500+ exclusive investments. 

Not real estate or PE… Blue-chip art. Sounds crazy, right?

Now it’s easy to invest in art featuring legends like Banksy, Basquiat, and Picasso, thanks to Masterworks.

They do the heavy lifting from acquisition to sale, so you can diversify with the strategy typically limited to the ultra-wealthy.

(Past sales delivered net returns like 14.6%, 17.6%, and 17.8% on works held longer than a year.)*

*Investing involves risk.  Past performance is not indicative of future returns. Important Reg A disclosures: masterworks.com/cd

Figure 1. Abstract of the seminal 1985 paper ‘Does the Stock Market Overreact?’ by De Bondt and Thaler, alongside their iconic graph illustrating the performance divergence between ‘winners’ and ‘losers’ portfolios.

Decades have passed since this influential paper was published, and the financial landscape has dramatically evolved. We’ve witnessed the rise of algorithmic trading, the dot-com bubble, the 2008 financial crisis, and the unprecedented market behaviors of the 2020s. With all these changes and the tools of the digital age at our disposal, one can’t help but wonder:

Does the stock market still overreact in this era?

In this article, we attempt to revisit this classic financial conundrum using modern data and tools. While we make no claims of academic rigor or statistical significance, the results are, to say the least, intriguing. Python code is also provided for you to test it yourself.

2. Market Efficiency and Human Psychology

It’s imperative to first understand the backdrop against which De Bondt and Thaler presented their findings. This background sets the stage for our exploration and underscores the significance of the original paper’s findings.

The Efficient Market Hypothesis (EMH):

At the heart of modern financial theory lies the Efficient Market Hypothesis (EMH). In its most basic form, the EMH posits that stock prices instantly and fully reflect all available information. This implies that, at any given time, asset prices are at their “fair value,” making it impossible to consistently outperform the market, whether through expert stock selection or timing.

The EMH is built on the presumption that a vast number of rational profit-seekers actively participating in the market correct any minor mispricings. Essentially, any new information relevant to an asset’s value would be immediately incorporated into its price.

This hypothesis has three main forms:

  1. Weak Form: Stock prices reflect all past publicly available information, including past price and volume information. Thus, techniques like technical analysis cannot yield consistent profits.

  2. Semi-Strong Form: Stock prices adjust rapidly to new public information. Neither technical nor fundamental analysis can ensure above-average returns.

  3. Strong Form: Stock prices reflect all public and private information, making it impossible for even insiders to gain an edge.

Challenging the EMH: Overreaction and Price Reversals

De Bondt and Thaler’s paper threw a wrench in the traditional understanding of the EMH. They argued that stock prices do not always rationally reflect all available information. Instead, they posited that investor psychology could cause prices to swing excessively in reaction to news or events — in other words, the market tends to overreact.

Their research found patterns suggesting that stocks that had performed exceptionally well or poorly over a given time frame experienced price reversals in subsequent periods. Essentially, “winners” would eventually underperform the market, while “losers” would outperform. This was a direct challenge to the EMH, which would argue against such predictable patterns.

This discovery was monumental. It bridged the gap between psychology and finance, giving birth to the burgeoning field of behavioral finance. This domain seeks to understand how cognitive biases can drive investor decisions and influence market dynamics.

Good Credit Could Save You $200,000 Over Time

Better credit means better rates on mortgages, cars, and more. Cheers Credit Builder is an affordable, AI-powered way to start — no score or hard check required. We report to all three bureaus fast. Many users see 20+ point increases in months. Cancel anytime with no penalties or hidden fees.

3. Python Implementation Methodology

To properly assess the hypothesis presented by De Bondt and Thaler in the modern age, we employ a mix of financial data analysis, statistical methods, and contemporary trading logic. Let’s discuss the specifics before we present the results

Data Source:

  • Fetching with yfinance: We used yfinance, a Python library that sources historical stock data directly from Yahoo Finance.

import yfinance as yf
  • Time Frame: The focus lies between 2010 and 2023, ensuring we capture the latest market behaviors while maintaining a broad enough window for meaningful insights.

data = yf.download(tickers, start="2010-01-01", end="2023-21-09")['Adj Close']
  • Tickers: Our analysis revolves around some of the most prominent names in the corporate world. From tech giants like Apple (AAPL), Microsoft (MSFT), and Alphabet (GOOGL), to stalwarts in various sectors such as Pfizer (PFE), Coca-Cola (KO), and Boeing (BA), our selection includes a diverse mix of 40 corporations. These companies, in many ways, can be seen as a microcosm of the larger market, making them excellent candidates for this study. They are all part of the SP&500.

 tickers = [
    'AAPL',  # Apple Inc.
    'MSFT',  # Microsoft Corp.
    'GOOGL', # Alphabet Inc. (Google)
    'AMZN',  # Amazon.com Inc.
    'META',  # META Inc.
    'TSLA',  # Tesla Inc.
    'BRK-B', # Berkshire Hathaway Inc.
    'NVDA',  # NVIDIA Corp.
    'JPM',   # JPMorgan Chase & Co.
    'JNJ',   # Johnson & Johnson
    'V',     # Visa Inc.
    'PG',    # Procter & Gamble Co.
    'UNH',   # UnitedHealth Group Inc.
    'MA',    # Mastercard Inc.
    'DIS',   # Walt Disney Co.
    'HD',    # Home Depot Inc.
    'BAC',   # Bank of America Corp.
    'VZ',    # Verizon Communications Inc.
    'PYPL',  # PayPal Holdings Inc.
    'ADBE',  # Adobe Inc.
    'CMCSA', # Comcast Corp.
    'NFLX',  # Netflix Inc.
    'KO',    # Coca-Cola Co.
    'NKE',   # Nike Inc.
    'MRK',   # Merck & Co Inc.
    'PFE',   # Pfizer Inc.
    'WMT',   # Walmart Inc.
    'T',     # AT&T Inc.
    'PEP',   # PepsiCo Inc.
    'INTC',  # Intel Corp.
    'CSCO',  # Cisco Systems Inc.
    'COST',  # Costco Wholesale Corp.
    'ABBV',  # AbbVie Inc.
    'NEE',   # NextEra Energy Inc.
    'MDT',   # Medtronic Plc.
    'TXN',   # Texas Instruments Inc.
    'GE',    # General Electric Co.
    'ACN',   # Accenture Plc.
    'QCOM',  # Qualcomm Inc.
    'LLY',   # Eli Lilly and Co.
    'MCD',   # McDonald's Corp.
    'DHR',   # Danaher Corp.
    'AVGO',  # Broadcom Inc.
    'LIN',   # Linde Plc.
    'CRM',   # Salesforce.com Inc.
    'BA'     # Boeing Co.
]

Z-scores & Significance:

  • The Role of Z-scores: In statistics, a Z-score indicates how many standard deviations an element is from the mean. In our context, it aids in identifying extreme stock returns, either positive or negative.

mean = returns.rolling(window=252).mean()
std = returns.rolling(window=252).std()
z_scores = (returns - mean) / std
  • Thresholds Explained: The thresholds of -1.5 and 1.5 were chosen to capture the most extreme daily price movements, representing the top 6.68% of unusual price swings. In this context, stocks with Z-scores below -1.5 are identified as potential “losers,” indicating they’ve underperformed significantly. Conversely, those with Z-scores above 1.5 are seen as potential “winners,” having demonstrated notable outperformance.

buy_signals = z_scores < -1.5
sell_signals = z_scores > 1.5

Building Portfolios:

  • Capturing Extremes: Using the Z-score thresholds, we construct two portfolios. One that “buys” the losers (those the market might have overly punished) and another that “sells” the winners (those possibly riding a wave of excessive optimism).

winners_portfolio = pd.DataFrame(...)
losers_portfolio = pd.DataFrame(...)
  • Holding Period: After buying a loser or selling a winner, a holding period of 60 days (approximately 3 months) is observed before liquidating the position. This duration allows the market ample time for potential corrections, either from over-pessimism or over-optimism.

holding_period = 60
  • Position Logic: For each stock and trading day, positions are entered based on the buy or sell signals. These positions are held for the predefined period, ensuring we capture any potential reversals post overreaction.

for ticker in tickers:
    ...

Visualization

Lastly, to truly understand the implications of our strategy, we visualize the cumulative returns of both portfolios. This graphical representation provides a clear picture of how buying losers and selling winners would have performed over the selected time frame.

Putting it all together we get the following graph:

import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt

# Fetch data
data = yf.download(tickers, start="2010-01-01", end="2024-01-01")['Adj Close']
returns = data.pct_change().dropna()

# Calculate z-scores with a 252-day rolling window
mean = returns.rolling(window=252).mean()
std = returns.rolling(window=252).std()
z_scores = (returns - mean) / std

buy_signals = z_scores < -1.5
sell_signals = z_scores > 1.5

holding_period = 60 

# Portfolios to hold our positions
winners_portfolio = pd.DataFrame(index=returns.index, columns=returns.columns).fillna(0.0)
losers_portfolio = pd.DataFrame(index=returns.index, columns=returns.columns).fillna(0.0)

for ticker in tickers:
    position = 0  # -1 for short, 0 for neutral, 1 for long
    days_held = 0
    
    for date, value in returns[ticker].iteritems():
        if days_held > 0:
            days_held -= 1
            if days_held == 0:
                position = 0

        if buy_signals[ticker][date] and position == 0:
            losers_portfolio.at[date, ticker] = 1
            position = 1
            days_held = holding_period

        elif sell_signals[ticker][date] and position == 0:
            winners_portfolio.at[date, ticker] = -1
            position = -1
            days_held = holding_period

# Daily Portfolio Returns
winners_returns = winners_portfolio.shift(1) * returns
losers_returns = losers_portfolio.shift(1) * returns

# Cumulative Portfolio Returns
cumulative_winners_returns = (1 + winners_returns).cumprod().mean(axis=1) - 1
cumulative_losers_returns = (1 + losers_returns).cumprod().mean(axis=1) - 1

# Plotting
plt.figure(figsize=(25, 8))
cumulative_winners_returns.plot(label="Winners Portfolio")
cumulative_losers_returns.plot(label="Losers Portfolio")
plt.title("Cumulative Returns of Winners and Losers Portfolio", fontsize = 20)
plt.legend(fontsize = 20)
plt.show()

Figure 2. Cumulative Returns of Stock Portfolios: Analyzing ‘Winners’ vs. ‘Losers’ over a 14-year span, based on Z-score thresholds.

4. Results

For those familiar with De Bondt and Thaler’s seminal work, the shape of this graph might evoke a sense of déjà vu. It’s striking how our findings, even after spanning different years and companies, echo the original paper’s visual representation. The resemblance is a testament to the enduring nature of market behavior patterns.

However, while the visual similarity is compelling, it’s imperative to approach such results with a degree of caution. Financial data, by nature, is rife with nuance, and slight tweaks in parameters can yield considerably different outcomes. For instance, modifying the rolling window for z-score calculation, adjusting the holding period, or even changing the z-score thresholds might produce a graph that diverges from our presented results. Moreover, the data set’s inherent noise and the vast array of influencing factors in the stock market, like geopolitical events, economic policies, or sector-specific news, can impact stock movements significantly.

Our exploration doesn’t claim statistical significance or uphold the strict standards of academic rigor. We are merely making a visual observation. While our results intriguingly mirror those of De Bondt and Thaler’s work, they should be interpreted as a curious observation rather than a concrete affirmation of the overreaction hypothesis. Delving deeper into this subject with a comprehensive methodology, considering potential biases, and validating results across multiple data sets would be necessary for a more definitive conclusion.

5. Discussion

Overreaction Hypothesis Revisited: The resemblance between our chart and that from De Bondt and Thaler’s original work poses the question: Does the stock market still overreact? Our analysis suggests that these patterns of overreaction, at least visually, persist.

Performance Patterns: In our analysis, the “losers” portfolio — or stocks with notably negative returns in the past — seemed to rebound in subsequent periods. Conversely, the “winners” portfolio, representing stocks that previously outperformed, appeared to correct downward over time. This cyclic behavior hints at a market that swings like a pendulum, oscillating between optimism and pessimism.

Limitations and Considerations: While the parallels are fascinating, it’s essential to approach our findings with caution. Several factors weren’t considered:

  • Transaction Costs: Active trading strategies can incur significant costs, which may affect profitability.

  • Market Events: Over the last decade, several market-shaping events occurred which can influence stock behaviors.

  • Global Factors: With an increasingly interconnected global economy, external shocks or events can significantly sway market sentiments.

6. Conclusion

Our exploration shed light on the persistent nature of the overreaction hypothesis. However, the financial markets are nuanced and ever-changing, so our findings should be viewed as a piece of a larger puzzle. The stock market’s intricacies warrant ongoing scrutiny. For the inquisitive, there’s more to uncover — experiment with different parameters or asset categories. In finance, while some patterns endure, the real excitement is in the journey of exploration.

logo

Subscribe to our premium content to read the rest.

Become a paying subscriber to get access to this post and other subscriber-only content.

Upgrade

Keep Reading