Settlement Point Prices
Contents
Settlement Point Prices#
import gridstatus
import pandas as pd
iso = gridstatus.Ercot()
The get_spp Method#
The main method is get_spp, which takes the following arguments:
Date#
Date can be "today", "latest", or a pandas.Timestamp.
Day-ahead Market (DAM) data is released daily, so date="latest" is not supported for DAM.
Market#
ERCOT has 2 available markets:
iso.markets
[<Markets.REAL_TIME_15_MIN: 'REAL_TIME_15_MIN'>,
<Markets.DAY_AHEAD_HOURLY: 'DAY_AHEAD_HOURLY'>]
Location Type#
ERCOT has 3 available location types, with "ZONE" as default.
iso.location_types
['HUB', 'NODE', 'ZONE']
Example: Fetch latest real-time market (RTM) by zone#
df = iso.get_spp(date="latest", market="REAL_TIME_15_MIN", location_type="zone")
df
| Location | Time | Market | Location Type | SPP | |
|---|---|---|---|---|---|
| 0 | DC_E | 2022-12-22 14:30:00-06:00 | REAL_TIME_15_MIN | Zone | 22.84 |
| 1 | DC_L | 2022-12-22 14:30:00-06:00 | REAL_TIME_15_MIN | Zone | 22.50 |
| 2 | DC_N | 2022-12-22 14:30:00-06:00 | REAL_TIME_15_MIN | Zone | 0.24 |
| 3 | DC_R | 2022-12-22 14:30:00-06:00 | REAL_TIME_15_MIN | Zone | 20.80 |
| 4 | DC_S | 2022-12-22 14:30:00-06:00 | REAL_TIME_15_MIN | Zone | 5.67 |
| 5 | LZ_AEN | 2022-12-22 14:30:00-06:00 | REAL_TIME_15_MIN | Zone | 19.61 |
| 6 | LZ_CPS | 2022-12-22 14:30:00-06:00 | REAL_TIME_15_MIN | Zone | 19.17 |
| 7 | LZ_HOUSTON | 2022-12-22 14:30:00-06:00 | REAL_TIME_15_MIN | Zone | 21.75 |
| 8 | LZ_LCRA | 2022-12-22 14:30:00-06:00 | REAL_TIME_15_MIN | Zone | 17.76 |
| 9 | LZ_NORTH | 2022-12-22 14:30:00-06:00 | REAL_TIME_15_MIN | Zone | 27.43 |
| 10 | LZ_RAYBN | 2022-12-22 14:30:00-06:00 | REAL_TIME_15_MIN | Zone | 126.80 |
| 11 | LZ_SOUTH | 2022-12-22 14:30:00-06:00 | REAL_TIME_15_MIN | Zone | 19.65 |
| 12 | LZ_WEST | 2022-12-22 14:30:00-06:00 | REAL_TIME_15_MIN | Zone | -1.84 |
Example: Fetch day-ahead market (DAM) for today by hub#
df = iso.get_spp(date="today", market="DAY_AHEAD_HOURLY", location_type="hub")
df
| Location | Time | Market | Location Type | SPP | |
|---|---|---|---|---|---|
| 0 | HB_HOUSTON | 2022-12-22 00:00:00-06:00 | DAY_AHEAD_HOURLY | Hub | 33.75 |
| 1 | HB_NORTH | 2022-12-22 00:00:00-06:00 | DAY_AHEAD_HOURLY | Hub | 33.84 |
| 2 | HB_PAN | 2022-12-22 00:00:00-06:00 | DAY_AHEAD_HOURLY | Hub | 33.29 |
| 3 | HB_SOUTH | 2022-12-22 00:00:00-06:00 | DAY_AHEAD_HOURLY | Hub | 34.20 |
| 4 | HB_WEST | 2022-12-22 00:00:00-06:00 | DAY_AHEAD_HOURLY | Hub | 38.58 |
| ... | ... | ... | ... | ... | ... |
| 115 | HB_HOUSTON | 2022-12-22 23:00:00-06:00 | DAY_AHEAD_HOURLY | Hub | 80.16 |
| 116 | HB_NORTH | 2022-12-22 23:00:00-06:00 | DAY_AHEAD_HOURLY | Hub | 86.00 |
| 117 | HB_PAN | 2022-12-22 23:00:00-06:00 | DAY_AHEAD_HOURLY | Hub | 88.95 |
| 118 | HB_SOUTH | 2022-12-22 23:00:00-06:00 | DAY_AHEAD_HOURLY | Hub | 69.32 |
| 119 | HB_WEST | 2022-12-22 23:00:00-06:00 | DAY_AHEAD_HOURLY | Hub | 90.94 |
120 rows × 5 columns
Example: Fetch DAM for 2 days ago by node#
date = pd.Timestamp.now() - pd.Timedelta(days=2)
df = iso.get_spp(date=date, market="REAL_TIME_15_MIN", location_type="node")
df
| Location | Time | Market | Location Type | SPP | |
|---|---|---|---|---|---|
| 0 | AEEC | 2022-12-20 23:30:00-06:00 | REAL_TIME_15_MIN | Node | 50.30 |
| 1 | AGUAYO_UNIT1 | 2022-12-20 23:30:00-06:00 | REAL_TIME_15_MIN | Node | 50.30 |
| 2 | AJAXWIND_RN | 2022-12-20 23:30:00-06:00 | REAL_TIME_15_MIN | Node | 50.30 |
| 3 | ALGOD_ALL_RN | 2022-12-20 23:30:00-06:00 | REAL_TIME_15_MIN | Node | 50.30 |
| 4 | ALVIN_RN | 2022-12-20 23:30:00-06:00 | REAL_TIME_15_MIN | Node | 50.30 |
| ... | ... | ... | ... | ... | ... |
| 76090 | WOV_BESS_RN | 2022-12-20 00:00:00-06:00 | REAL_TIME_15_MIN | Node | 32.94 |
| 76091 | WRSBES_BESS1 | 2022-12-20 00:00:00-06:00 | REAL_TIME_15_MIN | Node | 32.94 |
| 76092 | W_PECO_UNIT1 | 2022-12-20 00:00:00-06:00 | REAL_TIME_15_MIN | Node | 32.94 |
| 76093 | X443ESRN | 2022-12-20 00:00:00-06:00 | REAL_TIME_15_MIN | Node | 32.94 |
| 76094 | YNG_WND_ALL | 2022-12-20 00:00:00-06:00 | REAL_TIME_15_MIN | Node | 32.94 |
76095 rows × 5 columns