avatarSebastien M. Laignel

Summarize

Using Fundamental Analysis to Identify Undervalued Stocks

Published on 15th October 2023. No update yet.

In this analysis, we apply established financial criteria to our pre-selected universe of 1500 highly liquid U.S. stocks, aiming to uncover stocks that potentially stand undervalued.

Created with Midjourney: a quantitative analyst searching the magic combination of financial metrics to find undervalued stocks

Introduction

In the realm of investment, the identification of undervalued stocks is a fundamental task, demanding a rigorous analysis of financial indicators that reflect a company’s operational efficiency, liquidity, profitability, and market valuation. The methodology applied in this analysis is not arbitrary but rooted in a well-established financial framework. The chosen set of criteria, while not exhaustive, encompasses widely acknowledged and empirically substantiated financial metrics.

  1. Current Ratio: This liquidity ratio measures a company’s ability to satisfy its short-term liabilities with its short-term assets. A ratio above 1 indicates that the company can meet its obligations without additional cash flow, signifying operational stability.
  2. Profit Margin: Represented as a percentage, this metric illustrates the proportion of revenue retained as profit after accounting for fixed and variable costs. It is a direct measure of a company’s profitability on a per-dollar revenue basis.
  3. Return on Assets (ROA): ROA is an efficiency ratio that assesses a company’s ability to generate earnings from its assets. It is calculated by dividing net income by total assets. A higher ROA indicates more effective asset utilization.
  4. Return on Equity (ROE): This performance metric evaluates the profitability of a company in relation to shareholders’ equity. It is derived by dividing net income by shareholders’ equity, demonstrating the returns generated on the money invested by shareholders.
  5. Debt to Equity Ratio: A key indicator of financial leverage, this ratio compares a company’s total liabilities to its shareholders’ equity. A lower ratio suggests less reliance on debt for operational funding, which typically entails less risk. However, context is crucial, as industry standards can significantly vary.
  6. Price-to-Earnings (P/E) Ratio: A critical valuation tool, the P/E ratio is computed by dividing a company’s market value per share by its earnings per share. A lower ratio suggests a company could be undervalued. Nonetheless, this metric must be juxtaposed with industry norms and company growth projections.
  7. Price-to-Book (P/B) Ratio: This valuation ratio is calculated by dividing a company’s stock price by its book value per share. A lower P/B ratio might indicate that a company is undervalued, but an integral analysis is required, as it might also signal underlying corporate issues.
  8. Earnings Per Share (EPS): EPS is a profitability indicator showing a company’s earnings allocated to each outstanding share of common stock. It is used in calculating the P/E ratio and is a direct reflection of a company’s profitability.

This analysis navigates through a comprehensive dataset of 1500 stocks, systematically applying these criteria to distill a subset of stocks that potentially stand undervalued. The ensuing discourse delves into the specifics of this process, elucidating the rationale behind each criterion and the insights gleaned from this analytical exercise.

Step 1. Extraction of metrics

The 8 relevant metrics for the 1500 stocks universe generated by Finviz platform have been extracted by the below code:

import pandas as pd

# Load the dataset
data_path = 'finviz.xlsx'
data = pd.read_excel(data_path).set_index('Ticker')

# Define the column names corresponding to the metrics
columns_of_interest = [
    'Current Ratio',
    'Profit Margin',
    'Return on Assets',
    'Return on Equity',
    'LT Debt/Equity',  # updated from 'Debt to Equity Ratio'
    'P/E',
    'P/B',
    'EPS (ttm)'  # updated from 'EPS'
]

# Check if the updated columns exist in the dataset
existing_columns = [col for col in columns_of_interest if col in data.columns]

# Extract only the updated columns of interest
filtered_data_updated = data[existing_columns] if existing_columns else pd.DataFrame()

# Display the first few rows of the updated filtered dataset
print(filtered_data_updated.head())

Step 2. Desirable values

