LMP Pricing Data#
Support#
Below are the currently supported LMP markets
Method |
REAL_TIME_5_MIN |
REAL_TIME_15_MIN |
DAY_AHEAD_HOURLY |
REAL_TIME_HOURLY |
REAL_TIME_HOURLY_FINAL |
REAL_TIME_HOURLY_PRELIM |
|
|---|---|---|---|---|---|---|---|
CAISO |
|
latest, today, historical |
latest, today, historical |
latest, today, historical |
- |
- |
- |
Ercot |
|
- |
- |
- |
- |
- |
- |
IESO |
- |
- |
- |
- |
- |
- |
- |
ISONE |
|
latest, today, historical |
- |
today, historical |
latest, today, historical |
- |
- |
MISO |
|
latest, today, historical |
- |
today, historical |
- |
historical |
historical |
NYISO |
|
latest, today, historical |
latest, today |
latest, today, historical |
- |
- |
- |
PJM |
|
latest, today, historical |
- |
today, historical |
today, historical |
- |
- |
SPP |
- |
- |
- |
- |
- |
- |
- |
How to use#
We are currently adding Locational Marginal Price (LMP). Even though each BA offers different markets, but you can query them with a standardized API
import gridstatus
nyiso = gridstatus.NYISO()
nyiso.get_lmp(date="today", market="REAL_TIME_5_MIN", locations="ALL")
| Time | Interval Start | Interval End | Market | Location | Location Type | LMP | Energy | Congestion | Loss | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2025-01-27 00:00:00-05:00 | 2025-01-27 00:00:00-05:00 | 2025-01-27 00:05:00-05:00 | REAL_TIME_5_MIN | CAPITL | Zone | 104.01 | 44.06 | 57.09 | 2.86 |
| 1 | 2025-01-27 00:00:00-05:00 | 2025-01-27 00:00:00-05:00 | 2025-01-27 00:05:00-05:00 | REAL_TIME_5_MIN | WEST | Zone | 37.72 | 44.06 | -2.37 | -3.97 |
| 2 | 2025-01-27 00:00:00-05:00 | 2025-01-27 00:00:00-05:00 | 2025-01-27 00:05:00-05:00 | REAL_TIME_5_MIN | PJM | Zone | 45.49 | 44.06 | 1.74 | -0.31 |
| 3 | 2025-01-27 00:00:00-05:00 | 2025-01-27 00:00:00-05:00 | 2025-01-27 00:05:00-05:00 | REAL_TIME_5_MIN | O H | Zone | 37.61 | 44.05 | -1.77 | -4.67 |
| 4 | 2025-01-27 00:00:00-05:00 | 2025-01-27 00:00:00-05:00 | 2025-01-27 00:05:00-05:00 | REAL_TIME_5_MIN | NPX | Zone | 88.55 | 44.06 | 41.71 | 2.78 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 1870 | 2025-01-27 10:00:00-05:00 | 2025-01-27 10:00:00-05:00 | 2025-01-27 10:05:00-05:00 | REAL_TIME_5_MIN | H Q | Zone | 35.14 | 35.53 | -0.00 | -0.39 |
| 1871 | 2025-01-27 10:00:00-05:00 | 2025-01-27 10:00:00-05:00 | 2025-01-27 10:05:00-05:00 | REAL_TIME_5_MIN | GENESE | Zone | 40.52 | 35.54 | 7.33 | -2.35 |
| 1872 | 2025-01-27 10:00:00-05:00 | 2025-01-27 10:00:00-05:00 | 2025-01-27 10:05:00-05:00 | REAL_TIME_5_MIN | DUNWOD | Zone | 95.92 | 35.52 | 57.31 | 3.09 |
| 1873 | 2025-01-27 10:00:00-05:00 | 2025-01-27 10:00:00-05:00 | 2025-01-27 10:05:00-05:00 | REAL_TIME_5_MIN | CENTRL | Zone | 49.49 | 35.54 | 14.91 | -0.96 |
| 1874 | 2025-01-27 10:00:00-05:00 | 2025-01-27 10:00:00-05:00 | 2025-01-27 10:05:00-05:00 | REAL_TIME_5_MIN | CAPITL | Zone | 109.32 | 35.53 | 71.84 | 1.95 |
1875 rows × 10 columns
And here is querying CAISO
import gridstatus
caiso = gridstatus.CAISO()
locations = ["TH_NP15_GEN-APND", "TH_SP15_GEN-APND", "TH_ZP26_GEN-APND"]
caiso.get_lmp(date="today", market='DAY_AHEAD_HOURLY', locations=locations)
2025-01-27 15:04:16 - DEBUG - Dataset config: {'query': {'path': 'SingleZip', 'resultformat': 6, 'queryname': 'PRC_LMP', 'version': 12}, 'params': {'market_run_id': 'DAM', 'node': None, 'grp_type': [None, 'ALL', 'ALL_APNODES']}}
2025-01-27 15:04:16 - INFO - Fetching URL: http://oasis.caiso.com/oasisapi/SingleZip?resultformat=6&queryname=PRC_LMP&version=12&market_run_id=DAM&node=TH_NP15_GEN-APND,TH_SP15_GEN-APND,TH_ZP26_GEN-APND&startdatetime=20250127T08:00-0000&enddatetime=20250128T08:00-0000
2025-01-27 15:04:17 - DEBUG - Found 1 files: ['20250127_20250128_PRC_LMP_DAM_20250127_07_04_17_v12.csv']
2025-01-27 15:04:17 - DEBUG - Parsing file: 20250127_20250128_PRC_LMP_DAM_20250127_07_04_17_v12.csv
| Time | Interval Start | Interval End | Market | Location | Location Type | LMP | Energy | Congestion | Loss | |
|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 2025-01-27 00:00:00-08:00 | 2025-01-27 00:00:00-08:00 | 2025-01-27 01:00:00-08:00 | DAY_AHEAD_HOURLY | TH_NP15_GEN-APND | Trading Hub | 54.89814 | 55.89303 | 0.00000 | -0.99490 |
| 1 | 2025-01-27 00:00:00-08:00 | 2025-01-27 00:00:00-08:00 | 2025-01-27 01:00:00-08:00 | DAY_AHEAD_HOURLY | TH_SP15_GEN-APND | Trading Hub | 54.00385 | 55.89303 | 0.00000 | -1.88918 |
| 2 | 2025-01-27 00:00:00-08:00 | 2025-01-27 00:00:00-08:00 | 2025-01-27 01:00:00-08:00 | DAY_AHEAD_HOURLY | TH_ZP26_GEN-APND | Trading Hub | 53.88089 | 55.89303 | 0.00000 | -2.01215 |
| 3 | 2025-01-27 01:00:00-08:00 | 2025-01-27 01:00:00-08:00 | 2025-01-27 02:00:00-08:00 | DAY_AHEAD_HOURLY | TH_NP15_GEN-APND | Trading Hub | 54.42792 | 55.58386 | -0.02759 | -1.12835 |
| 4 | 2025-01-27 01:00:00-08:00 | 2025-01-27 01:00:00-08:00 | 2025-01-27 02:00:00-08:00 | DAY_AHEAD_HOURLY | TH_SP15_GEN-APND | Trading Hub | 53.78125 | 55.58386 | 0.02055 | -1.82315 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 67 | 2025-01-27 22:00:00-08:00 | 2025-01-27 22:00:00-08:00 | 2025-01-27 23:00:00-08:00 | DAY_AHEAD_HOURLY | TH_SP15_GEN-APND | Trading Hub | 64.24230 | 67.05524 | -0.11732 | -2.69562 |
| 68 | 2025-01-27 22:00:00-08:00 | 2025-01-27 22:00:00-08:00 | 2025-01-27 23:00:00-08:00 | DAY_AHEAD_HOURLY | TH_ZP26_GEN-APND | Trading Hub | 64.21217 | 67.05524 | -0.11392 | -2.72915 |
| 69 | 2025-01-27 23:00:00-08:00 | 2025-01-27 23:00:00-08:00 | 2025-01-28 00:00:00-08:00 | DAY_AHEAD_HOURLY | TH_NP15_GEN-APND | Trading Hub | 64.31694 | 65.42629 | -0.10179 | -1.00756 |
| 70 | 2025-01-27 23:00:00-08:00 | 2025-01-27 23:00:00-08:00 | 2025-01-28 00:00:00-08:00 | DAY_AHEAD_HOURLY | TH_SP15_GEN-APND | Trading Hub | 63.03645 | 65.42629 | 0.04401 | -2.43386 |
| 71 | 2025-01-27 23:00:00-08:00 | 2025-01-27 23:00:00-08:00 | 2025-01-28 00:00:00-08:00 | DAY_AHEAD_HOURLY | TH_ZP26_GEN-APND | Trading Hub | 62.86130 | 65.42629 | 0.06514 | -2.63014 |
72 rows × 10 columns
You can see what markets are available by accessing the markets property of an iso. For, example
caiso.markets
[<Markets.REAL_TIME_5_MIN: 'REAL_TIME_5_MIN'>,
<Markets.REAL_TIME_15_MIN: 'REAL_TIME_15_MIN'>,
<Markets.DAY_AHEAD_HOURLY: 'DAY_AHEAD_HOURLY'>]