This repository contains a notebook to implement an input-output (IO) price model using publicly available data from the Bureau of Economic Analysis (BEA). The price model can be used to estimate the effect of an import price shock or value-added cost shock on the price index for Personal Consumption Expenditures (PCE) and the price index for private business fixed investment in equipment (PEQ).
The IO price model uses Input-Output Accounts data that model the interaction between commodities and the industries that produce and use them. For this application, the Supply Table, Use Table, and Import Matrix are used. Users can choose to use Summary tables (71 industries) or Detail tables (402 industries). Summary tables are available from 1997 to 2024, while the detail tables are only available for 2007, 2012, and 2017. Data as of March 25, 2026 are provided in \inputs\bea_data\. Summary tables can be downloaded directly from BEA's website here, and Detail tables can be found here. Additionally, BEA provides files to bridge Input-Output Accounts data to PCE and PEQ, which can also be found in \inputs\bea_data\ or downloaded here.
- Set the current working directory to the location of the repository.
cd c:\your\file\path\here- Create and activate the virtual environment using the included
environment.yamlfile.
# run from the directory that contains environment.yaml
conda env create -f environment.yaml
# then activate the environment
conda activate CBO-IO-price-model-
Choose the year and granularity of BEA data to use in the model.
- The variables
YEARanddetailcan be found in the first cell of the notebook.
- The variables
-
Specify the price shock to imports and value added.
- Users can specify a uniform percent change in import prices and value-added cost using
import_price_percent_changeandvalue_added_percent_change, respectively. - Alternatively, users can specify their own heterogeneous shocks. Setting
preset_shockto{file_name}.csvwill overwrite the shock set in the previous cell and use the input file found in\inputs\shocks\.
- Users can specify a uniform percent change in import prices and value-added cost using
-
Run
io_price_model.ipynb.
The input–output (IO) price model is:
Which can be rewritten as:
Where:
-
$p^{D}$ is a vector of prices for domestically produced commodities -
$p^{M}$ is a vector of prices for imported commodities -
$A^{D}$ is a matrix of the use of domestically produced inputs per unit of output -
$A^{M}$ is a matrix of the use of imported inputs per unit of output -
$v$ is a vector of value added cost per dollar of output
Changes in final demand prices are calculated by combining the change in prices for domestically produced commodities
Where
The repository was created by Griffin Young based on earlier work by Nicholas Abushacra (formerly of CBO) and Junghoon Lee. The project was supervised by Daniel Fried.
Questions may be directed to CBO's Office of Communications at communications@cbo.gov.
CBO will respond to such requests as its workload permits.