FinLab

New High Strategy: Building a 48% Annual Return Momentum System with AI

January 11, 2026

Buy Stocks at All-Time Highs? Are You Crazy?

That's most investors' first reaction.

But let's look at the data: In our 2015-2025 Taiwan stock backtest, simply buying stocks hitting "300-day highs" achieved an annualized return of 18.1% with a Sharpe ratio of 0.76.

With additional revenue screening optimization, performance can improve to 48% annualized return and 1.55 Sharpe ratio.

In this article, I'll guide you through exploring this phenomenon with AI and building an executable quantitative strategy.

Note: The following are historical backtest results and do not represent future performance.


Market Phenomenon: How Do Stocks Perform After Hitting New Highs?

Before building a strategy, let's verify a hypothesis: Do stocks hitting new highs really continue to rise?

Use FinLab to analyze Taiwan stocks hitting N-day highs, testing backtest performance across different N values (20, 60, 120, 250, 300 days).

Show Code
from finlab import data
from finlab.backtest import sim
import pandas as pd
 
close = data.get('price:收盤價')
volume = data.get('price:成交股數')
 
# Test different new high periods
results = []
for n_days in [20, 60, 120, 250, 300]:
    # Price hits N-day high
    price_new_high = (close == close.rolling(n_days).max())
 
    # Liquidity filter
    volume_filter = volume.average(20) > 500 * 1000
 
    # Build position
    position = price_new_high & volume_filter
 
    # Backtest
    report = sim(position.loc['2015':], resample='M', position_limit=0.1, upload=False)
    stats = report.get_stats()
 
    results.append({
        'N-Day High': n_days,
        'CAGR': f"{stats['cagr']:.1%}",
        'Sharpe': f"{stats['monthly_sharpe']:.2f}",
        'Max DD': f"{stats['max_drawdown']:.1%}"
    })
 
pd.DataFrame(results)
N-Day High CAGR Sharpe Max DD
20 8.8% 0.47 -35.5%
60 10.2% 0.51 -40.4%
120 12.3% 0.59 -37.3%
250 16.7% 0.74 -35.3%
300 18.1% 0.76 -36.4%

The data clearly shows: the longer the new high period, the better the performance.

300-day new high returns are more than 2x the 20-day new high. This validates the "Momentum Effect"—stocks that performed strongly tend to continue performing strongly.


Why Does "Chasing Highs" Actually Work?

From a behavioral finance perspective, this phenomenon can be explained:

1. Loss Aversion Psychology

Nobel laureate Daniel Kahneman's research found that the pain of loss is 2.5 times the joy of gain. This causes most people to "fear buying high."

But when a stock hits a new high, all holders are profitable with no "trapped seller pressure." The more people fear buying high, the more undervalued these stocks become.

2. Momentum Effect

Academic research confirms: stocks that performed well over the past 6-12 months tend to continue performing well over the next 3-6 months. New highs are the strongest momentum signal.


Building the Basic Strategy with AI

Since the phenomenon exists, let's turn it into an executable strategy.

Build a "300-day new high" basic strategy:

  • Entry condition: Stock price hits 300-day high
  • Liquidity: 20-day average volume > 500 lots
  • Monthly rebalancing, 10% position limit per stock
  • Backtest period: 2015 to present
Show Code
from finlab import data
from finlab.backtest import sim
 
# Get data
close = data.get('price:收盤價')
volume = data.get('price:成交股數')
 
# Condition: 300-day new high + liquidity filter
volume_filter = volume.average(20) > 500 * 1000
position = (close == close.rolling(300).max()) & volume_filter
 
# Run backtest (monthly rebalancing)
report = sim(
    position.loc['2015':],
    resample='M',
    position_limit=0.1,
    upload=False
)
 
# Generate professional report
report.to_html('cumulative_returns.html')

Basic Strategy Performance

Metric Value
CAGR 18.1%
Sharpe Ratio 0.76
Max Drawdown -36.4%
Total Return 510%

Performance is decent, but there are two obvious problems:

  1. Max drawdown -36.4% — Too volatile, many can't hold through
  2. Sharpe ratio only 0.76 — Room for improvement in risk-adjusted returns

Can we improve this?


Problem Analysis: Why Do False Breakouts Occur?

Analyze failed cases of the "new high" strategy. What common characteristics do these stocks share?

Observations show many "false breakouts" have these characteristics:

  1. Revenue didn't follow — Stock hit new high but revenue flat or declining
  2. Insufficient momentum — Low RSI, just a temporary bounce
  3. Liquidity issues — Small caps easily pumped then dumped

This gives us optimization direction: add fundamental screening to filter false breakouts.

Want to build your own strategy?

Describe your stock-picking ideas in natural language. AI automatically validates, backtests, and gives you answers

Start Free