Consumer Spending

Weekly US consumer spending estimates for 10,000 companies

Overview

A representative panel of US consumer spending by zip codes within major metro areas, top CBSAs, and states. This product includes consumer spending estimates for 10,000 companies and is based on anonymous transactions from millions of credit and debit cards across financial institutions.

Measures include:

  • Sales ($), transactions (#), and average order values ($)

  • Customer retention rates (%)

  • Year-over-year (%) sales, transactions, average order values

Our Consumer Spending product is tiered so customers pay only for the geography levels they need. On Snowflake Marketplace, you will see two Consumer Spending listings. All geography levels, including zip codes, top CBSAs, and states are available in the core Consumer Spending listing. A subset of geography levels, including top CBSAs and states (no zip codes) are available in the Consumer Spending - State/CBSA Levels listing.

Key Attributes

Geographic Coverage

US

Entity Level

Company, MCC, NAICS industry, MARTS level

Time Granularity

Weekly, Monthly, Quarterly, 4-5-4 Retail Calendar Months

Update Frequency

Weekly on Tuesday, with data through the previous Monday

History

Since February 2018

Description

The data is available at the company, NAICS (North American Industry Classification System), MARTS (Advanced Monthly Retail Trade Survey) and MCC (Merchant Category Code) levels. Additionally, the data is cut by demographics including both age ranges and income brackets. Data can also be broken down by channel (offline vs. online spend) and geographies — grouped by consumer billing address and merchant location. Geographies covered include US zip codes within major metro areas, the top 100 core-based statistical areas (CBSAs) as measured by population, and states. Data is aggregated to weekly, monthly and quarterly periods as well as 4-5-4 retail calendar periods. All Cybersyn products follow the EAV (entity, attributes, value) model with a unified schema. Entities are tangible objects (e.g. geography, company). Entities may have characteristics (i.e. descriptors of the entity) in an index table and values (i.e. statistics, measure) in a timeseries table. Refer to Cybersyn Concepts for more details.

This content is for informational purposes only and should not be construed as investment or financial advice or an offer for the purchase of any securities. Cybersyn is not a financial advisor. None of the information we share constitutes an opinion, endorsement or recommendation about any securities or investments. Content we share is based on our own research and analysis, and we make no representations or guarantees as to the accuracy or completeness of the information. Any projections we make about current or future revenue or company performance are provided for informational purposes only and do not constitute investment advice. Any decisions made based on content we provide are the sole responsibility of the individual making those decisions. You should consult a licensed financial advisor before making any investment decisions.

Data Dictionary

📖pageData Dictionary

Entity Relationship Diagram

The following ERD is for the core Consumer Spending product. Use the "Zoom In" feature to view.

Notes & Methodology

Year-over-year definitions

Sales/Revenue YoY: The year-over-year change in total dollar value of sales in USD in a given period.

Transactions YoY: The year-over-year change in the number of sales transactions for a given period. Each purchase an individual makes counts as 1 transaction.

AOV YoY: The year-over-year change in average order value in USD. This is also known as the average cart size for an online order. Note that this differs from a pure “average price” measure because the quantity of items purchased is not factored in. Calculated as 'Sales / Transactions'

Categorization

Merchant category codes (MCCs) are assigned to merchants by card processors based on the types of products that the company sells. Cybersyn maps these MCCs to North American Industry Classification System (NAICS) codes to create industry-level aggregations that are directly comparable to the US Census Bureau’s Advance Monthly Retail Sales Survey (MARTS) estimates.

Spend by company

Company-level estimates are for the lowest level of company or subsidiary available. For example, transactions at Whole Foods are mapped to Whole Foods Market Inc rather than Amazon Inc. In cases where a company subsidiary does not exist for a particular merchant, the transactions are mapped to the overarching top-level holding company.

User selection and inclusion

A cohort approach is taken to ensure data quality and to limit the panel of consumer cards to only card users that have a sufficient level of historical data. To be included in the panel, a card must have been active for at least 24 months. "Active" is defined as having at least $1 of sales in a given month. This allows Cybersyn to create like-for-like sales growth estimates that are independent of fluctuations in the size of the underlying consumer panel.

4-5-4 retail calendar

The 4-5-4 retail calendar is a standardized accounting and reporting calendar system used by many retailers, where each fiscal year is divided into 13 weeks, aiming to align with shifts in weekends and holidays to facilitate more accurate financial comparisons.

A 4-5-4 retail year is typically 52 weeks, but every 5-6 years, there is a 53-week year. The 53-week years since 2010 have been 2012, 2017, and 2023.

Purchase geographies

Geographies are grouped both by consumer billing address and merchant location. In the core Consumer Spending product, consumer billing addresses and merchant locations are down to the zip code level. Estimates for merchant locations only include offline (i.e. in-store) transactions.

Aggregations of MERCHANT x CONSUMER_GEO / MERCHANT_GEO that do not meet a minimum number of average monthly transactions are not exposed. For example, spend for Retailer ABC by residents of New York City for the 18-24 demographic might be available while the same estimate may not be available for Akron, OH due to a smaller sample size. This is especially common for companies that operate regionally.

The cross of CONSUMER_GEO x MERCHANT_GEO (i.e. consumers who live in New York and shop in LA) is not currently made available.

Tables

TablesSnowflake Marketplace Listing

CONSUMER_SPENDING_MERCHANT_TIMESERIES CONSUMER_SPENDING_INDUSTRY_TIMESERIES

Consumer Spending - Including Zip Codes

CONSUMER_SPENDING_INDUSTRY_NO_ZIP_TIMESERIES CONSUMER_SPENDING_MERCHANT_NO_ZIP_TIMESERIES

Consumer Spending - State/CBSA Levels Only (No Zip Codes)

CONSUMER_SPENDING_MERCHANT_TIMESERIES CALENDAR_INDEX COMPANY_CHARACTERISTICS COMPANY_INDEX GEOGRAPHY_INDEX GEOGRAPHY_RELATIONSHIPS CYBERSYN_DATA_CATALOG

Both Listings

Example Use Cases & Queries

Find the top zip codes in a city where consumers spend the most at a given merchant

Determine which zip codes in the Denver area had the highest amount of consumer spending at DoorDash in 2023

SELECT consumer_geo_name AS zip_code, SUM(value) AS sales
FROM cybersyn.consumer_spending_merchant_timeseries AS ts
JOIN cybersyn.geography_relationships AS geo
    ON (ts.consumer_geo_id = geo.geo_id
        AND geo.related_level = 'City'
        AND geo.related_geo_name = 'Denver')
WHERE ts.member_age = 'All Age Brackets'
  AND ts.member_income = 'All Income Brackets'
  AND ts.channel = 'All Channels'
  AND ts.consumer_geo_level = 'CensusZipCodeTabulationArea'
  AND ts.merchant_geo_level = 'Country'
  AND ts.merchant_geo_name = 'United States'
  AND ts.measure = 'Sales'
  AND ts.frequency = 'Month'
  AND ts.merchant_name = 'DOORDASH'
  AND ts.date >= '2023-01-01'
  AND ts.date <= '2023-12-31'
  GROUP BY zip_code
ORDER BY sales DESC
LIMIT 20;

Determine which zip codes in Manhattan had the highest amount of consumer spending at Lululemon in 2023

SELECT consumer_geo_name AS zip_code, SUM(value) AS sales
FROM cybersyn.consumer_spending_merchant_timeseries AS ts
JOIN cybersyn.geography_relationships AS geo
    ON (ts.consumer_geo_id = geo.geo_id
        AND geo.related_level = 'County'
        AND geo.related_geo_name = 'Manhattan')
WHERE ts.member_age = 'All Age Brackets'
  AND ts.member_income = 'All Income Brackets'
  AND ts.channel = 'All Channels'
  AND ts.consumer_geo_level = 'CensusZipCodeTabulationArea'
  AND ts.merchant_geo_level = 'Country'
  AND ts.merchant_geo_name = 'United States'
  AND ts.measure = 'Sales'
  AND ts.frequency = 'Month'
  AND ts.merchant_name = 'LULULEMON'
  AND ts.date >= '2021-01-01'
  AND ts.date <= '2021-12-31'
  GROUP BY zip_code
ORDER BY sales DESC
LIMIT 20;

Analyze customer retention in a given demographic

Find the 2 year spend retention for Uber Eats and DoorDash customers between 25-34.

SELECT merchant_name, member_age, member_income, consumer_geo_name,
       periods_since_first_purchase, value
FROM cybersyn.consumer_spending_merchant_retention_timeseries
WHERE merchant_name IN ('UBEREATS', 'DOORDASH')
  AND measure = 'User Retention'
  AND member_age ILIKE '25-34'
  AND member_income = 'All Income Brackets'
  AND consumer_geo_name = 'United States'
  AND periods_since_first_purchase <= 24;

Track consumer spend by industry or sector and channel across CBSAs in a given state

Measure the monthly in-store consumer spend for all of the Retail Sales segment by purchases in different CBSAs in California.

SELECT ts.aggregation_name      AS series_name,
        states.related_geo_name   AS state,
        ts.merchant_geo_name          AS cbsa,
        ts.channel,
        ts.measure,
        ts.unit,
        ts.frequency,
        ts.date,
        ts.value
FROM cybersyn.consumer_spending_industry_timeseries AS ts
JOIN cybersyn.geography_relationships AS states
    ON (ts.merchant_geo_id = states.geo_id)
WHERE ts.aggregation_type = 'MARTS Segment'
  AND ts.aggregation_name = 'Retail Sales: Retail Trade and Food Services'
  AND ts.measure = 'Sales_YoY'
  AND ts.frequency = 'Month'
  AND ts.channel = 'Offline'
  AND ts.member_income = 'All Income Brackets'
  AND ts.member_age = 'All Age Brackets'
  AND ts.consumer_geo_name = 'United States'
  AND ts.merchant_geo_level = 'CensusCoreBasedStatisticalArea'
  AND states.related_level = 'State'
  AND states.related_geo_name = 'California'
ORDER BY ts.merchant_geo_name, ts.date

Study demographic factors impacting consumer activity in different geographies

Determine how age impacted dining spend for different consumer groups from the states of New York and Florida.

SELECT ts.consumer_geo_name,
       ts.member_age,
       ts.aggregation_name,
       ts.measure,
       ts.frequency,
       ts.date,
       ts.value
FROM cybersyn.consumer_spending_industry_timeseries AS ts
JOIN cybersyn.geography_relationships AS states
    ON (ts.consumer_geo_id = states.geo_id)
WHERE ts.aggregation_type = 'MARTS Segment'
  AND ts.aggregation_name = 'Retail Sales: Food Services and Drinking Places'
  AND ts.measure = 'Sales_YoY'
  AND ts.frequency = 'Month'
  AND ts.member_income = 'All Income Brackets'
  AND ts.member_age IN ('18-24',
                         '25-34',
                         '35-44',
                         '45-54',
                         '55-64',
                         '65+')
  AND ts.date >= '2020-01-01'
  AND ts.merchant_geo_id = 'country/USA'
  AND ts.consumer_geo_level = 'State'
  AND ts.consumer_geo_name IN ('New York', 'Florida')
  AND ts.channel = 'All Channels'
  AND states.related_level = 'Country'
  AND states.related_geo_name = 'United States';

Analyze market share changes between two companies

Compare market share of Chipotle vs. McDonald’s for the 18-24 age demographic.

WITH spend_data AS (
    SELECT merchant_name, date, value
    FROM cybersyn.consumer_spending_merchant_timeseries
    WHERE member_age = '18-24'
      AND member_income = 'All Income Brackets'
      AND frequency = 'Month'
      AND measure = 'Sales'
      AND channel = 'All Channels'
      AND consumer_geo_level = 'Country'
      AND consumer_geo_name = 'United States'
      AND merchant_geo_level = 'Country'
      AND merchant_geo_name = 'United States'
), mcd AS (
    SELECT date, value AS mcdonalds_sales
    FROM spend_data
    WHERE merchant_name = 'MCDONALD''S'
), cmg AS (
    SELECT date, value AS chipotle_sales
    FROM spend_data
    WHERE merchant_name = 'CHIPOTLE MEXICAN GRILL'
)
SELECT mcd.date,
       mcdonalds_sales,
       chipotle_sales,
       mcdonalds_sales / (mcdonalds_sales + chipotle_sales) AS mcdonalds_market_share,
       chipotle_sales / (mcdonalds_sales + chipotle_sales) AS chipotle_market_share
FROM mcd
JOIN cmg ON (mcd.date = cmg.date)
ORDER BY date;

Compare average transaction sizes across companies

Compare and contrast how Kroger and Aldi’s average order values (AOV) evolved before and after the height of the Covid-19 pandemic.

WITH spend_data AS (
    SELECT merchant_name, date, value
    FROM cybersyn.consumer_spending_merchant_timeseries
    WHERE member_age = 'All Age Brackets'
      AND member_income = 'All Income Brackets'
      AND channel = 'All Channels'
      AND consumer_geo_level = 'Country'
      AND consumer_geo_name = 'United States'
      AND merchant_geo_level = 'Country'
      AND merchant_geo_name = 'United States'
      AND frequency = 'Month'
      AND measure = 'AOV'
), aldi AS (
    SELECT date, value AS aldi_aov
    FROM spend_data
    WHERE merchant_name = 'ALDI'
), kroger AS (
    SELECT date, value AS kroger_aov
    FROM spend_data
    WHERE merchant_name = 'KROGER'
)
SELECT aldi.date,
       aldi_aov,
       kroger_aov
FROM aldi
JOIN kroger ON (aldi.date = kroger.date)
WHERE aldi.date >= '2019-01-01'
ORDER BY date;

Track consumer spend by industry or sector

Measure the overall consumer spend for all of the Retail Sales segment.

SELECT aggregation_name AS series_name,
       date,
       value,
       measure,
       frequency
FROM cybersyn.consumer_spending_industry_timeseries AS ts
WHERE aggregation_type = 'MARTS Segment'
  AND aggregation_name = 'Retail Sales: Retail Trade and Food Services'
  AND measure = 'Sales_YoY'
  AND frequency = 'Month'
  AND member_income = 'All Income Brackets'
  AND member_age = 'All Age Brackets'
  AND consumer_geo_id = 'country/USA'
  AND merchant_geo_id = 'country/USA'
ORDER BY ts.date 

Identify pricing trends across industries

Determine which types of stores are seeing the largest year-over-year increases in average order value (AOV) this quarter.

SELECT
   aggregation_name,
       date,
       value,
       measure,
       frequency
FROM cybersyn.consumer_spending_industry_timeseries
WHERE aggregation_type = 'MCC'
        AND aggregation_name IN (
            'Fast Food Restaurants',
            'Eating Places And Restaurants',
            'Men’s And Women’s Clothing Stores',
            'Grocery Stores, Supermarkets',
            'Drug Stores And Pharmacies',
            'Sporting Goods Stores',
            'Department Stores',
            'Hardware Stores',
            'Furniture, Home Furnishings, And Equipment Stores, Exceptappliances'
        )

  AND measure = 'AOV_YoY'
  AND frequency = 'Quarter'
  AND member_income = 'All Income Brackets'
  AND member_age = 'All Age Brackets'
  AND consumer_geo_id = 'country/USA'
  AND merchant_geo_id = 'country/USA'

QUALIFY ROW_NUMBER() OVER (PARTITION BY aggregation_name ORDER BY date DESC) = 1
ORDER BY value DESC;

Study demographic factors impacting consumer activity

Determine how age impacted dining spend for different consumer groups.

SELECT
       member_age,
       aggregation_name,
       measure,
       frequency,
       date,
       value
FROM cybersyn.consumer_spending_industry_timeseries
WHERE aggregation_type = 'MARTS Segment'
  AND aggregation_name = 'Retail Sales: Food Services and Drinking Places'
  AND measure = 'Sales_YoY'
  AND frequency = 'Month'
  AND member_income = 'All Income Brackets'
  AND member_age IN ('18-24',
                         '25-34',
                         '35-44',
                         '45-54',
                         '55-64',
                         '65+')
  AND date >= '2020-01-01'
  AND consumer_geo_id = 'country/USA'
  AND merchant_geo_id = 'country/USA'

Benchmark company performance against industries and competitors

Compare Chipotle’s sales performance to that of McDonald’s and of the broader fast food category

SELECT merchant_name AS series_name, measure, frequency,
       member_age, member_income, channel, consumer_geo_level, consumer_geo_name,
       merchant_geo_level, merchant_geo_name, date, value, unit
FROM cybersyn.consumer_spending_merchant_timeseries
WHERE merchant_name IN ('CHIPOTLE MEXICAN GRILL', 'MCDONALD''S')
UNION
SELECT aggregation_name AS series_name, measure, frequency,
       member_age, member_income, channel, consumer_geo_level, consumer_geo_name,
       merchant_geo_level, merchant_geo_name, date, value, unit
FROM cybersyn.consumer_spending_industry_timeseries
WHERE aggregation_type = 'MCC'
    AND aggregation_name = 'Fast Food Restaurants';

Releases & Changelog

2/27/24 - Added zip codes & customer retention

Expanded product granularity to include zip code level data. Added customer retention data. Data is available in the following tables: CONSUMER_SPENDING_MERCHANT_RETENTION_TIMESERIES CONSUMER_SPENDING_INDUSTRY_TIMESERIES CONSUMER_SPENDING_MERCHANT_TIMESERIES

11/22/23 - Added spend by geography for states and top 100 CBSAs. Added online/offline spend breakdown

Expanded the granularity of values in the CONSUMER_SPENDING_TIMESERIES table to include breakdown by geography. Geographies are grouped both by purchaser primary location (i.e. where the spender lives) and purchase location (i.e. where the physical store is located). The data covers US states and the top 100 core-based statistical areas (“CBSAs”) as measured by population.

  • Purchaser geographies are represented in the PURCHASER_PRIMARY_GEO_ID and PURCHASER_PRIMARY_GEO_NAME fields

  • Purchase location geographies are represented in PURCHASE_LOCATION_GEO_ID and PURCHASE_LOCATION_GEO_NAME fields

  • PURCHASER_PRIMARY_GEO_ID and PURCHASER_PRIMARY_GEO_ID can be used to join the data with Cybersyn’s geography tables such as the GEOGRAPHY_INDEX based on the GEO_ID field

Added purchase channels covering online and offline spend.

  • Purchase channels are reflected in the CHANNEL field in the CONSUMER_SPENDING_ATTRIBUTES table and included in the VARIABLE_NAME values in the CONSUMER_SPENDING_TIMESERIES table

Note that data for “purchase location” geographies only includes offline spend.

11/20/23 - Added aggregations by NAICS codes and by 4-5-4 retail months

Expanded the CONSUMER_SPENDING_TIMESERIES and the CONSUMER_SPENDING_ATTRIBUTES tables to include aggregations by NAICS (North American Industry Classification System) and 4-5-4 retail calendar months.

Deprecated MCC_CODE, MCC_CODE_DESCRIPTION and MART_VARIABLE fields in the the CONSUMER_SPENDING_ATTRIBUTES table and replaced them with AGGREGATION_TYPE and AGGREGATION_VALUE.The newly added fields can be used to filter to a desired level of aggregation including to the NAICS, MARTS Segment, and MCC levels.

Additionally, the following fields were added in anticipation of upcoming dataset expansions. Note that these fields only contain total values for now. Future iterations of the product will include more granular cuts of data.

  • Added COMPANY_NAME, PURCHASER_PRIMARY_GEO_ID, PURCHASER_PRIMARY_GEO_NAME, PURCHASE_LOCATION_GEO_ID, and PURCHASE_LOCATION_GEO_NAME to CONSUMER_SPENDING_TIMESERIES

  • Added CHANNEL to CONSUMER_SPENDING_ATTRIBUTES

11/6/23 - Added nominal value projections (dollar-level figures)

Expanded values in the CONSUMER_SPENDING_TIMESERIES table to include nominal estimates. New measures include estimates for revenue ($), transactions (#), and average order value ($). These newly added variables build on the existing year-over-year (%) estimates for those measures already in the table.

Nominal values can be used to measure market share or compare average transaction amounts across retailers. Because these estimates are based on a panel of consumer spending, they are not meant to be projections of the entirety of US spending but they are accurate as a measure of relative spend. For example, the sum of all Chipotle spend will not equal the company's actual spend but Chipotle's market share relative to McDonald's should be correct.

The newly-added variables in the timeseries table include matching variables in the CONSUMER_SPENDING_ATTRIBUTES table with the new variables being MEASURE values of Revenue, Transactions, and AOV.

11/3/23 - Added CALENDAR_INDEX table

Added the calendar_index table which compiles common calendars into a single table. Each calendar type has a unique CALENDAR_ID, which allows users to select which calendar type they want to use. Individual periods within each calendar type include period start and end dates.

The calendar_index currently includes regular calendar periods (days, weeks, months, quarters, and years) and 4-5-4 retail calendar periods (4-5-4 retail months, quarters, and years).

The 4-5-4 retail calendar is a standardized accounting and reporting calendar system used by many retailers, where each fiscal year is divided into 13 weeks, aiming to align with seasonal variations and facilitate more accurate financial comparisons.

10/11/23 - Added company-level estimates; Added COMPANY_INDEX table

Added year-over-year estimates for company-level spend, transaction, and AOV to the CONSUMER_SPENDING_TIMESERIES. Company-level information is identified with the company_id field.

The company_id is a unique identifier assigned by Cybersyn to each company and is joinable to the COMPANY_INDEX, which provides company names and other helpful identifiers such as CIK, LEI, PermID, and more. Note that when the company_id is null, then the row represents data for all companies.

Errata & Future Improvements

We note known issues and planned future improvements. If you would like to submit a bug report or feature request, email us at support@cybersyn.com

Terms

Customers are subject to the Cybersyn terms of service.

Last updated

Copyright © 2024 Cybersyn