A Comparative Analysis of The 3 Best U.S. Growth Stocks in Q1’23 – 1. WMT

Featured Photo by Karolina Grabowska on Pexels

  • The U.S. labor market remains strong despite lingering macroeconomic headwinds. Moreover, consumer spending has been largely resilient in the face of high inflation and steep interest-rate hikes. According to Bank of America (BAC), their credit and debit card spending per household rose 5.1% year-over-year in January, compared to 2.2% in December 2022.
  • The goal of this post is to perform a comprehensive QC assessment of the best selected U.S. growth stocks in Q1’23. These stocks are A (Strong Buy) rated in the POWR Ratings system. The POWR Ratings assess stocks by 118 different factors, each with its own weighting.
  • It is important to verify the A-score in a comparative technical analysis of two independent digital stock screeners such as TradingView and the Python Algo Trading algorithm.
  • Following StockNews, the focus is on the best 3 growth stocks such as Walmart Inc. (WMT) , AstraZeneca PLC (AZN), and LSI Industries Inc. (LYTS).

Let’s begin with WMT that operates a chain of hypermarkets (also called supercenters), discount department stores, and grocery stores in the United States, headquartered in Bentonville, Arkansas.

Table of Contents

  1. StockNews Rating
  2. TradingView Screening
  3. Algo Trading Testing
  4. Summary
  5. Explore More

StockNews Rating

  • Walmart Inc. (WMT) operates retail, wholesale, and other units worldwide.
  • In terms of forward EV/Sales, WMT’s 0.75x is 57.2% lower than the industry average of 1.76x, while its forward Price/Sales of 0.64x is 45.8% lower than the industry average of 1.19x.
  • WMT’s trailing-12-month ROCE and ROTC of 11.61% and 10.10% are 11.6% and 63.9% higher than the industry averages of 10.40% and 6.17%.
  • Analysts expect WMT’s revenue to increase 5.9% year-over-year to $606.38 billion in the current fiscal year, 2023.
  • Its EPS is expected to increase by 4.3% per annum for the next five years. It surpassed EPS estimates in three of the four trailing quarters.
  • Over the past year, the stock has gained 5.6% to close the last trading session at $143.72.
  • WMT’s POWR Ratings reflect this promising outlook. The stock has an overall A rating, which equates to a Strong Buy. 
  • WMT has a B grade for Stability and Sentiment. WMT is ranked #8 out of 39 stocks in the A-rated Grocery/Big Box Retailers industry.
  • Click here for additional WMT ratings (Growth, Value, Momentum, and Quality).

TradingView Screening

TradingView WMT price/volume candlestick chart with moving averages and the linear regression trend

The 1-week summary of Walmart Inc is based on the most popular technical indicators, such as Moving Averages, Oscillators and Pivots:

The 1-week summary of Walmart Inc is based on the most popular technical indicators, such as Moving Averages, Oscillators and Pivots:

TradingView Analyst Rating based upon 42 analysts giving stock ratings to WMT in the past 3 months.

TradingView Analyst Rating based upon 42 analysts giving stock ratings to WMT in the past 3 months

The 37 analysts offering 1 year price forecast for WMT.

The 37 analysts offering 1 year price forecast for WMT.

Algo Trading Testing

Let’s set the working directory YOURPATH

import os
os.chdir(‘YOURPATH’)
os. getcwd()

Let’s apply the Algo Stock Trading algorithm to WMT:

  • IMPORTING PACKAGES

import numpy as np
import requests
import pandas as pd
import matplotlib.pyplot as plt
from math import floor
from termcolor import colored as cl

plt.style.use(‘fivethirtyeight’)
plt.rcParams[‘figure.figsize’] = (20,10)

  • EXTRACTING STOCK DATA

def get_historical_data(symbol, start_date):
api_key = ‘YOUR_API_KEY’
api_url = f’https://api.twelvedata.com/time_series?symbol={symbol}&interval=1day&outputsize=5000&apikey={api_key}’
raw_df = requests.get(api_url).json()
df = pd.DataFrame(raw_df[‘values’]).iloc[::-1].set_index(‘datetime’).astype(float)
df = df[df.index >= start_date]
df.index = pd.to_datetime(df.index)
return df

