Spp#
Module Contents#
Classes Summary#
Southwest Power Pool (SPP) |
Functions#
|
Adds Interval Start and Interval End columns to df |
|
Parse SPP generation mix data from |
Attributes Summary#
Contents#
- gridstatus.spp.add_interval(df: pandas.DataFrame, interval_min: int) pandas.DataFrame[source]#
Adds Interval Start and Interval End columns to df
- gridstatus.spp.BASE_LOAD_FORECAST_MID_TERM_URL = 'https://portal.spp.org/file-browser-api/download/mtlf-vs-actual?path='[source]#
- gridstatus.spp.BASE_LOAD_FORECAST_SHORT_TERM_URL = 'https://portal.spp.org/file-browser-api/download/stlf-vs-actual?path='[source]#
- gridstatus.spp.BASE_SOLAR_AND_WIND_MID_TERM_URL = 'https://portal.spp.org/file-browser-api/download/midterm-resource-forecast?path='[source]#
- gridstatus.spp.BASE_SOLAR_AND_WIND_SHORT_TERM_URL = 'https://portal.spp.org/file-browser-api/download/shortterm-resource-forecast?path='[source]#
- gridstatus.spp.FILE_BROWSER_DOWNLOAD_URL = 'https://portal.spp.org/file-browser-api/download'[source]#
- gridstatus.spp.process_gen_mix(df: pandas.DataFrame, detailed: bool = False) pandas.DataFrame[source]#
Parse SPP generation mix data from https://marketplace.spp.org/pages/generation-mix-historical
- Parameters:
df (pd.DataFrame) – raw data
detailed (bool) – whether to combine market and self columns
- Returns:
processed data
- Return type:
pd.DataFrame
- gridstatus.spp.QUERY_RTM5_HUBS_URL = 'https://pricecontourmap.spp.org/arcgis/rest/services/MarketMaps/RTBM_FeatureData/MapServer/1/query'[source]#
- gridstatus.spp.QUERY_RTM5_INTERFACES_URL = 'https://pricecontourmap.spp.org/arcgis/rest/services/MarketMaps/RTBM_FeatureData/MapServer/2/query'[source]#
- gridstatus.spp.RELIABILITY_LEVELS = ['Normal Operations', 'Weather Advisory', 'Resource Advisory', 'Conservative Operations...[source]#
- class gridstatus.spp.SPP[source]#
Bases:
gridstatus.base.ISOBaseSouthwest Power Pool (SPP)
Attributes
default_timezone
‘US/Central’
interconnection_homepage
‘https://www.spp.org/engineering/generator-interconnection/’
iso_id
‘spp’
location_types
None
markets
None
name
‘Southwest Power Pool’
status_homepage
‘https://www.spp.org/markets-operations/current-grid-conditions/’
Methods
get_as_prices_real_time_5_min(→ pandas.DataFrame)Provides Marginal Clearing Price information by Reserve Zone for each
Get Day-Ahead Binding Constraints
get_binding_constraints_real_time_5_min(→ pandas.DataFrame)Get Real-Time Binding Constraints
get_capacity_of_generation_on_outage(→ pandas.DataFrame)Get Capacity of Generation on Outage.
Get VER Curtailments for a year. Starting 2014.
get_day_ahead_operating_reserve_prices(→ pandas.DataFrame)Provides Marginal Clearing Price information by Reserve Zone for each
get_fuel_mix(→ pandas.DataFrame)Get fuel mix
get_hourly_load(→ pandas.DataFrame)Get Hourly Load
get_hourly_load_annual(→ pandas.DataFrame)Get Hourly Load for a year. Starting 2011.
get_interconnection_queue(→ pandas.DataFrame)Get interconnection queue
get_lmp_day_ahead_hourly(→ pandas.DataFrame)Get day ahead hourly LMP data
get_lmp_real_time_5_min_by_bus(→ pandas.DataFrame)Get LMP data by bus for the Real-Time 5 Minute Market
get_lmp_real_time_5_min_by_location(→ pandas.DataFrame)Get LMP data by location for the Real-Time 5 Minute Market
get_lmp_real_time_weis(→ pandas.DataFrame)Get LMP data for real time WEIS
get_load(→ pandas.DataFrame)Returns load for last 24hrs in 5 minute intervals
get_load_forecast(→ pandas.DataFrame)Returns load forecast for next 7 days in hourly intervals
get_load_forecast_mid_term(→ pandas.DataFrame | None)Returns load forecast for +7 days in hourly intervals. Includes actual load
get_load_forecast_short_term(→ pandas.DataFrame | None)5-minute load forecast data for the SPP footprint (system-wide) for +/- 10
get_market_clearing_day_ahead(→ pandas.DataFrame)Get Market Clearing Day Ahead
get_market_clearing_real_time(→ pandas.DataFrame)Get Market Clearing Real Time
get_operating_reserves(→ pandas.DataFrame)get_raw_interconnection_queue(→ BinaryIO)Returns solar and wind generation forecast for +7 days in hourly intervals.
Returns solar and wind generation forecast for +4 hours in 5 minute intervals.
get_ver_curtailments(→ pandas.DataFrame)Get VER Curtailments
get_ver_curtailments_annual(→ pandas.DataFrame)Get VER Curtailments for a year. Starting 2014.
now()- get_as_prices_real_time_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, use_daily_files: bool = False) pandas.DataFrame[source]#
Provides Marginal Clearing Price information by Reserve Zone for each Real-Time 5-minute Market solution.
- Parameters:
date – date to get data for. Supports “latest” for most recent interval.
end – end date
verbose – print url
use_daily_files – if True, use daily files instead of 5 minute files.
- Returns:
Real-Time 5-minute Marginal Clearing Prices
- Return type:
pd.DataFrame
- get_binding_constraints_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[source]#
Get Day-Ahead Binding Constraints
- Parameters:
date – date to get data for. Supports “latest” for most recently available data.
end – end date
verbose – print url
- Returns:
Day-Ahead Binding Constraints
- Return type:
pd.DataFrame
- get_binding_constraints_real_time_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[source]#
Get Real-Time Binding Constraints
- Parameters:
date – date to get data for. Supports “latest” for most recent interval.
end – end date
verbose – print url
- Returns:
Real-Time Binding Constraints
- Return type:
pd.DataFrame
- get_capacity_of_generation_on_outage(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[source]#
Get Capacity of Generation on Outage.
Published daily at 8am CT for next 7 days
- Parameters:
date – start date
end – end date
- get_capacity_of_generation_on_outage_annual(year: int, verbose: bool = True) pandas.DataFrame[source]#
Get VER Curtailments for a year. Starting 2014. Recent data use get_capacity_of_generation_on_outage
- Parameters:
year – year to get data for
verbose – print url
- Returns:
VER Curtailments
- Return type:
pd.DataFrame
- get_day_ahead_operating_reserve_prices(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[source]#
Provides Marginal Clearing Price information by Reserve Zone for each Day-Ahead Market solution for each Operating Day. Posting is updated each day after the DA Market results are posted. Available at https://portal.spp.org/pages/da-mcp#
- Parameters:
date – date to get data for
end – end date
verbose – print url
- Returns:
Day Ahead Marginal Clearing Prices
- Return type:
pd.DataFrame
- get_fuel_mix(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], detailed: bool = False, verbose: bool = False) pandas.DataFrame[source]#
Get fuel mix
- Parameters:
date – supports today and latest
detailed – if True, breaks out self scheduled and market scheduled
Note
if today, returns last 2 hours of data. maybe include previous day
- Returns:
fuel mix
- Return type:
pd.DataFrame
- get_hourly_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[source]#
Get Hourly Load
Supports recent data. For historical annual data use get_hourly_load_annual
- Parameters:
date – start date
end – end date
- Returns:
Hourly Load
- Return type:
pd.DataFrame
- get_hourly_load_annual(year: int, verbose: bool = True) pandas.DataFrame[source]#
Get Hourly Load for a year. Starting 2011. For recent data use get_hourly_load
- Parameters:
year – year to get data for
verbose – print url
- Returns:
Hourly Load
- Return type:
pd.DataFrame
- get_interconnection_queue(verbose: bool = False) pandas.DataFrame[source]#
Get interconnection queue
- Returns:
Interconnection queue
- Return type:
pandas.DataFrame
- 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, location_type: str = LOCATION_TYPE_ALL, verbose: bool = False) pandas.DataFrame[source]#
Get day ahead hourly LMP data
- Supported Location Types:
HubInterfaceALL
- get_lmp_real_time_5_min_by_bus(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[source]#
Get LMP data by bus for the Real-Time 5 Minute Market
- Parameters:
date – date to get data for
end – end date
verbose – print url
NOTE: does not take a location_type argument because it always returns LOCATION_TYPE_BUS.
- get_lmp_real_time_5_min_by_location(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp] | None = None, location_type: str = LOCATION_TYPE_ALL, verbose: bool = False, use_daily_files: bool = False) pandas.DataFrame[source]#
Get LMP data by location for the Real-Time 5 Minute Market
- Parameters:
date – date to get data for
end – end date
location_type – location type to get data for. Options are: -
ALL(LOCATION_TYPE_ALL) -Hub(LOCATION_TYPE_HUB) -Interface(LOCATION_TYPE_INTERFACE) -Settlement Location(LOCATION_TYPE_SETTLEMENT_LOCATION)verbose – print url
use_daily_files – if True, use daily files instead of 5 minute files.
- get_lmp_real_time_weis(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[source]#
Get LMP data for real time WEIS
- Parameters:
date – date to get data for. if end is not provided, will get data for 5 minute interval that date is in.
end – end date
verbose – print url
- get_load(date: str | pandas.Timestamp, verbose: bool = False) pandas.DataFrame[source]#
Returns load for last 24hrs in 5 minute intervals
- get_load_forecast(date: str | pandas.Timestamp, forecast_type: str = 'MID_TERM', verbose: bool = False) pandas.DataFrame[source]#
Returns load forecast for next 7 days in hourly intervals
- Parameters:
forecast_type (str) – MID_TERM is hourly for next 7 days or SHORT_TERM is every five minutes for a few hours
- Returns:
forecast for current day
- Return type:
pd.DataFrame
- get_load_forecast_mid_term(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 | None[source]#
Returns load forecast for +7 days in hourly intervals. Includes actual load for the past 24 hours. Data from https://portal.spp.org/pages/mtlf-vs-actual
- Parameters:
date (pd.Timestamp|str) – date to get data for. Supports “latest” and “today”
verbose (bool) – print info
- Returns:
forecast as dataframe.
- Return type:
pd.DataFrame
- get_load_forecast_short_term(date: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp], end: str | pandas.Timestamp | tuple[pandas.Timestamp, pandas.Timestamp] | None = None, verbose: bool = False, drop_null_forecast_rows: bool = True) pandas.DataFrame | None[source]#
5-minute load forecast data for the SPP footprint (system-wide) for +/- 10 minutes. Also includes actual load.
Data from https://portal.spp.org/pages/stlf-vs-actual
- Parameters:
date (pd.Timestamp|str) – date to get data for. Supports “latest” and “today”
verbose (bool) – print info
end (pd.Timestamp|str) – end date
drop_null_forecast_rows (bool) – if True, drop rows with null forecast values
- Returns:
forecast as dataframe.
- Return type:
pd.DataFrame
- get_market_clearing_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[source]#
Get Market Clearing Day Ahead
- Parameters:
date – start date
end – end date
- Returns:
Market Clearing Day Ahead
- Return type:
pd.DataFrame
- get_market_clearing_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[source]#
Get Market Clearing Real Time
- Parameters:
date – start date
end – end date
- Returns:
Market Clearing Real Time
- Return type:
pd.DataFrame
- get_operating_reserves(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[source]#
- get_solar_and_wind_forecast_mid_term(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 | None[source]#
Returns solar and wind generation forecast for +7 days in hourly intervals.
Data from https://portal.spp.org/pages/midterm-resource-forecast.
- Parameters:
date (pd.Timestamp|str) – date to get data for. Supports “latest” and “today”
verbose (bool) – print info
- Returns:
forecast as dataframe.
- Return type:
pd.DataFrame
- get_solar_and_wind_forecast_short_term(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 | None[source]#
Returns solar and wind generation forecast for +4 hours in 5 minute intervals. Include actuals for past day in 5 minute intervals.
Data from https://portal.spp.org/pages/shortterm-resource-forecast
- Parameters:
date (pd.Timestamp|str) – date to get data for. Supports “latest” and “today”
verbose (bool) – print info
- Returns:
forecast as dataframe.
- Return type:
pd.DataFrame
- get_ver_curtailments(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[source]#
Get VER Curtailments
Supports recent data. For historical annual data use get_ver_curtailments_annual
- Parameters:
date – start date
end – end date