NSPM-Based Benefit-Cost Analysis Model for Grid-Edge Resources

OpenBCA is a free, open-source desktop application that provides a transparent, standardized framework for evaluating the benefits and costs of grid-edge resources – often referred to as distributed energy resources (DERs). The tool – which is based on the National Standard Practice Manual (NSPM) - is intended for use by State Energy Offices, Public Utility Commissions, investor-owned electric and natural gas utilities, consumer-owned utilities, power authorities, DER program administrators and implementers, and other stakeholders involved in planning, evaluating, or designing DER programs.  

OpenBCA was developed by ICF and Recurve, with support from the U.S. Department of Energy, Lawrence Berkeley National Laboratory (LBNL), and E4TheFuture. OpenBCA is copyrighted and licensed by LBNL (see Open-Source Information). OpenBCA is coordinated by NASEO’s National Energy Screening Project (NESP), which hosts the OpenBCA webpage, organizes informational webinars, and coordinates state technical assistance with LBNL.  

Access OpenBCA

OpenBCA lives on GitHub, an open-source, cloud-based platform. Click on the icon below to access and download the tool from GitHub

Consult the IT Review and Requirements tab and ensure OpenBCA IT requirements have been met. You will then be able to take the following steps on the OpenBCA GitHub landing page, also known as the repository, to access the user-friendly OpenBCA interface. Please consult the OpenBCA User Guide, tutorials, and FAQ for details. 

  1. Download the software for Windows or macOS 
  2. Open and populate Excel input templates 
  3. Launch application 

Designed to align with the National Association of State Energy Officials’ (NASEO) National Standard Practice Manual (NSPM) guidance, OpenBCA allows jurisdictions to conduct cost-effectiveness analyses of DER investments and/or strategies using their unique Jurisdiction-Specific Tests (JSTs) for single or multiple DER portfolios, ensuring that the BCA test reflects the jurisdiction's specific energy policy goals, objectives, and regulatory needs.  

OpenBCA simplifies and streamlines the evaluation of a wide range of value streams from DER investments and provides a range of interactive options for presenting BCA results. Built to improve upon proprietary "black box" cost-effectiveness testing models, OpenBCA gives users visibility into assumptions, methodologies, and calculations used to develop DER value streams and benefit-cost analysis results. In addition to supporting custom JSTs, the OpenBCA allows users to formulate traditional cost tests (e.g., utility cost test, total resource cost test, societal cost test) to serve as secondary tests. 

The underlying formulas in OpenBCA are based on calculation and accounting methodologies provided in the Methods, Tools, and Resources Handbook for Quantifying Distributed Energy Resource Impacts for Benefit-cost Analysis (MTR Handbook) – an NSPM companion document – and other key BCA resources. 

OpenBCA Applications 

OpenBCA can be used across a range of DER use cases, including single and multi-DER programs, and in some cases, procurement and planning applications. OpenBCA can assess individual technologies—including energy efficiency, demand response, distributed generation, distributed storage, electric vehicles (e.g. managed charging), and building electrification—as well as integrated DER portfolios at the project, program, and portfolio levels. OpenBCA can also support non-wires solutions (NWS), non-pipes solutions (NPS), and location-specific analyses when avoided or deferred infrastructure costs can be represented through appropriate valuation inputs. For distribution system planning applications, OpenBCA leverages outputs from engineering and grid planning models to quantify economic impacts, providing a transparent and consistent framework for DER valuation, resource prioritization, and investment decision support. 

See this summary description of the tool capabilities and potential applications.

OpenBCA can be used in two primary ways, depending on user preference and technical requirements: a Standalone Pathway and an Integrated Pathway. Both pathways utilize the same core calculation engine, but differ in how the tool is run and how data flows through the system:    

  • Standalone Pathway: OpenBCA is accessed through a desktop application, without the need for any coding. Users can download the tool in a .zip format and input files from the GitHub repo, populate the Excel input templates and run analysis through a graphical user interface (GUI). The tool does not require any interfacing with code and is run locally on the user’s computer or server and generates results that can be viewed in an interactive dashboard or exported as CSV or Excel summary tables. The standalone mode is ideal for most users, as it packages everything needed into a streamlined, self-contained workflow. The Standalone Pathway exclusively uses local hardware.  
  • Integrated Pathway: This mode is designed for advanced users or organizations seeking to integrate OpenBCA into a broader data infrastructure or custom analytics workflow. In the integrated pathway, the OpenBCA engine is not limited to the GUI and can be executed either through a command-line interface (CLI) or directly with SQL schema. Inputs may be provided using the same Excel templates or ingested directly into the OpenBCA database schema, bypassing Excel entirely. Outputs are written to queryable database tables—such as DuckDB or other SQL-based databases—enabling downstream analysis and integration with business intelligence tools. This integrated mode is well suited for developers automating benefit-cost analysis runs or for utilities running large numbers of scenarios and consolidating results within a centralized data environment. See the repository README for the tool architecture and guidance on Integrated Pathway development. See the User Guide section for documentation and videos and the technical README in the repository for more details. 
  • Is OpenBCA free to use?    
    • Yes. OpenBCA is fully free and open-source — there is no license fee. The source code is publicly available on GitHub. The open-source code can be redistributed freely, consistent with the OpenBCA license agreement (see below).    
  • How is OpenBCA licensed?  
    • OpenBCA’s open-source code is copyrighted and licensed by the Regents of the University of California through the Lawrence Berkeley National Laboratory.  
  • Where do I find OpenBCA's source code?  
    • The OpenBCA source code is hosted on GitHub.com repositories. The main repository is at  https://github.com/. See the README pages for information about the code repositories.  
  • What computer language is OpenBCA written in?  
    • OpenBCA is a software application written in Python and SQL, using Python’s Streamlit application to support the user interface.  
  • How is the OpenBCA tool source code maintained?  
    • The tool developers—Recurve and ICF—currently maintain the source code. Users can inspect, propose modifications and report any bugs in the OpenBCA GitHub repository. The developers will review code contributions before accepting them as part of the open-source code base. See the README pages for instructions for building and contributing to the project. Updated versions of OpenBCA may be released in the future. 

