Caiso

Contents

Caiso#

Submodules#

Package Contents#

Classes Summary#

CAISO

California Independent System Operator (CAISO)

Contents#

class gridstatus.caiso.CAISO[source]#

Bases: gridstatus.base.ISOBase

California Independent System Operator (CAISO)

Attributes

default_timezone

‘US/Pacific’

interconnection_homepage

https://rimspub.caiso.com/rimsui/logon.do

iso_id

‘caiso’

markets

None

name

‘California ISO’

status_homepage

https://www.caiso.com/TodaysOutlook/Pages/default.aspx

trading_hub_locations

[‘TH_NP15_GEN-APND’, ‘TH_SP15_GEN-APND’, ‘TH_ZP26_GEN-APND’]

Methods

get_aggregated_generation_outages(→ pandas.DataFrame)

Return hourly aggregated generator outages by trading hub.

get_as_prices(→ pandas.DataFrame)

Return AS prices for a given date for each region

get_as_procurement(→ pandas.DataFrame)

Get ancillary services procurement data from CAISO.

get_caiso_renewables_report(→ dict[str, pandas.DataFrame])

Fetches the CAISO daily renewable report for a given date and extracts data from

get_curtailed_non_operational_generator_report(...)

Return curtailed non-operational generator report for a given date.

get_curtailment(→ pandas.DataFrame)

Return curtailment data for a given date

get_curtailment_legacy(→ pandas.DataFrame)

Return curtailment data for a given date.

get_edam_wind_solar_forecast(→ pandas.DataFrame)

Day-ahead, hourly, BAA-level wind and solar forecasts for balancing

get_fuel_mix(→ pandas.DataFrame)

Get fuel mix in 5 minute intervals for a provided day.

get_fuel_regions(→ pandas.DataFrame)

Retrieves the (mostly static) list of fuel regions with associated data.

get_gas_prices(date[, end, fuel_region_id, sleep, verbose])

Return gas prices at a previous date

get_ghg_allowance(date[, end, sleep, verbose])

Return ghg allowance at a previous date

get_interconnection_queue(→ pandas.DataFrame)

get_intertie_constraint_shadow_prices_real_time_5_min(...)

Get 5-min intertie constraint shadow prices from CAISO.

get_interval_nomogram_branch_shadow_prices_real_time_5_min(...)

Get 5-min nomogram/branch shadow prices from CAISO.

get_ir_rc_prices(→ pandas.DataFrame)

Return day-ahead nodal Imbalance Reserve and Reliability Capacity prices.

get_ir_rc_requirements_awards_2da(→ pandas.DataFrame)

Return two-day-ahead hourly Imbalance Reserve requirements by BAA.

get_ir_rc_requirements_awards_3da(→ pandas.DataFrame)

Return three-day-ahead hourly Imbalance Reserve requirements by BAA.

get_ir_rc_requirements_awards_dam(→ pandas.DataFrame)

Return day-ahead hourly Imbalance Reserve requirements and

get_lmp(date, market[, locations, sleep, end, verbose])

Deprecated. Use the per-dataset methods instead:

get_lmp_day_ahead_hourly(→ pandas.DataFrame)

Get day-ahead hourly LMPs for all nodes.

get_lmp_hasp_15_min(→ pandas.DataFrame)

Get LMP HASP 15-min data from CAISO.

get_lmp_real_time_15_min(→ pandas.DataFrame)

Get real-time 15-minute LMPs for all nodes.

get_lmp_real_time_5_min(→ pandas.DataFrame)

Get real-time 5-minute LMPs for all nodes.

get_lmp_scheduling_point_tie_day_ahead_hourly(...)

get_lmp_scheduling_point_tie_real_time_15_min(...)

get_lmp_scheduling_point_tie_real_time_5_min(...)

Get LMP scheduling point tie combination 5-min data from CAISO.

get_load(→ pandas.DataFrame)

Return load at a previous date in 5 minute intervals

get_load_forecast(→ pandas.DataFrame)

get_load_forecast_15_min(→ pandas.DataFrame)

