Access all Benchmark and Leaderboard data via our API.

Modo makes all our benchmark and leaderboard data available via our API. This is useful for automatically downloading and working with our data.

There are three endpoints to use:

Check out this code snippet for an example of how to make a large request and get the response as a Pandas DataFrame.

BESS Index

This image shows the BESS Index response for a single 15-minute settlement interval.

There are a few things to note:

  • The rows where duration is * represent data for all batteries. The rows where duration is 1 represent data for only 1-hour batteries, and 2 represent data for only 2-hour batteries. Be sure to select only the rows that have the duration you're interested in. Here's an example of how to do this:
    • # bess_index is a Pandas DataFrame of BESS Index output data
      index_all = bess_index[bess_index.duration == '*']
      index_1hr = bess_index[bess_index.duartion == 1]
      index_2hr = bess_index[bess_index.duartion == 2]
  • Ancillary Service revenues are shown for both the Day-Ahead and Real-Time markets. These revenues should not be added together as this would double count Ancillary Services revenue. The Modo revenue index uses Real-Time Ancillary Service revenue only.
    • The reason that we provide both, even though only one should be used, is because QSEs may reassign Ancillary Service obligations from one resource to another between the Day-Ahead market and Real-Time operations. So although the total revenue earned by the QSE will not change, the distribution of that revenue across the QSEs resources may change. It is best to use Real-Time Ancillary Service revenue, but we provide both because shifting Ancillary Service responsibility will be interesting to some users.
  • The ORDC portion of energy revenue is broken out into its own service.

BESS Index Breakdown

This image shows the BESS Index Breakdown response for a single resource during a single 15-minute settlement interval.

There are a few things to note:

  • If a resource did not participate in a market / service, that market / service will not appear in the output. In the example image, the resource didn't participate in NSRS, ECRS, or Day-Ahead energy.
  • The column resourceType indicates whether the rows represents the load or gen side of the battery. Because batteries are unique among resources in ERCOT for being capable of both importing and exporting, they're modeled in ERCOT as two separate resources, and our data reflects this.
  • The same notes from BESS Index apply.

BESS Physical Operations and Availability

This image shows the BESS Physical Operations and Availability response for the first 10 resources.

Note that the Physical Operations data uses Telemetered Net Output to calculate genMw, whereas Settlement Metered Net Energy is used for revenue calculations.