Everything you need to get up to speed with OpenBCA.

Learn how to use the OpenBCA tool with the following video tutorials. Viewers are encouraged to consult the OpenBCA User Guide alongside the tutorials.  

Supporting OpenBCA Resources:

 

See this FAQ sheet for commonly asked questions. If you do not find an answer in the FAQ sheet or on the website, you can post technical questions to the OpenBCA GitHub Issues tab or join public office hours. For general inquiries about OpenBCA, please contact openbca@naseo.org

Public Office Hours  

Should you have questions about OpenBCA that are not addressed in the video tutorials or the FAQ section, you can join regularly office hours held by the OpenBCA developers (ICF and/or Recurve) on the following days and times:  

  • 1st and 3rd Thursday of each month at 2:00PM-3:00PM ET 
  • Register for an upcoming office hour slot here. Please email openbca@naseo.org to share your question(s) in advance. 

State Technical Assistance 

Direct technical assistance on using OpenBCA is available to state agencies, and in some cases may be provided on a cohort-based format. Contact NASEO for additional information at openbca@naseo.org

Additional Questions 

If you have a question about OpenBCA and do not find an answer on the website, you can post technical questions to the OpenBCA Github Issues tab. For general inquiries about OpenBCA, please contact openbca@naseo.org

OpenBCA is distributed as a downloadable .zip package directly from the OpenBCA GitHub repository. Once extracted, the package includes the OpenBCA executable and a supporting internal folder containing the application source code, Python components, and required dependencies. Separate release packages are currently available for macOS and Windows. A PDF version of the IT Review and Requirements can be downloaded here

Privacy and Data Security  

OpenBCA is designed to run entirely on a user’s local hardware without requiring an internet connection. As a result, sensitive utility, customer, and planning data remain within the user’s environment and are not transmitted to external servers.  

Required IT Permissions

Some enterprise environments may block downloaded executables, unsigned applications, command-line tools, or locally bundled Python applications. Before using OpenBCA, IT may need to review and approve:

  • Download and installation access — permission to download, extract, and install or store the OpenBCA release package in an approved local directory. 
  • Application execution — permission to run the OpenBCA executable, desktop app, or app bundle, including if it is flagged as downloaded, unsigned, or from an external source. 
  • Local Python and command-line components — permission for OpenBCA to run locally bundled Python components, dependencies, or background command-line processes, if applicable. 
  • Local file access — permission for OpenBCA to read input templates from the local working directory and write validation results, model outputs, and local database files to the output folder. 
  • Endpoint protection or firewall exceptions — review of Windows Defender, endpoint protection, firewall, or application-control rules that may block OpenBCA, with exceptions created if needed. 
  • Source code and dependency review — review of the GitHub repository, Technical README, license file, dependency list, and release package, if required by organizational policy. 

Minimum System Requirements  

  • Operating system: Windows and/or macOS 
  • RAM: 16 GB recommended; smaller analyses may run with less 
  • Storage: Sufficient local storage for application files, Excel inputs, and generated output database 
  • Processor: Modern multi-core processor recommended 
  • Internet access: Not required for standalone execution after installation/download, unless pulling source code or dependencies 
  • Excel and Macros: Required for preparing/editing input templates 

How is  OpenBCA  Architected?  

OpenBCA is built using Python and SQL. It relies on several commonly used Python and data-processing packages, including but not limited to: 

  • uv for Python package management. 
  • Pandas ExcelFile for parsing data from Excel input templates. 
  • SQLmesh to orchestrate data and computational pipelines. 
  • DuckDB for local database management and execution of SQL queries. 
  • Streamlit for the base framework of the user interface. 

OpenBCA uses DuckDB to interact with a local .db file created as part of the SQLmesh pipeline. DuckDB executes the SQL queries orchestrated by SQLmesh, which contains the core OpenBCA model logic. For a complete list of dependencies, reviewers can refer to the pyproject.toml file. 

The main elements of the OpenBCA framework are: 

  • A SQLmesh pipeline (see “excel_input_parsing” folder) parses Excel input templates to generate tables in the OpenBCA input format. The parsing utilizes the Pandas library, in particular the ExcelFile class.   
  • A SQLmesh pipeline (see “core” folder) runs the SQL queries that make up the OpenBCA computational model. 
  • The “user_interface” folder contains the files used to support the OpenBCA interface. 
  • The “demo_input_files” folder includes functional sample input files to help users get started. 
  • Additional files and folders support the technical README.md, configure file paths, define environment variables, and enable normal application operations. 

The Makefile includes command-line instructions for testing functionality and launching the OpenBCA application. When a user double-clicks the OpenBCA executable, the application opens a terminal and runs a Python script. That script launches a local web server, which is the standard operating model for the Streamlit application. The executable also opens a PyWebView container, allowing the Streamlit app to be displayed in a desktop application window. 

How is OpenBCA  Run?   

OpenBCA runs entirely on the user’s local machine and supports an end-to-end workflow without requiring users to write code, use terminal applications, or manage databases. Users prepare inputs in Excel templates, upload the completed files through the OpenBCA interface, launch the model, review results, and download outputs from the application.