daily_energy_storage
===============================================

.. py:module:: gridstatus.caiso.daily_energy_storage

.. autoapi-nested-parse::

   Parse CAISO Daily Energy Storage HTML reports.

   Each report embeds chart series as JavaScript array literals assigned to named
   variables (for example ``tot_energy_rtd``). The arrays contain numeric values
   only; they do not include timestamps. We align values to clock time by index
   from the report operating day start in Pacific time; see ``_interval_index``.



Module Contents
---------------



Functions
~~~~~~~~~

.. autoapisummary::
   :nosignatures:

   gridstatus.caiso.daily_energy_storage.build_storage_awards_fmm
   gridstatus.caiso.daily_energy_storage.build_storage_awards_ifm
   gridstatus.caiso.daily_energy_storage.build_storage_awards_rtd
   gridstatus.caiso.daily_energy_storage.build_storage_energy_awards_ruc
   gridstatus.caiso.daily_energy_storage.build_storage_energy_bids_fmm
   gridstatus.caiso.daily_energy_storage.build_storage_energy_bids_ifm
   gridstatus.caiso.daily_energy_storage.build_storage_soc_fmm
   gridstatus.caiso.daily_energy_storage.build_storage_soc_hourly
   gridstatus.caiso.daily_energy_storage.build_storage_soc_rtd
   gridstatus.caiso.daily_energy_storage.load_daily_energy_storage_report



Attributes Summary
~~~~~~~~~~~~~~~~~~~

.. autoapisummary::

   gridstatus.caiso.daily_energy_storage.BID_IFM_NEG_ORDER
   gridstatus.caiso.daily_energy_storage.BID_IFM_RANGE_ORDER
   gridstatus.caiso.daily_energy_storage.BID_RTPD_NEG_ORDER
   gridstatus.caiso.daily_energy_storage.BID_RTPD_RANGE_ORDER


Contents
~~~~~~~~~~~~~~~~~~~
.. py:data:: BID_IFM_NEG_ORDER
   :type:  list[tuple[str, str]]
   :value: [('bid_ifm_neg_ss', 'Self Schedule'), ('bid_ifm_neg_1', '[-$150,-$100]'), ('bid_ifm_neg_2',...


.. py:data:: BID_IFM_RANGE_ORDER
   :type:  list[tuple[str, str]]
   :value: [('bid_ifm_pos_ss', 'Self Schedule'), ('bid_ifm_pos_1', '[-$150,-$100]'), ('bid_ifm_pos_2',...


.. py:data:: BID_RTPD_NEG_ORDER
   :type:  list[tuple[str, str]]
   :value: [('bid_rtpd_neg_ss', 'Self Schedule'), ('bid_rtpd_neg_1', '[-$150,-$100]'), ('bid_rtpd_neg_2',...


.. py:data:: BID_RTPD_RANGE_ORDER
   :type:  list[tuple[str, str]]
   :value: [('bid_rtpd_pos_ss', 'Self Schedule'), ('bid_rtpd_pos_1', '[-$150,-$100]'), ('bid_rtpd_pos_2',...


.. py:function:: build_storage_awards_fmm(html: str, report_start: pandas.Timestamp) -> pandas.DataFrame

.. py:function:: build_storage_awards_ifm(html: str, report_start: pandas.Timestamp) -> pandas.DataFrame

.. py:function:: build_storage_awards_rtd(html: str, report_start: pandas.Timestamp) -> pandas.DataFrame

.. py:function:: build_storage_energy_awards_ruc(html: str, report_start: pandas.Timestamp) -> pandas.DataFrame

.. py:function:: build_storage_energy_bids_fmm(html: str, report_start: pandas.Timestamp) -> pandas.DataFrame

.. py:function:: build_storage_energy_bids_ifm(html: str, report_start: pandas.Timestamp) -> pandas.DataFrame

.. py:function:: build_storage_soc_fmm(html: str, report_start: pandas.Timestamp) -> pandas.DataFrame

.. py:function:: build_storage_soc_hourly(html: str, report_start: pandas.Timestamp) -> pandas.DataFrame

   Hourly IFM and RUC SOC from ``tot_charge_ifm`` and ``tot_charge_ruc``.

   The HTML arrays use a 5-minute index (typically 288 points) but IFM and
   RUC repeat one SOC per clock hour across twelve consecutive slots. One value
   per hour is taken (the first slot of each hour) and intervals use a
   one-hour frequency.


.. py:function:: build_storage_soc_rtd(html: str, report_start: pandas.Timestamp) -> pandas.DataFrame

.. py:function:: load_daily_energy_storage_report(date: str | pandas.Timestamp, tz: str, verbose: bool = False) -> tuple[str, pandas.Timestamp]

