Carbon Emissions & Climate Accounting Conservation

Domain: Environmental, Social, Governance (ESG) & Climate Accounting Application: Scope 1/2/3 emissions reconciliation, carbon credit validation, SEC climate disclosure Framework Fit: 9/10 (Perfect conservation structure, regulatory mandate incoming) Urgency: HIGH (SEC climate rules 2024-2025, EU CSRD mandatory reporting) Status: Conceptual (accounting framework 80% reusable)


1. The Problem: Carbon Accounting Opacity

Regulatory Mandates (2024-2025)

SEC Climate Disclosure Rules (March 2024): - Scope 1 & 2 emissions: Mandatory for large accelerated filers (>$700M market cap) - Scope 3 emissions: Mandatory if material or if company has emissions target - Assurance requirement: Limited assurance initially, reasonable assurance phased in - Challenge: No standard methodology for Scope 3 reconciliation (analogous to accounting’s missing OCI problem)

EU Corporate Sustainability Reporting Directive (CSRD): - Mandatory: Jan 2024 for large EU companies (>500 employees) - Double materiality: Financial + environmental impact - Scope 1/2/3: All scopes required - Assurance: Third-party verification mandatory

California SB 253 (Climate Corporate Data Accountability Act): - Scope 1 & 2: All companies >$1B revenue operating in CA (2026) - Scope 3: All companies >$1B revenue (2027) - Penalties: Up to $500K for non-compliance


Current Gaps

No Automated Way To: 1. Reconcile Scope 1/2/3 across value chain (like equity bridge across components) 2. Validate carbon credits match emissions (like assets = liabilities + equity) 3. Detect double-counting (Scope 3 upstream = Scope 1 downstream for supplier) 4. Track boundary changes (M&A changes consolidation scope for emissions) 5. Attribute emission sources (fossil vs. renewable, direct vs. purchased)

Market Impact: - Greenwashing risk: Companies over-state reductions (no conservation check) - Carbon credit fraud: Credits sold multiple times (no ledger integrity) - Audit costs: Manual verification expensive ($100K-1M per year for large companies) - Regulatory risk: Non-compliance penalties ($500K+ under CA SB 253)


2. Conservation Principle

Emissions Balance Equation

Company-Level (Scope 1 + 2):

Net_Emissions_t = Scope1_t + Scope2_t - Offsets_t - Sequestration_t

Scope 1 (Direct):
  Fossil fuel combustion (company-owned vehicles, facilities)
  Process emissions (chemical reactions, refrigerants)

Scope 2 (Purchased Energy):
  Electricity, steam, heating/cooling purchased from utilities
  Market-based vs. location-based accounting

Sinks:
  Carbon offsets (renewable energy credits, forest preservation)
  Carbon sequestration (CCS, direct air capture)

Value Chain (Scope 3):

Scope 3 = Upstream_Emissions + Downstream_Emissions

