nova_ec
  • Home
  • API Reference
  • Tutorial
  • Getting Started
  • Configuration
  1. Overview
  2. Overview
  • Overview
    • Overview
  • Getting Started
    • Installation and Setup
    • Configuration
  • Tutorial
    • Project Setup Tutorial
  • API Reference
    • Function reference
    • Config Module
      • config_manager
    • Data Module
      • system_data
      • energy_community
    • Geocoding Module
      • geocoder
    • Matching Module
      • ec_matcher
      • county_matcher
      • eligibility
      • export_utils
    • Retrieval Module
      • data_retriever
    • Utils Module
      • logger
      • analysis_utils
    • Main Module
      • main
      • cli

On this page

  • Features
  • Energy Community Determination Process
    • Key Eligibility Dates and Cutoffs
    • Eligibility Scenarios
    • Geographic Matching Process
    • Final Categorization
    • ITC Bonus Amount
  • Energy Community Data Sources
    • For Systems Placed in Service After Dec 31, 2022 and Before June 7, 2024:
    • For Systems Placed in Service After June 6, 2024:
  • Quick Start
  • Configuration
  • Command Line Interface
  • Documentation

Other Formats

  • Github (GFM)
  1. Overview
  2. Overview

Overview

nova_ec is Python package provides tools to determine whether solar systems are located within designated energy communities, which impacts their eligibility for additional Investment Tax Credit (ITC) adders. The Energy Community Tax Credit Bonus, as defined in the Inflation Reduction Act (IRA), applies a bonus of up to 10% (for production tax credits) or 10 percentage points (for investment tax credits) for projects located in energy communities.

The determination process handles two of the three types of energy communities defined by the IRA:

  • Coal Closure Energy Communities (CCEC): Census tracts (or directly adjoining census tracts) in which a coal mine has closed after 1999 or in which a coal-fired electric generating unit has been retired after 2009
  • Fossil Fuel Statistical Area Energy Communities (FFSAEC): Metropolitan statistical areas (MSAs) or non-metropolitan statistical areas (non-MSAs) that have (or had at any time after 2009):
    • 0.17% or greater direct employment or 25% or greater local tax revenues related to the extraction, processing, transport, or storage of coal, oil, or natural gas; AND
    • An unemployment rate at or above the national average unemployment rate for the previous year

Note: The package does not cover the third type of energy communities defined by the IRA - “brownfield sites.”

The analysis is performed for both 2023 and 2024 eligibility periods, following IRS guidance with specific cutoff dates (particularly June 7, 2024) that affect eligibility.

Features

  • Energy Community data processing for both CCEC and FFSAEC areas
  • Solar system data processing with eligibility date determination
  • Geocoding with ArcGIS for precise location matching
  • Energy community matching (spatial and county-based)
  • Result generation and analysis with detailed qualification categorization
  • Support for complex eligibility scenarios based on In-Service Date, Substantial Stage Date, and other key milestones

Energy Community Determination Process

Key Eligibility Dates and Cutoffs

The determination process relies on several critical dates and cutoffs:

  • In-Service Date: When the solar system became operational
  • Substantial Stage Date: When significant construction progress was made
  • Calculated Trench Date: Used for SNH systems as a milestone
  • NTP Stage Payment Percentage: A threshold of >5% indicating significant project progress
  • Commissioning Package Receipt Date: Date when system commissioning documentation was received
  • June 7, 2024: A crucial cutoff date based on IRS guidance for 2024 EC qualification, which corresponds to the release of Notice 2024-48 (Annual Statistical Area Category and Coal Closure Category Update)

Eligibility Scenarios

The package handles various scenarios to determine a system’s eligibility year(s):

  1. Systems with In-Service Date:
    • Systems operational in 2023: Only eligible for 2023 energy community status
    • Systems operational between Jan 1, 2024 and June 6, 2024: Eligible for 2023 Statistical Areas and potentially all Coal Closure Areas
    • Systems operational on/after June 7, 2024: Eligibility depends on project progress dates
  2. Systems without In-Service Date:
    • Non-SNH Systems: Eligibility based on Substantial Stage Date and payment percentage
    • SNH Systems: Uses Calculated Inception Date or Trench Stage Date
    • Systems with limited date information default to 2024 eligibility only