Returns 15-minute load forecast from the Real-Time Pre-Dispatch Market

get_load_forecast_5_min(→ pandas.DataFrame)

Returns 5-minute load forecast from the Real-Time Market

get_load_forecast_day_ahead(→ pandas.DataFrame)

Returns hourly day-ahead load forecast

get_load_forecast_seven_day_ahead(→ pandas.DataFrame)

Returns hourly seven-day-ahead load forecast

get_load_forecast_two_day_ahead(→ pandas.DataFrame)

Returns hourly two-day-ahead load forecast

get_load_hourly(→ pandas.DataFrame)

Returns actual load values

get_nomogram_branch_shadow_price_forecast_15_min(...)

Returns 15-minute nomogram/branch shadow price forecast from the Real-Time Pre-Dispatch Market.

get_nomogram_branch_shadow_prices_day_ahead_hourly(...)

Returns hourly day-ahead nomogram/branch shadow price forecast.

get_nomogram_branch_shadow_prices_hasp_hourly(...)

Returns nomogram/branch shadow price HASP hourly data from CAISO.

get_oasis_dataset(→ pandas.DataFrame)

Return data from OASIS for a given dataset

get_pnodes(→ pandas.DataFrame)

get_price_corrections(→ pandas.DataFrame)

Return CAISO price corrections (OASIS PRC_CORR_GRP summary).

get_raw_interconnection_queue(→ pandas.DataFrame)

get_renewables_forecast_dam(→ pandas.DataFrame)

Return DAM renewable forecast in hourly intervals

get_renewables_forecast_hasp(→ pandas.DataFrame)

Get solar and wind generation HASP hourly data from CAISO.

get_renewables_forecast_rtd(→ pandas.DataFrame)

Get RTD renewable forecast from CAISO.

get_renewables_forecast_rtpd(→ pandas.DataFrame)

Get RTPD renewable forecast from CAISO.

get_renewables_hourly(→ pandas.DataFrame)

Get wind and solar hourly actuals from CAISO.

get_seven_day_resource_adequacy_outlook(→ pandas.DataFrame)

Seven-day resource adequacy outlook in 5-minute intervals.

get_stats(→ dict)

get_status(→ str)

Get Current Status of the Grid. Only date="latest" is supported

get_storage(→ pandas.DataFrame)

Return storage charging or discharging for today in 5 minute intervals

get_storage_awards_fmm(→ pandas.DataFrame)

Energy and ancillary services awards for storage in the FMM (15-minute).

get_storage_awards_ifm(→ pandas.DataFrame)

Energy and AS awards for storage in the IFM (energy at 5-minute, AS hourly).

get_storage_awards_rtd(→ pandas.DataFrame)

Energy awards for storage in RTD (5-minute).

get_storage_energy_awards_ruc(→ pandas.DataFrame)

RUC energy awards to storage (5-minute).

get_storage_energy_bids_fmm(→ pandas.DataFrame)

FMM energy bid-in capacity by price bin (15-minute).

get_storage_energy_bids_ifm(→ pandas.DataFrame)

IFM energy bid-in capacity by price bin (hourly).

get_storage_soc_fmm(→ pandas.DataFrame)

State of charge for storage in the FMM (15-minute, standalone resources).

get_storage_soc_hourly(→ pandas.DataFrame)

Hourly IFM and RUC state of charge (see build_storage_soc_hourly).

get_storage_soc_rtd(→ pandas.DataFrame)

State of charge for storage in RTD (5-minute, standalone resources).

get_system_load_and_resource_schedules_day_ahead(...)

Get CAISO System Load and Resource Schedules Day-Ahead data from CAISO.

get_system_load_and_resource_schedules_hasp(...)

Get CAISO System Load and Resource Schedules HASP data from CAISO.

get_system_load_and_resource_schedules_real_time_5_min(...)

Get CAISO System Load and Resource Schedules Real Time data from CAISO.

get_system_load_and_resource_schedules_ruc(...)

