Caiso
==========================

.. py:module:: gridstatus.caiso


Submodules
----------
.. toctree::
   :titlesonly:
   :maxdepth: 1

   caiso/index.rst
   caiso_constants/index.rst
   caiso_utils/index.rst
   daily_energy_storage/index.rst


Package Contents
----------------

Classes Summary
~~~~~~~~~~~~~~~

.. autoapisummary::

   gridstatus.caiso.CAISO





Contents
~~~~~~~~~~~~~~~~~~~
.. py:class:: CAISO

   Bases: :py:obj:`gridstatus.base.ISOBase`

   California Independent System Operator (CAISO)


   **Attributes**

   .. list-table::
      :widths: 15 85
      :header-rows: 0

      * - **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**

   .. autoapisummary::
      :nosignatures:

      gridstatus.caiso.CAISO.get_aggregated_generation_outages
      gridstatus.caiso.CAISO.get_as_prices
      gridstatus.caiso.CAISO.get_as_procurement
      gridstatus.caiso.CAISO.get_caiso_renewables_report
      gridstatus.caiso.CAISO.get_curtailed_non_operational_generator_report
      gridstatus.caiso.CAISO.get_curtailment
      gridstatus.caiso.CAISO.get_curtailment_legacy
      gridstatus.caiso.CAISO.get_edam_wind_solar_forecast
      gridstatus.caiso.CAISO.get_fuel_mix
      gridstatus.caiso.CAISO.get_fuel_regions
      gridstatus.caiso.CAISO.get_gas_prices
      gridstatus.caiso.CAISO.get_ghg_allowance
      gridstatus.caiso.CAISO.get_interconnection_queue
      gridstatus.caiso.CAISO.get_intertie_constraint_shadow_prices_real_time_5_min
      gridstatus.caiso.CAISO.get_interval_nomogram_branch_shadow_prices_real_time_5_min
      gridstatus.caiso.CAISO.get_ir_rc_prices
      gridstatus.caiso.CAISO.get_ir_rc_requirements_awards_2da
      gridstatus.caiso.CAISO.get_ir_rc_requirements_awards_3da
      gridstatus.caiso.CAISO.get_ir_rc_requirements_awards_dam
      gridstatus.caiso.CAISO.get_lmp
      gridstatus.caiso.CAISO.get_lmp_day_ahead_hourly
      gridstatus.caiso.CAISO.get_lmp_hasp_15_min
      gridstatus.caiso.CAISO.get_lmp_real_time_15_min
      gridstatus.caiso.CAISO.get_lmp_real_time_5_min
      gridstatus.caiso.CAISO.get_lmp_scheduling_point_tie_day_ahead_hourly
      gridstatus.caiso.CAISO.get_lmp_scheduling_point_tie_real_time_15_min
      gridstatus.caiso.CAISO.get_lmp_scheduling_point_tie_real_time_5_min
      gridstatus.caiso.CAISO.get_load
      gridstatus.caiso.CAISO.get_load_forecast
      gridstatus.caiso.CAISO.get_load_forecast_15_min
      gridstatus.caiso.CAISO.get_load_forecast_5_min
      gridstatus.caiso.CAISO.get_load_forecast_day_ahead
      gridstatus.caiso.CAISO.get_load_forecast_seven_day_ahead
      gridstatus.caiso.CAISO.get_load_forecast_two_day_ahead
      gridstatus.caiso.CAISO.get_load_hourly
      gridstatus.caiso.CAISO.get_nomogram_branch_shadow_price_forecast_15_min
      gridstatus.caiso.CAISO.get_nomogram_branch_shadow_prices_day_ahead_hourly
      gridstatus.caiso.CAISO.get_nomogram_branch_shadow_prices_hasp_hourly
      gridstatus.caiso.CAISO.get_oasis_dataset
      gridstatus.caiso.CAISO.get_pnodes
      gridstatus.caiso.CAISO.get_price_corrections
      gridstatus.caiso.CAISO.get_raw_interconnection_queue
      gridstatus.caiso.CAISO.get_renewables_forecast_dam
      gridstatus.caiso.CAISO.get_renewables_forecast_hasp
      gridstatus.caiso.CAISO.get_renewables_forecast_rtd
      gridstatus.caiso.CAISO.get_renewables_forecast_rtpd
      gridstatus.caiso.CAISO.get_renewables_hourly
      gridstatus.caiso.CAISO.get_seven_day_resource_adequacy_outlook
      gridstatus.caiso.CAISO.get_stats
      gridstatus.caiso.CAISO.get_status
      gridstatus.caiso.CAISO.get_storage
      gridstatus.caiso.CAISO.get_storage_awards_fmm
      gridstatus.caiso.CAISO.get_storage_awards_ifm
      gridstatus.caiso.CAISO.get_storage_awards_rtd
      gridstatus.caiso.CAISO.get_storage_energy_awards_ruc
      gridstatus.caiso.CAISO.get_storage_energy_bids_fmm
      gridstatus.caiso.CAISO.get_storage_energy_bids_ifm
      gridstatus.caiso.CAISO.get_storage_soc_fmm
      gridstatus.caiso.CAISO.get_storage_soc_hourly
      gridstatus.caiso.CAISO.get_storage_soc_rtd
      gridstatus.caiso.CAISO.get_system_load_and_resource_schedules_day_ahead
      gridstatus.caiso.CAISO.get_system_load_and_resource_schedules_hasp
      gridstatus.caiso.CAISO.get_system_load_and_resource_schedules_real_time_5_min
      gridstatus.caiso.CAISO.get_system_load_and_resource_schedules_ruc
      gridstatus.caiso.CAISO.get_tie_flows_real_time
      gridstatus.caiso.CAISO.get_tie_flows_real_time_15_min
      gridstatus.caiso.CAISO.list_oasis_datasets

   .. py:method:: get_aggregated_generation_outages(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) -> pandas.DataFrame

      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.

      :param date: date to return data
      :type date: datetime.date, str
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: datetime.date, str
      :param sleep: seconds to sleep between requests.
                    Defaults to 4.
      :type sleep: int, optional
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

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


   .. py:method:: get_as_prices(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, market: str = 'DAM', sleep: int = 4, verbose: bool = False) -> pandas.DataFrame

      Return AS prices for a given date for each region

      :param date: date to return data
      :type date: datetime.date, str
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: datetime.date, str
      :param market: DAM or HASP. Defaults to DAM.
      :type market: str
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame of AS prices
      :rtype: pandas.DataFrame


   .. py:method:: get_as_procurement(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, market: str = 'DAM', sleep: int = 4, verbose: bool = False) -> pandas.DataFrame

      Get ancillary services procurement data from CAISO.

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp | None, optional
      :param market: DAM or RTM. Defaults to "DAM".
      :type market: str, optional
      :param sleep: number of seconds to sleep between requests. Defaults to 4.
      :type sleep: int, optional
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame of ancillary services data
      :rtype: pandas.DataFrame


   .. py:method:: get_caiso_renewables_report(date: pandas.Timestamp) -> dict[str, pandas.DataFrame]

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


   .. py:method:: get_curtailed_non_operational_generator_report(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Return curtailed non-operational generator report for a given date.
         Earliest available date is June 17, 2021.

      :param date: date to return data
      :type date: str, pd.Timestamp
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str, pd.Timestamp, optional
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame of curtailed non-operational generator report
      :rtype: pandas.DataFrame

      .. rubric:: 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",
          )


   .. py:method:: get_curtailment(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Return curtailment data for a given date

      :param date: date to return data
      :type date: datetime.date, str
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: datetime.date, str
      :param verbose: print out url being fetched. Defaults to False.

      :returns: A DataFrame of curtailment data
      :rtype: pandas.DataFrame


   .. py:method:: get_curtailment_legacy(date: str | pandas.Timestamp, verbose: bool = False) -> pandas.DataFrame

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

      :param date: Date to return data.
      :param verbose: Print out url being fetched. Defaults to False.

      :returns: A DataFrame of curtailment data.


   .. py:method:: get_edam_wind_solar_forecast(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      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.

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

      :returns: hourly EDAM wind and solar forecasts by BAA
      :rtype: pandas.DataFrame


   .. py:method:: get_fuel_mix(date: str | pandas.Timestamp, start: str | pandas.Timestamp | None = None, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

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

      :param date: "latest", "today", or an object that can be parsed as a
                   datetime for the day to return data.
      :param start: Start of date range to return. Alias for ``date`` parameter.
                    Only specify one of ``date`` or ``start``.
      :param 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.
      :param verbose: Print verbose output. Defaults to False.

      :returns: A DataFrame with columns for Time and each fuel type.


   .. py:method:: get_fuel_regions(verbose: bool = False) -> pandas.DataFrame

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


   .. py:method:: 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)

      Return gas prices at a previous date

      :param date: date to return data
      :type date: datetime.date, str
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: datetime.date, str
      :param fuel_region_id: single fuel region id or list of fuel
                             region ids to return data for. Defaults to ALL, which returns
                             all fuel regions.
      :type fuel_region_id: str, or list

      :returns: A DataFrame of gas prices
      :rtype: pandas.DataFrame


   .. py:method:: get_ghg_allowance(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False)

      Return ghg allowance at a previous date

      :param date: date to return data
      :type date: datetime.date, str
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: datetime.date, str


   .. py:method:: get_interconnection_queue(verbose: bool = False) -> pandas.DataFrame

   .. py:method:: get_intertie_constraint_shadow_prices_real_time_5_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Get 5-min intertie constraint shadow prices from CAISO.

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched.
      :type verbose: bool, optional

      :returns: A DataFrame with the intertie constraint shadow prices
      :rtype: pandas.DataFrame


   .. py:method:: 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

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

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched.
      :type verbose: bool, optional

      :returns: A DataFrame with the shadow prices
      :rtype: pandas.DataFrame


   .. py:method:: get_ir_rc_prices(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) -> pandas.DataFrame

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

      :param date: date to return data
      :type date: datetime.date, str
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: datetime.date, str
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

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


   .. py:method:: get_ir_rc_requirements_awards_2da(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) -> pandas.DataFrame

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

      :param date: date to return data
      :type date: datetime.date, str
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: datetime.date, str
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

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


   .. py:method:: get_ir_rc_requirements_awards_3da(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) -> pandas.DataFrame

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

      :param date: date to return data
      :type date: datetime.date, str
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: datetime.date, str
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

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


   .. py:method:: get_ir_rc_requirements_awards_dam(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) -> pandas.DataFrame

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

      :param date: date to return data
      :type date: datetime.date, str
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: datetime.date, str
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

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


   .. py:method:: get_lmp(date: str | pandas.Timestamp, market: str, locations: list = None, sleep: int = 5, end: str | pandas.Timestamp = None, verbose: bool = False)

      Deprecated. Use the per-dataset methods instead:
      :meth:`get_lmp_real_time_5_min`, :meth:`get_lmp_real_time_15_min`,
      :meth:`get_lmp_day_ahead_hourly`.


   .. py:method:: 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

      Get day-ahead hourly LMPs for all nodes.


   .. py:method:: get_lmp_hasp_15_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Get LMP HASP 15-min data from CAISO.

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame of LMP HASP 15-min data
      :rtype: pandas.DataFrame


   .. py:method:: 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

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


   .. py:method:: 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

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


   .. py:method:: get_lmp_scheduling_point_tie_day_ahead_hourly(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

   .. py:method:: get_lmp_scheduling_point_tie_real_time_15_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

   .. py:method:: get_lmp_scheduling_point_tie_real_time_5_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

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

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame of LMP scheduling point tie combination 5-min data
      :rtype: pandas.DataFrame


   .. py:method:: get_load(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Return load at a previous date in 5 minute intervals


   .. py:method:: get_load_forecast(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

   .. py:method:: get_load_forecast_15_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) -> pandas.DataFrame

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

      :param date: day to return
      :type date: str | pd.Timestamp
      :param end: end of date range to return.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp, optional
      :param sleep: seconds to sleep before returning to avoid rate limit. Defaults to 4.
      :type sleep: int
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool

      :returns: DataFrame with load forecast data
      :rtype: pd.DataFrame


   .. py:method:: get_load_forecast_5_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) -> pandas.DataFrame

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

      :param date: day to return
      :type date: str | pd.Timestamp
      :param end: end of date range to return.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp, optional
      :param sleep: seconds to sleep before returning to avoid rate limit. Defaults to 4.
      :type sleep: int
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool

      :returns: DataFrame with load forecast data
      :rtype: pd.DataFrame


   .. py:method:: get_load_forecast_day_ahead(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) -> pandas.DataFrame

      Returns hourly day-ahead load forecast

      :param date: day to return
      :type date: str | pd.Timestamp
      :param end: end of date range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp, optional
      :param sleep: seconds to sleep before returning to avoid rate limit. Defaults to 4.
      :type sleep: int
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool

      :returns: DataFrame with load forecast data
      :rtype: pd.DataFrame


   .. py:method:: get_load_forecast_seven_day_ahead(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) -> pandas.DataFrame

      Returns hourly seven-day-ahead load forecast

      :param date: day to return
      :type date: str | pd.Timestamp
      :param end: end of date range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp, optional
      :param sleep: seconds to sleep before returning to avoid rate limit. Defaults to 4.
      :type sleep: int
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool

      :returns: DataFrame with load forecast data
      :rtype: pd.DataFrame


   .. py:method:: get_load_forecast_two_day_ahead(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) -> pandas.DataFrame

      Returns hourly two-day-ahead load forecast

      :param date: day to return
      :type date: str | pd.Timestamp
      :param end: end of date range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp, optional
      :param sleep: seconds to sleep before returning to avoid rate limit. Defaults to 4.
      :type sleep: int
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool

      :returns: DataFrame with load forecast data
      :rtype: pd.DataFrame


   .. py:method:: get_load_hourly(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) -> pandas.DataFrame

      Returns actual load values

      :param date: day to return
      :type date: str | pd.Timestamp
      :param end: end of date range to return.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp, optional
      :param sleep: seconds to sleep before returning to avoid rate limit. Defaults to 4.
      :type sleep: int
      :param verbose: print verbose output. Defaults to False.
      :type verbose: bool

      :returns: DataFrame with actual load data
      :rtype: pd.DataFrame


   .. py:method:: get_nomogram_branch_shadow_price_forecast_15_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

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

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched.
      :type verbose: bool, optional

      :returns: A DataFrame with the shadow price forecast
      :rtype: pandas.DataFrame


   .. py:method:: get_nomogram_branch_shadow_prices_day_ahead_hourly(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

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

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched.
      :type verbose: bool, optional

      :returns: A DataFrame with the shadow price forecast
      :rtype: pandas.DataFrame


   .. py:method:: get_nomogram_branch_shadow_prices_hasp_hourly(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

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

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched.
      :type verbose: bool, optional

      :returns: A DataFrame with the shadow price HASP data
      :rtype: pandas.DataFrame


   .. py:method:: 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

      Return data from OASIS for a given dataset

      :param dataset: dataset to return data for. See CAISO.list_oasis_datasets
                      for supported datasets
      :type dataset: str
      :param date: date to return data
      :type date: str, pd.Timestamp
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str, pd.Timestamp, optional
      :param params: dictionary of parameters to pass to dataset.
                     See CAISO.list_oasis_datasets for supported parameters
      :type params: dict
      :param raw_data: return raw data from OASIS. Defaults to True.
      :type raw_data: bool, optional
      :param sleep: number of seconds to sleep between
                    requests. Defaults to 5.
      :type sleep: int, optional
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

      :raises ValueError: if parameter is not supported for dataset
      :raises ValueError: if parameter value is not supported for dataset

      :returns: A DataFrame of data from OASIS
      :rtype: pd.DataFrame


   .. py:method:: get_pnodes(verbose: bool = False) -> pandas.DataFrame

   .. py:method:: get_price_corrections(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, sleep: int = 4, verbose: bool = False) -> pandas.DataFrame

      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.

      :param date: start of the trade-date range.
      :type date: datetime.date, str
      :param end: end of the trade-date range. If None,
                  returns only ``date``. Defaults to None.
      :type end: datetime.date, str
      :param sleep: seconds to sleep between requests to avoid the OASIS
                    rate limit. Defaults to 4.
      :type sleep: int
      :param verbose: print out url being fetched. Defaults to
                      False.
      :type verbose: bool, optional

      :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.
      :rtype: pandas.DataFrame

      :raises NoDataFoundException: if no corrections were issued for the range.


   .. py:method:: get_raw_interconnection_queue(verbose: bool = False) -> pandas.DataFrame

   .. py:method:: get_renewables_forecast_dam(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Return DAM renewable forecast in hourly intervals

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


   .. py:method:: get_renewables_forecast_hasp(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Get solar and wind generation HASP hourly data from CAISO.

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame of solar and wind generation HASP hourly data
      :rtype: pandas.DataFrame


   .. py:method:: get_renewables_forecast_rtd(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Get RTD renewable forecast from CAISO.

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame of RTD renewable forecast
      :rtype: pandas.DataFrame


   .. py:method:: get_renewables_forecast_rtpd(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Get RTPD renewable forecast from CAISO.

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame of RTPD renewable forecast
      :rtype: pandas.DataFrame


   .. py:method:: get_renewables_hourly(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Get wind and solar hourly actuals from CAISO.

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame of wind and solar hourly actuals
      :rtype: pandas.DataFrame


   .. py:method:: get_seven_day_resource_adequacy_outlook(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      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.


   .. py:method:: get_stats(verbose: bool = False) -> dict

   .. py:method:: get_status(date: str = 'latest', verbose: bool = False) -> str

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

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


   .. py:method:: get_storage(date: str | pandas.Timestamp, verbose: bool = False) -> pandas.DataFrame

      Return storage charging or discharging for today in 5 minute intervals

      Negative means charging, positive means discharging

      :param date: date to return data
      :type date: datetime.date, str


   .. py:method:: get_storage_awards_fmm(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

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


   .. py:method:: get_storage_awards_ifm(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

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


   .. py:method:: get_storage_awards_rtd(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

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


   .. py:method:: get_storage_energy_awards_ruc(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      RUC energy awards to storage (5-minute).


   .. py:method:: get_storage_energy_bids_fmm(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

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


   .. py:method:: get_storage_energy_bids_ifm(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

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


   .. py:method:: get_storage_soc_fmm(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

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


   .. py:method:: get_storage_soc_hourly(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

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


   .. py:method:: get_storage_soc_rtd(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

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


   .. py:method:: get_system_load_and_resource_schedules_day_ahead(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

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


   .. py:method:: get_system_load_and_resource_schedules_hasp(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

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


   .. py:method:: 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

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


   .. py:method:: get_system_load_and_resource_schedules_ruc(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

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


   .. py:method:: get_tie_flows_real_time(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

      Return real time tie flow data.

      :param date: date to return data
      :type date: str | pd.Timestamp
      :param end: last date of range to return data.
                  If None, returns only date. Defaults to None.
      :type end: str | pd.Timestamp | None, optional
      :param verbose: print out url being fetched. Defaults to False.
      :type verbose: bool, optional

      :returns: A DataFrame of real time tie flow data
      :rtype: pd.DataFrame


   .. py:method:: get_tie_flows_real_time_15_min(date: str | pandas.Timestamp, end: str | pandas.Timestamp | None = None, verbose: bool = False) -> pandas.DataFrame

   .. py:method:: list_oasis_datasets(dataset: str | None = None)

      List all available OASIS datasets and their parameters.

      :param dataset: dataset to return data for. If None, returns all datasets.
      :type dataset: str, optional