Geographic Matching Process

  1. Solar system locations (latitude/longitude) are mapped as geographic points
  2. Points are checked against energy community boundary data for both CCEC and FFSAEC types:
    • For CCEC: Checks if system falls within a qualified census tract or directly adjoining tract
    • For FFSAEC: Checks if system falls within an MSA or non-MSA that meets both the fossil fuel employment threshold AND the unemployment rate threshold
  3. Matching is performed separately for eligible years (2023 and/or 2024) based on the complex eligibility scenarios
  4. Results are compiled with specific community details (tract name, county, statistical area)

Note: The mapping uses official IRS-designated areas. The IRS updates the list of qualifying MSAs and non-MSAs annually based on unemployment data from the previous year. For example, the 2024 designations (effective June 7, 2024) use 2023 unemployment statistics.

Final Categorization

Each solar system is assigned to one of four categories: - 2023 & 2024 EC: The system is in an energy community for both years - 2023 EC: The system is in an energy community for 2023 only - 2024 EC: The system is in an energy community for 2024 only - Not in EC: The system is not in any energy community

ITC Bonus Amount

Systems that qualify for Energy Community status are eligible for: - 10% increase for production tax credits (PTC) under Sections 45 and 45Y - 10 percentage point increase for investment tax credits (ITC) under Sections 48 and 48E

The Energy Community bonus is one of several potential adders available under the Inflation Reduction Act, helping to support and revitalize economies of coal and power plant communities.

flowchart TB
    start([Start]) --> config(Load Configuration)
    config --> stages{Select Pipeline Stages}
    
    subgraph stage1[Stage 1: Data Retrieval]
        retrieve(Retrieve Systems Data from Database) --> cache{Cache Available?}
        cache -->|Yes| cachedData(Use Cached Data)
        cache -->|No/Force Refresh| dbQuery(Query Database)
        dbQuery --> processRaw(Process Raw Data)
        cachedData --> storeData(Store Retrieved Data)
        processRaw --> storeData
    end
    
    subgraph stage2[Stage 2: Geocoding]
        geocode(Load System Addresses) --> batchProcess(Process in Batches)
        batchProcess --> arcGIS(Call ArcGIS API)
        arcGIS --> saveGeo(Save Geocoded Results)
        saveGeo --> geoComplete(Generate Geocoded Output)
    end
    
    subgraph stage3[Stage 3: Energy Community Analysis]
        analyze(Load Solar Systems Data) --> ec_data(Load Energy Community Data)
        ec_data --> validate{Validate EC Data}
        validate -->|Valid| distances(Calculate Distances)
        validate -->|Invalid| askContinue{Continue Anyway?}
        askContinue -->|Yes| distances
        askContinue -->|No| abortAnalysis(Abort Analysis)
        distances --> matching(Match Systems to Communities)
        matching --> categorize(Categorize EC Qualification)
        categorize --> exportResults(Export Results)
    end
    
    %% Pipeline Flow Control
    stages -->|retrieve| stage1
    stages -->|geocode| stage2
    stages -->|analyze| stage3
    stages -->|all| stage1
    
    stage1 --> checkGeocode{Geocode Stage Selected?}
    checkGeocode -->|Yes| stage2
    checkGeocode -->|No| checkAnalyze1{Analyze Stage Selected?}
    
    stage2 --> checkAnalyze2{Analyze Stage Selected?}
    checkAnalyze2 -->|Yes| stage3
    checkAnalyze2 -->|No| summary
    
    checkAnalyze1 -->|Yes| stage3
    checkAnalyze1 -->|No| summary
    
    stage3 --> summary(Generate Summary)
    abortAnalysis --> summary
    
    summary --> finish([End])
    
    %% Styling with Sunnova brand colors - lighter stage backgrounds for better arrow visibility
    classDef stageHeader fill:#c0c0c0,stroke:#0E0438,color:white,stroke-width:2px
    classDef process fill:#FAF7F2,stroke:#FF8200,color:#333333
    classDef decision fill:#FFCC00,stroke:#FF6633,color:#0E0438,stroke-width:2px
    classDef terminal fill:#FF8200,stroke:#FF6633,color:white,stroke-width:2px
    classDef error fill:#A52C60,stroke:#0E0438,color:white
    
    class stage1,stage2,stage3 stageHeader
    class retrieve,geocode,analyze,batchProcess,arcGIS,saveGeo,distances,matching,categorize,exportResults,processRaw,storeData,ec_data,geoComplete process
    class stages,cache,validate,askContinue,checkGeocode,checkAnalyze1,checkAnalyze2 decision
    class start,finish terminal
    class abortAnalysis error