The desirable values for the listed metrics vary by industry and market conditions, but generally, investors often look for the following:

  1. Current Ratio: A higher ratio (e.g., above 1) indicates a company’s ability to pay its short-term obligations. Values above 1.5 are generally considered good, but this can depend heavily on the industry standard.
  2. Profit Margin: Higher is generally better, as it indicates more efficiency at turning revenue into profit. A good profit margin will also vary by industry, but a higher percentage is generally more favorable.
  3. Return on Assets (ROA): This shows how efficient management is at using its assets to generate profit. Higher percentages are generally better; a ROA above 5% is often considered good, though this can vary by industry.
  4. Return on Equity (ROE): A higher ROE indicates efficiency at generating income from shareholder investments. Above 10–15% is often considered good, but, again, standards can vary by industry.
  5. LT Debt/Equity: A lower ratio is generally better, suggesting less reliance on borrowing relative to equity. Values below 0.5 are often considered good, indicating a financially stable company, but some industries are more capital-intensive and typically operate with higher ratios.
  6. P/E Ratio: This varies widely by industry and market conditions, but generally, a lower P/E ratio could indicate undervalued stocks. However, extremely low values may also indicate a lack of investor confidence or underlying problems within the company.
  7. P/B Ratio: Similar to the P/E ratio, a lower P/B ratio might suggest that a stock is undervalued, but this can vary by industry and other factors. A P/B ratio under 1 can indicate potential undervaluation, though context is crucial.
  8. EPS (ttm): Higher values are generally better, indicating a company’s profitability. However, it’s important to also consider the context of the industry and the company’s growth phase.

Let’s include these constraints in the code:

# Define thresholds for each metric based on general desirable values
thresholds = {
    'Current Ratio': 1.5,  # should be greater than 1.5
    'Profit Margin': 0,  # should be positive, but the specific threshold can vary; here we consider any positive number as acceptable
    'Return on Assets': 0.05,  # should be greater than 5%
    'Return on Equity': 0.10,  # should be greater than 10%
    'LT Debt/Equity': 0.5,  # should be less than 0.5
    'P/E': (0, float('inf')),  # can vary significantly; here we don't set a specific threshold but exclude negative values
    'P/B': 1,  # should be less than 1
    'EPS (ttm)': 0  # should be positive
}

# Filter stocks based on these thresholds
filtered_stocks = filtered_data_updated[
    (filtered_data_updated['Current Ratio'] > thresholds['Current Ratio']) &
    (filtered_data_updated['Profit Margin'] > thresholds['Profit Margin']) &
    (filtered_data_updated['Return on Assets'] > thresholds['Return on Assets']) &
    (filtered_data_updated['Return on Equity'] > thresholds['Return on Equity']) &
    (filtered_data_updated['LT Debt/Equity'] < thresholds['LT Debt/Equity']) &
    (filtered_data_updated['P/E'] > thresholds['P/E'][0]) &  # excluding negative P/E values
    (filtered_data_updated['P/B'] < thresholds['P/B']) &
    (filtered_data_updated['EPS (ttm)'] > thresholds['EPS (ttm)'])
]

# Print the first few rows of the filtered stocks DataFrame
print(filtered_stocks.head())

Step 3. Conclusions

Our analytical process applied stringent financial metrics to 1500 liquid U.S. stocks, isolating 17 that exhibit potential undervaluation. This result, derived solely from quantitative analysis, serves as an initial filter, necessitating further comprehensive evaluation. Investors should proceed by incorporating a broader spectrum of qualitative and quantitative factors, acknowledging that this method forms just one facet of a robust investment appraisal.

Step 4. Out of sample testing and review

The identified 17 candidates will be consolidated into a virtual portfolio for subsequent performance tracking. Their future returns will be benchmarked against the SPY index, serving as a comparative standard. This approach will facilitate an objective assessment of the stocks’ real-world performance, contributing to a comprehensive review and validation of the selection criteria employed.

Virtual portfolio, equally balanced — set on 15th October 2023

We should compare its performance to market in the coming weeks.

Disclaimer: Investing in the stock market involves risks, including the potential loss of principal. The material here is educational and not meant as financial advice or a recommendation to buy or sell any security. Always conduct independent research and consult a licensed financial advisor before making investment decisions. Remember, past performance does not predict future outcomes.

Fundamental Analysis
Python
Us Stock Market
Recommended from ReadMedium