For the complete documentation index, see llms.txt. This page is also available as Markdown.

Renewable Generation Analysis

Track solar and wind generation patterns to understand renewable penetration trends

Track solar and wind generation patterns to understand renewable penetration trends.

import pandas as pd

# Get one month of daily fuel mix data
df = client.get_dataset(
    "ercot_fuel_mix",
    start="2026-01-01",
    end="2026-02-01",
    resample="1 day",
    resample_function="mean"
)

# Calculate daily renewable metrics
df['renewable_total'] = df['solar'] + df['wind']
df['total_generation'] = (
    df['coal_and_lignite'] + df['hydro'] + df['nuclear'] +
    df['power_storage'].clip(lower=0) + df['solar'] + df['wind'] +
    df['natural_gas'] + df['other']
)
df['renewable_pct'] = df['renewable_total'] / df['total_generation'] * 100

print("=== ERCOT Renewable Generation - January 2026 ===")
print(f"\nMonthly Averages:")
print(f"  Solar: {df['solar'].mean():,.0f} MW")
print(f"  Wind: {df['wind'].mean():,.0f} MW")
print(f"  Renewable %: {df['renewable_pct'].mean():.1f}%")

print(f"\nPeak Renewable Days:")
top_renewable = df.nlargest(5, 'renewable_pct')[['interval_start_utc', 'solar', 'wind', 'renewable_pct']]
for _, row in top_renewable.iterrows():
    date = str(row['interval_start_utc'])[:10]
    print(f"  {date}: {row['renewable_pct']:.1f}% ({row['solar']:,.0f} MW solar, {row['wind']:,.0f} MW wind)")

print(f"\nLowest Renewable Days:")
low_renewable = df.nsmallest(5, 'renewable_pct')[['interval_start_utc', 'solar', 'wind', 'renewable_pct']]
for _, row in low_renewable.iterrows():
    date = str(row['interval_start_utc'])[:10]
    print(f"  {date}: {row['renewable_pct']:.1f}% ({row['solar']:,.0f} MW solar, {row['wind']:,.0f} MW wind)")

Last updated

Was this helpful?