googl = get_historical_data(‘WMT’, ‘2022-01-01’)
googl.tail()

WMT stock data table
  • DISPARITY INDEX CALCULATION

def get_di(data, lookback):
ma = data.rolling(lookback).mean()
di = ((data – ma) / ma) * 100
return di

googl[‘di_14’] = get_di(googl[‘close’], 14)
googl = googl.dropna()
googl.tail()

Input WMT table with the disparity index column di_14
  • DISPARITY INDEX STRATEGY

def implement_di_strategy(prices, di):
buy_price = []
sell_price = []
di_signal = []
signal = 0

for i in range(len(prices)):
    if di[i-4] < 0 and di[i-3] < 0 and di[i-2] < 0 and di[i-1] < 0 and di[i] > 0:
        if signal != 1:
            buy_price.append(prices[i])
            sell_price.append(np.nan)
            signal = 1
            di_signal.append(signal)
        else:
            buy_price.append(np.nan)
            sell_price.append(np.nan)
            di_signal.append(0)
    elif di[i-4] > 0 and di[i-3] > 0 and di[i-2] > 0 and di[i-1] > 0 and di[i] < 0:
        if signal != -1:
            buy_price.append(np.nan)
            sell_price.append(prices[i])
            signal = -1
            di_signal.append(signal)
        else:
            buy_price.append(np.nan)
            sell_price.append(np.nan)
            di_signal.append(0)
    else:
        buy_price.append(np.nan)
        sell_price.append(np.nan)
        di_signal.append(0)

return buy_price, sell_price, di_signal

buy_price, sell_price, di_signal = implement_di_strategy(googl[‘close’], googl[‘di_14’])

  • DISPARITY INDEX TRADING SIGNALS PLOT

