Multi-ISO Comparison

Compare load and prices across multiple ISOs for regional analysis

Compare load and prices across multiple ISOs for regional analysis.

import pandas as pd

# Define ISO datasets and their hub locations
ISOS = {
    "ERCOT": {
        "load": "ercot_load",
        "lmp": "ercot_lmp_by_settlement_point",
        "hub": "HB_HOUSTON",
        "timezone": "America/Chicago"
    },
    "CAISO": {
        "load": "caiso_load",
        "lmp": "caiso_lmp_real_time_5_min",
        "hub": "TH_SP15_GEN-APND",
        "timezone": "America/Los_Angeles"
    },
    "PJM": {
        "load": "pjm_load",
        "lmp": "pjm_lmp_real_time_5_min",
        "hub": "WESTERN HUB",
        "timezone": "America/New_York"
    }
}

# Fetch yesterday's hourly data for each ISO
results = {}

for iso_name, config in ISOS.items():
    print(f"Fetching {iso_name}...")

    # Get hourly average prices
    prices = client.get_dataset(
        config["lmp"],
        start="2026-01-13",
        end="2026-01-14",
        filter_column="location",
        filter_value=config["hub"],
        resample="1 hour",
        resample_function="mean",
        timezone=config["timezone"]
    )

    results[iso_name] = {
        "avg_price": prices['lmp'].mean(),
        "max_price": prices['lmp'].max(),
        "min_price": prices['lmp'].min(),
        "price_volatility": prices['lmp'].std()
    }

# Compare results
print("\n=== Multi-ISO Price Comparison (2026-01-13) ===")
print(f"{'ISO':<10} {'Avg Price':>12} {'Max':>10} {'Min':>10} {'Volatility':>12}")
print("-" * 58)

for iso_name, stats in results.items():
    print(f"{iso_name:<10} ${stats['avg_price']:>10.2f} ${stats['max_price']:>8.2f} ${stats['min_price']:>8.2f} ${stats['price_volatility']:>10.2f}")

Last updated

Was this helpful?