Energy Community Data Sources

The package uses official energy community data from IRS notices, which are updated annually. The applicable notices depend on when a solar system was placed in service:

For Systems Placed in Service After Dec 31, 2022 and Before June 7, 2024:

  • Eligible Fossil Fuel Employment Areas:
    • IRS Notice 2023-29 Appendix B (counties that may or may not meet unemployment threshold)
    • IRS Notice 2023-47 Appendix 1 (additional eligible counties)
    • IRS Notice 2024-30 Appendix 1 (additional eligible counties)
    • IRS Notice 2023-47 Appendix 2 (counties that meet both thresholds)
    • IRS Notice 2024-30 Appendix 2 (updated counties meeting both thresholds)
  • Eligible Coal Closure Census Tracts:
    • IRS Notice 2023-29 Appendix C
    • IRS Notice 2023-47 Appendix 3
    • IRS Notice 2024-48 Appendix 2

For Systems Placed in Service After June 6, 2024:

  • Eligible Fossil Fuel Employment Areas:
    • IRS Notice 2023-29 Appendix B (counties that may or may not meet unemployment threshold)
    • IRS Notice 2023-47 Appendix 1 (additional eligible counties)
    • IRS Notice 2024-30 Appendix 1 (additional eligible counties)
    • IRS Notice 2024-48 Appendix 1 (counties meeting both thresholds)
  • Eligible Coal Closure Census Tracts:
    • IRS Notice 2023-29 Appendix C
    • IRS Notice 2023-47 Appendix 3
    • IRS Notice 2024-48 Appendix 2

The IRS issues Annual Statistical Area Category and Coal Closure Category Updates generally in May of each year.

Quick Start

# Install the package
pip install -e .

# Run the pipeline
nova-ec --config your_config.yaml --stages all

Configuration

The package can be configured using a YAML file:

database:
  connection_string: "your_connection_string"
  systems_query: "path/to/systems_query.sql"

geocoding:
  api_key: "your_arcgis_api_key"
  batch_size: 1000
  retry_count: 3

energy_communities:
  coal_closure_2023: "path/to/ccec_2023.geojson"
  coal_closure_2024: "path/to/ccec_2024.geojson"
  ffsa_2023: "path/to/ffsaec_2023.geojson"
  ffsa_2024: "path/to/ffsaec_2024.geojson"

output:
  directory: "results"
  filename_prefix: "ec_analysis"

Command Line Interface

# Run all pipeline stages
nova-ec --config your_config.yaml --stages all

# Run specific stages
nova-ec --config your_config.yaml --stages retrieve,analyze

# Force refresh cached data
nova-ec --config your_config.yaml --stages all --force-refresh

# Specify output format
nova-ec --config your_config.yaml --output-format csv,excel

Documentation

This documentation site includes:

  • API Reference documentation for all modules
  • Getting started guide
  • Configuration guide
  • Examples
  • Detailed explanation of eligibility determination logic
Installation and Setup
 
 
  • Built with [Quarto](https://quarto.org/) and [quartodoc](https://machow.github.io/quartodoc/)