My take on Target 🎯
Quick Overview of TGT
Key Insights
- Current Total Assets of $53.34 which is steadily increasing year to year
- The current working capital stands at a deficit of $1.65, indicating operational challenges that have been shared by several companies within the peer group.
- The value of "Buildings and Improvements" currently stands at $34.75, reflecting their expansion of square footage in their stores, demonstrating notable growth.
- The current Debt-to-Equity (D/E) ratio stands at approximately 1.67, suggesting a relatively modest level of leverage that aligns with industry peers and remains comfortably below the threshold of 2.
- The Accounts Receivable Turnover for the specified period stands at an impressive 64.38, consistently surpassing the commendable benchmark of 60, demonstrating a strong financial performance.
Lets Plot the Stock 📈
Using Jupyter kernel and python's yfinance, pandas, and matplotlib.
import yfinance as yf import pandas as pd import datetime import matplotlib.pyplot as plt
def get_daily_stock_info(symbol): # Define the start and end dates for your desired one-year period end_date = datetime.datetime.now().date() start_date = end_date - datetime.timedelta(days=365) # Fetch the historical data target_data = yf.download(symbol, start=start_date, end=end_date) return target_data
Collect the data 📊 ...
stock_df = get_daily_stock_info('TGT') stock_df = stock_df.reset_index() stock_df.columns.values[0] = 'Date' stock_df.head()
colors = { 'red': '#ff207c', 'grey': '#d0d0d7', 'blue': '#207cff', 'orange': '#ffa320', 'green': '#00ec8b' } config_ticks = { 'size': 14, 'color': colors['grey'], 'labelcolor': colors['grey'] } config_title = { 'size': 18, 'color': colors['grey'], 'ha': 'left', 'va': 'baseline' } dark_theme = { 'font.family': 'Consolas', 'axes.facecolor': 'black', 'axes.edgecolor': 'gray', 'axes.labelcolor': 'white', 'text.color': 'white', 'xtick.color': 'white', 'ytick.color': 'white', 'grid.color': 'gray', 'figure.facecolor': 'black', 'legend.edgecolor': 'gray', } plt.style.use(dark_theme)
Establish theming 🎨 ...
def format_borders(plot): plot.spines['top'].set_visible(False) plot.spines['left'].set_visible(False) plot.spines['left'].set_color(colors['grey']) plot.spines['bottom'].set_color(colors['grey'])
def format_legend(plot): plot_legend = plot.legend(loc='upper left', bbox_to_anchor=(-0.005, 0.95), fontsize=16) for text in plot_legend.get_texts(): text.set_color(colors['grey'])
def plot_ma(plot, x, y): mov_avg = { 'MA (50)': {'Range': 50, 'Color': colors['orange']}, 'MA (100)': {'Range': 100, 'Color': colors['green']}, 'MA (200)': {'Range': 200, 'Color': colors['red']} } for ma, ma_info in mov_avg.items(): plot.plot( x, y.rolling(ma_info['Range']).mean(), color=ma_info['Color'], label=ma, linewidth=2, ls='--' )
def get_prev_day_info(plot): previous_close = '$' + str("{:,}".format(stock_df['Close'][0])) previous_volume = str("{:,}".format(stock_df['Volume'][0])) previous_date = str(stock_df['Date'][0].date()) plot.set_title( 'Closing price on ' + previous_date + ': ' + previous_close + '\nShares traded on ' + previous_date + ': ' + previous_volume, fontdict=config_title, loc='left' )
def get_charts(stock_data): plt.rc('figure', figsize=(15, 10)) fig, axes = plt.subplots(2, 1, gridspec_kw={'height_ratios': [3, 1]}) fig.tight_layout(pad=3) date = stock_data['Date'] close = stock_data['Close'] vol = stock_data['Volume'] plot_price = axes[0] plot_price.plot(date, close, color=colors['blue'], linewidth=2, label='Price') plot_vol = axes[1] plot_vol.bar(date, vol, width=15, color='darkgrey') plot_price.yaxis.tick_right() plot_price.tick_params(axis='both', **config_ticks) plot_price.set_ylabel('Price (in USD)', fontsize=14) plot_price.yaxis.set_label_position("right") plot_price.yaxis.label.set_color(colors['grey']) plot_price.grid(axis='y', color='gainsboro', linestyle='-', linewidth=0.5) plot_price.set_axisbelow(True) format_borders(plot_price) format_borders(plot_vol) fig.suptitle('TGT Price and Volume', size=36, color=colors['grey'], x=0.24, y=1.10) get_prev_day_info(plot_price) plot_ma(plot_price, date, close) format_legend(plot_price)
get_charts(stock_df)
It appears the stock is mean reverting towards a cheaper value 📉 ...
Observations
Based on the current moving average projections, buying this stock in the
next year appears to be a favorable opportunity. The company currently
boasts a price-to-earnings (P/E) ratio of approximately 22, making it an
attractive value stock. Additionally, with no intangible assets in the
picture, the Price to Tangible Book Value (P/TBV) stands at 6.86. A P/TBV
ratio exceeding 1 indicates that the market highly values the company's
tangible assets, reflecting investor confidence and a willingness to pay a
premium for these assets.