ax1 = plt.subplot2grid((11,1), (0,0), rowspan = 5, colspan = 1)
ax2 = plt.subplot2grid((11,1), (6,0), rowspan = 5, colspan = 1)
ax1.plot(googl[‘close’], linewidth = 2, color = ‘#1976d2’)
ax1.plot(googl.index, buy_price, marker = ‘^’, markersize = 12, linewidth = 0, label = ‘BUY SIGNAL’, color = ‘green’)
ax1.plot(googl.index, sell_price, marker = ‘v’, markersize = 12, linewidth = 0, label = ‘SELL SIGNAL’, color = ‘r’)
ax1.legend()
ax1.set_title(‘WMT CLOSING PRICES’)
for i in range(len(googl)):
if googl.iloc[i, 5] >= 0:
ax2.bar(googl.iloc[i].name, googl.iloc[i, 5], color = ‘#26a69a’)
else:
ax2.bar(googl.iloc[i].name, googl.iloc[i, 5], color = ‘#ef5350’)
ax2.set_title(‘WMT DISPARITY INDEX 14’)
plt.show()

WMT closing prices vs disparity index 14 with buy/sell signals
  • STOCK POSITION

position = []
for i in range(len(di_signal)):
if di_signal[i] > 1:
position.append(0)
else:
position.append(1)

for i in range(len(googl[‘close’])):
if di_signal[i] == 1:
position[i] = 1
elif di_signal[i] == -1:
position[i] = 0
else:
position[i] = position[i-1]

close_price = googl[‘close’]
di = googl[‘di_14’]
di_signal = pd.DataFrame(di_signal).rename(columns = {0:’di_signal’}).set_index(googl.index)
position = pd.DataFrame(position).rename(columns = {0:’di_position’}).set_index(googl.index)

frames = [close_price, di, di_signal, position]
strategy = pd.concat(frames, join = ‘inner’, axis = 1)

strategy.tail()

WMT stock position table
  • BACKTESTING

googl_ret = pd.DataFrame(np.diff(googl[‘close’])).rename(columns = {0:’returns’})
di_strategy_ret = []

for i in range(len(googl_ret)):
returns = googl_ret[‘returns’][i]*strategy[‘di_position’][i]
di_strategy_ret.append(returns)

di_strategy_ret_df = pd.DataFrame(di_strategy_ret).rename(columns = {0:’di_returns’})
investment_value = 10000
number_of_stocks = floor(investment_value/googl[‘close’][0])
di_investment_ret = []

for i in range(len(di_strategy_ret_df[‘di_returns’])):
returns = number_of_stocks*di_strategy_ret_df[‘di_returns’][i]
di_investment_ret.append(returns)

di_investment_ret_df = pd.DataFrame(di_investment_ret).rename(columns = {0:’investment_returns’})
total_investment_ret = round(sum(di_investment_ret_df[‘investment_returns’]), 2)
profit_percentage = floor((total_investment_ret/investment_value)*100)
print(cl(‘Profit gained from the WMT strategy by investing $10k in WMT : {}’.format(total_investment_ret), attrs = [‘bold’]))
print(cl(‘Profit percentage of the WMT strategy : {}%’.format(profit_percentage), attrs = [‘bold’]))

Profit gained from the WMT strategy by investing $10k in WMT : 255.6
Profit percentage of the WMT strategy : 2%
  • BENCHMARK SPY ETF COMPARISON

def get_benchmark(start_date, investment_value):
spy = get_historical_data(‘SPY’, start_date)[‘close’]
benchmark = pd.DataFrame(np.diff(spy)).rename(columns = {0:’benchmark_returns’})

investment_value = investment_value
number_of_stocks = floor(investment_value/spy[-1])
benchmark_investment_ret = []

for i in range(len(benchmark['benchmark_returns'])):
    returns = number_of_stocks*benchmark['benchmark_returns'][i]
    benchmark_investment_ret.append(returns)

benchmark_investment_ret_df = pd.DataFrame(benchmark_investment_ret).rename(columns = {0:'investment_returns'})
return benchmark_investment_ret_df

benchmark = get_benchmark(‘2022-01-01’, 10000)
investment_value = 10000
total_benchmark_investment_ret = round(sum(benchmark[‘investment_returns’]), 2)
benchmark_profit_percentage = floor((total_benchmark_investment_ret/investment_value)*100)
print(cl(‘Benchmark profit by investing $10k : {}’.format(total_benchmark_investment_ret), attrs = [‘bold’]))
print(cl(‘Benchmark Profit percentage : {}%’.format(benchmark_profit_percentage), attrs = [‘bold’]))
print(cl(‘WMT Strategy profit is {}% higher than the Benchmark Profit’.format(profit_percentage – benchmark_profit_percentage), attrs = [‘bold’]))

Benchmark profit by investing $10k : -1562.88
Benchmark Profit percentage : -16%
WMT Strategy profit is 18% higher than the Benchmark Profit

Summary

  • WMT’s POWR Ratings reflect a very promising outlook. The stock has an overall A rating, which equates to a Strong Buy. 
  • WMT has a B grade for Stability and Sentiment.
  • TradingView Screening of WMT with technical indicators yields STRONG BUY, whereas 1 year price forecast indicates ~11% average growth.
  • Algo Trading with DI shows that: the current DI position is 1 (BUY),

Backtesting: Profit gained from the WMT strategy by investing $10k in WMT is $255.6; Profit percentage of the WMT strategy is 2%.

Benchmark ETF Comparison: Benchmark profit by investing $10k is -$1562.88;
Benchmark Profit percentage is -16%; WMT Strategy profit is 18% higher than the Benchmark Profit.

Explore More

Related News


One-Time
Monthly
Yearly

Make a one-time donation

Make a monthly donation

Make a yearly donation

Choose an amount

$5.00
$15.00
$100.00
$5.00
$15.00
$100.00
$5.00
$15.00
$100.00

Or enter a custom amount

$

Your contribution is appreciated.

Your contribution is appreciated.

Your contribution is appreciated.

DonateDonate monthlyDonate yearly
Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: