Assessing Impact of Competitor Market Entry

Analyzes the impact of a competitor entering an adjacent market.
Author

Daniel Carpenter, MS

Published

2022


Note: Data is Randomly Generated

For demonstration purposes, the data are randomized and all naming is fictitious.

View Code Here
# Load packages and functions
source('docs//00-Reused-Code/Read-Library-and-Functions.R')

set.seed(1024) # All data is randomized! Seed set for reproducibility

this_dir <- 'docs//01-Visual-Storytelling//02-Post-Mortem//'

# Date of the Competitor Entry:
date_competition_enters = Sys.Date() - 120
selected_stores = c('Flagship Store' )

# Read in a reference file for drive times destinations
dt_ref <- fread(paste0(this_dir, 'data//drivetime_ref.csv'))

# Get the R files containing the functions with plots --------------------------
purrr::walk(list.files(paste0(this_dir, 'functions//'), pattern = "\\.R$", full.names = TRUE), source)

Within the deliverable, this analysis shows that core KPIs soften across stores, suppliers, in-store sections, and subscribers.


1 Enterprise Operating Income per Store per Day Declines After Competitor Entry

Daily performance lagged the 6–12 month trend after entry.

See full function here.

View Code Here
## Individual Store Trends
plots_store_analysis <- store_analysis(
  selected_stores = c('Flagship Store', 'Other Stores'),
  comparison_date = date_competition_enters
)

# plots_store_analysis$plots$overview
plots_store_analysis$plots$operating_income_per_store_per_day



2 Within the Flagship Store, Section Performance has Uniformly Decreased

High-traffic sections lost share post-entry.

See full function here.

View Code Here
# Specific Zone vs. Nearby Zones vs. Broader Floor
plots_section_of_store_analysis <- section_of_store_analysis(
  comparison_date = date_competition_enters
)

plots_section_of_store_analysis$plots$overview



3 Supplier Performance has Dropped Proportionally

Key suppliers lost volume in line with subscriber erosion; supplier mix remained steady.

See full function here.

View Code Here
plots_supplier_analysis <- supplier_analysis(
  selected_stores = selected_stores,
  comparison_date = date_competition_enters
)

plots_supplier_analysis$plots$overview



4 Subscribers Trend Lowers since New Competitor Entry

New subscriptions slowed and churn accelerated; cumulative subscribers underperformed the 12-month baseline.

See full function here.

View Code Here
## Patron subscribers
subscribers <- subscriber_demographic_analysis(
  comparison_date = date_competition_enters
)

subscribers$plots$overview


4.0.1 Subscriber Breakdown by Drivetime

View Code Here
subscribers$plots$demographics


4.0.2 Subscriber Comparison

  • Since expanding, daily subscribers have been less than on average than in the past 12-months.
  • The cumulative actual subscribers since expanding drifts far below the historical baseline. “Baseline” refers to the 12-month average subscribers.
View Code Here
subscribers$plots$cumulativeVariance

View Code Here
subscribers$plots$detail

4.1 Shrinking New Subscribers

Prospect pools thinned around the Flagship after entry; conversion windows narrowed and acquisition costs rose.

4.1.1 Reference of Current Drivetimes to Flagship Store

View Code Here
library(knitr)
knitr::kable(dt_ref)
Destination Hours
Fayetteville 0.50
Springdale 0.75
Tulsa 1.50
Fort Smith 1.75


4.1.2 Shrinking New Subscribers in Key Markets

See full function here.

View Code Here
# Average Drivetime Analysis
plots_subscriber_drivetime_analysis <- subscriber_drivetime_analysis(
  comparison_date1 = date_competition_enters,
)

plots_subscriber_drivetime_analysis$plots$overview

View Code Here
plots_subscriber_drivetime_analysis$plots$drive_distributions_market

4.2 Appendix: Subscriber-Base Distributed Evenly Across United States

See full function here.

View Code Here
subscriber_geography_analysis()