Links
Comment on page

Consumer Spending Foundation

Credit and debit card spend measuring activity for millions of US consumers

Overview

Consumer Spending Foundation is a representative panel of activity in the US consumer economy based on data from 50M+ credit and debit cards across different financial institutions.
Measures include:
  • Revenue ($), transactions (#), and average order value ($)
  • Year-over-year (%) revenue, transactions, average order value

Key Attributes

Geographic Coverage
US
Entity Level
Company, MCC, NAICS, MARTS
Time Granularity
Weekly, Monthly, Quarterly, 4-5-4 Retail Calendar Months
Update Frequency
Weekly on Monday
Lag
4 days
History
Since January 1, 2019

Description

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.
The data is available at the company, NAICS industry (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 purchaser primary location (i.e. where the consumer lives) and purchase location (i.e. physical store location). Geographies covered include US states and the top 100 core-based statistical areas (CBSAs) as measured by population. Data is aggregated to quarterly, monthly, and weekly periods as well as 4-5-4 retail calendar periods.
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

Data Sources & Release Frequency

Cybersyn has sourced this data from a consumer spending aggregator. The data updates weekly on Mondays with data through the previous Thursday.

Notes & Methodology

Revenue and transaction value calculations

Because our estimates are based on a panel of consumer spending, the values for ‘Revenue’ and ‘Transaction’ measures are not meant to be complete projections of the entirety of US spending; however, the relative sizing of these values should be accurate.
For example, the revenue value for Chipotle will not necessarily match with company-reported numbers in public financial statements, but the measure of spend should be correct relative to peer and industry measure (e.g. Chipotle’s market share relative to McDonald’s; Chipotle’s share of spend as a percent of overall food service industry).

Year-over-year definitions

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 'Revenue / Transactions'

Categorization

Merchant category codes (MCCs) are assigned to merchants by card processors based on the 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 purchaser primary location (i.e. where the spender lives: PURCHASER_PRIMARY_GEO_ID) and purchase location (i.e. where the physical store is located: PURCHASE_LOCATION_GEO_ID). The data covers US states and the top 100 core-based statistical areas (“CBSAs”) as measured by population.
Estimates for purchase location only include offline (i.e. brick and mortar) transactions. Store location details are only available for a portion of brick and mortar retailers. Stores are grouped into the most granular geography level that we are able to parse. For example, some offline transactions do not have a parsable state, so these transactions will be included in the overall US “Offline” channel estimate but will not be included in an estimate for a particular state or CBSA PURCHASE_LOCATION_GEO_ID.
Crosses of COMPANY_ID x PURCHASER_PRIMARY_GEO_ID / PURCHASE_LOCATION_GEO_ID x VARIABLE that do not meet a minimum number of average monthly transactions are excluded from our estimates. 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.
Due to estimate size constraints, the cross of PURCHASER_PRIMARY_GEO_ID x PURCHASE_LOCATION_GEO_ID x VARIABLE is not currently made available.

Example Use Cases & Queries

Track consumer spend by industry or sector and channel across CBSAs in a given state
Measure the monthly offline (i.e. brick and mortar) consumer spend for all of the Retail Sales segment by purchases in different CBSAs in California.
SELECT att.aggregation_value AS series_name,
states.related_geo_name AS state,
ts.purchase_location_geo_name AS cbsa,
att.channel,
att.measure,
att.unit,
att.frequency,
ts.date,
ts.value
FROM cybersyn.consumer_spending_timeseries AS ts
JOIN cybersyn.consumer_spending_attributes AS att
ON (ts.variable = att.variable)
JOIN cybersyn.geography_index AS cbsas
ON (ts.purchase_location_geo_id = cbsas.geo_id)
JOIN cybersyn.geography_relationships AS countries
ON (ts.purchase_location_geo_id = countries.geo_id)
JOIN cybersyn.geography_relationships AS states
ON (ts.purchase_location_geo_id = states.geo_id)
WHERE att.aggregation_type = 'MARTS Segment'
AND att.aggregation_value = 'MARTS Segment: Retail Sales: Retail Trade and Food Services'
AND att.measure = 'Revenue_YoY'
AND att.frequency = 'Month'
AND att.channel = 'Offline'
AND att.member_income = 'All Income Brackets'
AND att.member_age = 'All Age Brackets'
AND ts.purchaser_primary_geo_name = 'United States'
AND cbsas.level = 'CensusCoreBasedStatisticalArea'
AND countries.related_level = 'Country'
AND countries.related_geo_name = 'United States'
AND states.related_level = 'State'
AND states.related_geo_name = 'California'
ORDER BY ts.purchase_location_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.purchaser_primary_geo_name,
att.member_age,
att.aggregation_value,
att.measure,
att.frequency,
ts.date,
value
FROM cybersyn.consumer_spending_timeseries AS ts
JOIN cybersyn.consumer_spending_attributes AS att
ON (ts.variable = att.variable)
JOIN cybersyn.geography_relationships AS states
ON (ts.purchaser_primary_geo_id = states.geo_id)
WHERE att.aggregation_type = 'MARTS Segment'
AND att.aggregation_value = 'MARTS Segment: Retail Sales: Food Services and Drinking Places'
AND att.measure = 'Revenue_YoY'
AND att.frequency = 'Month'
AND att.member_income = 'All Income Brackets'
AND att.member_age IN ('18-24',
'25-34',
'35-44',
'45-54',
'55-64',
'65+')
AND ts.date >= '2020-01-01'
AND ts.purchase_location_geo_id = 'country/USA'
AND ts.purchaser_primary_geo_name IN ('New York', 'Florida')
AND att.channel = 'All Channels'
AND states.level = 'State'
AND states.level = 'State'
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 ts.company_name, ts.date, ts.value
FROM cybersyn.consumer_spending_timeseries AS ts
LEFT JOIN cybersyn.consumer_spending_attributes AS att
ON (ts.variable = att.variable)
JOIN cybersyn.company_index AS co
ON (co.company_id = ts.company_id)
WHERE att.member_age = '18-24'
AND att.member_income = 'All Income Brackets'
AND att.frequency = 'Month'
AND att.measure = 'Revenue'
AND att.channel = 'All Channels'
AND ts.purchaser_primary_geo_name = 'United States'
AND ts.purchase_location_geo_name = 'United States'
), mcd AS (
SELECT date, value AS mcdonalds_sales
FROM spend_data
WHERE company_name = 'MCDONALDS CORP'
), cmg AS (
SELECT date, value AS chipotle_sales
FROM spend_data
WHERE company_name = 'CHIPOTLE MEXICAN GRILL INC'
)
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 ts.company_name, ts.date, ts.value
FROM cybersyn.consumer_spending_timeseries AS ts
LEFT JOIN cybersyn.consumer_spending_attributes AS att
ON (ts.variable = att.variable)
JOIN cybersyn.geography_index AS geo
ON (geo.geo_id = ts.purchaser_primary_geo_id)
WHERE att.member_age = 'All Age Brackets'
AND att.member_income = 'All Income Brackets'
AND att.channel = 'All Channels'
AND ts.purchaser_primary_geo_name = 'United States'
AND ts.purchase_location_geo_name = 'United States'
AND att.frequency = 'Month'
AND att.measure = 'AOV'
), aldi AS (
SELECT date, value AS aldi_aov
FROM spend_data
WHERE company_name = 'ALDI INC'
), kroger AS (
SELECT date, value AS kroger_aov
FROM spend_data
WHERE company_name = 'KROGER CO'
)
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 att.aggregation_value AS series_name,
ts.date,
ts.value,
att.measure,
att.frequency
FROM cybersyn.consumer_spending_timeseries AS ts
JOIN cybersyn.consumer_spending_attributes AS att
ON (ts.variable = att.variable)
WHERE att.aggregation_type = 'MARTS Segment'
AND att.aggregation_value = 'MARTS Segment: Retail Sales: Retail Trade and Food Services'
AND att.measure = 'Revenue_YoY'
AND att.frequency = 'Month'
AND att.member_income = 'All Income Brackets'
AND att.member_age = 'All Age Brackets'
AND ts.purchaser_primary_geo_id = 'country/USA'
AND ts.purchase_location_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 att.aggregation_value,
ts.date,
ts.value,
att.measure,
att.frequency
FROM cybersyn.consumer_spending_timeseries AS ts
JOIN cybersyn.consumer_spending_attributes AS att ON (ts.variable = att.variable)
WHERE att.aggregation_type = 'MCC'
AND att.aggregation_value IN (
'MCC: 5814 - Fast Food Restaurants',
'MCC: 5812 - Eating Places And Restaurants',
'MCC: 5691 - Men’s And Women’s Clothing Stores',
'MCC: 5411 - Grocery Stores, Supermarkets',
'MCC: 5912 - Drug Stores And Pharmacies',
'MCC: 5941 - Sporting Goods Stores',
'MCC: 5311 - Department Stores',
'MCC: 5251 - Hardware Stores',
'MCC: 5712 - Furniture, Home Furnishings, And Equipment Stores, Exceptappliances'
)
AND att.measure = 'AOV_YoY'
AND att.frequency = 'Quarter'
AND att.member_income = 'All Income Brackets'
AND att.member_age = 'All Age Brackets'
AND ts.purchaser_primary_geo_id = 'country/USA'
AND ts.purchase_location_geo_id = 'country/USA'
QUALIFY ROW_NUMBER() OVER (PARTITION BY aggregation_value ORDER BY date DESC) = 1
ORDER BY ts.value DESC;
Study demographic factors impacting consumer activity
Determine how age impacted dining spend for different consumer groups.
SELECT att.member_age,
att.aggregation_value,
att.measure,
att.frequency,
ts.date,
value
FROM cybersyn.consumer_spending_timeseries AS ts
JOIN cybersyn.consumer_spending_attributes AS att
ON (ts.variable = att.variable)
WHERE att.aggregation_type = 'MARTS Segment'
AND att.aggregation_value = 'MARTS Segment: Retail Sales: Food Services and Drinking Places'
AND att.measure = 'Revenue_YoY'
AND att.frequency = 'Month'
AND att.member_income = 'All Income Brackets'
AND att.member_age IN ('18-24',
'25-34',
'35-44',
'45-54',
'55-64',
'65+')
AND ts.date >= '2020-01-01'
AND ts.purchaser_primary_geo_id = 'country/USA'
AND ts.purchase_location_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 *
FROM cybersyn.consumer_spending_timeseries AS ts
JOIN cybersyn.consumer_spending_attributes AS att
ON (ts.variable = att.variable)
LEFT JOIN cybersyn.company_index AS idx
ON (ts.company_id = idx.company_id)
WHERE idx.company_name IN ('CHIPOTLE MEXICAN GRILL INC', 'MCDONALDS CORP')
OR (ts.company_id IS NULL AND att.aggregation_value = 'MCC: 5841 - Fast Food Restaurants');

Releases & Changelog

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 [email protected]
  • Expand to add more geography levels and combinations of purchaser’s primary geography and purchase location.

Terms

Customers are subject to the Cybersyn terms of service.
Last modified 2d ago