Access data, statistics, and visualizations for New York's electricity grid.
NYISOToolkit
A package for accessing power system data (NYISOData), generating statistics (NYISOStat), and creating visualizations (NYISOVis) from the New York Independent System Operator (NYISO).
Check out the NYISOToolkit Website!

How to Install
pip install git+https://github.com/m4rz910/NYISOToolkit#egg=nyisotoolkit
NYISOData
Example:
from nyisotoolkit import NYISOData, NYISOStat, NYISOVis df = NYISOData(dataset='load_h', year='2024').df # year argument in local time, but returns dataset in UTC
#If you need to work with data in local time, then convert time zone df = df.tz_convert('US/Eastern')
#Construct datasets for certain years years = range(2022,2024) datasets = ['loadh','interfaceflows_5m'] NYISOData.constructdatabases(years=years, datasets=datasets, redownload=True, reconstruct=True, createcsvs=False)
Raw Data Source: http://mis.nyiso.com/public/
Dataset Name | Resolution | Description --- | --- | -- load_h | hourly | day-ahead load by NYISO region load_5m | 5-min | real-time load by NYISO region loadforecasth | hourly | load forecast by NYISO region fuelmix5m | 5-min | real-time aggregated fuel mix data interfaceflows5m | 5-min | real-time flows between regions lbmpdamh | hourly | day-ahead zonal Locational Based Marginal Price (LBMP) lbmprt5m | 5-min | real-time zonal LBMP lbmpdamh_refbus | hourly | day-ahead reference bus marginal cost of energy lbmprth_refbus | hourly | time weighted average rt reference bus marginal cost of energy asp_rt | 5-min | real-time zonal ancillary service prices asp_dam | hourly | day-ahead zonal ancillary service prices capacity_prices | monthly | spot, monthly, and strip capacity prices
All datasets:
- Timezone: Coordinated Universal Time [UTC]
- Frequency: Hourly or 5-mins. The raw data sometimes has higher or lower frequency than intended, but this library uses mean values to resample at the intended frequency. When interpolations are necessary, they are made. Some datasets only come in one frequency.
- Datetime Convention: Start. The value(s)/measurement(s) associated with each timestamp occurred in the time period before the start of the next timestamp.
More Dataset Information
Load (load_h)
- "Integrated Real-Time Actual Load is posted after each hour and represents the timeweighted hourly load for each zone" (NYISO Market Participant Guide p.62)
- Units: Power [MW]
- Frequency: Hour
Load (load_5m)
- "Real-Time Actual Load posts the actual measured load for each RTD interval (5 minutes) by zone.
- Units: Power [MW]
- Frequency: 5-min
Load Forecast (loadforecasth)
- "Weather forecast information grouped by zone is input into a neural network forecaster tool to produce a preliminary zonal load forecast for each hour of the following day. The tool makes use of historical load and weather patterns." (NYISO Market Participant Guide p.25)
- Units: Power [MW]
- Frequency: Hour
Fuel Mix (fuelmix5m)
- Units: Power [MW]
- Frequency: 5-min
Interface Flows (interfaceflows5m)
- "Internal/ External Interface Limits and Flows consist of hourly limits (for all major internal interfaces, HQ, NE, PJM, and OH) and flows (for HQ, NE, PJM, and OH) in SCUC and time-weighted average hourly flows (for the same interfaces) in RTD. The data is posted at least day-after or sooner." (NYISO Market Participant Guide p.59)
- Units: Power [MW] (Note: The raw datafile column is mislabled as MWH, but it is correct on the NYISO Dashboard)
- Frequency: 5-min
CENTRAL EAST - VC
DYSINGER EAST | Internal | DYSINGER EAST
MOSES SOUTH | Internal | MOSES SOUTH
SPR/DUN-SOUTH | Internal | SPR/DUN-SOUTH
TOTAL EAST | Internal | TOTAL EAST
UPNY CONED | Internal | UPNY CONED
WEST CENTRAL | Internal | WEST CENTRAL
HQ CHATEAUGUAY | External | SCH - HQ - NY
HQ CEDARS | External | SCH - HQ_CEDARS
HQ Import Export | External | SCH - HQIMPORTEXPORT | subset of HQ CHATEAUGUAY, excludes wheel-through
NPX NEW ENGLAND (NE) | External | SCH - NE - NY
NPX 1385 NORTHPORT (NNC) | External | SCH - NPX_1385
NPX CROSS SOUND CABLE (CSC) | External | SCH - NPX_CSC
IESO | External | SCH - OH - NY
PJM KEYSTONE | External | SCH - PJ - NY
PJM HUDSON TP | External | SCH - PJM_HTP
PJM NEPTUNE | External | SCH - PJM_NEPTUNE
PJM LINDEN VFT | External | SCH - PJM_VFT
LBMP (lbmpdamh)
- NYISO Market Participant Guide
- Units: Price [$/MWh]
- Frequency: Hour
LBMP (lbmprt5m)
- NYISO Market Participant Guide
- Units: Price [$/MWh]
- Frequency: Hour
Ancillary Service Price (asp_rt)
- Units: Price [$/MWh]
- Frequency: Hour
Ancillary Service Price (asp_dam)
- Units: Price [$/MWh]
- Frequency: 5-min
Capacity Prices (capacity_prices)
- Units: Price [$/kW-mo]
- Frequency: monthly
NYISOVis
There are several visualizations currently supported - browse them on the NYISOToolkit Web App or in the nyisotoolkit/nyisovis/visualizations folder. The visualizations are focused on communicating New York's status toward achieving the power sector decarbonization goals outlined by the Climate Leadership and Community Protection Act (CLCPA).No later than [June 13, 2021], the commission shall establish a program to require that:>
* (A) A minimum of [70%] of the state wide electric generation secured by jurisdictional load serving entities to meet the electrical energy requirements of all end-use customers in New York State in [2030] shall be generated by renewable energy systems;
* (B) and that by [2040] the statewide electrical demand system will be zero emissions."
Source: CLCPA p.17
Example:
from nyisotoolkit import NYISOData, NYISOStat, NYISOVis
nv = NYISOVis(year='2021') #figures saved in nyisotoolkit/nyisovis/visualization folder by default.
nv.figcarbonfree_timeseries(f='D') # daily (D) or monthy (M) frequency is recommended
print(f"Figures saved by default to: {nv.outdir} \nYou can change this by passing a pathlib object to the outdir parameter in the NYISOVis object initialization.")