Upstream (Purchased goods, services):
  Supplier Scope 1/2 (allocated to company's purchases)

Downstream (Sold products):
  Customer use-phase emissions (product lifetime)

Conservation constraint:
Company_A's Scope 3 Upstream = Supplier_B's Scope 1/2 × (Purchases / Total sales)

Carbon Credit Conservation

Credit Ledger:

Credits_balance = Credits_purchased + Credits_issued - Credits_retired - Credits_sold

Conservation:
Σ(Credits outstanding) = Σ(Credits issued) - Σ(Credits retired)

Validation:
- Credits cannot be retired twice (like UTXOs in crypto)
- Credits must reference specific sequestration project
- Project must demonstrate additionality (sequestration wouldn't happen otherwise)

3. Mathematical Mapping

Accounting → Carbon: - EquityNet Emissions Position (Emissions - Offsets) - Net IncomeOperational Emissions (Scope 1/2 generated during period) - Owner TransactionsOffset Purchases/Retirements (external transactions) - M&A Boundary FluxCorporate M&A (consolidation scope changes for emissions) - Equity BridgeEmissions Bridge (ΔEmissions = Scope1 + Scope2 - Offsets)


4. Use Cases

Use Case 1: Scope 1/2 Reconciliation (Emissions Bridge)

Problem: Validate reported emissions match activity data

Framework Application:

def validate_emissions_bridge(company, year):
    # Opening net position (cumulative emissions - cumulative offsets)
    net_start = ghg_inventory.get_net_position(company, year - 1)

    # Scope 1 sources
    scope1_combustion = activity_data.get_fuel_consumption(company, year) * emission_factors
    scope1_process = activity_data.get_process_emissions(company, year)

    # Scope 2 sources
    scope2_electricity = utility.get_purchased_kwh(company, year) * grid_emission_factor
    scope2_steam = utility.get_purchased_steam(company, year) * steam_emission_factor

    # Sinks (offsets)
    offsets_purchased = credit_registry.get_retired_credits(company, year)
    sequestration = ccs_projects.get_captured_co2(company, year)

    # Expected net position
    expected_net = (net_start + scope1_combustion + scope1_process
                   + scope2_electricity + scope2_steam
                   - offsets_purchased - sequestration)

    # Reported net position (CDP disclosure, SEC filing)
    reported_net = sec_filing.get_net_emissions(company, year)

    # Residual
    residual = reported_net - expected_net

    # Pass/fail (±5% tolerance typical for emissions estimates)
    pass_bridge = abs(residual) < 0.05 * abs(expected_net)

    return {
        'expected': expected_net,
        'reported': reported_net,
        'residual': residual,
        'pass': pass_bridge
    }

Use Case 2: Carbon Credit Double-Counting Detection

Problem: Same offset sold to multiple buyers (fraud)

Framework Application: UTXO-style ledger for carbon credits

def validate_credit_retirement(credit_id, registry):
    # Get credit history (like UTXO history)
    issuance = registry.get_issuance(credit_id)
    transfers = registry.get_transfers(credit_id)
    retirements = registry.get_retirements(credit_id)

    # Conservation check
    if len(retirements) > 1:
        return f"⚠ FRAUD: Credit {credit_id} retired {len(retirements)} times (double-counting)"

    if len(retirements) == 0 and credit_id in company.claimed_offsets:
        return f"⚠ FRAUD: Credit {credit_id} claimed but not retired"

    return "✓ Credit validly retired (single use)"

Use Case 3: M&A Emissions Boundary Flux

Problem: Company acquires subsidiary - how do emissions consolidate?

Accounting Analog:

Company A acquires Company B
  → B's equity crosses consolidation boundary (Reynolds Transport)

Carbon analog:
Company A acquires Company B
  → B's emissions cross reporting boundary

Conservation:
ΔEmissions_A = ΔEmissions_A_organic + Emissions_B_acquired (boundary flux)

Example:

Jan 1, 2025: Company A emissions = 100K tons CO2
Company A acquires Company B (B emits 50K tons/year)

Dec 31, 2025: Company A reported emissions = 160K tons

Decompose:
ΔEmissions_organic = 10K tons (A's growth, assume 10% increase)
Emissions_B_acquired = 50K tons (boundary flux from acquisition)

Validate: 100K + 10K + 50K = 160K ✓

If didn't reconcile:
- Incomplete disclosure (B's emissions not fully consolidated)
- Timing mismatch (acquisition mid-year, pro-rated incorrectly)
- Divestiture (A sold a division, negative boundary flux not disclosed)

5. Implementation Plan

Code Reuse: 80% (accounting equity bridge → emissions bridge)

New Components:

src/carbon/
├── parsers/
│   ├── ghg_protocol_parser.py    # GHG Protocol reporting format
│   ├── cdp_disclosure_parser.py  # CDP (Carbon Disclosure Project)
│   ├── sec_climate_parser.py     # SEC climate filings
│   └── credit_registry_api.py    # Verra, Gold Standard, ACR
├── validators/
│   ├── scope_reconciliation.py   # Scope 1/2/3 conservation
│   ├── credit_validator.py       # Carbon credit double-count detection
│   └── boundary_flux_validator.py # M&A emissions consolidation
└── emission_factors/
    ├── epa_factors.py            # EPA emission factors
    └── iea_grid_factors.py       # Grid emission factors by region

Effort: 3-4 weeks for prototype


6. Regulatory Mapping

GHG Protocol (ISO 14064): - Scope 1: Direct emissions (company-owned sources) - Scope 2: Indirect emissions (purchased energy) - Scope 3: Value chain (15 categories - purchased goods, employee commuting, product use, etc.) - Framework application: Scope taxonomy maps to source term taxonomy

SEC Climate Disclosure (17 CFR §229.1500): - Material emissions disclosures - Assurance by third-party (attestation like accounting audit) - Framework application: Automated assurance (vs. manual audit)


7. Market Opportunity

Target Customers: - Corporations: S&P 500 companies subject to SEC rules - Sustainability Consultants: Deloitte, PwC sustainability practices - Carbon Registries: Verra, Gold Standard, American Carbon Registry

Pricing: $50K-300K per company

TAM: 1,000+ large companies × $150K = $150M


8. Why This Matters

Timeliness: SEC rules effective 2024-2025, EU CSRD mandatory 2024

Conservation Fit: Carbon accounting mirrors financial accounting (Scope 1/2/3 like P/L, OCI, Owner)

PwC Synergy: PwC has large sustainability practice - framework integrates financial + climate audits

Strategic Value: - Demonstrates framework universality (accounting → energy → carbon chain) - Addresses regulatory mandate (SEC, EU) - Large market opportunity ($150M TAM)


Document Status: Complete specification Implementation Effort: 3-4 weeks prototype Next Action: Prototype Scope 1/2 validator using public CDP data

Accounting Conservation Framework | Home