Nyiso
==========================

.. py:module:: gridstatus.nyiso


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

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

.. autoapisummary::

   gridstatus.nyiso.DatasetInterval
   gridstatus.nyiso.NYISO
   gridstatus.nyiso.NYISOLocationType





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

.. autoapisummary::

   gridstatus.nyiso.AS_PRICES_DAY_AHEAD_HOURLY_DATASET
   gridstatus.nyiso.AS_PRICES_REAL_TIME_5_MIN_DATASET
   gridstatus.nyiso.BTM_SOLAR_ACTUAL_DATASET
   gridstatus.nyiso.BTM_SOLAR_FORECAST_DATASET
   gridstatus.nyiso.DAM_LMP_DATASET
   gridstatus.nyiso.DATASET_INTERVAL_MAP
   gridstatus.nyiso.FUEL_MIX_DATASET
   gridstatus.nyiso.INTERFACE_LIMITS_AND_FLOWS_DATASET
   gridstatus.nyiso.LAKE_ERIE_CIRCULATION_DAY_AHEAD_DATASET
   gridstatus.nyiso.LAKE_ERIE_CIRCULATION_REAL_TIME_DATASET
   gridstatus.nyiso.LIMITING_CONSTRAINTS_DAY_AHEAD_DATASET
   gridstatus.nyiso.LIMITING_CONSTRAINTS_REAL_TIME_DATASET
   gridstatus.nyiso.LOAD_DATASET
   gridstatus.nyiso.LOAD_FORECAST_DATASET
   gridstatus.nyiso.REAL_TIME_EVENTS_DATASET
   gridstatus.nyiso.REAL_TIME_HOURLY_LMP_DATASET
   gridstatus.nyiso.REAL_TIME_LMP_DATASET
   gridstatus.nyiso.REFERENCE_BUS_LOCATION


Contents
~~~~~~~~~~~~~~~~~~~
.. py:data:: AS_PRICES_DAY_AHEAD_HOURLY_DATASET
   :value: 'damasp'


.. py:data:: AS_PRICES_REAL_TIME_5_MIN_DATASET
   :value: 'rtasp'


.. py:data:: BTM_SOLAR_ACTUAL_DATASET
   :value: 'btmactualforecast'


.. py:data:: BTM_SOLAR_FORECAST_DATASET
   :value: 'btmdaforecast'


.. py:data:: DAM_LMP_DATASET
   :value: 'damlbmp'


.. py:data:: DATASET_INTERVAL_MAP
   :type:  Dict[str, DatasetInterval]

.. py:class:: DatasetInterval

   Bases: :py:obj:`NamedTuple`


   **Attributes**

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

      * - **interval_duration_minutes**
        - None
      * - **time_type**
        - None



.. py:data:: FUEL_MIX_DATASET
   :value: 'rtfuelmix'


.. py:data:: INTERFACE_LIMITS_AND_FLOWS_DATASET
   :value: 'ExternalLimitsFlows'


.. py:data:: LAKE_ERIE_CIRCULATION_DAY_AHEAD_DATASET
   :value: 'eriecirculationda'


.. py:data:: LAKE_ERIE_CIRCULATION_REAL_TIME_DATASET
   :value: 'eriecirculationrt'


.. py:data:: LIMITING_CONSTRAINTS_DAY_AHEAD_DATASET
   :value: 'DAMLimitingConstraints'


   Pricing data:
   https://www.nyiso.com/en/energy-market-operational-data

.. py:data:: LIMITING_CONSTRAINTS_REAL_TIME_DATASET
   :value: 'LimitingConstraints'


.. py:data:: LOAD_DATASET
   :value: 'pal'


.. py:data:: LOAD_FORECAST_DATASET
   :value: 'isolf'


