Skip to content

Investing

Shankar Nath's GARP Strategy fetched 115% return! How?

4 April 20257 min readInvesting
FabTrader author portrait

FabTrader

GARP (Growth at a Reasonable Price) investing is a strategy that sits between value investing and growth investing, aiming to balance growth potential with reasonable valuation metrics. Popularized by legendary investor Peter Lynch, GARP seeks to identify companies where growth is undervalued rather than simply searching for cheap stocks.

In this article, I will revisit the GARP framework put forth by one of my favorite financial educator and YouTuber, Shankar Nath. He has done an excellent job of analyzing multiple frameworks already in vogue and has come forth with his own version, which, based on his back test, had yielded a whopping 115% return per year and managed to beat all other methodology.

I have built an automated python screen that will download the eligible stocks based on his framework and am hoping it will be of some use to you! In the video below, I also share my current profit/loss position of a small portfolio that I built using this method and promise to keep you posted on the progress every quarter, as part of my re-balancing ritual! Read on....

Understanding GARP Investing

Value Investing:

  • Focuses on companies trading below their intrinsic value.
  • Asks: "What is the stock worth today?"
  • Associated with Benjamin Graham’s investment philosophy.

Growth Investing:

  • Seeks companies with above-average growth potential.
  • Asks: "What will the stock be worth a few years from now?"
  • Linked to Philip Fisher’s investment strategy.

GARP Investing:

Focuses on companies whose growth is underpriced rather than simply cheap companies.

The PEG Ratio: A Core Component of GARP

One of the key metrics in GARP investing is the PEG ratio, calculated as:

PEG = Price-to-Earnings (PE) Ratio / EPS Growth Rate

  • PEG < 1: Undervalued stock
  • PEG = 1: Fairly valued stock
  • PEG > 1: Overvalued stock

Traditional growth investing primarily focuses on Earnings Per Share (EPS), but this approach has flaws. A company's growth rate changes over time, making EPS an inconsistent measure. Instead, GARP investors consider revenue growth alongside the PEG ratio for a more comprehensive valuation.

GARP Strategies Explored by Shankar Nath

Shankar Nath, a well-known YouTuber, explored multiple GARP investing methodologies. Here’s a breakdown of his analysis:

FrameworkCriteriaBack Test ResultsTraditional GARP Screening Approach(Historical PE 3 Year / EPS Growth 3 years) > 0 and
(Historical PE 3 Year / EPS Growth 3 years) < 1 and (EPS last year / EPS preceding year) > 20% and
Market Cap > 1000083 stocks selected with 113% annual return, with no stocks delivering negative returnsSOIC GARP FrameworkMarket Cap > 50000 crores and
YOY Quarterly sales growth > 15% and
YOY Quarterly profit growth > 20% and
Price to Earning < 3047 stocks selected with
110% annual returnEconomic Times FrameworkMarket Cap > 1000 and
Sales > 1000 and
Profit growth 5 years > 15% and
Expected Quarterly net profit > Net profit 3 quarters back and
PEG ration < 1131 stocks selected with a sample analysis of 10 stocks showed a 51% annual returnS&P 500 GARP Index ApproachGrowth (EPS and sales-per-share growth rates)
Quality (financial leverage, return on equity)
Value (earnings-to-price ratio)No back test was conducted for this model.

Shankar Nath’s Optimized GARP Strategy

Based on learnings from the above methods, Shankar Nath created his own GARP methodology with the following criteria:

  • Market Cap > 1,000 crores
  • Sales Revenue > 1,000 crores
  • PEG Ratio between 0 and 2
  • Sales Growth:
    • Last year > 15%
    • 3-year CAGR > 15%
    • 5-year CAGR > 15%
  • EPS Growth:
    • Last year > 15%
    • 3-year CAGR > 15%
    • 5-year CAGR > 15%
  • EPS (Last Year / Preceding Year) > 1.15
  • Expected Quarterly Net Profit > Net Profit 2 Quarters Ago

Backtest Result:

  • 27 stocks selected
  • 115% annual return, outperforming all previous strategies

Access this Screener online for Free

You can access this screener for free on our community toolset page.

Python Implementation of the automated Screener

I have built this automated python screener that can fetch stocks per strategy rules with a single click of a button! I have included along with it 3,6,12 month returns for each of those stocks. Depending on your investment horizon, one could choose to select the stocks that have delivered the maximum return for that time period chosen. Try this out and let me know if its useful
PS: This is not investment advice. This is just an automation script and hence should not be construed as advice. Consult your financial advisor before taking any investing decision.

