ERCOT - Add ORDC Price Data
The 15-Minute Settlement Price Point (SPP) is comprised of the time-weighted, 5-minute LMP, as well as the RTRSVPOR and RTRDP scarcity price adders.
- Real-Time 15-Min ORDC: https://www.ercot.com/mp/data-products/data-product-details?id=NP6-324-CD
ERCOT also publishes per-SCED data and annual historical archives.
- Real-Time 5-Min: https://www.ercot.com/mp/data-products/data-product-details?id=NP6-323-CD
- Historical 5-Min: https://www.ercot.com/mp/data-products/data-product-details?id=NP6-792-ER
- Historical 15-Min: https://www.ercot.com/mp/data-products/data-product-details?id=NP6-793-ER
I think it makes sense to start with the 15-minute data for now as the 15-Minute RT market is already supported.
What API would you suggest?
right now, every new data set gets a method like get_lmp, get_load, etc. We could continue to do this, but once we get into more specific datasets, not sure there is much value in have the method named like that.
I'm wonder about something like
iso.get_dataset(dataset_name, date, start, end, kwargs)
so in this case
iso = gridstatus.ERCOT()
iso.get_dataset(iso.ORDC_15_MIN, start="2022-01-01", end="today")
Gridstatus would have to handle using the real time or historical dataset as necessary.
If done correctly, I think we could use this approach to scale out to nearly every ERCOT dataset
I think the get_dataset() approach is definitely more maintainable and would be much easier to scale. It would also allow for the following:
iso = gridstatus.ERCOT()
supported_datasets = iso.supported_datasets()
that could all reference a single data structure (dict?). Also, in the case where there are different granularities for single datatypes:
iso = gridstatus.ERCOT()
ordc = iso.get_supported_granularity(iso.ORDC_15_MIN) # don't love the method name here but
This approach could also support passing multiple datasets in the same function call. Only problem I might see arising is the amount of checks you'd have to do once you start getting more and more unique datasets. Overall though I think the pros outweigh the cons. Will have to start tinkering with it to really get a sense, tho.