This endpoint returns BM (Balancing Mechanism) data for a given date. It can return acceptances, table bids and table offers by period, or acceptances filtered by plant or fuel (see Enact's BOA dashboard and BOA comparer).


Using the LCPDelta Python Package

Synchronous

from lcp_delta import enact
from datetime import date

enact_api_helper = enact.APIHelper(username, public_api_key)

# bm acceptances, table bids and table offers for a given date and period
response_dictionary = enact_api_helper.get_bm_data_by_period(
	date(2023,6,22), # date to return data for
	1 # period to return data for
)

print(response_dictionary)

# bm acceptances for a given date filtered by either plant or fuel
response_dataframe = enact_api_helper.get_bm_data_by_search(
	date(2023,6,22), # date to return data for
	"plant", # search option ("plant", "fuel", or "all")
	"CARR" # additional filter (BMU ID or fuel type)
)

print(response_dataframe)

Asynchronous (package version 1.3.0 and later)

from lcp_delta import enact
from datetime import date
import asyncio

async def main():
    enact_api_helper = enact.APIHelper(username, public_api_key)

    # bm acceptances, table bids and table offers for a given date and period
    response_dictionary = await enact_api_helper.get_bm_data_by_period_async(
        date(2023,6,22), # date to return data for
        1 # period to return data for
    )

    print(response_dictionary)

    # bm acceptances for a given date filtered by either plant or fuel
    response_dataframe = await enact_api_helper.get_bm_data_by_search_async(
        date(2023,6,22), # date to return data for
        "plant", # search option ("plant", "fuel", or "all")
        "CARR" # additional filter (BMU ID or fuel type)
    )

    print(response_dataframe)

asyncio.run(main())

Using the API Directly

The returned data will depend on how the request object is constructed.

If the date and period fields are provided in the request object, this endpoint will return all BM acceptances, table bids and table offers for the given date and period.

If the date, option and searchString fields are provided in the request object, this endpoint will return all BM acceptances for the given date filtered by either plant or fuel, depending on the option.


Return Types

There are two different return types for this request.



The first type is returned when the date and period parameters are present in the request

There will be four properties on the return object:

  • AcceptedBids
  • AcceptedOffers
  • TableOffers
  • TableBids

All of these are Lists of the following type:

string plantId;
bool isBid;
bool isAccepted;
double volume;
double offerPrice;
double bidPrice;
bool soFlag;
bool storFlag;
bool cadlFlag;
double cost;
string bidOnTableTypeEnum; 
string fuelType;
double? sel; (nullable)
double? mzt; (nullable)
double? ndb; (nullable)
double? ndo; (nullable)
double? ndz; (nullable)
double? mnzt; (nullable)
double[] coords;
string bodId;
AdditionalBsadData? additionalBsadData; (nullable)

An example of a typical return item (of a list) is shown below:

{
    "plantId": "E_FARNB-1",
    "isBid": false,
    "isAccepted": false,
    "volume": 20.0,
    "offerPrice": 454.34,
    "bidPrice": 434.34,
    "soFlag": false,
    "storFlag": false,
    "cadlFlag": false,
    "cost": 0.0,
    "bidOnTableTypeEnum": "TurnUp",
    "fuelType": "Battery",
    "sel": 0.0,
    "mzt": 0.0,
    "ndb": 0.0,
    "ndo": 0.0,
    "ndz": 0.0,
    "mnzt": 1.0,
    "coords": [
      -0.83,
      51.189
    ],
    "bodId": "2",
    "additionalBsadData": null
}

 

bidOnTableTypeEnum can be one of the following:


TurnOn,
TurnOff,
TurnUp,
TurnDown,
NoChange,
TurnUpTurnDownBothAvailable


AdditionalBsadData will the have the following properties if populated:


string PlantId;
string PartyName;
string? FuelType; (nullable) (Any valid Fuel Type)

Example:

{'plantId': 'T_LBAR-1', 'partyName': 'RWE Supply & Trading GmbH', 'fuelType': 'CCGT'}



The second type is returned when the date, option and searchString parameters are present in the request.

The first array returned in the data part of the result are the headers of the data (which are all strings), with subsequent arrays being the rows of data values with the following types:

[
  "Day",
  "Period",
  "BMU",
  "Fuel",
  "Price (£/MWh)",
  "Volume (MW)",
  "Cadl",
  "SO Flag",
  "STOR flag"
],
[
  "2023-06-22T00:00:00",
  2,
  "T_CARR-1",
  "CCGT",
  125,
  0.7,
  true,
  false,
  false
],

...

Day - String (Date - e.g "2023-06-22T00:00:00")
Period - Integer
BMU - String (Any valid BMU ID)
Fuel - String (Any valid Fuel Type)
Price - Double
Volume - Double
Cadl - Boolean
SO Flag - Boolean
STOR Flag - Boolean
Accepted Time - Nullable String (Date - e.g "2023-06-22T00:00:00")



Fuel types include:


Other, 
Biomass, 
CCGT, 
CHP, 
Coal, 
OCGT, 
Hydro, 
Nuclear, 
Wind, 
PumpedStorage, 
Supply, 
Battery, 
InterconnectorEastWest, 
InterconnectorFrance, 
InterconnectorIreland, 
InterconnectorNetherlands, 
InterconnectorNemo, 
InterconnectorElecLink, 
InterconnectorIfa2, 
InterconnectorNorthSeaLink, 
Oil, 
BSAD, 
GasRecip, 
Solar, 
InterconnectorVikingLink


Language
Credentials
OAuth2
Click Try It! to start a request and see the response here!