CAISO API Referenceο
- class lib.iso.caiso.CAISOClient(config=None)[source]ο
Bases:
objectClient for retrieving data from CAISO OASIS API.
- get_load_forecast(market, start_date, end_date, step_size=1)[source]ο
Get system load forecast data.
- get_ancillary_services_prices(market, start_date, end_date, step_size=1)[source]ο
Get ancillary services clearing prices.
- get_wind_solar_summary(start_date, end_date, step_size=1)[source]ο
Get wind and solar generation summary.
- get_ghg_allowance_prices(start_date, end_date, step_size=1)[source]ο
Get greenhouse gas allowance prices.
- get_intertie_constraint_shadow_prices(start_date, end_date, step_size=1)[source]ο
Get intertie constraint shadow prices.
- get_system_load(market, start_date, end_date, step_size=1)[source]ο
Get system load and resource schedules.
- get_market_power_mitigation(market, start_date, end_date, step_size=1)[source]ο
Get Market Power Mitigation (MPM) status.
- get_flex_ramp_requirements(start_date, end_date, baa_group='ALL', step_size=1)[source]ο
Get flexible ramping requirements.
- get_flex_ramp_awards(start_date, end_date, baa_group='ALL', step_size=1)[source]ο
Get flexible ramping aggregated awards.
- get_flex_ramp_demand_curve(start_date, end_date, baa_group='ALL', step_size=1)[source]ο
Get flexible ramping demand curves.
- get_eim_transfer(start_date, end_date, baa_group='ALL', step_size=1)[source]ο
Get Energy Imbalance Market (EIM) transfer data.
- get_eim_transfer_limits(start_date, end_date, baa_group='ALL', step_size=1)[source]ο
Get Energy Imbalance Market (EIM) transfer limits.
- get_ancillary_services_requirements(market, start_date, end_date, anc_type='ALL', anc_region='ALL', step_size=1)[source]ο
Get ancillary services requirements.
- get_ancillary_services_results(market, start_date, end_date, anc_type='ALL', anc_region='ALL', step_size=1)[source]ο
Get ancillary services results/awards.
- get_scheduling_point_tie_prices(market, start_date, end_date, step_size=1)[source]ο
Get scheduling point tie prices.
- get_advisory_demand_forecast(start_date, end_date, step_size=1)[source]ο
Get advisory CAISO demand forecast (RTPD).
- get_curtailed_non_operational_reports(start_date, end_date, kind='both', out_subdir='curtailed_non_operational_generator_reports', timeout=None, save_raw_html=True, parse_html_to_csv=True)[source]ο
Download CAISO βCurtailed and Non-Operational Generatorβ reports.
- CAISO has changed BOTH:
date token formats in filenames (YYYYMMDD vs YYYY-MM-DD vs mon-dd-yyyy)
the stem (sometimes includes β-and-β: βcurtailed-and-non-operational-β¦β)
This method tries multiple stem variants per report + multiple date tokens + .xlsx then .html.
Configurationο
- class lib.iso.caiso.CAISOConfig(base_url='http://oasis.caiso.com/oasisapi/SingleZip', query_date_format='%Y%m%dT%H:%M-0000', data_date_format='%Y-%m-%dT%H:%M:%S-00:00', raw_dir=PosixPath('raw_data'), xml_dir=PosixPath('raw_data/xml_files'), data_dir=PosixPath('data/CAISO'), max_retries=3, retry_delay=5, timeout=30)[source]ο
Configuration for CAISO client.
- __init__(base_url='http://oasis.caiso.com/oasisapi/SingleZip', query_date_format='%Y%m%dT%H:%M-0000', data_date_format='%Y-%m-%dT%H:%M:%S-00:00', raw_dir=PosixPath('raw_data'), xml_dir=PosixPath('raw_data/xml_files'), data_dir=PosixPath('data/CAISO'), max_retries=3, retry_delay=5, timeout=30)ο
Market Typesο
Report Versionsο
Main Methodsο
Pricing Dataο
- CAISOClient.get_lmp(market, start_date, end_date, step_size=1)[source]ο
Get Locational Marginal Price data.
- Parameters:
- Returns:
True if successful, False otherwise
- Return type:
Download Locational Marginal Price (LMP) data.
- Parameters:
- Returns:
True if successful, False otherwise
- Return type:
Example:
from datetime import date from lib.iso.caiso import CAISOClient, Market client = CAISOClient() success = client.get_lmp( market=Market.DAM, start_date=date(2024, 1, 1), end_date=date(2024, 1, 31) ) client.cleanup()
- CAISOClient.get_ancillary_services_prices(market, start_date, end_date, step_size=1)[source]ο
Get ancillary services clearing prices.
Download ancillary services clearing prices.
Load Dataο
Generation Dataο
- CAISOClient.get_wind_solar_summary(start_date, end_date, step_size=1)[source]ο
Get wind and solar generation summary.
Download wind and solar generation summary.
Includes current generation, forecasts, and available capacity for both wind and solar resources.
Market Operationsο
- CAISOClient.get_market_power_mitigation(market, start_date, end_date, step_size=1)[source]ο
Get Market Power Mitigation (MPM) status.
- Parameters:
Download Market Power Mitigation (MPM) status.
- CAISOClient.get_flex_ramp_requirements(start_date, end_date, baa_group='ALL', step_size=1)[source]ο
Get flexible ramping requirements.
Download flexible ramping requirements.
- CAISOClient.get_flex_ramp_awards(start_date, end_date, baa_group='ALL', step_size=1)[source]ο
Get flexible ramping aggregated awards.
Download flexible ramping awards.
- CAISOClient.get_flex_ramp_demand_curve(start_date, end_date, baa_group='ALL', step_size=1)[source]ο
Get flexible ramping demand curves.
Download flexible ramping demand curves.
Ancillary Servicesο
- CAISOClient.get_ancillary_services_requirements(market, start_date, end_date, anc_type='ALL', anc_region='ALL', step_size=1)[source]ο
Get ancillary services requirements.
- Parameters:
Download ancillary services requirements.
- Parameters:
- Returns:
Success status
- Return type:
Utility Methodsο
- CAISOClient.cleanup()[source]ο
Clean up temporary files.
Clean up temporary files created during download.
Should be called after completing downloads to remove raw XML and CSV files.
Example:
client = CAISOClient() try: client.get_lmp(Market.DAM, start, end) finally: client.cleanup() # Always clean up
Private Methodsο
- CAISOClient._build_params(query_name, start_date, end_date, market=None, **kwargs)[source]ο
Build request parameters for OASIS API.
Examplesο
Basic LMP Downloadο
from datetime import date
from lib.iso.caiso import CAISOClient, Market
client = CAISOClient()
# Download Day-Ahead LMP
client.get_lmp(
market=Market.DAM,
start_date=date(2024, 1, 1),
end_date=date(2024, 1, 31)
)
client.cleanup()
Custom Configurationο
from pathlib import Path
from lib.iso.caiso import CAISOClient, CAISOConfig
config = CAISOConfig(
data_dir=Path('my_data/CAISO'),
max_retries=5,
timeout=60
)
client = CAISOClient(config)
client.get_lmp(Market.DAM, date(2024, 1, 1), date(2024, 1, 31))
client.cleanup()
Multiple Marketsο
from lib.iso.caiso import CAISOClient, Market
client = CAISOClient()
start = date(2024, 1, 1)
end = date(2024, 1, 31)
# Download multiple markets
for market in [Market.DAM, Market.RTM]:
print(f"Downloading {market.value}...")
client.get_lmp(market, start, end)
client.cleanup()
See Alsoο
CAISO Data Guide - CAISO data overview
Python API Guide - Python API guide
Your First Data Download - Tutorial
Notesο
All dates are in Pacific Time
API rate limiting is handled automatically
Large date ranges are split into smaller requests
Temporary files are created in raw_data/ directory
Always call cleanup() to remove temporary files