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: - Equity → Net Emissions Position (Emissions - Offsets) - Net Income → Operational Emissions (Scope 1/2 generated during period) - Owner Transactions → Offset Purchases/Retirements (external transactions) - M&A Boundary Flux → Corporate M&A (consolidation scope changes for emissions) - Equity Bridge → Emissions 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