"""
Automated Screener for Fetching GARP Strategy
Reference: Refer to Shankar Nath's GARP Investing video for detailed rules
https://www.youtube.com/watch?v=dnPqlybspi0

-- Dependencies to be installed --
pip install beautifulsoup4==4.11.2
pip install openpyxl
pip install pandas

Disclaimer:
The information provided is for educational and informational purposes only and
should not be construed as financial, investment, or legal advice. The content is based on publicly available
information and personal opinions and may not be suitable for all investors. Investing involves risks,
including the loss of principal.

Credits / Courtesy : Shankar Nath

Queries on feedback on the python screener can be sent to :
FabTrader ([email protected])
www.fabtrader.in
YouTube: @fabtraderinc
X / Instagram / Telegram :  @fabtraderinc
"""

import time
import pandas as pd

def fetchScreenerData(link):
    cache_index = None
    data = pd.DataFrame()
    current_page = 1
    page_limit = 100
    while current_page < page_limit:

        if current_page == 1:
            url=link
        else:
            url = f'{link}?page={current_page}'

        all_tables = pd.read_html(url, flavor='bs4')
        combined_df = pd.concat(all_tables)

        combined_df = combined_df.drop(
            combined_df[combined_df['S.No.'].isnull()].index)

        if len(combined_df.index) < 26:
            data = pd.concat([data, combined_df], axis=0)
            break

        data = pd.concat([data, combined_df], axis=0)
        current_page += 1
        time.sleep(1)
    data = data.iloc[0:].drop(data[data['S.No.'] == 'S.No.'].index)

    return data


pd.set_option("display.max_rows", None, "display.max_columns", None)

# Fetch 3 month return
garp3_link = 'https://www.screener.in/screens/2115435/garp3months/'
garp3_df = fetchScreenerData(garp3_link)
garp3_df = garp3_df[['Name', 'CMP  Rs.', '3mth return  %']]
garp3_df['CMP  Rs.'] = pd.to_numeric(garp3_df['CMP  Rs.'], errors='coerce')
garp3_df['3mth return  %'] = pd.to_numeric(garp3_df['3mth return  %'], errors='coerce')
garp3_df = garp3_df[garp3_df['3mth return  %'] > 0]
garp3_df.dropna(inplace=True)

# Fetch 6 month return
garp6_link = 'https://www.screener.in/screens/2115440/garp6months/'
garp6_df = fetchScreenerData(garp6_link)
garp6_df = garp6_df[['Name','6mth return  %']]
garp6_df['6mth return  %'] = pd.to_numeric(garp6_df['6mth return  %'], errors='coerce')
garp6_df = garp6_df[garp6_df['6mth return  %'] > 0]
garp6_df.dropna(inplace=True)

# Fetch 1 year return
garp12_link = 'https://www.screener.in/screens/2115445/garp12months/'
garp12_df = fetchScreenerData(garp12_link)
garp12_df = garp12_df[['Name','1Yr return  %']]
garp12_df['1Yr return  %'] = pd.to_numeric(garp12_df['1Yr return  %'], errors='coerce')
garp12_df = garp12_df[garp12_df['1Yr return  %'] > 0]
garp12_df.dropna(inplace=True)

# Merge 3 / 6 / 12 Months Returns data into a single dataset
merged_df = pd.merge(garp3_df, garp6_df, on='Name', how='inner')
merged_df = pd.merge(merged_df, garp12_df, on='Name', how='inner')
merged_df.dropna(inplace=True)

# Sort by 6 months return
merged_df.to_excel('D:/garp.xlsx', index=False)
merged_df = merged_df.sort_values(by=['6mth return  %'], ascending=False)

# Save final result in an excel
merged_df.to_excel('D:/garp.xlsx', index=False)
print(merged_df)
Conclusion:

GARP investing offers a powerful approach to stock selection, bridging the gap between growth and value investing. By considering the PEG ratio alongside revenue and profit growth, investors can better assess stocks with strong upside potential while avoiding overvaluation. Shankar Nath’s optimized GARP strategy demonstrated the highest backtested returns, making it a compelling methodology for investors looking for a balanced growth approach.

Current Position of the Model Portfolio (as of 31-Aug-2025)

Following is the current status of this portfolio. I have not managed to rebalance this yet. This investment started on the 26th of Sep 2024, which coincidentally was the time Nifty also plunged into a bear phase and has not recovered from that position yet. Nifty is down -7% and this portfolio is down 9.75%.

More from Investing