Caiso#

Module Contents#

Classes Summary#

CAISO

California Independent System Operator (CAISO)

Functions#

determine_lmp_frequency

if querying all must use 1d frequency

determine_oasis_frequency

Attributes Summary#

iso

oasis_dataset_config

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_as_prices

Return AS prices for a given date for each region

get_as_procurement

Get ancillary services procurement data from CAISO.

get_curtailed_non_operational_generator_report

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

get_curtailment

Return curtailment data for a given date

get_fuel_mix

Get fuel mix in 5 minute intervals for a provided day

get_gas_prices

Return gas prices at a previous date

get_ghg_allowance

Return ghg allowance at a previous date

get_interconnection_queue

get_lmp

Get LMP pricing starting at supplied date for a list of locations.

get_load

Return load at a previous date in 5 minute intervals

get_load_forecast

Returns load forecast for a previous date in 1 hour intervals

get_oasis_dataset

Return data from OASIS for a given dataset

get_pnodes

get_raw_interconnection_queue

get_stats

get_status

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

get_storage

Return storage charging or discharging for today in 5 minute intervals

list_oasis_datasets

get_as_prices(date, end=None, market='DAM', sleep=4, verbose=False)[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, end=None, market='DAM', sleep=4, verbose=False)[source]#

Get ancillary services procurement data from CAISO.

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 – DAM or RTM. Defaults to DAM.

Returns:

A DataFrame of ancillary services data

Return type:

pandas.DataFrame

get_curtailed_non_operational_generator_report(date, end=None, verbose=False)[source]#
Return curtailed non-operational generator report for a given date.

Earliest available date is June 17, 2021.

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 curtailed non-operational generator report

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

if requesting multiple days, may want to run following to remove outages that get reported across multiple days: ```df.drop_duplicates(

subset=[“OUTAGE MRID”, “CURTAILMENT START DATE TIME”], keep=”last”)```

Return type:

pandas.DataFrame

get_curtailment(date, verbose=False)[source]#

Return curtailment data for a given date

Notes

  • requires java to be installed in order to run

  • Data available from June 30, 2016 to present

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_fuel_mix(date, start=None, end=None, verbose=False)[source]#

Get fuel mix in 5 minute intervals for a provided day

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

  • start (datetime.date, str) – start of date range to return. alias for date parameter. Only specify one of date or start.

  • end (datetime.date, str) – “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 (bool, optional) – print verbose output. Defaults to False.

Returns:

A DataFrame with columns - ‘Time’ and columns for each fuel type.

Return type:

pandas.DataFrame

get_gas_prices(date, end=None, fuel_region_id='ALL', sleep=4, verbose=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, end=None, sleep=4, verbose=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=False)[source]#
get_lmp(date, market: str, locations: list = None, sleep: int = 5, end=None, verbose=False)[source]#

Get LMP pricing starting at supplied date for a list of locations.

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

  • market – market to return from. supports:

  • locations (list) – list of locations to get data from. If no locations are provided, defaults to NP15, SP15, and ZP26, which are the trading hub locations. USE “ALL_AP_NODES” for all Aggregate Pricing Node. Use “ALL” to get all nodes. For a list of locations, call CAISO.get_pnodes()

  • sleep (int) – number of seconds to sleep before returning to avoid hitting rate limit in regular usage. Defaults to 5 seconds.

Returns:

A DataFrame of pricing data

Return type:

pandas.DataFrame

get_load(date, end=None, verbose=False)[source]#

Return load at a previous date in 5 minute intervals

get_load_forecast(date, end=None, sleep=4, verbose=False)[source]#

Returns load forecast for a previous date in 1 hour intervals

Parameters:
  • date (datetime.date, pd.Timestamp, str) – day to return. If string, format should be YYYYMMDD e.g 20200623

  • sleep (int) – number of seconds to sleep before returning to avoid hitting rate limit in regular usage. Defaults to 5 seconds.

get_oasis_dataset(dataset, date, end=None, params=None, raw_data=True, sleep=5, verbose=False)[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 (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.

  • 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.

Returns:

A DataFrame of OASIS data

Return type:

pandas.DataFrame

get_pnodes(verbose=False)[source]#
get_raw_interconnection_queue(verbose)[source]#
get_stats(verbose=False)[source]#
get_status(date='latest', verbose=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, verbose=False)[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

list_oasis_datasets(dataset=None)[source]#
gridstatus.caiso.determine_lmp_frequency(args)[source]#

if querying all must use 1d frequency

gridstatus.caiso.determine_oasis_frequency(args)[source]#
gridstatus.caiso.iso[source]#
gridstatus.caiso.oasis_dataset_config[source]#