Get CAISO System Load and Resource Schedules RUC data from CAISO.

get_tie_flows_real_time(→ pandas.DataFrame)

Return real time tie flow data.

get_tie_flows_real_time_15_min(→ pandas.DataFrame)

list_oasis_datasets([dataset])

List all available OASIS datasets and their parameters.

get_aggregated_generation_outages(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) pandas.DataFrame[source]#

Return hourly aggregated generator outages by trading hub.

Outage MW is reported with an Aggregated hub-total column plus fuel-category breakdown columns where CAISO provides them. Some hubs (e.g. ZP26) publish only the aggregate; others publish Thermal, Renewable, Hydro, and sometimes Not Available. Aggregated uses the published value when present, otherwise the sum of the breakdown columns.

Parameters:
  • date (datetime.date, str) – date to return data

  • end (datetime.date, str) – last date of range to return data. If None, returns only date. Defaults to None.

  • sleep (int, optional) – seconds to sleep between requests. Defaults to 4.

  • verbose (bool, optional) – print out url being fetched. Defaults to False.

Returns:

A DataFrame with one row per (Interval Start, Publish Time, Trading Hub), with outage MW by fuel category in separate columns.

Return type:

pandas.DataFrame

get_as_prices(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, market: str = 'DAM', sleep: int = 4, verbose: bool = False) pandas.DataFrame[source]#

Return AS prices for a given date for each region

Parameters:
  • date (datetime.date, str) – date to return data

  • end (datetime.date, str) – last date of range to return data. If None, returns only date. Defaults to None.

  • market (str) – DAM or HASP. Defaults to DAM.

  • verbose (bool, optional) – print out url being fetched. Defaults to False.

Returns:

A DataFrame of AS prices

Return type:

pandas.DataFrame

get_as_procurement(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, market: str = 'DAM', sleep: int = 4, verbose: bool = False) pandas.DataFrame[source]#

Get ancillary services procurement data from CAISO.

Parameters:
  • date (str | pd.Timestamp) – date to return data

  • end (str | pd.Timestamp | None, optional) – last date of range to return data. If None, returns only date. Defaults to None.

  • market (str, optional) – DAM or RTM. Defaults to “DAM”.

  • sleep (int, optional) – number of seconds to sleep between requests. Defaults to 4.

  • verbose (bool, optional) – print out url being fetched. Defaults to False.

Returns:

A DataFrame of ancillary services data

Return type:

pandas.DataFrame

get_caiso_renewables_report(date: pandas.Timestamp) dict[str, pandas.DataFrame][source]#

Fetches the CAISO daily renewable report for a given date and extracts data from all the charts into wide dataframes.