.. py:class:: NYISO

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

   New York Independent System Operator (NYISO)


   **Attributes**

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

      * - **default_timezone**
        - 'US/Eastern'
      * - **interconnection_homepage**
        - 'https://www.nyiso.com/interconnections'
      * - **iso_id**
        - 'nyiso'
      * - **markets**
        - None
      * - **name**
        - 'New York ISO'
      * - **status_homepage**
        - 'https://www.nyiso.com/system-conditions'


   **Methods**

   .. autoapisummary::
      :nosignatures:

      gridstatus.nyiso.NYISO.get_as_prices_day_ahead_hourly
      gridstatus.nyiso.NYISO.get_as_prices_real_time_5_min
      gridstatus.nyiso.NYISO.get_btm_solar
      gridstatus.nyiso.NYISO.get_btm_solar_forecast
      gridstatus.nyiso.NYISO.get_capacity_prices
      gridstatus.nyiso.NYISO.get_fuel_mix
      gridstatus.nyiso.NYISO.get_generators
      gridstatus.nyiso.NYISO.get_interconnection_queue
      gridstatus.nyiso.NYISO.get_interface_limits_and_flows_5_min
      gridstatus.nyiso.NYISO.get_lake_erie_circulation_day_ahead
      gridstatus.nyiso.NYISO.get_lake_erie_circulation_real_time
      gridstatus.nyiso.NYISO.get_limiting_constraints_day_ahead
      gridstatus.nyiso.NYISO.get_limiting_constraints_real_time
      gridstatus.nyiso.NYISO.get_lmp
      gridstatus.nyiso.NYISO.get_load
      gridstatus.nyiso.NYISO.get_load_forecast
      gridstatus.nyiso.NYISO.get_loads
      gridstatus.nyiso.NYISO.get_raw_interconnection_queue
      gridstatus.nyiso.NYISO.get_status
      gridstatus.nyiso.NYISO.get_zonal_load_forecast

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

      Pull the most recent ancillary service market report's market clearing prices

      :param date: date that will be used to pull latest capacity
                   report (will refer to month and year)
      :type date: pandas.Timestamp


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

      Pull the most recent ancillary service market report's market clearing prices

      :param date: date that will be used to pull latest capacity
                   report (will refer to month and year)
      :type date: pandas.Timestamp


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

      Returns estimated BTM solar generation at a previous date in hourly
          intervals for system and each zone.

          Available ~8 hours after the end of the operating day.

      :param date: Date to get load for.
                   Can be "today", or a date
      :type date: str, pd.Timestamp, datetime.datetime
      :param end: End date for date range.
                  Optional.
      :type end: str, pd.Timestamp, datetime.datetime
      :param verbose: Whether to print verbose output. Optional.
      :type verbose: bool

      :returns: BTM solar data for NYISO system and each zone
      :rtype: pandas.DataFrame


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

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

      Pull the most recent capacity market report's market clearing prices

      :param date: date that will be used to pull latest capacity
                   report (will refer to month and year)
      :type date: pandas.Timestamp

      :returns: a DataFrame of monthly capacity prices (all three auctions) for                 each of the four capacity localities within NYISO


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

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

      Get a list of generators in NYISO. When possible return capacity and fuel type information

      :returns: a DataFrame of generators and locations

                **Possible Columns**

                * Generator Name
                * PTID
                * Subzone
                * Zone
                * Latitude
                * Longitude
                * Owner, Operator, and / or Billing Organization
                * Station Unit
                * Town
                * County
                * State
                * In-Service Date
                * Name Plate Rating (V) MW
                * 2024 CRIS MW Summer
                * 2024 CRIS MW Winter
                * 2024 Capability MW Summer
                * 2024 Capability MW Winter
                * Is Dual Fuel
                * Unit Type
                * Fuel Type 1
                * Fuel Type 2
                * 2023 Net Energy GWh
                * Notes
                * Generator Type
      :rtype: pandas.DataFrame


   .. py:method:: get_interconnection_queue() -> pandas.DataFrame

      Return NYISO interconnection queue

      Additional Non-NYISO queue info: https://www3.dps.ny.gov/W/PSCWeb.nsf/All/286D2C179E9A5A8385257FBF003F1F7E?OpenDocument

      :returns: Interconnection queue containing, active, withdrawn,                 and completed project
      :rtype: pandas.DataFrame


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

      Get interface limits and flows for a date


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

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

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

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

   .. py:method:: get_lmp(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp] | None = None, market: gridstatus.base.Markets | None = None, locations: list | None = None, location_type: NYISOLocationType | None = None, verbose: bool = False) -> pandas.DataFrame

      Supported Markets:
          - ``REAL_TIME_5_MIN`` (RTC)
          - ``REAL_TIME_15_MIN`` (RTD)
          - ``REAL_TIME_HOURLY`` (Real-time hourly LMP)
          - ``DAY_AHEAD_HOURLY``

      Supported Location Types:
          - ``zone``
          - ``generator``

      NOTE: the generator data contains the single Reference Bus location type.

      REAL_TIME_5_MIN is the Real Time Dispatch (RTD) market.
      REAL_TIME_15_MIN is the Real Time Commitment (RTC) market.
      REAL_TIME_HOURLY is the real-time hourly LMP market.
      For documentation on real time dispatch and real time commitment, see:
      https://www.nyiso.com/documents/20142/1404816/RTC-RTD%20Convergence%20Study.pdf/f3843982-dd30-4c66-6c21-e101c3cb85af


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

      Returns load at a previous date in 5 minute intervals for
        each zone and total load

      :param date: Date to get load for. Can be "today", or
                   a date in the format YYYY-MM-DD
      :type date: str
      :param end: End date for date range. Optional.
      :type end: str
      :param verbose: Whether to print verbose output. Optional.
      :type verbose: bool

      :returns: Load data for NYISO and each zone
      :rtype: pandas.DataFrame


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

      Get load forecast for a date in 1 hour intervals


   .. py:method:: get_loads() -> pandas.DataFrame

      Get a list of loads in NYISO

      :returns: a DataFrame of loads and locations
      :rtype: pandas.DataFrame


   .. py:method:: get_raw_interconnection_queue() -> BinaryIO

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

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

      Get zonal load forecast for a date in 1 hour intervals



.. py:class:: NYISOLocationType

   Bases: :py:obj:`enum.StrEnum`

   Enum where members are also (and must be) strings

   Initialize self.  See help(type(self)) for accurate signature.


   **Attributes**

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

      * - **GENERATOR**
        - 'generator'
      * - **ZONE**
        - 'zone'



.. py:data:: REAL_TIME_EVENTS_DATASET
   :value: 'RealTimeEvents'


.. py:data:: REAL_TIME_HOURLY_LMP_DATASET
   :value: 'rtlbmp'


.. py:data:: REAL_TIME_LMP_DATASET
   :value: 'realtime'


.. py:data:: REFERENCE_BUS_LOCATION
   :value: 'NYISO_LBMP_REFERENCE'


