LMP Pricing Data#

Support#

Below are the currently supported LMP markets

Method

REAL_TIME_5_MIN

DAY_AHEAD_HOURLY

REAL_TIME_15_MIN

REAL_TIME_HOURLY

CAISO

get_lmp

latest, today, historical

latest, today, historical

latest, today, historical

-

Ercot

get_spp

-

latest, today, historical

latest, today, historical

-

ISONE

get_lmp

latest, today, historical

today, historical

-

latest, today, historical

MISO

get_lmp

latest

latest

-

-

NYISO

get_lmp

latest, today, historical

latest, today, historical

-

-

PJM

get_lmp

today, historical

latest, today, historical

-

today, historical

SPP

get_lmp

latest, today, historical

latest, today, historical

-

-

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 Market Location Location Type LMP Energy Congestion Loss
0 2023-01-27 00:05:00-05:00 REAL_TIME_5_MIN CAPITL Zone 30.63 29.06 0.00 1.57
1 2023-01-27 00:05:00-05:00 REAL_TIME_5_MIN CENTRL Zone 29.12 29.06 0.00 0.06
2 2023-01-27 00:05:00-05:00 REAL_TIME_5_MIN DUNWOD Zone 31.13 29.07 0.00 2.06
3 2023-01-27 00:05:00-05:00 REAL_TIME_5_MIN GENESE Zone 28.37 29.07 0.00 -0.70
4 2023-01-27 00:05:00-05:00 REAL_TIME_5_MIN H Q Zone 28.72 29.07 0.00 -0.35
... ... ... ... ... ... ... ... ...
2320 2023-01-27 14:15:00-05:00 REAL_TIME_5_MIN NORTH Zone 30.88 30.94 0.00 -0.06
2321 2023-01-27 14:15:00-05:00 REAL_TIME_5_MIN NPX Zone 32.70 30.94 0.00 1.76
2322 2023-01-27 14:15:00-05:00 REAL_TIME_5_MIN O H Zone 20.28 30.94 8.80 -1.86
2323 2023-01-27 14:15:00-05:00 REAL_TIME_5_MIN PJM Zone 29.13 30.94 2.61 0.80
2324 2023-01-27 14:15:00-05:00 REAL_TIME_5_MIN WEST Zone 19.54 30.93 10.62 -0.77

2325 rows × 8 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)
Time Market Location Location Type LMP Energy Congestion Loss
0 2023-01-27 00:00:00-08:00 DAY_AHEAD_HOURLY TH_NP15_GEN-APND Trading Hub 81.22371 84.51999 0.00000 -3.29628
1 2023-01-27 00:00:00-08:00 DAY_AHEAD_HOURLY TH_SP15_GEN-APND Trading Hub 82.89720 84.51999 0.00000 -1.62278
2 2023-01-27 00:00:00-08:00 DAY_AHEAD_HOURLY TH_ZP26_GEN-APND Trading Hub 81.37584 84.51999 0.00000 -3.14414
3 2023-01-27 01:00:00-08:00 DAY_AHEAD_HOURLY TH_NP15_GEN-APND Trading Hub 76.61670 79.51915 0.00000 -2.90245
4 2023-01-27 01:00:00-08:00 DAY_AHEAD_HOURLY TH_SP15_GEN-APND Trading Hub 77.98443 79.51915 0.00000 -1.53472
... ... ... ... ... ... ... ... ...
67 2023-01-27 22:00:00-08:00 DAY_AHEAD_HOURLY TH_SP15_GEN-APND Trading Hub 82.58601 83.98008 0.00000 -1.39407
68 2023-01-27 22:00:00-08:00 DAY_AHEAD_HOURLY TH_ZP26_GEN-APND Trading Hub 80.09180 83.98008 0.00000 -3.88828
69 2023-01-27 23:00:00-08:00 DAY_AHEAD_HOURLY TH_NP15_GEN-APND Trading Hub 76.05842 80.02967 -0.00178 -3.96947
70 2023-01-27 23:00:00-08:00 DAY_AHEAD_HOURLY TH_SP15_GEN-APND Trading Hub 78.66116 80.02967 0.00000 -1.36851
71 2023-01-27 23:00:00-08:00 DAY_AHEAD_HOURLY TH_ZP26_GEN-APND Trading Hub 76.41233 80.02967 0.00000 -3.61734

72 rows × 8 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'>]