get_curtailed_non_operational_generator_report(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
Return curtailed non-operational generator report for a given date.

Earliest available date is June 17, 2021.

Parameters:
  • date (str, pd.Timestamp) – date to return data

  • end (str, pd.Timestamp, optional) – last date of range to return data. If None, returns only date. Defaults to None.

  • verbose (bool, optional) – print out url being fetched. Defaults to False.

Returns:

A DataFrame of curtailed non-operational generator report

Return type:

pandas.DataFrame

Notes

Column glossary: http://www.caiso.com/market/Pages/OutageManagement/Curtailed-OperationalGeneratorReportGlossary.aspx

If requesting multiple days, you may want to run the following to remove outages that get reported across multiple days:

df.drop_duplicates(
    subset=["OUTAGE MRID", "CURTAILMENT START DATE TIME"],
    keep="last",
)
get_curtailment(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Return curtailment data for a given date

Parameters:
  • date (datetime.date, str) – date to return data

  • end (datetime.date, str) – last date of range to return data. If None, returns only date. Defaults to None.

  • verbose – print out url being fetched. Defaults to False.

Returns:

A DataFrame of curtailment data

Return type:

pandas.DataFrame

get_curtailment_legacy(date: str | pandas.Timestamp, verbose: bool = False) pandas.DataFrame[source]#

Return curtailment data for a given date.

Note

Data available from June 30, 2016 to May 31, 2025. For current data, please use get_curtailment.

Parameters:
  • date – Date to return data.

  • verbose – Print out url being fetched. Defaults to False.

Returns:

A DataFrame of curtailment data.

get_edam_wind_solar_forecast(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Day-ahead, hourly, BAA-level wind and solar forecasts for balancing areas participating in the extended day-ahead market (EDAM).

Data at: http://oasis.caiso.com/mrioasis/logon.do at Energy > EDAM > Wind and Solar Forecast.

Per the OASIS Publications Schedule, the report is published every 30 minutes between 6:00 and 10:00 AM Pacific. The Publish Time on each row is the actual publish timestamp pulled from the MessageHeader.TimeDate of the corresponding XML report, not a derived offset.

Parameters:
  • date (str | pd.Timestamp) – date to return data

  • end (str | pd.Timestamp | None, optional) – last date of range to return data.

  • verbose (bool, optional) – print out url being fetched. Defaults to False.

Returns:

hourly EDAM wind and solar forecasts by BAA

Return type:

pandas.DataFrame

get_fuel_mix(date: str | pandas.Timestamp, start: str | pandas.Timestamp | None = None, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Get fuel mix in 5 minute intervals for a provided day.

Parameters:
  • date – “latest”, “today”, or an object that can be parsed as a datetime for the day to return data.

  • start – Start of date range to return. Alias for date parameter. Only specify one of date or start.

  • end – “today” or an object that can be parsed as a datetime for the day to return data. Only used if requesting a range of dates.

  • verbose – Print verbose output. Defaults to False.

Returns:

A DataFrame with columns for Time and each fuel type.

get_fuel_regions(verbose: bool = False) pandas.DataFrame[source]#

Retrieves the (mostly static) list of fuel regions with associated data. This file can be joined to the gas prices on Fuel Region Id

get_gas_prices(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, fuel_region_id: str | list = 'ALL', sleep: int = 4, verbose: bool = False)[source]#

Return gas prices at a previous date

Parameters:
  • date (datetime.date, str) – date to return data

  • end (datetime.date, str) – last date of range to return data. If None, returns only date. Defaults to None.

  • fuel_region_id (str, or list) – single fuel region id or list of fuel region ids to return data for. Defaults to ALL, which returns all fuel regions.

Returns:

A DataFrame of gas prices

Return type:

pandas.DataFrame

get_ghg_allowance(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False)[source]#

Return ghg allowance at a previous date

Parameters:
  • date (datetime.date, str) – date to return data

  • end (datetime.date, str) – last date of range to return data. If None, returns only date. Defaults to None.

get_interconnection_queue(verbose: bool = False) pandas.DataFrame[source]#
get_intertie_constraint_shadow_prices_real_time_5_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Get 5-min intertie constraint shadow prices from CAISO.

Parameters:
  • date (str | pd.Timestamp) – date to return data

  • end (str | pd.Timestamp | None, optional) – last date of range to return data. If None, returns only date. Defaults to None.

  • verbose (bool, optional) – print out url being fetched.

Returns:

A DataFrame with the intertie constraint shadow prices

Return type:

pandas.DataFrame

get_interval_nomogram_branch_shadow_prices_real_time_5_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Get 5-min nomogram/branch shadow prices from CAISO.

Parameters:
  • date (str | pd.Timestamp) – date to return data

  • end (str | pd.Timestamp | None, optional) – last date of range to return data. If None, returns only date. Defaults to None.

  • verbose (bool, optional) – print out url being fetched.

Returns:

A DataFrame with the shadow prices

Return type:

pandas.DataFrame

get_ir_rc_prices(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) pandas.DataFrame[source]#

Return day-ahead nodal Imbalance Reserve and Reliability Capacity prices.

The Marginal Clearing Price for Reliability Capacity (RCU/RCD) is comprised of Capacity, Congestion, and Loss components, while Imbalance Reserves (IRU/IRD) only have Capacity and Congestion components (Loss is NaN).

Parameters:
  • date (datetime.date, str) – date to return data

  • end (datetime.date, str) – last date of range to return data. If None, returns only date. Defaults to None.

  • verbose (bool, optional) – print out url being fetched. Defaults to False.

Returns:

A DataFrame of IR/RC prices with one row per (Interval Start, Location, Product). Earliest available date is May 1, 2026.

Return type:

pandas.DataFrame

get_ir_rc_requirements_awards_2da(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) pandas.DataFrame[source]#

Return two-day-ahead hourly Imbalance Reserve requirements by BAA.

Parameters:
  • date (datetime.date, str) – date to return data

  • end (datetime.date, str) – last date of range to return data. If None, returns only date. Defaults to None.

  • verbose (bool, optional) – print out url being fetched. Defaults to False.

Returns:

A DataFrame with one row per (Interval Start, BAA, Product, Type). Earliest available date is May 1, 2026.

Return type:

pandas.DataFrame

get_ir_rc_requirements_awards_3da(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) pandas.DataFrame[source]#

Return three-day-ahead hourly Imbalance Reserve requirements by BAA.

Parameters:
  • date (datetime.date, str) – date to return data

  • end (datetime.date, str) – last date of range to return data. If None, returns only date. Defaults to None.

  • verbose (bool, optional) – print out url being fetched. Defaults to False.

Returns:

A DataFrame with one row per (Interval Start, BAA, Product, Type). Earliest available date is May 1, 2026.

Return type:

pandas.DataFrame

get_ir_rc_requirements_awards_dam(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) pandas.DataFrame[source]#

Return day-ahead hourly Imbalance Reserve requirements and Imbalance Reserve and Reliability Capacity awards by BAA.

Parameters:
  • date (datetime.date, str) – date to return data

  • end (datetime.date, str) – last date of range to return data. If None, returns only date. Defaults to None.

  • verbose (bool, optional) – print out url being fetched. Defaults to False.

Returns:

A DataFrame with one row per (Interval Start, BAA, Product, Type). Earliest available date is May 1, 2026.

Return type:

pandas.DataFrame

get_lmp(date: str | pandas.Timestamp, market: str, locations: list = None, sleep: int = 5, end: str | pandas.Timestamp = None, verbose: bool = False)[source]#

Deprecated. Use the per-dataset methods instead: get_lmp_real_time_5_min(), get_lmp_real_time_15_min(), get_lmp_day_ahead_hourly().

get_lmp_day_ahead_hourly(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp] | None = None, sleep: int = 5, verbose: bool = False) pandas.DataFrame[source]#

Get day-ahead hourly LMPs for all nodes.

get_lmp_hasp_15_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Get LMP HASP 15-min data from CAISO.

Parameters:
  • date (str | pd.Timestamp) – date to return data

  • end (str | pd.Timestamp | None, optional) – last date of range to return data. If None, returns only date. Defaults to None.

  • verbose (bool, optional) – print out url being fetched. Defaults to False.

Returns:

A DataFrame of LMP HASP 15-min data

Return type:

pandas.DataFrame

get_lmp_real_time_15_min(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp] | None = None, sleep: int = 5, verbose: bool = False) pandas.DataFrame[source]#

Get real-time 15-minute LMPs for all nodes.

get_lmp_real_time_5_min(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp] | None = None, sleep: int = 5, verbose: bool = False) pandas.DataFrame[source]#

Get real-time 5-minute LMPs for all nodes.

get_lmp_scheduling_point_tie_day_ahead_hourly(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
get_lmp_scheduling_point_tie_real_time_15_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
get_lmp_scheduling_point_tie_real_time_5_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Get LMP scheduling point tie combination 5-min data from CAISO.

Parameters:
  • date (str | pd.Timestamp) – date to return data

  • end (str | pd.Timestamp | None, optional) – last date of range to return data. If None, returns only date. Defaults to None.

  • verbose (bool, optional) – print out url being fetched. Defaults to False.

Returns:

A DataFrame of LMP scheduling point tie combination 5-min data

Return type:

pandas.DataFrame

get_load(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Return load at a previous date in 5 minute intervals

get_load_forecast(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
get_load_forecast_15_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) pandas.DataFrame[source]#

Returns 15-minute load forecast from the Real-Time Pre-Dispatch Market

Parameters:
  • date (str | pd.Timestamp) – day to return

  • end (str | pd.Timestamp, optional) – end of date range to return. If None, returns only date. Defaults to None.

  • sleep (int) – seconds to sleep before returning to avoid rate limit. Defaults to 4.

  • verbose (bool) – print verbose output. Defaults to False.

Returns:

DataFrame with load forecast data

Return type:

pd.DataFrame

get_load_forecast_5_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) pandas.DataFrame[source]#

Returns 5-minute load forecast from the Real-Time Market

Parameters:
  • date (str | pd.Timestamp) – day to return

  • end (str | pd.Timestamp, optional) – end of date range to return. If None, returns only date. Defaults to None.

  • sleep (int) – seconds to sleep before returning to avoid rate limit. Defaults to 4.

  • verbose (bool) – print verbose output. Defaults to False.

Returns:

DataFrame with load forecast data

Return type:

pd.DataFrame

get_load_forecast_day_ahead(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) pandas.DataFrame[source]#

Returns hourly day-ahead load forecast

Parameters:
  • date (str | pd.Timestamp) – day to return

  • end (str | pd.Timestamp, optional) – end of date range to return data. If None, returns only date. Defaults to None.

  • sleep (int) – seconds to sleep before returning to avoid rate limit. Defaults to 4.

  • verbose (bool) – print verbose output. Defaults to False.

Returns:

DataFrame with load forecast data

Return type:

pd.DataFrame

get_load_forecast_seven_day_ahead(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) pandas.DataFrame[source]#

Returns hourly seven-day-ahead load forecast

Parameters:
  • date (str | pd.Timestamp) – day to return

  • end (str | pd.Timestamp, optional) – end of date range to return data. If None, returns only date. Defaults to None.

  • sleep (int) – seconds to sleep before returning to avoid rate limit. Defaults to 4.

  • verbose (bool) – print verbose output. Defaults to False.

Returns:

DataFrame with load forecast data

Return type:

pd.DataFrame

get_load_forecast_two_day_ahead(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) pandas.DataFrame[source]#

Returns hourly two-day-ahead load forecast

Parameters:
  • date (str | pd.Timestamp) – day to return

  • end (str | pd.Timestamp, optional) – end of date range to return data. If None, returns only date. Defaults to None.

  • sleep (int) – seconds to sleep before returning to avoid rate limit. Defaults to 4.

  • verbose (bool) – print verbose output. Defaults to False.

Returns:

DataFrame with load forecast data

Return type:

pd.DataFrame

get_load_hourly(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) pandas.DataFrame[source]#

Returns actual load values

Parameters:
  • date (str | pd.Timestamp) – day to return

  • end (str | pd.Timestamp, optional) – end of date range to return. If None, returns only date. Defaults to None.

  • sleep (int) – seconds to sleep before returning to avoid rate limit. Defaults to 4.

  • verbose (bool) – print verbose output. Defaults to False.

Returns:

DataFrame with actual load data

Return type:

pd.DataFrame

get_nomogram_branch_shadow_price_forecast_15_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Returns 15-minute nomogram/branch shadow price forecast from the Real-Time Pre-Dispatch Market.

Parameters:
  • date (str | pd.Timestamp) – date to return data

  • end (str | pd.Timestamp | None, optional) – last date of range to return data. If None, returns only date. Defaults to None.

  • verbose (bool, optional) – print out url being fetched.

Returns:

A DataFrame with the shadow price forecast

Return type:

pandas.DataFrame

get_nomogram_branch_shadow_prices_day_ahead_hourly(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Returns hourly day-ahead nomogram/branch shadow price forecast.

Parameters:
  • date (str | pd.Timestamp) – date to return data

  • end (str | pd.Timestamp | None, optional) – last date of range to return data. If None, returns only date. Defaults to None.

  • verbose (bool, optional) – print out url being fetched.

Returns:

A DataFrame with the shadow price forecast

Return type:

pandas.DataFrame

get_nomogram_branch_shadow_prices_hasp_hourly(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Returns nomogram/branch shadow price HASP hourly data from CAISO.

Parameters:
  • date (str | pd.Timestamp) – date to return data

  • end (str | pd.Timestamp | None, optional) – last date of range to return data. If None, returns only date. Defaults to None.

  • verbose (bool, optional) – print out url being fetched.

Returns:

A DataFrame with the shadow price HASP data

Return type:

pandas.DataFrame

get_oasis_dataset(dataset: str, date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, params: dict | None = None, raw_data: bool = True, sleep: int = 5, verbose: bool = False) pandas.DataFrame[source]#

Return data from OASIS for a given dataset

Parameters:
  • dataset (str) – dataset to return data for. See CAISO.list_oasis_datasets for supported datasets

  • date (str, pd.Timestamp) – date to return data

  • end (str, pd.Timestamp, optional) – last date of range to return data. If None, returns only date. Defaults to None.

  • params (dict) – dictionary of parameters to pass to dataset. See CAISO.list_oasis_datasets for supported parameters

  • raw_data (bool, optional) – return raw data from OASIS. Defaults to True.

  • sleep (int, optional) – number of seconds to sleep between requests. Defaults to 5.

  • verbose (bool, optional) – print out url being fetched. Defaults to False.

Raises:
  • ValueError – if parameter is not supported for dataset

  • ValueError – if parameter value is not supported for dataset

Returns:

A DataFrame of data from OASIS

Return type:

pd.DataFrame

get_pnodes(verbose: bool = False) pandas.DataFrame[source]#
get_price_corrections(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) pandas.DataFrame[source]#

Return CAISO price corrections (OASIS PRC_CORR_GRP summary).

CAISO reprices an operating day when it detects an error in published prices and posts a structured summary of every correction to the PRC_CORR_GRP report group. Each row describes a single corrected interval: the trade date (operating day) and market that were corrected, the hour ending and interval, the correction method and reason, and the time the correction was generated.

The report is keyed by trade date and serves one day per request, so a range is fetched one day at a time. A correction is typically generated several days to two weeks after the trade date, so Report Generated is the column to use when selecting recently issued corrections.

Parameters:
  • date (datetime.date, str) – start of the trade-date range.

  • end (datetime.date, str) – end of the trade-date range. If None, returns only date. Defaults to None.

  • sleep (int) – seconds to sleep between requests to avoid the OASIS rate limit. Defaults to 4.

  • verbose (bool, optional) – print out url being fetched. Defaults to False.

Returns:

one row per corrected interval with columns Trade Date (the corrected operating day), Hour Ending, Interval, Market (e.g. DAM, RTD, RTPD), Affected Area, Correction Method, Correction Count, Energy Type, Correction Reason and Report Generated (when the correction was issued). Trade Date and Report Generated are Pacific-localized timestamps.

Return type:

pandas.DataFrame

Raises:

NoDataFoundException – if no corrections were issued for the range.

get_raw_interconnection_queue(verbose: bool = False) pandas.DataFrame[source]#
get_renewables_forecast_dam(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Return DAM renewable forecast in hourly intervals

Data at: http://oasis.caiso.com/mrioasis/logon.do at System Demand > DAM Renewable Forecast

get_renewables_forecast_hasp(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Get solar and wind generation HASP hourly data from CAISO.

Parameters:
  • date (str | pd.Timestamp) – date to return data

  • end (str | pd.Timestamp | None, optional) – last date of range to return data. If None, returns only date. Defaults to None.

  • verbose (bool, optional) – print out url being fetched. Defaults to False.

Returns:

A DataFrame of solar and wind generation HASP hourly data

Return type:

pandas.DataFrame

get_renewables_forecast_rtd(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Get RTD renewable forecast from CAISO.

Parameters:
  • date (str | pd.Timestamp) – date to return data

  • end (str | pd.Timestamp | None, optional) – last date of range to return data.

  • verbose (bool, optional) – print out url being fetched. Defaults to False.

Returns:

A DataFrame of RTD renewable forecast

Return type:

pandas.DataFrame

get_renewables_forecast_rtpd(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Get RTPD renewable forecast from CAISO.

Parameters:
  • date (str | pd.Timestamp) – date to return data

  • end (str | pd.Timestamp | None, optional) – last date of range to return data.

  • verbose (bool, optional) – print out url being fetched. Defaults to False.

Returns:

A DataFrame of RTPD renewable forecast

Return type:

pandas.DataFrame

get_renewables_hourly(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Get wind and solar hourly actuals from CAISO.

Parameters:
  • date (str | pd.Timestamp) – date to return data

  • end (str | pd.Timestamp | None, optional) – last date of range to return data.

  • verbose (bool, optional) – print out url being fetched. Defaults to False.

Returns:

A DataFrame of wind and solar hourly actuals

Return type:

pandas.DataFrame

get_seven_day_resource_adequacy_outlook(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Seven-day resource adequacy outlook in 5-minute intervals.

Source: /outlook/history/{{yyyymmdd}}/rtm_forecast_7day.csv (historical) or current outlook for today.

The CSV Time column marks interval end; Interval Start is five minutes prior. Publish Time is midnight Pacific on the publication date encoded in the URL path.

get_stats(verbose: bool = False) dict[source]#
get_status(date: str = 'latest', verbose: bool = False) str[source]#

Get Current Status of the Grid. Only date=”latest” is supported

Known possible values: Normal, Restricted Maintenance Operations, Flex Alert

get_storage(date: str | pandas.Timestamp, verbose: bool = False) pandas.DataFrame[source]#

Return storage charging or discharging for today in 5 minute intervals

Negative means charging, positive means discharging

Parameters:

date (datetime.date, str) – date to return data

get_storage_awards_fmm(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Energy and ancillary services awards for storage in the FMM (15-minute).

get_storage_awards_ifm(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Energy and AS awards for storage in the IFM (energy at 5-minute, AS hourly).

get_storage_awards_rtd(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Energy awards for storage in RTD (5-minute).

get_storage_energy_awards_ruc(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

RUC energy awards to storage (5-minute).

get_storage_energy_bids_fmm(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

FMM energy bid-in capacity by price bin (15-minute).

get_storage_energy_bids_ifm(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

IFM energy bid-in capacity by price bin (hourly).

get_storage_soc_fmm(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

State of charge for storage in the FMM (15-minute, standalone resources).

get_storage_soc_hourly(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Hourly IFM and RUC state of charge (see build_storage_soc_hourly).

get_storage_soc_rtd(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

State of charge for storage in RTD (5-minute, standalone resources).

get_system_load_and_resource_schedules_day_ahead(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Get CAISO System Load and Resource Schedules Day-Ahead data from CAISO.

get_system_load_and_resource_schedules_hasp(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Get CAISO System Load and Resource Schedules HASP data from CAISO.

get_system_load_and_resource_schedules_real_time_5_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Get CAISO System Load and Resource Schedules Real Time data from CAISO.

get_system_load_and_resource_schedules_ruc(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Get CAISO System Load and Resource Schedules RUC data from CAISO.

get_tie_flows_real_time(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#

Return real time tie flow data.

Parameters:
  • date (str | pd.Timestamp) – date to return data

  • end (str | pd.Timestamp | None, optional) – last date of range to return data. If None, returns only date. Defaults to None.

  • verbose (bool, optional) – print out url being fetched. Defaults to False.

Returns:

A DataFrame of real time tie flow data

Return type:

pd.DataFrame

get_tie_flows_real_time_15_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) pandas.DataFrame[source]#
list_oasis_datasets(dataset: str | None = None)[source]#

List all available OASIS datasets and their parameters.

Parameters:

dataset (str, optional) – dataset to return data for. If None, returns all datasets.