How to manage virtual assets in FCR and aFRR ancillary service markets on Layr at the block level.
This guide is deprecated and no longer maintained. For current guidance on participating in FCR and aFRR ancillary service markets, see Ancillary services (virtual asset level).
This page covers how to manage virtual assets in FCR and aFRR ancillary services, covering market participation, bid submissions, capacity allocation between wholesale and ancillary services, SoC buffer requirements, revenue calculations and handling unavailabilities.
1. Where to find your available ancillary service capacities
Generally, your virtual asset comes with:
a marketable capacity available for aFRR positive and negative markets
the contractually available and therefore billable aFRR capacity
this capacity is available via API
it is only reduced in cases of unavailabilities
if you bid into ie. FCR, this capacity stays the same
a marketable capacity available for FCR markets → This is by law limited to 80% of the rated power for wholesale
the contractually available and therefore billable aFRR capacity
this capacity is available via API
it is only reduced in cases of unavailabilities
if you bid into ie. aFRR, this capacity stays the same
Remark: Beyond your marketable capacity, there is also your remaining available capacity for FCR and aFRR (this is your actually usable ie. aFRR capacity - which would also include reductions due to FCR committments). This information is currently not available via API and you have to make sure you take into account your remaining capacity yourself.
You can retrieve information on the marketable ancillary capacities through the operational endpoint
The three variables linked below are corresponding to each of the three formerly mentioned marketable capacities
The next chapter will briefly explain a fundamental concept of virtual batteries - the wholesale block. Understanding the wholesale block is a necessary foundation for understanding how ancillary services work on the LAYR, as there are many dependencies between the wholesale block and ancillary services.Wholesale block and ancillary services:Your available total power capacity is divided between ancillary service bids/commitments and remaining wholesale capacity which backs your wholesale trading activity. If you have bid capacity on the ancillary markets, that standing ancillary commitment is called aFRR or FCR block. The remaining wholesale capacity after deducting ancillary service bids/commitments is called wholesale block.The following figure gives a high level overview of how one power block is distributed between ancillary services and the wholesale block.
Your total available capacity is equivalent to your wholesale capacity, before you bid into ancillary markets
Of that total capacity, a certain part is prequalified for FCR and aFRR markets
Bidding into FCR or aFRR reduces the remaining wholesale block you have available until you receive market results.
Accepted FCR or aFRR bids ultimately reduce your the remaining wholesale block.
The graphic below visualises the wholesale block as the difference between total available capacity and your FCR and aFRR blocks on a high level
You can identify the id of your wholesale block via
In this call you can expect an output as defined below, which includes the wholesale block id
Next you can query constant timeseries format information about your wholesale block
This timeseries contains the available power you have left for wholesale trading after deducting your ancillary commitments and your scheduled power in wholesale for each quarter
Exemplary output for a defined timespan of two quarters
Important note: calling the available capacity (marked in green) from the virtual asset endpoint without specifically referencing a block gives you the sum of ancillary and wholesale power available
However, the marketable ancillary capacities on this endpoint are already referencing to the specific market
Your bidden or accepted FCR capacity always directly impacts your remaining aFRR and wholesale capacity. As the interdependencies can be complex, the following part will walk through a couple of examples to clearly outline how the three type of capacities interact.
Scenario - Maximum FCR bid, no remaining aFRR
Available capacities**:**
Available wholesale capacity: 10MW
Marketable aFRR: 8MW
Marketable FCR: 8MW
Energy capacity: 20MWh
SoC bounds:
0%
100%
Action: you bid 8MW into FCR
Remaining capacities (as mentioned above, your marketable Ancillary capacities which are available via API stay the same)
Remaining available wholesale capacity: 2MW
Remaining available aFRR capacity:0MW
Remaining available FCR capacity:0MW
Energy capacity: 20MWh
SoC bounds:
19.49%
82.78%
Scenario - Maximum FCR bid, remaining aFRR
Available capacities**:**
Available wholesale capacity: 10MW
Marketable aFRR: 10MW
Marketable FCR: 8MW
Energy capacity: 20MWh
SoC bounds:
0%
100%
Action: you bid 8MW into FCR
Remaining capacities: (as mentioned above, your marketable Ancillary capacities which are available via API stay unchanged)
Remaining available wholesale capacity: 2MW
Remaining available aFRR capacity: 2MW
Remaining available FCR capacity: 0MW
Energy capacity: 20MWh
SoC bounds:
19.49%
82.78%
Scenario - aFRR bid
Available capacities**:**
Available wholesale capacity: 10MW
Marketable aFRR: 10MW
Marketable FCR: 8MW
Energy capacity: 20MWh
SoC bounds:
0%
100%
Action: you bid 8MW into aFRR
Remaining capacities: (as mentioned above, your marketable Ancillary capacities which are available via API stay unchanged)
Remaining available wholesale capacity: 2MW
Remaining available aFRR capacity: 2MW
Remaining available FCR capacity: 1MW → not 2MW, because you would still need 25% of your FCR capacity free in the wholesale block and you can only bid in full MW steps
Energy capacity: 20MWh
SoC bounds: (no effect on SoC bounds)
0%
100%
Scenario - Bidding more total ancillary capacity (8MW) than each of the two marketable capacities individually (6MW aFRR and 5MW FCR)[disclaimer: the following behaviour might not perfectly apply during a ramp up period where multiple assets are aggregated, of which not all are prequalified yet]
Available capacities**:**
Available wholesale capacity 10MW
Marketable aFRR: 6MW
Marketable FCR: 5MW
Energy capacity: 20MWh
SoC bounds:
0%
100%
Action: you bid 5MW into aFRR and 3MW into FCR
Remaining capacities: (as mentioned above, your marketable Ancillary capacities which are available via API stay unchanged)
Remaining wholesale capacity 2MW
Remaining available aFRR capacity: 1MW
Remaining available FCR capacity: 1MW → not 2MW, because you would still need 25% of your FCR capacity free in the wholesale block and you can only bid in full MW steps
Energy capacity: 20MWh
SoC bounds:
7.31%
93.54%
Important additional context for scenario 4:
FCR and aFRR capacities are not mutually exclusive
That means the sum of bids in FCR and aFRR can exceed the maximum of each marketable capacity individually (as you can see in scenario 4)
In operation, it does rarely happen that you can make use of this “stackable” structure because
You typically have around 80% of the assets capacity prequalified
That means the wholesale power buffers you have to keep for FCR bids are restricting this stackable behaviour (where the sum of both is bigger than the bigger of each individual as long as you have enough wholesale capacity available)
fully activate the awarded MW within 15 seconds after receiving the set-point signal
- power capacity deduction of wholesale block - 25% of your FCR bids capacity must be allocated to wholesale block (Layr does not allow you to bid more into ancillary services) - SoC buffers are enforced as upper and lower bounds
aFRR energy positive
Power equal to won bids over 15 minutes (no double selling)
no legally binding requirements
not required, but you must constantly fulfil aFRR power calls (potentially requires balancing SoC through wholesale markets)
fully activate the awarded MW within 5 minutes after receiving the set-point signal
- power capacity deduction of wholesale block
terralayr would recommend users to also keep power and SoC buffers for aFFR- as there still are legal requirements
aFRR energy negative
Power equal to won bids over 15 minutes (no double selling)
no legally binding requirements
not required, but you must constantly fulfil aFRR power calls (potentially requires balancing SoC through wholesale markets)
fully activate the awarded MW within 5 minutes after receiving the set-point signal
- power capacity deduction of wholesale block
aFRR capacity positive
Power equal to won bids over 4 hours (no double selling)
no legally binding requirements
not required, but you must constantly fulfil aFRR power calls (potentially requires balancing SoC through wholesale markets)
fully activate the awarded MW within 5 minutes after receiving the set-point signal
- power capacity deduction of wholesale block
aFRR capacity negative
Power equal to won bids over 4 hours (no double selling)
no legally binding requirements
not required, but you must constantly fulfil aFRR power calls (potentially requires balancing SoC through wholesale markets)
fully activate the awarded MW within 5 minutes after receiving the set-point signal
3.1 Deep-dive: FCR committed buffer power in wholesale block:
if you bid into FCR, your wholesale block always contains a certain share of power which constituted the dedicated buffer for your bid and accepted FCR power
the buffer capacity itself is not directly available as a number via API, but you can easily calculate the buffer.
this buffer capacity can be used for normal wholesale trading, but it cannot be bid into ancillary services
the main point of it is to have flexible power available to work against a very strong FCR activation (if necessary)
you will feel the impact of the reserved wholesale power in two ways
as restriction to how much you can bid into aFRR if you have active FCR bids
more under
how your FCR, aFRR and wholesale blocks are affected by an unavailability
The next section covers how to use FCR via LAYR. Starting with bid sumission 4.1 Submitting FCR bids (including a deep dive on how FCR and aFRR bids affect each other 2.2 Interdependencies of FCR and aFRR capacity ) and how to call and update bids. Next we cover how to get results of your FCR bids Finally we cover how you can access FCR blocks, which are the result of FCR bids on a virtual battery
All bids must be placed before 7:30 am CET/CEST on the day before delivery (The auction opens a week before the delivery day). If submitted before, bids are rejected
Offered Capacity (offeredCapacity) in a bid
must be provided in kilowatts (kW)
must be an integer multiple of 1 megawatt (MW). Any non-integral part will be rounded down (e.g., 1000.5 kW becomes 1000 kW), but values like 1500 kW would be rejected as they are not a multiple of 1 MW
must adhere to your available capacity for FCR bids
It must respect your marketable FCR capacity and the buffer requirements on the wholesale block
It must respect boundaries which might be imposed due to unavailabilities
Capacity Price (capacityPrice) in a bid
Must be provided in EUR/MW
The maximum bid price is 15,000 Euros, and the minimum is -15,000 Euros.
In the auction, the settlementPrice is determined by the “Pay As Clear” principle. This means the settlementPrice can be equal to or higher than the capacityPrice you submitted.
For instance, an accepted bid of 2000 kW with a capacityPrice of 80 EUR/MW could result in a settlementPrice of 100 EUR/MW, leading to a revenue of 200 EUR (100 EUR/MW * 2 MW).
4.1.2 API endpointThis is how you submit FCR bids via API.
4.1.3 Formatting in API usage:These are some notes on the formatting you need to adhere to while submitting FCR bids.
Delivery Day Format: The deliveryDay must be in YYYY-MM-DD format, for example, 2025-01-01.
Product Format: The product must follow the format NEGPOS_{{startEfaBlock}}_{{endEfaBlock}}, such as NEGPOS_00_04.
4.1.4 Exemplary bid submission (on EFA block level):
Units used in the response: kilowatts (offeredCapacity), EUR/MW (capacityPrice)
EUR/MW means one price for the whole 4h EFA block
EFA block = one of the 6x 4h blocks per day
This is the “granularity” of bids and prices on FCR markets (and also aFRR capacity markets)
4.1.5 Impact of FCR bids on the virtual asset
Once a valid bid is submitted, a new FCR block is added to the virtual asset, covering its duration.
The powerCapacity within this FCR block’s timeseries is set to the bid’s offeredCapacity for the delivery period.
Concurrently, the powerCapacity of the wholesale block (“market”:“WHOLESALE”) for the same delivery period is reduced by the offeredCapacity.
In other words: the power capacity which you bid into FCR is “reserved” for each EFA block or 15 minute period, until you get feedback of the auction results
The reduction of the wholesale block also leads to a respective reduction in available aFRR capacity
You can always calculate the available remaining capacity for aFRR and FCR by deducting your submitted bids for ancillary services from the originally available capacities or by querying the wholesale block
You mostly use this functionality to check the status quo of FCR bids and potentially adjust as a consequence. You will not see if bids are accepted here, you would have to query results as described in 4.3 Get FCR results.4.2.1 Updating FCR Bids
FCR bids for a single product and delivery day can be called via a GET endpoint and updated using a PUT endpoint
You can submit the update in the same format as you submitted your initial bids, either on a full day basis or by specifically addressing certain EFA blocks/products
To delete a bid, you can set the request’s bid list to an empty list []
4.2.2 API endpointThis is how you get and re-submit FCR bids via the API.
4.3.3 Formatting in API usage:These are some notes on the formatting you need to adhere to while submitting FCR bids.
The query parameter deliveryDay must be in the following format: YYYY-MM-DD, e.g. 2025-01-01 (full day according to RFC3339)
The optional query parameter accepted can be used to filter the response to show only accepted or rejected bids. If the parameter is not set, all bids are returned
4.3.4 Exemplary FCR results:
a JSON representation of the FCR results for the given delivery day and virtual asset
This includes the product, deliveryDay, as well as a list of bids results for the given product
Each result in the results list contains the following fields:
accepted: A boolean field that shows whether the bid was accepted or rejected in the auction
offeredCapacity: The offered capacity of the original bid in kilowatts.
acceptedCapacity: The accepted capacity determined in the auction in kilowatts. Can be equal to or less than the offeredCapacity
capacityPrice: The capacity price of the original bid in EUR/MW
settlementPrice: The settlement price determined by the auction in EUR/MW. The price is determined by the “Pay As Clear” principle. It can be equal to or higher than the bid price for an accepted bid
4.3.5 Impact of accepted and not accepted FCR bids on the virtual asset
There are two options for your “reserved/bidden” capacity
Your bidden capacity gets accepted and stays part of the FCR block (”nothing happens” refers to this case)
Your bidden capacity gets rejected and moves back into the wholesale block
The power allocated to your virtual asset’s FCR block is increased and the available wholesale block power is reduced according to the results returned.
Both the FCR and wholesale blocks are adjusted based on the auction results. For example, if a bid is rejected, the powerCapacity is removed from the FCR block and added back to the wholesale block.
More specifically, per EFA block the following logic can be applied
If acceptedCapacity = offeredCapacity
nothing happens.
If acceptedCapacity < offeredCapacity(for the edge case that your offered capacity has just been at the cut-off point of the clearing price and not your whole capacity makes it into clearing)
the powerCapacity of the FCR block for the duration of the delivery period is reduced to the value of acceptedCapacity
whereas the powerCapacity of the wholesale block is increased by the same amount during that time.
same holds for the aFRR capacity available
If the bid is rejected altogether
the powerCapacity of the FCR block for the duration of the delivery period is reduced to 0 and the powerCapacity of the wholesale block is increased by the same amount.
The next section covers how to use aFRR via LAYR. Starting with bid sumission (including a deep dive on how FCR and aFRR bids affect each other ) and how to call and update bids . Next we cover how to get results of your aFRR bids . Finally we cover how you can access aFRR blocks, which are the result of aFRR bids on a virtual battery.
All bids must be placed before the following deadline: 8:40am CET/CEST on the day before delivery. The auction opens a week before the delivery day.
aFRR energy markets
All bids must be placed before the following deadline: 30 minutes before the delivery period, e.g. a bid for delivery period 15:30pm must be submitted by 15:00pm. Moreover, bids must be placed after 12:00pm CET/CEST on the day before delivery. If bids are made before that time, they are rejected.
Offered Capacity (offeredCapacity) in a bid
Must be provided in kilowatts
must be an integer multiple of 1 megawatt (MW). Any non-integral part will be rounded down (e.g., 1000.5 kW becomes 1000 kW), but values like 1500 kW would be rejected as they are not a multiple of 1 MW
must adhere to your available capacity for aFRR bids
It must respect your marketable/ still remaining aFRR capacity
It must respect boundaries which might be imposed due to unavailabilities
aFRR capacity markets -offeredCapacity
you are free to bid whatever capacity you intend
aFRR energy markets -offeredCapacity
you must bid at least the accepted capacity from the aFRR capacity market results
Price:
aFRR capacity markets -capacityPrice
Must be provided in EUR/MW/h. In the capacity market auction, a settlementPrice is determined by the “Pay As Bid” principle. It will match the capacityPrice of your bid.
For example, an accepted bid with capacityPrice = 100EUR/MW/h and acceptedCapacity = 2000kW will result in a revenue of 100EUR/MW/h * 2MW * 4h = 800EUR.
aFRR energy markets -energyPrice
Must be provided in EUR/MWh. In the energy market auction, a settlementPrice is determined by the “Pay As Clear” principle. It can be equal to or higher than the energyPrice you submitted.
For example, an accepted bid with energyPrice = 80EUR/MWh, settlementPrice = 100EUR/MWh and acceptedCapacity = 2000kW will result in a revenue of 100EUR/MWh * 2MW * 0.25h = 50EUR, if the asset is fully activated for the whole 15 minutes. It is important to note that you are only paid for the actual energy delivered.
If you have an accepted capacity market EFA block, you are not bound to the price of that EFA block → that means you can bid a higher or lower price in the energy markets on quarter hours during the EFA block than you have bid originally in the capacity markets for the respective EFA block
The max price that can be bid into both markets is 15,000 Euros, the min price is -15,000 Euros.
5.1.2 API endpointThis is how you submit aFRR bids via API.
5.1.3 Formatting in API usage:These are some notes on the formatting you need to adhere while submitting aFRR bids.
aFRR capacity markets
For a bid in the capacity market (Regelleistungsmarkt), it is required to provide both the capacityPrice and energyPrice. The product must be in the following format: {{direction}}_{{startEfaBlock}}_{{endEfaBlock}}, e.g. POS_00_04.
aFRR energy markets
For a bid in the energy market (Regelarbeitsmarkt), it is required to provide the energyPrice. The capacityPrice field can be removed or set to null ("capacityPrice": null), depending on your preference. The product must be in the following format: {{direction}}_{{quarterHourInDay}}, e.g. POS_001. The final products on a normal day are POS_096 or NEG_096. The final products on the CET to CEST clock change day are POS_092 or NEG_092. The final products on the CEST to CET clock change day are POS_100 or NEG_100
The productDateCode in the response references a specific product on a given delivery day: e.g. 2025-01-01_POS_00_04. This “product-date-code” can be used to update the bid individually through the PUT endpoint.
5.1.4 Exemplary capacity market bid submission (on EFA block level):
Units used in the response: kilowatts (offeredCapacity), EUR/MW/h (capacityPrice) and EUR/MWh (energyPrice).
EUR/MW/h means one price for one hour in the 4h EFA block
EFA block = one of the 6x 4h blocks per day
This is the “granularity” of bids and prices on FCR markets (and also aFRR capacity markets)
5.1.5 Impact of aFRR bids on the virtual asset
Once a valid bid has been submitted, a new aFRR block ("market":"AFRR") is added to the virtual asset.
The block will cover the duration of the whole virtual asset. Inside the block’s power capacity timeseries, the powerCapacity is updated to value of the bid’s offeredCapacity for the delivery period of the product you bid on.
At the same time, the powerCapacity of the wholesale block ("market":"WHOLESALE") for the delivery period of the product you bid on is reduced by the offeredCapacity.
Both the aFRR and the wholesale block will be adjusted according to the auction results. E.g. if a bid is rejected, the powerCapacity is removed from the aFRR block and added to the wholesale block.
In other words: the power capacity which you bid into aFRR is “reserved” for each EFA or quarter hour block, until for aFRR capacity you get feedback on your bid of the auction results / for aFRR energy your bid will be reserved either way
This “reserved” power capacity is deducted from your available FCR and wholesale power capacity
In contrast to FCR, there are no specific SoC buffer requirements enforced for aFRR
You mostly use this functionality to check the status quo of aFRR bids and potentially adjust as a consequence. You will not see if bids are accepted here, you would have to query results.5.2.1 Updating aFRR Bids
aFRR bids for a single product and delivery day can be called via GET endpoint updated using a PUT endpoint
You can submit the update in the same format as you submitted your initial bids, either on a full day basis or by specifically addressing certain EFA blocks/quarters/products
To delete a bid, you can set the request’s bid list to an empty list []
5.2.2 API endpoint:This is how you get and re-submit aFRR bids via API.
The optional query parameter market can be set to capacity or energy. capacity will only return aFRR bids made to the capacity market (Regelleistungsmarkt). energy will only return aFRR bids made to the energy market (Regelarbeitsmarkt). If the flag is not set, both will be returned.
after 09:20am CET/CEST on the day before delivery (so roughly 40 minutes after submission deadline)
The exact publication time of results is not guaranteed.
If results have not yet been published, returns an empty list and status code 200.
aFRR energy markets
results can be expected around or after 23 minutes before the delivery period, e.g. for a bid with delivery period 12:30pm, results are expected around 12:07pm.
The exact publication time of results is not guaranteed.
If results have not yet been published, returns an empty list and status code 200.
What aFRR energy market results contain
aFRR energy market results include the amount of capacity you have been awarded based on your bids
your actual activation and the respective payout is subject to the TSOs AGC signal
the acceepted capacity in aFRR energy markets is still highly relevant, as you are not allowed to participate with this capacity in intraday trading!
that means this capacity will not be part of your wholesale block
all capacity which is not accepted, it moves back into your wholesale block
5.3.2 API endpoint:This is how you get aFRR results via API.
5.3.3 Formatting in API usage: These are some notes on the formatting you need to adhere while submitting aFRR bids.
The path parameter productDateCode specifies a unique product and delivery day pair: YYYY-MM-DD_{{productName}}, e.g. 2025-01-01_POS_00_04 for a capacity market product (Regelleistungsmarkt) or 2025-01-01_POS_001 for an energy market product (Regelarbeitsmarkt).
The delivery day inside the productDateCode path parameter must be in the following format: YYYY-MM-DD, e.g. 2025-01-01 (full day according to RFC3339).
The optional query parameter accepted can be used to filter the response to show only accepted or rejected bids. If the parameter is not set, all bids are returned.
5.3.4 Exemplary aFRR results:
a JSON representation of the aFRR results for the given delivery day and virtual asset. This includes the product, deliveryDay, as well as a list of bids results for the given product
Each result in the results list contains the following fields:
accepted: A boolean field that shows whether the bid was accepted or rejected in the auction
offeredCapacity: The offered capacity of the original bid in kilowatts.
acceptedCapacity: The accepted capacity determined in the auction in kilowatts. Can be equal to or less than the offeredCapacity
capacityPrice: The capacity price of the original bid in EUR/MW/h
energyPrice: The energy price of the original bid in EUR/MWh
settlementPrice: The settlement price determined by the auction in EUR/MW/h (capacity market bid) or EUR/MWh (energy market bid).
In the capacity market auction, the settlementPrice is determined by the “Pay As Bid” principle. It will match the capacityPrice for an accepted bid.
In the energy market auction, the settlementPrice is determined by the “Pay As Clear” principle. It can be equal to or higher than the energyPrice for an accepted bid
5.3.5 Impact of accepted and not accepted aFRR bids on the virtual asset
There are two options for your “reserved/bidden” capacity
Your bidden capacity gets accepted and stays part of the aFRR block (”nothing happens” refers to this case)
Your bidden capacity gets rejected and moves back into the wholesale block
The power allocated to your virtual asset’s FCR block is increased and the available wholesale block power is reduced according to the results returned.
If acceptedCapacity = offeredCapacity
nothing happens.
If acceptedCapacity < offeredCapacity
the powerCapacity of the aFRR block for the duration of the delivery period is reduced to the value of acceptedCapacity
whereas the powerCapacity of the wholesale block is increased by the same amount during that time.
FCR bidding window has already closed, hence no impact on your available FCR capacity
If the bid is rejected altogether
the powerCapacity of the aFRR block for the duration of the delivery period is reduced to 0 and the powerCapacity of the wholesale block is increased by the same amount.
FCR bidding window has already closed, hence no impact on your available FCR capacity
The following part briefly walks through how you can interpret the price units on the LAYR and how you can use these to calculate revenue per market. Definitions are in line with market standards, but still worth a brief definition.
We will briefly walk through a scenario in which ancillary activation brings your SoC projection out of bounds to clearly pin down consequences and playing room you have.7.1 Scenario
You have an accepted wholesale schedule which keeps your SoC within the SoC bounds
Ancillary activation (which is a result of your accepted ancillary bids) suddenly pushes your projected SoC out of bounds
→ we will cover different scenarios in the following part, depending on when SoC gets pushed out of the bounds and what your scheduled power is for the next quarter7.2 What happens at several steps along the validation timelineNote: All power schedules below correspond to wholesale power.Case 1: SoC projection for the next quarter gets out of bounds before re-validation (before 7 minutes prior to delivery):
Option: Your scheduled power is in the “right” direction and enough to move projected SoC back into the SoC bounds
free Action in re-validation: no action is taken
Remaining playing room: You can still submit other power values subject to conditions before re-validation (specifically, as long as they are keeping the SoC projection within the bounds)
Option: Your scheduled power is in the “right” direction (at the maximum available power) level, but it is not enough to move SoC projection back into the SoC bounds
free Action in re-validation: no action is taken
Remaining playing room: You can not submit other power values, because any reduction of power would move your projected SoC even further away from the bounds.
Option: Your scheduled power is in the “right” direction (not on the maximum available power), but it is not enough to move SoC projection back into the SoC bounds
Action in re-validation: your power is corrected in a way that brings the SoC projection back into the bounds (or as close as possible) within the next quarter
Remaining playing room: After re-validation you can still submit other power values subject to conditions before re-validation (specifically, as long as they are keeping the SoC projection within the bounds)
Option: Your scheduled power is zero, so it does not help moving the SoC projection back in direction of the SoC bounds
Action in re-validation: your power is corrected in a way that brings the SoC projection back into the bounds (or as close as possible) within the next quarter (this means increasing the power from a status quo of 0)
Remaining playing room: After re-validation you can still submit other power values subject to conditions before re-validation(specifically, as long as they are keeping the SoC projection within the bounds)
Option: Your scheduled power is in the “wrong” direction, so it is moving the SoC projection away from the SoC bounds
Action in re-validation: your power is corrected in a way that brings the SoC projection back into the bounds (or as close as possible) within the next quarter (this means changing the direction of power)
Remaining playing room: After re-validation you can still submit other power values subject to conditions before re-validation (specifically, as long as they are keeping the SoC projection within the bounds)
Case 2: SoC projection gets out of bounds after re-validation but before gate-closure (later than 7 but before 5.30 minutes prior to delivery):Note:
Option: Your scheduled power is in the “right” direction = moving SoC projection back in direction of the bound
Action in time after re-validation but before gate-closure: no action is taken
Remaining playing room: You can correct your power value, as long as new schedule brings your SoC projection back into the bounds (that is the only accepted changed schedule at this point)
Option: Your scheduled power is zero = no effect on moving SoC projection back in direction of the bound
Action in time after re-validation but before gate-closure: no action is taken
Remaining playing room: You can correct your power value, as long as new schedule brings your SoC projection back into the bounds (that is the only accepted changed schedule at this point)
Option Your scheduled power is in the “wrong” direction = moving SoC projection in direction away of the bound
Action in time after re-validation but before gate-closure: no action is taken
Remaining playing room: You can correct your power value, as long as new schedule brings your SoC projection back into the bounds (that is the only accepted changed schedule at this point)
Case 3: SoC gets out of bounds after gate-closure (later than 5.30 minutes prior to delivery):
Option: Your scheduled power is in the “right” direction = moving SoC projection back in direction of the bound
Action in time after re-validation but before gate-closure: no action is taken
Remaining playing room: none
Option: Your scheduled power is zero = no effect on moving SoC projection back in direction of the bound
Action in time after re-validation but before gate-closure: no action is taken
Remaining playing room: none
Option Your scheduled power is in the “wrong” direction = moving SoC projection in direction away of the bound
Action in time after re-validation but before gate-closure: no action is taken
The last chapter will cover the effects of unavailabilities on ancillary bids and accepted capacities.One remark on the SoC management obligations with and without unavailabilities:
without unavailability: it is fully the users responsibility to handle SoC management according to ancillary market regulation. As long as the virtual asset baseline conditions stay as they have been agreed on stay the same. i.e. no platform outage, not nonsense data everything and everything working as usual
with unavailability or deviations from the agreed on baseline conditions: the user should still handle SoC management with best efforts.
There are four “types” of power, which behave differently in the context of unavailabilities. Those are:
Free wholesale power block
aFRR committed power
FCR buffer in wholesale power block
this amounts to 25% of FCR committed power
FCR committed power
Mechanism:
Power capacities are deducted according to above order
The wholesale block is always reduced first
After that aFRR, FCR wholesale buffer and FCR in respective order
Most importantly:
FCR:
FCR is prioritised over aFRR capacity and energy markets (when we talk about aFRR power, we relate to both markets)
FCR buffer wholesale power is kept at the same ratio to FCR as in the first place (recall this is 25% wholesale power of accepted FCR power)
That means your free power in the wholesale block always fulfils your legal power buffer obligations
edge case: the 1.25MW in between each full FCR step are allocated to the aFRR block (until it is possible to allocate a full FCR + wholesale block combined MW of 1.25 again). This approach is potentially subject to change in the future
aFRR:
We do not keep any wholesale buffers on your aFRR commitments
If you end up in a situation with 100% of your available power capacity committed into aFRR, because your wholesale block become fully unavailable, you should
Try to get SoC close to 50% as soon as possible
navigate with aFRR energy bids conservatively around the 50% SoC
bid the maximum price to reduce probability of getting activated, in situations where this becomes necessary
i.e. you are at lower SoC bound and you have an existing aFRR downard commitment from the capacity markets
→ you should bid at the maximum price into the energy downward markets inorder to prevent further discharge activation → you could try to bid into aFRR upward markets to recharge the asset
How to query changes to power capacity via API:
how to get available capacity
available FCR and aFRR capacity is equal to marketable capacity
there is no “rated” capacity endpoint for now (coming soon)
that means, marketable capacity for aFRR and FCR changes according to unavailabilities
that means your SoE reduces and some of your SoE is “frozen” in the unavailable part of your virtual battery
That means you could end up in a situation where you had sufficient SoC buffers but the unavailability brings you into a regime where the SoC buffers are not sufficient anymore (FCR bids stay stable but energy capacity reduces)
In this case, you should try at best efforts to return into the area between SoC bounds again!
With reducing energy capacity but potentially stable FCR bids (if only wholesale block is reduced) the SoC bounds can get more strict after an unavailability
In the first scenario, the unavailability reduces your energy capacity stronger in relative terms, than your bid FCR power.
Such a change is consequence of the “prioritisation” of FCR power in the curtailing process
That leads to stricter SoC bounds (check 8.2.4 SoC bound effects and assume FCR_power reduces less than Energy_capacity)
The SoC of your virtual asset was so low, that after the unavailability comes into place, your SoC is out of bounds
Recommended behaviour:Bring your SoC back into the bounds as soon as possible with the remaining wholesale capacity you have available, at best effortsBaseline:Post unavailability:
8.3.2 Scenario 2: aFRR commitments without wholesale power left
Scenario:
In the second scenario, you have active aFRR commitments in the capacity markets and remaining wholesale power
The unavailability completely reduces your wholesale block and you have only aFRR committed power remaining
As you are not legally required to keep a power buffer for your aFRR commitments, the platform does not keep a wholesale power buffer as it did for FCR power
Recommended behaviour:If you end up in a situation with 100% of your available power capacity committed into aFRR, because your wholesale block become fully unavailable, you should:
take SoC management into account for your bidding strategy (opportunity costs of not being able to service aFRR activations because you are on SoC bounds might be very high)
i.e. you are at lower SoC bound and you have an existing aFRR downard commitment from the capacity markets
→ you should take that into account when coming up with a price for the energy downward markets → you could alternatively try to bid into aFRR upward energy markets to recharge the asset
For the current plus four quarters after announcement of an unavailability, the following allowances hold:Power effects:
Bid and accepted FCR capacity remains
FCR bids and commitments can not protected by the short notice periods
There are no ancillary returns on unavailable capacity and there is no forwarded activation
Your “Besicherung” is jumping in
Bid and accepted aFRR capacity remains
aFRR bids and commitments can not be protected by the short notice periods
There are no ancillary returns on unavailable capacity and there is no forwarded activation
Your “Besicherung” is jumping in
The scheduled wholesale power can remain or be changed subject to the rules defined in Virtual Asset Unavailabilities - except in the special case defined below
Special case: Ancillary activation and short-notice protected wholesaleScenario
Ancillary activation pushes your SoC projection out of bounds for the upcoming quarter
That quarter is short-notice protected
Your wholesale schedule for this quarter is not yet at level of the the maximum available power to bring the SoC projection back into the bounds
Action
In such a case, applying to the legal SoC bounds is more important than the short-notice protection
Even short notice protected power values will be corrected in the re-validation. If your projected SoC is out of SoC bounds due to sudden ancillary activation
Scenario 3: SoC bounds get squeezed - short-notice
Scenario:
In the third scenario, the unavailability reduces your energy capacity stronger in relative terms, than your bid FCR power.
Such a change is consequence of the “prioritisation” of FCR power in the curtailing process
That leads to stricter SoC bounds
The SoC of your virtual asset was so low, that after the unavailability comes into place, your SoC is out of bounds
Recommended behaviour:While you can leave your “short-notice” protected schedule as it is, you should bring your SoC back into the bounds as soon as possible with the remaining wholesale capacity you have available.Baseline:Post unavailability:
Last modified on July 23, 2026
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"terralayr","colors":{"primary":"#13151A","light":"#C2C6CE","dark":"#888C97"},"logo":{"light":"https://mintcdn.com/terralayr-90/i2mowZXsRr_Wp7MC/logo/terralayrDark.svg?fit=max\u0026auto=format\u0026n=i2mowZXsRr_Wp7MC\u0026q=85\u0026s=eb99311be47192737889489eb393e3d4","dark":"https://mintcdn.com/terralayr-90/i2mowZXsRr_Wp7MC/logo/terralayr.svg?fit=max\u0026auto=format\u0026n=i2mowZXsRr_Wp7MC\u0026q=85\u0026s=ec334006d0e1ec6b8461a2016ff25471"},"favicon":"https://mintcdn.com/terralayr-90/6CJgW5GjjTIZDPSq/favicon.svg?fit=max\u0026auto=format\u0026n=6CJgW5GjjTIZDPSq\u0026q=85\u0026s=a4ab56165676d79a829688cf9b6e072a","api":{"params":{"expanded":"all"},"playground":{"display":"interactive"},"examples":{"defaults":"required","prefill":true,"autogenerate":true},"url":"full"},"navbar":{"links":[{"href":"mailto:support@trlyr.com","label":"Support"}],"primary":{"type":"button","label":"Layr Dashboard","href":"https://app.trlyr.com"}},"footer":{"socials":{"website":"https://www.trlyr.com/","github":"https://github.com/terralayr","linkedin":"https://www.linkedin.com/company/terralayr"}},"fonts":{"heading":{"family":"InterDisplay","weight":700,"source":"fonts/PPNeueMontreal-Regular.woff2","format":"woff2"},"body":{"family":"InterDisplay","weight":400,"source":"fonts/PPNeueMontreal-Regular.woff2","format":"woff2"}},"integrations":{"gtm":{"tagId":"GTM-MK2HWCBW"},"intercom":{"appId":"aqinf0la"}},"contextual":{"options":["copy","view","claude","chatgpt","mcp","add-mcp","cursor","vscode"],"display":"header"},"metadata":{"timestamp":true},"styling":{"latex":true},"navigation":{"global":{"anchors":[]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"terralayr-90","hasAudioNarration":false,"actualSubdomain":"terralayr-90","customDomains":["docs.trlyr.com"],"gitSource":{"type":"github","owner":"terralayr","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae4a400c2eaceb0e3450bd7","collectionId":"6269c0f9-f523-44e1-830e-eecdedc4dffb","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae4a400c2eaceb0e3450bd7"},"feedback":{"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6ae4a400c2eaceb0e3450bd7","clientVersion":"0.0.4021","searchFilterCounts":[{"language":"default","tag":"API Reference","count":99},{"language":"default","tag":"Physical Asset Management API","count":36},{"language":"default","tag":"Virtual Assets API","count":33},{"language":"default","tag":"BESS Academy","count":32},{"language":"default","tag":"Product Updates \u0026 Changelog","count":22},{"language":"default","tag":"Layr User Guide","count":13},{"language":"default","tag":"virtual-assets","count":13},{"language":"default","tag":"Revenue Reporting API","count":12},{"language":"default","tag":"revenue","count":12},{"language":"default","tag":"Module 3: The BESS Project Lifecycle","count":10}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true,"deflection":{"enabled":true,"email":"support@trlyr.com","showHelpButton":true}},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"layrUserGuide/features/ancillary-services-block-level","slug":"/layrUserGuide/features/ancillary-services-block-level","pageMetadata":{"title":"Ancillary services (block level)","description":"How to manage virtual assets in FCR and aFRR ancillary service markets on Layr at the block level.","deprecated":true,"href":"/layrUserGuide/features/ancillary-services-block-level"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"How to manage virtual assets in FCR and aFRR ancillary service markets on Layr at the block level.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,annotation:`annotation`,code:`code`,em:`em`,li:`li`,math:`math`,mfrac:`mfrac`,mi:`mi`,mn:`mn`,mo:`mo`,mrow:`mrow`,munder:`munder`,ol:`ol`,p:`p`,pre:`pre`,semantics:`semantics`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{CodeBlock,Heading,OptimizedImage,Table,Warning}=_components;if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsx(Warning,{children:_jsxs(_components.p,{children:[`This guide is deprecated and no longer maintained. For current guidance on participating in FCR and aFRR ancillary service markets, see `,_jsx(_components.a,{href:`/layrUserGuide/features/ancillary-services-virtual-asset-level`,children:`Ancillary services (virtual asset level)`}),`.`]})}),`\n`,_jsx(_components.p,{children:`This page covers how to manage virtual assets in FCR and aFRR ancillary services, covering market participation, bid submissions, capacity allocation between wholesale and ancillary services, SoC buffer requirements, revenue calculations and handling unavailabilities.`}),`\n`,_jsx(Heading,{level:`1`,id:`1-where-to-find-your-available-ancillary-service-capacities`,children:_jsx(_components.strong,{children:`1. Where to find your available ancillary service capacities`})}),`\n`,_jsx(_components.p,{children:`Generally, your virtual asset comes with:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`a marketable capacity available for aFRR positive and negative markets`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`the contractually available and therefore billable aFRR capacity`}),`\n`,_jsx(_components.li,{children:`this capacity is available via API`}),`\n`,_jsx(_components.li,{children:`it is only reduced in cases of unavailabilities`}),`\n`,_jsx(_components.li,{children:`if you bid into ie. FCR, this capacity stays the same`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`a marketable capacity available for FCR markets → This is by law limited to 80% of the rated power for wholesale`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`the contractually available and therefore billable aFRR capacity`}),`\n`,_jsx(_components.li,{children:`this capacity is available via API`}),`\n`,_jsx(_components.li,{children:`it is only reduced in cases of unavailabilities`}),`\n`,_jsx(_components.li,{children:`if you bid into ie. aFRR, this capacity stays the same`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Remark: Beyond your marketable capacity, there is also your remaining available capacity for FCR and aFRR (this is your actually usable ie. aFRR capacity - which would also include reductions due to FCR committments). This information is currently not available via API and you have to make sure you take into account your remaining capacity yourself.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`You can retrieve information on the marketable ancillary capacities through the operational endpoint`}),`\n`,_jsxs(_components.li,{children:[`The three variables linked below are corresponding to each of the three formerly mentioned marketable capacities`,`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-11.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=4e268e5fadf679a5be0cda5fa9ccbf19`,alt:`Image 11`,\"data-og-width\":`2310`,width:`2310`,\"data-og-height\":`424`,height:`424`,\"data-path\":`images/image-11.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-11.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=b5960b7db58c295150032f6f4929d195 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-11.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=d6aabc25c5640d78998149e520706790 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-11.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=c2aed2c8f45ee09fe504abff96961c25 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-11.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=cb0963ddb9cd222466d1fe5e0f667621 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-11.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=179151b54d1ecee4353aa72c75a8fe29 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-11.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=efecc2df9cd44fc1e1a8b1f57b3cb788 2500w`}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`1`,id:`2-ancillary-and-wholesale-blocks`,children:`2. Ancillary and wholesale blocks`}),`\n`,_jsx(_components.p,{children:`The next chapter will briefly explain a fundamental concept of virtual batteries - the wholesale block. Understanding the wholesale block is a necessary foundation for understanding how ancillary services work on the LAYR, as there are many dependencies between the wholesale block and ancillary services.`}),`\n`,_jsx(_components.p,{children:`Wholesale block and ancillary services:`}),`\n`,_jsxs(_components.p,{children:[`Your available total power capacity is divided between ancillary service bids/commitments and remaining wholesale capacity which backs your wholesale trading activity. If you have bid capacity on the ancillary markets, that standing ancillary commitment is called `,_jsx(_components.strong,{children:`aFRR or FCR block`}),`. The remaining wholesale capacity after deducting ancillary service bids/commitments is called `,_jsx(_components.strong,{children:`wholesale block.`})]}),`\n`,_jsx(_components.p,{children:`The following figure gives a high level overview of how one power block is distributed between ancillary services and the wholesale block.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Your total available capacity is equivalent to your wholesale capacity, before you bid into ancillary markets`}),`\n`,_jsx(_components.li,{children:`Of that total capacity, a certain part is prequalified for FCR and aFRR markets`}),`\n`,_jsx(_components.li,{children:`Bidding into FCR or aFRR reduces the remaining wholesale block you have available until you receive market results.`}),`\n`,_jsx(_components.li,{children:`Accepted FCR or aFRR bids ultimately reduce your the remaining wholesale block.`}),`\n`,_jsxs(_components.li,{children:[`The graphic below visualises the wholesale block as the difference between total available capacity and your FCR and aFRR blocks on a high level`,`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-12.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=be4c585c26df461599c0c41f03de71ae`,alt:`Image 12`,\"data-og-width\":`2074`,width:`2074`,\"data-og-height\":`1460`,height:`1460`,\"data-path\":`images/image-12.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-12.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=ea39a6189f88f83dbefeb8db824f610f 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-12.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=ef253cd56c6112cd80cf24c6dbe2336a 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-12.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=7d52d8648aa10de0516d7b9c5c96ab85 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-12.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=3c26255acbc5624a7c22f2c39c513ec6 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-12.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=4829c1d238666bc42415c10c3a79804e 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-12.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=eb9432b7911168a9e343259bcf26644a 2500w`}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`2-1-get-timeseries-data-of-your-wholesale-block`,children:`2.1 Get timeseries data of your wholesale block`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`You can identify the id of your wholesale block via`,`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-13.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=24312747a9bc968c7ff0e4e458752619`,alt:`Image 13`,\"data-og-width\":`1128`,width:`1128`,\"data-og-height\":`56`,height:`56`,\"data-path\":`images/image-13.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-13.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=e673eac77075cbab3e3e0a41d26da3aa 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-13.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=3233c34d442ef71b919b66c91e3b8be9 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-13.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=8eab432a1c04681a1543904a7faf1c88 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-13.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=9e233c565a9fd8394e4657b840b4924c 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-13.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=836a084a01cc5d4b5b1761140d59d5b1 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-13.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=a1c652b800630d4547f714d555f61937 2500w`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`In this call you can expect an output as defined below, which includes the wholesale block id`,`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-14.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=e61531131b916c4b24ccb33533b36931`,alt:`Image 14`,\"data-og-width\":`788`,width:`788`,\"data-og-height\":`1670`,height:`1670`,\"data-path\":`images/image-14.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-14.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=d01846a55731617586e8aa71d76e29e3 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-14.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=d63db28f3eb96e21103507e35bdc45fc 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-14.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=3c21cdfd8d72de5efc2fb050cc1642c6 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-14.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=6469cf375552c9a1b9c96f9c9896530b 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-14.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=285ed2f889963d1fbdd6005af6f34279 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-14.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=aa43d0587e2c1fe450ff2d1d2a365dc5 2500w`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Next you can query constant timeseries format information about your wholesale block`,`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-15.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=e8b79748ad04144554c9f25714a30ae7`,alt:`Image 15`,\"data-og-width\":`1572`,width:`1572`,\"data-og-height\":`56`,height:`56`,\"data-path\":`images/image-15.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-15.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=b369ca7f95f95aa0cfe11411e0335bb0 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-15.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=da0ef0d98763ce84ac31a9998059449d 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-15.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=33e8ad7e06e129095e3d9ad67429c4b0 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-15.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=a86bb4dce21c65035f39918a588f701a 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-15.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=4a74dddc0e16dd86e7f81837d6a9a56b 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-15.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=bb0579a01179a21d12a79d52b22f04e9 2500w`}),`\n`]}),`\n`,_jsx(_components.li,{children:`This timeseries contains the available power you have left for wholesale trading after deducting your ancillary commitments and your scheduled power in wholesale for each quarter`}),`\n`,_jsxs(_components.li,{children:[`Exemplary output for a defined timespan of two quarters`,`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-16.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=afaa8ec80608b9edb28ccc47e4c73f70`,alt:`Image 16`,\"data-og-width\":`648`,width:`648`,\"data-og-height\":`1282`,height:`1282`,\"data-path\":`images/image-16.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-16.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=5552ee53d36254cc1b56ca0611e4cd0e 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-16.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=15267a14ee799ec4e4f0314408c89da1 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-16.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=5a40c0f5328e685c034c6a8893a5a12a 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-16.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=1fc2a26f117175f7b14299efd44b1316 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-16.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=243a37d7a5752bb5678bafd0d907d1b3 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-16.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=edff1349353738fe201d3d39740f83f2 2500w`}),`\n`]}),`\n`,_jsx(_components.li,{children:`Important note: calling the available capacity (marked in green) from the virtual asset endpoint without specifically referencing a block gives you the sum of ancillary and wholesale power available`}),`\n`,_jsxs(_components.li,{children:[`However, the marketable ancillary capacities on this endpoint are already referencing to the specific market`,`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-17.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=c2c6c9cf5b2a39c34d156e8c6277d309`,alt:`Image 17`,\"data-og-width\":`2288`,width:`2288`,\"data-og-height\":`960`,height:`960`,\"data-path\":`images/image-17.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-17.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=08c541674acc0511c43169eebd778b39 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-17.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=73f5e21eea05985b1738938bda8b273d 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-17.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=547f250ebf161e455a2032e3e92dadc4 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-17.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=2e6feda446e815fb1273bc92cea857ca 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-17.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=fd3021049bd69e3903054c29dc87fdef 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-17.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=9689687249ab75493a7bf2fc927af978 2500w`}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`2-2-interdependencies-of-fcr-and-afrr-capacity`,children:`2.2 Interdependencies of FCR and aFRR capacity`}),`\n`,_jsx(_components.p,{children:`Your bidden or accepted FCR capacity always directly impacts your remaining aFRR and wholesale capacity. As the interdependencies can be complex, the following part will walk through a couple of examples to clearly outline how the three type of capacities interact.`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Scenario - Maximum FCR bid, no remaining aFRR`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Available`}),` capacities**:**`,`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Available wholesale capacity: 10MW`}),`\n`,_jsx(_components.li,{children:`Marketable aFRR: 8MW`}),`\n`,_jsx(_components.li,{children:`Marketable FCR: 8MW`}),`\n`,_jsx(_components.li,{children:`Energy capacity: 20MWh`}),`\n`,_jsxs(_components.li,{children:[`SoC bounds:`,`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`0%`}),`\n`,_jsx(_components.li,{children:`100%`}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Action`}),`: you bid 8MW into FCR`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Remaining`}),` capacities `,_jsx(_components.em,{children:`(as mentioned above, your marketable Ancillary capacities which are available via API stay the same)`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Remaining available wholesale capacity: 2MW`}),`\n`,_jsx(_components.li,{children:`Remaining available aFRR capacity:0MW`}),`\n`,_jsx(_components.li,{children:`Remaining available FCR capacity:0MW`}),`\n`,_jsx(_components.li,{children:`Energy capacity: 20MWh`}),`\n`,_jsxs(_components.li,{children:[`SoC bounds:`,`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`19.49%`}),`\n`,_jsx(_components.li,{children:`82.78%`}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Scenario - Maximum FCR bid, remaining aFRR`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Available`}),` capacities**:**`,`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Available wholesale capacity: 10MW`}),`\n`,_jsx(_components.li,{children:`Marketable aFRR: 10MW`}),`\n`,_jsx(_components.li,{children:`Marketable FCR: 8MW`}),`\n`,_jsx(_components.li,{children:`Energy capacity: 20MWh`}),`\n`,_jsxs(_components.li,{children:[`SoC bounds:`,`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`0%`}),`\n`,_jsx(_components.li,{children:`100%`}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Action`}),`: you bid 8MW into FCR`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Remaining`}),` capacities: `,_jsx(_components.em,{children:`(as mentioned above, your marketable Ancillary capacities which are available via API stay unchanged)`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Remaining available wholesale capacity: 2MW`}),`\n`,_jsx(_components.li,{children:`Remaining available aFRR capacity: 2MW`}),`\n`,_jsx(_components.li,{children:`Remaining available FCR capacity: 0MW`}),`\n`,_jsx(_components.li,{children:`Energy capacity: 20MWh`}),`\n`,_jsxs(_components.li,{children:[`SoC bounds:`,`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`19.49%`}),`\n`,_jsx(_components.li,{children:`82.78%`}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Scenario - aFRR bid`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Available`}),` capacities**:**`,`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Available wholesale capacity: 10MW`}),`\n`,_jsx(_components.li,{children:`Marketable aFRR: 10MW`}),`\n`,_jsx(_components.li,{children:`Marketable FCR: 8MW`}),`\n`,_jsx(_components.li,{children:`Energy capacity: 20MWh`}),`\n`,_jsxs(_components.li,{children:[`SoC bounds:`,`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`0%`}),`\n`,_jsx(_components.li,{children:`100%`}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Action`}),`: you bid 8MW into aFRR`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Remaining`}),` capacities: `,_jsxs(_components.em,{children:[`(as mentioned `,_jsx(_components.a,{href:`https://www.notion.so/Operating-a-Virtual-Asset-in-Ancillary-Services-24cb2013e98e807c9dccfb69f1b5700c?pvs=21`,children:`above`}),`, your marketable Ancillary capacities which are available via API stay unchanged)`]}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Remaining available wholesale capacity: 2MW`}),`\n`,_jsx(_components.li,{children:`Remaining available aFRR capacity: 2MW`}),`\n`,_jsxs(_components.li,{children:[`Remaining available FCR capacity: 1MW `,_jsx(_components.em,{children:`→ not 2MW, because you would still need 25% of your FCR capacity free in the wholesale block and you can only bid in full MW steps`})]}),`\n`,_jsx(_components.li,{children:`Energy capacity: 20MWh`}),`\n`,_jsxs(_components.li,{children:[`SoC bounds: `,_jsx(_components.em,{children:`(no effect on SoC bounds)`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`0%`}),`\n`,_jsx(_components.li,{children:`100%`}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Scenario - Bidding more total ancillary capacity (8MW) than each of the two marketable capacities individually (6MW aFRR and 5MW FCR)`}),` `,_jsx(_components.em,{children:`[disclaimer: the following behaviour might not perfectly apply during a ramp up period where multiple assets are aggregated, of which not all are prequalified yet]`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Available`}),` capacities**:**`,`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Available wholesale capacity 10MW`}),`\n`,_jsx(_components.li,{children:`Marketable aFRR: 6MW`}),`\n`,_jsx(_components.li,{children:`Marketable FCR: 5MW`}),`\n`,_jsx(_components.li,{children:`Energy capacity: 20MWh`}),`\n`,_jsxs(_components.li,{children:[`SoC bounds:`,`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`0%`}),`\n`,_jsx(_components.li,{children:`100%`}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Action`}),`: you bid 5MW into aFRR and 3MW into FCR`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Remaining`}),` capacities: `,_jsx(_components.em,{children:`(as mentioned above, your marketable Ancillary capacities which are available via API stay unchanged)`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Remaining wholesale capacity 2MW`}),`\n`,_jsx(_components.li,{children:`Remaining available aFRR capacity: 1MW`}),`\n`,_jsxs(_components.li,{children:[`Remaining available FCR capacity: 1MW `,_jsx(_components.em,{children:`→ not 2MW, because you would still need 25% of your FCR capacity free in the wholesale block and you can only bid in full MW steps`})]}),`\n`,_jsx(_components.li,{children:`Energy capacity: 20MWh`}),`\n`,_jsxs(_components.li,{children:[`SoC bounds:`,`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`7.31%`}),`\n`,_jsx(_components.li,{children:`93.54%\nImportant additional context for scenario 4:`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`FCR and aFRR capacities are not mutually exclusive`}),`\n`,_jsx(_components.li,{children:`That means the sum of bids in FCR and aFRR can exceed the maximum of each marketable capacity individually (as you can see in scenario 4)`}),`\n`,_jsxs(_components.li,{children:[`In operation, it does rarely happen that you can make use of this “stackable” structure because`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`You typically have around 80% of the assets capacity prequalified`}),`\n`,_jsx(_components.li,{children:`That means the wholesale power buffers you have to keep for FCR bids are restricting this stackable behaviour (where the sum of both is bigger than the bigger of each individual as long as you have enough wholesale capacity available)`}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`1`,id:`3-buffer-requirements-of-ancillary-service-markets-on-layr`,children:`3. Buffer requirements of Ancillary Service Markets on LAYR`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`market`}),_jsx(_components.th,{children:`Required power`}),_jsx(_components.th,{children:`Legally required Power buffer`}),_jsx(_components.th,{children:`Legally required SoC buffer`}),_jsx(_components.th,{children:`Full activation time (FAT)`}),_jsx(_components.th,{children:`enforced by terralayr`}),_jsx(_components.th,{children:`Recommended behavior`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`FCR`}),_jsx(_components.td,{children:`Power equal to won bids over 4 hours (no double selling)`}),_jsx(_components.td,{children:`legally required: 25% of your FCR bids capacity needs to be available for wholesale`}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Lower bound in %:`}),_jsx(`br`,{}),`0.458 * FCR_power / sqrt(RTE) / Energy_capacity)`,_jsx(`br`,{}),_jsx(_components.strong,{children:`Upper bound in %:`}),_jsx(`br`,{}),`1 - (0.458 * FCR_power * sqrt(RTE) / Energy_capacity)`]}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`fully activate the awarded MW within 15 seconds`}),` after receiving the set-point signal`]}),_jsxs(_components.td,{children:[`- power capacity deduction of wholesale block`,_jsx(`br`,{}),`- 25% of your FCR bids capacity must be allocated to wholesale block (Layr does not allow you to bid more into ancillary services)`,_jsx(`br`,{}),`- SoC buffers are enforced as upper and lower bounds`]}),_jsx(_components.td,{})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`aFRR energy positive`}),_jsx(_components.td,{children:`Power equal to won bids over 15 minutes (no double selling)`}),_jsx(_components.td,{children:`no legally binding requirements`}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`not required`}),`, but you must constantly fulfil aFRR power calls (potentially requires balancing SoC through wholesale markets)`]}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`fully activate the awarded MW within 5 minutes`}),` after receiving the set-point signal`]}),_jsx(_components.td,{children:`- power capacity deduction of wholesale block`}),_jsx(_components.td,{children:`terralayr would recommend users to also keep power and SoC buffers for aFFR- as there still are legal requirements`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`aFRR energy negative`}),_jsx(_components.td,{children:`Power equal to won bids over 15 minutes (no double selling)`}),_jsx(_components.td,{children:`no legally binding requirements`}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`not required`}),`, but you must constantly fulfil aFRR power calls (potentially requires balancing SoC through wholesale markets)`]}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`fully activate the awarded MW within 5 minutes`}),` after receiving the set-point signal`]}),_jsx(_components.td,{children:`- power capacity deduction of wholesale block`}),_jsx(_components.td,{})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`aFRR capacity positive`}),_jsx(_components.td,{children:`Power equal to won bids over 4 hours (no double selling)`}),_jsx(_components.td,{children:`no legally binding requirements`}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`not required`}),`, but you must constantly fulfil aFRR power calls (potentially requires balancing SoC through wholesale markets)`]}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`fully activate the awarded MW within 5 minutes`}),` after receiving the set-point signal`]}),_jsx(_components.td,{children:`- power capacity deduction of wholesale block`}),_jsx(_components.td,{})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`aFRR capacity negative`}),_jsx(_components.td,{children:`Power equal to won bids over 4 hours (no double selling)`}),_jsx(_components.td,{children:`no legally binding requirements`}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`not required`}),`, but you must constantly fulfil aFRR power calls (potentially requires balancing SoC through wholesale markets)`]}),_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`fully activate the awarded MW within 5 minutes`}),` after receiving the set-point signal`]}),_jsx(_components.td,{children:`- power capacity deduction of wholesale block`}),_jsx(_components.td,{})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`3-1-deep-dive-fcr-committed-buffer-power-in-wholesale-block`,children:_jsx(_components.strong,{children:`3.1 Deep-dive: FCR committed buffer power in wholesale block:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`if you bid into FCR, your wholesale block always contains a certain share of power which constituted the dedicated buffer for your bid and accepted FCR power`}),`\n`,_jsx(_components.li,{children:`the buffer capacity itself is not directly available as a number via API, but you can easily calculate the buffer.`}),`\n`,_jsx(_components.li,{children:`this buffer capacity can be used for normal wholesale trading, but it cannot be bid into ancillary services`}),`\n`,_jsx(_components.li,{children:`the main point of it is to have flexible power available to work against a very strong FCR activation (if necessary)`}),`\n`,_jsxs(_components.li,{children:[`you will feel the impact of the reserved wholesale power in two ways`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`as restriction to how much you can bid into aFRR if you have active FCR bids`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`more under`}),`\n`]}),`\n`]}),`\n`,_jsx(_components.li,{children:`how your FCR, aFRR and wholesale blocks are affected by an unavailability`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`1`,id:`4-fcr-via-layr`,children:`4. FCR via LAYR`}),`\n`,_jsxs(_components.p,{children:[`The next section covers how to use FCR via LAYR. Starting with bid sumission `,_jsx(_components.strong,{children:`4.1 Submitting FCR bids`}),` (including a deep dive on how FCR and aFRR bids affect each other 2.2 Interdependencies of FCR and aFRR capacity ) and how to call and update bids. Next we cover how to get results of your FCR bids Finally we cover how you can access FCR blocks, which are the result of FCR bids on a virtual battery`]}),`\n`,_jsx(Heading,{level:`2`,id:`4-1-submitting-fcr-bids`,children:_jsx(_components.strong,{children:`4.1 Submitting FCR bids`})}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`4.1.1 What to consider in FCR bids`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`All bids must be placed before `,_jsx(_components.strong,{children:`7:30 am CET/CEST on the day before delivery`}),` (The auction opens a week before the delivery day). If submitted before, bids are rejected`]}),`\n`,_jsxs(_components.li,{children:[`Offered Capacity (offeredCapacity) in a bid`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`must be provided in kilowatts (kW)`}),`\n`,_jsx(_components.li,{children:`must be an integer multiple of 1 megawatt (MW). Any non-integral part will be rounded down (e.g., 1000.5 kW becomes 1000 kW), but values like 1500 kW would be rejected as they are not a multiple of 1 MW`}),`\n`,_jsxs(_components.li,{children:[`must adhere to your available capacity for FCR bids`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`It must respect your marketable FCR capacity and the buffer requirements on the wholesale block`}),`\n`,_jsx(_components.li,{children:`It must respect boundaries which might be imposed due to unavailabilities`}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Capacity Price (capacityPrice) in a bid`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Must be provided in `,_jsx(_components.strong,{children:`EUR/MW`})]}),`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.strong,{children:`maximum bid price is 15,000 Euros`}),`, and the `,_jsx(_components.strong,{children:`minimum is -15,000 Euros`}),`.`]}),`\n`,_jsxs(_components.li,{children:[`In the auction, the `,_jsx(_components.code,{children:`settlementPrice`}),` is determined by the `,_jsx(_components.strong,{children:`“Pay As Clear” principle`}),`. This means the `,_jsx(_components.code,{children:`settlementPrice`}),` can be equal to or higher than the `,_jsx(_components.code,{children:`capacityPrice`}),` you submitted.`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`For instance, an accepted bid of 2000 kW with a `,_jsx(_components.code,{children:`capacityPrice`}),` of 80 EUR/MW could result in a `,_jsx(_components.code,{children:`settlementPrice`}),` of 100 EUR/MW, leading to a revenue of 200 EUR (100 EUR/MW * 2 MW).`]}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`4.1.2 API endpoint`})}),`\n`,_jsx(_components.p,{children:`This is how you submit FCR bids via API.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`POST`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`organisations`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{organisationID}`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`virtual`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`assets`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{virtualAssetID}`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`ancillary`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`fcr`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`bids`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`4.1.3 Formatting in API usage:`})}),`\n`,_jsx(_components.p,{children:`These are some notes on the formatting you need to adhere to while submitting FCR bids.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Delivery Day Format`}),`: The `,_jsx(_components.code,{children:`deliveryDay`}),` must be in `,_jsx(_components.code,{children:`YYYY-MM-DD`}),` format, for example, `,_jsx(_components.code,{children:`2025-01-01`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Product Format`}),`: The `,_jsx(_components.code,{children:`product`}),` must follow the format `,_jsx(_components.code,{children:`NEGPOS_{{startEfaBlock}}_{{endEfaBlock}}`}),`, such as `,_jsx(_components.code,{children:`NEGPOS_00_04`}),`.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`4.1.4 Exemplary bid submission (on EFA block level):`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Units used in the response: `,_jsx(_components.strong,{children:`kilowatts`}),` (`,_jsx(_components.strong,{children:_jsx(_components.code,{children:`offeredCapacity`})}),`), `,_jsx(_components.strong,{children:`EUR/MW`}),` (`,_jsxs(_components.strong,{children:[_jsx(_components.code,{children:`capacityPrice`}),`)`]})]}),`\n`,_jsxs(_components.li,{children:[`EUR/MW means one price for the whole 4h EFA block`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`EFA block = one of the 6x 4h blocks per day`}),`\n`,_jsxs(_components.li,{children:[`This is the “granularity” of bids and prices on FCR markets (and also aFRR capacity markets)`,`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-18.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=5498d0590fa7478f9c8062437d9a4170`,alt:`Image 18`,\"data-og-width\":`396`,width:`396`,\"data-og-height\":`324`,height:`324`,\"data-path\":`images/image-18.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-18.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=338ba1936de9a37c6759b51e4d2eaba1 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-18.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=73d8a3c70df67e7679fdd9d771012776 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-18.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=547b29c1217b5c5211a0e3a69e5196ad 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-18.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=3e7d8a6acc9f66f2854f056e697657cc 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-18.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=b60cbfc14b23957be28e0f58d0246159 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-18.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=82b0cb7131e6e7ec4b78a7516ab84c22 2500w`}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`4.1.5 Impact of FCR bids on the virtual asset`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Once a valid bid is submitted, a new `,_jsx(_components.strong,{children:`FCR block`}),` is added to the virtual asset, covering its duration.`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.code,{children:`powerCapacity`}),` within this FCR block’s timeseries is set to the bid’s `,_jsx(_components.code,{children:`offeredCapacity`}),` for the delivery period.`]}),`\n`,_jsxs(_components.li,{children:[`Concurrently, the `,_jsx(_components.code,{children:`powerCapacity`}),` of the `,_jsx(_components.strong,{children:`wholesale block (“market”:“WHOLESALE”)`}),` for the same delivery period is reduced by the `,_jsx(_components.code,{children:`offeredCapacity`}),`.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`In other words: the power capacity which you bid into FCR is “reserved” for each EFA block or 15 minute period, until you get feedback of the auction results`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`The reduction of the wholesale block also leads to a respective reduction in available aFRR capacity`}),`\n`,_jsx(_components.li,{children:`You can always calculate the available remaining capacity for aFRR and FCR by deducting your submitted bids for ancillary services from the originally available capacities or by querying the wholesale block`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Furthermore, your SoC bounds get “tighter” according to the formula in `,_jsx(_components.a,{href:`https://www.notion.so/3-Buffer-requirements-of-Ancillary-Service-Markets-on-LAYR-27fb2013e98e80acb9d8dd464858e008?pvs=21`,children:`3. Buffer requirements of Ancillary Service Markets on LAYR`})]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`4.1.6 How to call SoC bound changes via API`})}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-19.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=97e3e933461ad828c2ea6d72e715729c`,alt:`Image 19`,\"data-og-width\":`1322`,width:`1322`,\"data-og-height\":`48`,height:`48`,\"data-path\":`images/image-19.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-19.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=e819ec897dcf00606842b1fd7d296b42 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-19.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=9c8a441929ee22179421b48441100aee 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-19.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=e4b1423248e83c4939f3a45b9e46981e 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-19.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=9956f338eeca6f0a06ef1bdf09cfa8a7 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-19.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=ba8fb5579148a848c5a2eb900e6636e9 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-19.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=0f7db6957d75f508c9730c7c8e9c49a7 2500w`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`stateOfChargeBoundsUpper`})}),`: The upper bound of the state of charge of the virtual asset as a ratio, e.g. `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`0.9`})}),`.`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`the bounds also reflect FCR based bound restrictions`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`stateOfChargeBoundsLower`})}),`: The lower bound of the state of charge of the virtual asset as a ratio, e.g. `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`0.1`})}),`.`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`the bounds also reflect FCR based bound restrictions`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`4-2-get-and-update-fcr-bids`,children:_jsx(_components.strong,{children:`4.2 Get and update FCR bids`})}),`\n`,_jsxs(_components.p,{children:[`You mostly use this functionality to check the status quo of FCR bids and potentially adjust as a consequence. You will not see if bids are accepted here, you would have to query results as described in `,_jsx(_components.a,{href:`https://www.notion.so/4-3-Get-FCR-results-27ab2013e98e80788e68cae4cae711d1?pvs=21`,children:_jsx(_components.strong,{children:`4.3 Get FCR results`})}),`.`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`4.2.1 Updating FCR Bids`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`FCR bids for a single product and delivery day can be called via a GET endpoint and updated using a PUT endpoint`}),`\n`,_jsx(_components.li,{children:`You can submit the update in the same format as you submitted your initial bids, either on a full day basis or by specifically addressing certain EFA blocks/products`}),`\n`,_jsxs(_components.li,{children:[`To `,_jsx(_components.strong,{children:`delete a bid`}),`, you can set the request’s bid list to an empty list `,_jsx(_components.code,{children:`[]`})]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`4.2.2 API endpoint`})}),`\n`,_jsx(_components.p,{children:`This is how you get and re-submit FCR bids via the API.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`getting current bids:`,`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`GET`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`organisations`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{organisationID}`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`virtual`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`assets`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{virtualAssetID}`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`ancillary`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`fcr`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`bids`})]}),`\n`]})})}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`updating individual FCR bids`,`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`PUT`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`organisations`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{organisationID}`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`virtual`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`assets`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{virtualAssetID}`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`ancillary`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`fcr`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`bids`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{productDateCode}`})]}),`\n`]})})}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`4.2.3 Exemplary output`})}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-20.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=8af27e8c9efe6e6004c52efa83649b9b`,alt:`Image 20`,\"data-og-width\":`572`,width:`572`,\"data-og-height\":`348`,height:`348`,\"data-path\":`images/image-20.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-20.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=3e414af832def14685b47b6a9cc1bfff 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-20.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=e0e0a0d7e4d8c7f737b37e47fb66477c 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-20.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=77020a159454dda91f8f24884aa491ae 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-20.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=51de86afa3437f83e9e8d3a41d6ac022 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-20.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=b2397f62e38a68776f48a64afb6e7f98 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-20.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=06b6bb338b2d89972eb32cc71cb469fc 2500w`}),`\n`,_jsx(Heading,{level:`2`,id:`4-3-get-fcr-results`,children:_jsx(_components.strong,{children:`4.3 Get FCR results`})}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`4.3.1 What to consider in FCR results`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Results can be expected after 08:20am CET/CEST on the day before delivery (so roughly 80 minutes after submission deadline)`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`The exact publication time of results is not guaranteed`}),`\n`,_jsx(_components.li,{children:`If results have not yet been published, returns an empty list and status code 200`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`4.3.2 API endpoint:`})}),`\n`,_jsx(_components.p,{children:`This is how you get FCR results via the API.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`GET`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`organisations`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{organisationID}`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`virtual`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`assets`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{virtualAssetID}`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`ancillary`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`fcr`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`results`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`4.3.3 Formatting in API usage:`})}),`\n`,_jsx(_components.p,{children:`These are some notes on the formatting you need to adhere to while submitting FCR bids.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The query parameter `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`deliveryDay`})}),` must be in the following format: `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`YYYY-MM-DD`})}),`, e.g. `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`2025-01-01`})}),` (full day according to RFC3339)`]}),`\n`,_jsxs(_components.li,{children:[`The optional query parameter `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`accepted`})}),` can be used to filter the response to show only accepted or rejected bids. If the parameter is not set, all bids are returned`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`4.3.4 Exemplary FCR results:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`a JSON representation of the FCR results for the given delivery day and virtual asset`}),`\n`,_jsxs(_components.li,{children:[`This includes the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`product`})}),`, `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`deliveryDay`})}),`, as well as a list of bids `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`results`})}),` for the given product`]}),`\n`,_jsxs(_components.li,{children:[`Each result in the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`results`})}),` list contains the following fields:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`accepted`})}),`: A boolean field that shows whether the bid was accepted or rejected in the auction`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`offeredCapacity`})}),`: The offered capacity of the original bid in `,_jsx(_components.strong,{children:`kilowatts`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`acceptedCapacity`})}),`: The accepted capacity determined in the auction in `,_jsx(_components.strong,{children:`kilowatts`}),`. Can be equal to or less than the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`offeredCapacity`})})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`capacityPrice`})}),`: The capacity price of the original bid in `,_jsx(_components.strong,{children:`EUR/MW`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`settlementPrice`})}),`: The settlement price determined by the auction in `,_jsx(_components.strong,{children:`EUR/MW`}),`. The price is determined by the “Pay As Clear” principle. It can be equal to or higher than the bid price for an accepted bid`,`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-21.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=24d641454b58514416b177524ea634b6`,alt:`Image 21`,\"data-og-width\":`396`,width:`396`,\"data-og-height\":`404`,height:`404`,\"data-path\":`images/image-21.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-21.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=eb8015492372e02b135474a65f886569 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-21.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=b9d28ae08067aa386b404ca55e915b0a 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-21.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=8c4b055191d0d95cdac75a4b455351ef 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-21.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=de5063d553543db084a20b0bc59ebe82 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-21.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=f5fcd74b7c8581c08b0350b89563d8a7 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-21.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=424ed9a9bf37ad5a44e2fde0fea0ca6e 2500w`}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`4.3.5 Impact of accepted and not accepted FCR bids on the virtual asset`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`There are two options for your “reserved/bidden” capacity`,`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Your bidden capacity gets accepted and stays part of the FCR block (”nothing happens” refers to this case)`}),`\n`,_jsx(_components.li,{children:`Your bidden capacity gets rejected and moves back into the wholesale block`}),`\n`]}),`\n`]}),`\n`,_jsx(_components.li,{children:`The power allocated to your virtual asset’s FCR block is increased and the available wholesale block power is reduced according to the results returned.`}),`\n`,_jsxs(_components.li,{children:[`Both the FCR and wholesale blocks are adjusted based on the auction results. For example, if a bid is rejected, the `,_jsx(_components.code,{children:`powerCapacity`}),` is removed from the FCR block and added back to the wholesale block.`]}),`\n`,_jsxs(_components.li,{children:[`More specifically, per EFA block the following logic can be applied`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`If `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`acceptedCapacity`})}),` = `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`offeredCapacity`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`nothing happens.`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`If `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`acceptedCapacity`})}),` \u003c `,_jsxs(_components.strong,{children:[_jsx(_components.code,{children:`offeredCapacity`}),` `,_jsx(_components.em,{children:`(for the edge case that your offered capacity has just been at the cut-off point of the clearing price and not your whole capacity makes it into clearing)`})]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`powerCapacity`})}),` of the FCR block for the duration of the delivery period is reduced to the value of `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`acceptedCapacity`})})]}),`\n`,_jsxs(_components.li,{children:[`whereas the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`powerCapacity`})}),` of the wholesale block is increased by the same amount during that time.`]}),`\n`,_jsx(_components.li,{children:`same holds for the aFRR capacity available`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`If the bid is rejected altogether`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`powerCapacity`})}),` of the FCR block for the duration of the delivery period is reduced to 0 and the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`powerCapacity`})}),` of the wholesale block is increased by the same amount.`]}),`\n`,_jsx(_components.li,{children:`aFRR capacity in the same way`}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`SoC bound requirements as defined in `,_jsx(_components.a,{href:`https://www.notion.so/3-Buffer-requirements-of-Ancillary-Service-Markets-on-LAYR-27fb2013e98e80acb9d8dd464858e008?pvs=21`,children:`3. Buffer requirements of Ancillary Service Markets on LAYR`}),` → SoC bounds are callable as defined in `,_jsx(_components.a,{href:`https://www.notion.so/4-1-6-How-to-call-SoC-bound-changes-via-API-288b2013e98e80e8be8ac36d31f15d85?pvs=21`,children:_jsx(_components.strong,{children:`4.1.6 How to call SoC bound changes via API`})})]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`4-4-get-fcr-block`,children:_jsx(_components.strong,{children:`4.4 Get FCR block`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`your accepted capacities in the FCR markets are called the FCR block`}),`\n`,_jsxs(_components.li,{children:[`You can identify the ids of your virtual asset blocks via`,`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-13.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=24312747a9bc968c7ff0e4e458752619`,alt:`Image 13`,\"data-og-width\":`1128`,width:`1128`,\"data-og-height\":`56`,height:`56`,\"data-path\":`images/image-13.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-13.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=e673eac77075cbab3e3e0a41d26da3aa 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-13.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=3233c34d442ef71b919b66c91e3b8be9 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-13.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=8eab432a1c04681a1543904a7faf1c88 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-13.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=9e233c565a9fd8394e4657b840b4924c 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-13.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=836a084a01cc5d4b5b1761140d59d5b1 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-13.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=a1c652b800630d4547f714d555f61937 2500w`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`In this call you can expect an output as defined below, which includes the FCR block id`,`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-14.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=e61531131b916c4b24ccb33533b36931`,alt:`Image 14`,\"data-og-width\":`788`,width:`788`,\"data-og-height\":`1670`,height:`1670`,\"data-path\":`images/image-14.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-14.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=d01846a55731617586e8aa71d76e29e3 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-14.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=d63db28f3eb96e21103507e35bdc45fc 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-14.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=3c21cdfd8d72de5efc2fb050cc1642c6 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-14.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=6469cf375552c9a1b9c96f9c9896530b 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-14.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=285ed2f889963d1fbdd6005af6f34279 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-14.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=aa43d0587e2c1fe450ff2d1d2a365dc5 2500w`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`To get constant timeseries format information about your FCR block, you can query`,`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-15.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=e8b79748ad04144554c9f25714a30ae7`,alt:`Image 15`,\"data-og-width\":`1572`,width:`1572`,\"data-og-height\":`56`,height:`56`,\"data-path\":`images/image-15.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-15.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=b369ca7f95f95aa0cfe11411e0335bb0 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-15.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=da0ef0d98763ce84ac31a9998059449d 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-15.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=33e8ad7e06e129095e3d9ad67429c4b0 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-15.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=a86bb4dce21c65035f39918a588f701a 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-15.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=4a74dddc0e16dd86e7f81837d6a9a56b 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-15.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=bb0579a01179a21d12a79d52b22f04e9 2500w`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`For FCR the block operational data contains the power you have allocated to FCR trading per quarter`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`This also allows you to understand, if an unavailability had an impact on your accepted FCR capacity`}),`\n`,_jsx(_components.li,{children:`It does not yet contain how much remaining power you would have left from your FCR block`}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`1`,id:`5-afrr-via-layr`,children:`5. aFRR via LAYR`}),`\n`,_jsx(_components.p,{children:`The next section covers how to use aFRR via LAYR. Starting with bid sumission (including a deep dive on how FCR and aFRR bids affect each other ) and how to call and update bids . Next we cover how to get results of your aFRR bids . Finally we cover how you can access aFRR blocks, which are the result of aFRR bids on a virtual battery.`}),`\n`,_jsx(Heading,{level:`2`,id:`5-1-submitting-afrr-bids`,children:_jsx(_components.strong,{children:`5.1 Submitting aFRR bids`})}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`5.1.1 What to consider in aFRR bids`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Submission deadlines`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`aFRR capacity markets`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`All bids must be placed before the following deadline: `,_jsx(_components.strong,{children:`8:40am CET/CEST`}),` on the day before delivery. The auction opens a week before the delivery day.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`aFRR energy markets`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`All bids must be placed before the following deadline: `,_jsx(_components.strong,{children:`30 minutes`}),` before the delivery period, e.g. a bid for delivery period 15:30pm must be submitted by 15:00pm. Moreover, bids must be placed after `,_jsx(_components.strong,{children:`12:00pm CET/CEST`}),` on the day before delivery. If bids are made before that time, they are rejected.`]}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Offered Capacity (offeredCapacity) in a bid`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Must be provided in `,_jsx(_components.strong,{children:`kilowatts`})]}),`\n`,_jsx(_components.li,{children:`must be an integer multiple of 1 megawatt (MW). Any non-integral part will be rounded down (e.g., 1000.5 kW becomes 1000 kW), but values like 1500 kW would be rejected as they are not a multiple of 1 MW`}),`\n`,_jsxs(_components.li,{children:[`must adhere to your available capacity for aFRR bids`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`It must respect your marketable/ still remaining aFRR capacity`}),`\n`,_jsx(_components.li,{children:`It must respect boundaries which might be imposed due to unavailabilities`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`aFRR capacity markets -`}),` `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`offeredCapacity`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`you are free to bid whatever capacity you intend`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`aFRR energy markets -`}),` `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`offeredCapacity`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`you must bid at least the accepted capacity from the aFRR capacity market results`}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Price`}),`:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`aFRR capacity markets -`}),` `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`capacityPrice`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Must be provided in `,_jsx(_components.strong,{children:`EUR/MW/h`}),`. In the capacity market auction, a `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`settlementPrice`})}),` is determined by the “Pay As Bid” principle. It will match the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`capacityPrice`})}),` of your bid.`]}),`\n`,_jsxs(_components.li,{children:[`For example, an accepted bid with `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`capacityPrice`})}),` = 100EUR/MW/h and `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`acceptedCapacity`})}),` = 2000kW will result in a revenue of 100EUR/MW/h * 2MW * 4h = 800EUR.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`aFRR energy markets -`}),` `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`energyPrice`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Must be provided in `,_jsx(_components.strong,{children:`EUR/MWh`}),`. In the energy market auction, a `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`settlementPrice`})}),` is determined by the “Pay As Clear” principle. It can be equal to or higher than the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`energyPrice`})}),` you submitted.`]}),`\n`,_jsxs(_components.li,{children:[`For example, an accepted bid with `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`energyPrice`})}),` = 80EUR/MWh, `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`settlementPrice`})}),` = 100EUR/MWh and `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`acceptedCapacity`})}),` = 2000kW will result in a revenue of 100EUR/MWh * 2MW * 0.25h = 50EUR, if the asset is fully activated for the whole 15 minutes. It is important to note that you are only paid for the actual energy delivered.`]}),`\n`,_jsx(_components.li,{children:`If you have an accepted capacity market EFA block, you are not bound to the price of that EFA block → that means you can bid a higher or lower price in the energy markets on quarter hours during the EFA block than you have bid originally in the capacity markets for the respective EFA block`}),`\n`]}),`\n`]}),`\n`,_jsx(_components.li,{children:`The max price that can be bid into both markets is 15,000 Euros, the min price is -15,000 Euros.`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`5.1.2 API endpoint`})}),`\n`,_jsx(_components.p,{children:`This is how you submit aFRR bids via API.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`POST`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`organisations`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{organisationID}`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`virtual`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`assets`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{virtualAssetID}`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`ancillary`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`afrr`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`bids`})]}),`\n`]})})}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`5.1.3 Formatting in API usage:`})}),`\n`,_jsx(_components.p,{children:`These are some notes on the formatting you need to adhere while submitting aFRR bids.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`aFRR capacity markets`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`For a bid in the capacity market (Regelleistungsmarkt), it is required to provide both the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`capacityPrice`})}),` and `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`energyPrice`})}),`. The `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`product`})}),` must be in the following format: `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`{{direction}}_{{startEfaBlock}}_{{endEfaBlock}}`})}),`, e.g. `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`POS_00_04`})}),`.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`aFRR energy markets`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`For a bid in the energy market (Regelarbeitsmarkt), it is required to provide the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`energyPrice`})}),`. The `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`capacityPrice`})}),` field can be removed or set to null (`,_jsx(_components.strong,{children:_jsx(_components.code,{children:`\"capacityPrice\": null`})}),`), depending on your preference. The `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`product`})}),` must be in the following format: `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`{{direction}}_{{quarterHourInDay}}`})}),`, e.g. `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`POS_001`})}),`. The final products on a normal day are `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`POS_096`})}),` or `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`NEG_096`})}),`. The final products on the CET to CEST clock change day are `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`POS_092`})}),` or `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`NEG_092`})}),`. The final products on the CEST to CET clock change day are `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`POS_100`})}),` or `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`NEG_100`})})]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`The `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`productDateCode`})}),` in the response references a specific product on a given delivery day: e.g. `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`2025-01-01_POS_00_04`})}),`. This “product-date-code” can be used to update the bid individually through the PUT endpoint.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`5.1.4 Exemplary capacity market bid submission (on EFA block level):`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Units used in the response: `,_jsx(_components.strong,{children:`kilowatts`}),` (`,_jsx(_components.strong,{children:_jsx(_components.code,{children:`offeredCapacity`})}),`), `,_jsx(_components.strong,{children:`EUR/MW/h`}),` (`,_jsx(_components.strong,{children:_jsx(_components.code,{children:`capacityPrice`})}),`) and `,_jsx(_components.strong,{children:`EUR/MWh`}),` (`,_jsx(_components.strong,{children:_jsx(_components.code,{children:`energyPrice`})}),`).`]}),`\n`,_jsxs(_components.li,{children:[`EUR/MW/h means one price for one hour in the 4h EFA block`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`EFA block = one of the 6x 4h blocks per day`}),`\n`,_jsx(_components.li,{children:`This is the “granularity” of bids and prices on FCR markets (and also aFRR capacity markets)`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-23.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=6ab97aec9d093fd23fe62a5783ca85a2`,alt:`Image 23`,\"data-og-width\":`662`,width:`662`,\"data-og-height\":`460`,height:`460`,\"data-path\":`images/image-23.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-23.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=e65cccb474dfbce05203de6e06c79cd6 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-23.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=8a92a043d8e63be6a8fb9792b2bd9b09 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-23.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=edc816e82096abcb266c1970b3dcc93a 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-23.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=2e1004862c5879587f3122422f420434 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-23.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=6d44828275af33bb0250f1f36facfbf0 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-23.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=9e5df9421221930549ebf12c7da1ee1a 2500w`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`5.1.5 Impact of aFRR bids on the virtual asset`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Once a valid bid has been submitted, a new `,_jsx(_components.strong,{children:`aFRR block`}),` (`,_jsx(_components.strong,{children:_jsx(_components.code,{children:`\"market\":\"AFRR\"`})}),`) is added to the virtual asset.`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The block will cover the duration of the whole virtual asset. Inside the block’s power capacity timeseries, the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`powerCapacity`})}),` is updated to value of the bid’s `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`offeredCapacity`})}),` for the delivery period of the product you bid on.`]}),`\n`,_jsxs(_components.li,{children:[`At the same time, the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`powerCapacity`})}),` of the wholesale block (`,_jsx(_components.strong,{children:_jsx(_components.code,{children:`\"market\":\"WHOLESALE\"`})}),`) for the delivery period of the product you bid on is reduced by the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`offeredCapacity`})}),`.`]}),`\n`,_jsxs(_components.li,{children:[`Both the aFRR and the wholesale block will be adjusted according to the auction results. E.g. if a bid is rejected, the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`powerCapacity`})}),` is removed from the aFRR block and added to the wholesale block.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`In other words: the power capacity which you bid into aFRR is “reserved” for each EFA or quarter hour block, until for aFRR capacity you get feedback on your bid of the auction results / for aFRR energy your bid will be reserved either way`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`This “reserved” power capacity is deducted from your available FCR and wholesale power capacity`}),`\n`,_jsx(_components.li,{children:`In contrast to FCR, there are no specific SoC buffer requirements enforced for aFRR`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`5-2-get-and-update-afrr-bids`,children:_jsx(_components.strong,{children:`5.2 Get and update aFRR bids`})}),`\n`,_jsx(_components.p,{children:`You mostly use this functionality to check the status quo of aFRR bids and potentially adjust as a consequence. You will not see if bids are accepted here, you would have to query results.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`5.2.1 Updating aFRR Bids`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`aFRR bids for a single product and delivery day can be called via GET endpoint updated using a PUT endpoint`}),`\n`,_jsx(_components.li,{children:`You can submit the update in the same format as you submitted your initial bids, either on a full day basis or by specifically addressing certain EFA blocks/quarters/products`}),`\n`,_jsxs(_components.li,{children:[`To `,_jsx(_components.strong,{children:`delete a bid`}),`, you can set the request’s bid list to an empty list `,_jsx(_components.code,{children:`[]`})]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`5.2.2 API endpoint:`})}),`\n`,_jsx(_components.p,{children:`This is how you get and re-submit aFRR bids via API.`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`getting current bids:`,`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`GET`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`organisations`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{organisationID}`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`virtual`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`assets`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{virtualAssetID}`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`ancillary`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`afrr`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`bids`})]}),`\n`]})})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The optional query parameter `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`market`})}),` can be set to `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`capacity`})}),` or `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`energy`})}),`. `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`capacity`})}),` will only return aFRR bids made to the capacity market (Regelleistungsmarkt). `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`energy`})}),` will only return aFRR bids made to the energy market (Regelarbeitsmarkt). If the flag is not set, both will be returned.`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`updating individual aFRR bids`,`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`PUT`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`organisations`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{organisationID}`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`virtual`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`assets`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{virtualAssetID}`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`ancillary`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`afrr`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`bids`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{productDateCode}`})]}),`\n`]})})}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`5.2.3 Exemplary output`})}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-23.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=6ab97aec9d093fd23fe62a5783ca85a2`,alt:`Image 23`,\"data-og-width\":`662`,width:`662`,\"data-og-height\":`460`,height:`460`,\"data-path\":`images/image-23.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-23.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=e65cccb474dfbce05203de6e06c79cd6 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-23.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=8a92a043d8e63be6a8fb9792b2bd9b09 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-23.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=edc816e82096abcb266c1970b3dcc93a 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-23.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=2e1004862c5879587f3122422f420434 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-23.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=6d44828275af33bb0250f1f36facfbf0 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-23.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=9e5df9421221930549ebf12c7da1ee1a 2500w`}),`\n`,_jsx(Heading,{level:`2`,id:`5-3-get-afrr-results`,children:_jsx(_components.strong,{children:`5.3 Get aFRR results`})}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`5.3.1 What to consider in aFRR results`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`aFRR capacity markets`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`after 09:20am CET/CEST on the day before delivery (so roughly 40 minutes after submission deadline)`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`The exact publication time of results is not guaranteed.`}),`\n`,_jsx(_components.li,{children:`If results have not yet been published, returns an empty list and status code 200.`}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`aFRR energy markets`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`results can be expected around or after `,_jsx(_components.strong,{children:`23 minutes`}),` before the delivery period, e.g. for a bid with delivery period 12:30pm, results are expected around 12:07pm.`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`The exact publication time of results is not guaranteed.`}),`\n`,_jsxs(_components.li,{children:[`If results have not yet been published, returns an empty list and status code 200.\n`,_jsx(_components.strong,{children:`What aFRR energy market results contain`})]}),`\n`,_jsx(_components.li,{children:`aFRR energy market results include the amount of capacity you have been awarded based on your bids`}),`\n`,_jsx(_components.li,{children:`your actual activation and the respective payout is subject to the TSOs AGC signal`}),`\n`,_jsx(_components.li,{children:`the acceepted capacity in aFRR energy markets is still highly relevant, as you are not allowed to participate with this capacity in intraday trading!`}),`\n`,_jsx(_components.li,{children:`that means this capacity will not be part of your wholesale block`}),`\n`,_jsx(_components.li,{children:`all capacity which is not accepted, it moves back into your wholesale block`}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`5.3.2 API endpoint:`})}),`\n`,_jsx(_components.p,{children:`This is how you get aFRR results via API.`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`1`,language:`python`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`python`,children:_jsxs(_components.code,{language:`python`,numberOfLines:`1`,children:[_jsxs(_components.span,{className:`line`,children:[_jsx(_components.span,{style:{color:`#0550AE`,\"--shiki-dark\":`#D4D4D4`},children:`GET`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`organisations`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{organisationID}`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`virtual`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`-`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`assets`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`{virtualAssetID}`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`ancillary`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`afrr`}),_jsx(_components.span,{style:{color:`#CF222E`,\"--shiki-dark\":`#D4D4D4`},children:`/`}),_jsx(_components.span,{style:{color:`#1F2328`,\"--shiki-dark\":`#D4D4D4`},children:`results`})]}),`\n`]})})}),`\n`,_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`5.3.3 Formatting in API usage:`}),` These are some notes on the formatting you need to adhere while submitting aFRR bids.`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`The path parameter `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`productDateCode`})}),` specifies a unique product and delivery day pair: `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`YYYY-MM-DD_{{productName}}`})}),`, e.g. `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`2025-01-01_POS_00_04`})}),` for a capacity market product (Regelleistungsmarkt) or `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`2025-01-01_POS_001`})}),` for an energy market product (Regelarbeitsmarkt).`]}),`\n`,_jsxs(_components.li,{children:[`The delivery day inside the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`productDateCode`})}),` path parameter must be in the following format: `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`YYYY-MM-DD`})}),`, e.g. `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`2025-01-01`})}),` (full day according to RFC3339).`]}),`\n`,_jsxs(_components.li,{children:[`The optional query parameter `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`accepted`})}),` can be used to filter the response to show only accepted or rejected bids. If the parameter is not set, all bids are returned.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`5.3.4 Exemplary aFRR results:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`a JSON representation of the aFRR results for the given delivery day and virtual asset. This includes the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`product`})}),`, `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`deliveryDay`})}),`, as well as a list of bids `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`results`})}),` for the given product`]}),`\n`,_jsxs(_components.li,{children:[`Each result in the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`results`})}),` list contains the following fields:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`accepted`})}),`: A boolean field that shows whether the bid was accepted or rejected in the auction`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`offeredCapacity`})}),`: The offered capacity of the original bid in `,_jsx(_components.strong,{children:`kilowatts`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`acceptedCapacity`})}),`: The accepted capacity determined in the auction in `,_jsx(_components.strong,{children:`kilowatts`}),`. Can be equal to or less than the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`offeredCapacity`})})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`capacityPrice`})}),`: The capacity price of the original bid in `,_jsx(_components.strong,{children:`EUR/MW/h`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`energyPrice`})}),`: The energy price of the original bid in `,_jsx(_components.strong,{children:`EUR/MWh`})]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`settlementPrice`})}),`: The settlement price determined by the auction in `,_jsx(_components.strong,{children:`EUR/MW/h`}),` (capacity market bid) or `,_jsx(_components.strong,{children:`EUR/MWh`}),` (energy market bid).`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`In the capacity market auction, the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`settlementPrice`})}),` is determined by the “Pay As Bid” principle. It will match the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`capacityPrice`})}),` for an accepted bid.`]}),`\n`,_jsxs(_components.li,{children:[`In the energy market auction, the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`settlementPrice`})}),` is determined by the “Pay As Clear” principle. It can be equal to or higher than the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`energyPrice`})}),` for an accepted bid`]}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-24.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=8283bda3594a8596db14481bbfc9282f`,alt:`Image 24`,\"data-og-width\":`532`,width:`532`,\"data-og-height\":`524`,height:`524`,\"data-path\":`images/image-24.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-24.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=208734caaf1100b1cde0eea7301c2dfe 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-24.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=195c33fca54734f76b58cf344d821747 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-24.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=52305e6166eedf5c55b0adf40401e088 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-24.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=dd3d52d0d64308d34e129a0ac770eb46 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-24.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=864077955d6cb8652b23f37b0239db86 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-24.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=f78d6e01fcd7878f9af075f7e29d6777 2500w`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`5.3.5 Impact of accepted and not accepted aFRR bids on the virtual asset`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`There are two options for your “reserved/bidden” capacity`,`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Your bidden capacity gets accepted and stays part of the aFRR block (”nothing happens” refers to this case)`}),`\n`,_jsx(_components.li,{children:`Your bidden capacity gets rejected and moves back into the wholesale block`}),`\n`]}),`\n`]}),`\n`,_jsx(_components.li,{children:`The power allocated to your virtual asset’s FCR block is increased and the available wholesale block power is reduced according to the results returned.`}),`\n`,_jsxs(_components.li,{children:[`If `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`acceptedCapacity`})}),` = `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`offeredCapacity`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`nothing happens.`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`If `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`acceptedCapacity`})}),` \u003c `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`offeredCapacity`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`powerCapacity`})}),` of the aFRR block for the duration of the delivery period is reduced to the value of `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`acceptedCapacity`})})]}),`\n`,_jsxs(_components.li,{children:[`whereas the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`powerCapacity`})}),` of the wholesale block is increased by the same amount during that time.`]}),`\n`,_jsx(_components.li,{children:`FCR bidding window has already closed, hence no impact on your available FCR capacity`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`If the bid is rejected altogether`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`powerCapacity`})}),` of the aFRR block for the duration of the delivery period is reduced to 0 and the `,_jsx(_components.strong,{children:_jsx(_components.code,{children:`powerCapacity`})}),` of the wholesale block is increased by the same amount.`]}),`\n`,_jsx(_components.li,{children:`FCR bidding window has already closed, hence no impact on your available FCR capacity`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`5-4-get-afrr-block`,children:_jsx(_components.strong,{children:`5.4 Get aFRR block`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`your accepted capacities in the aFRR markets are called the aFRR block`}),`\n`,_jsxs(_components.li,{children:[`You can identify the ids of your virtual asset blocks via`,`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-13.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=24312747a9bc968c7ff0e4e458752619`,alt:`Image 13`,\"data-og-width\":`1128`,width:`1128`,\"data-og-height\":`56`,height:`56`,\"data-path\":`images/image-13.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-13.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=e673eac77075cbab3e3e0a41d26da3aa 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-13.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=3233c34d442ef71b919b66c91e3b8be9 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-13.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=8eab432a1c04681a1543904a7faf1c88 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-13.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=9e233c565a9fd8394e4657b840b4924c 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-13.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=836a084a01cc5d4b5b1761140d59d5b1 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-13.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=a1c652b800630d4547f714d555f61937 2500w`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`In this call you can expect an output as defined below, which includes the aFRR block id`,`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-14.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=e61531131b916c4b24ccb33533b36931`,alt:`Image 14`,\"data-og-width\":`788`,width:`788`,\"data-og-height\":`1670`,height:`1670`,\"data-path\":`images/image-14.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-14.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=d01846a55731617586e8aa71d76e29e3 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-14.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=d63db28f3eb96e21103507e35bdc45fc 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-14.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=3c21cdfd8d72de5efc2fb050cc1642c6 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-14.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=6469cf375552c9a1b9c96f9c9896530b 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-14.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=285ed2f889963d1fbdd6005af6f34279 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-14.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=aa43d0587e2c1fe450ff2d1d2a365dc5 2500w`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`To get constant timeseries format information about your aFRR block, you can query`,`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-15.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=e8b79748ad04144554c9f25714a30ae7`,alt:`Image 15`,\"data-og-width\":`1572`,width:`1572`,\"data-og-height\":`56`,height:`56`,\"data-path\":`images/image-15.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-15.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=b369ca7f95f95aa0cfe11411e0335bb0 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-15.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=da0ef0d98763ce84ac31a9998059449d 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-15.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=33e8ad7e06e129095e3d9ad67429c4b0 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-15.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=a86bb4dce21c65035f39918a588f701a 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-15.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=4a74dddc0e16dd86e7f81837d6a9a56b 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-15.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=bb0579a01179a21d12a79d52b22f04e9 2500w`}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`For aFRR the block operational data only contains the power you have allocated to aFRR trading per quarter`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`This also allows you to understand, if an unavailability had an impact on your accepted aFRR capacity`}),`\n`,_jsx(_components.li,{children:`It does not yet contain how much remaining power you would have left from your aFRR block`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`1`,id:`6-revenue-calculation`,children:_jsx(_components.strong,{children:`6. Revenue calculation`})}),`\n`,_jsx(_components.p,{children:`The following part briefly walks through how you can interpret the price units on the LAYR and how you can use these to calculate revenue per market. Definitions are in line with market standards, but still worth a brief definition.`}),`\n`,_jsx(Heading,{level:`2`,id:`6-1-fcr-revenue`,children:`6.1 FCR revenue`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`capacity price unit: EUR/MW`}),`\n`,_jsx(_components.li,{children:`auction type: Pay as clear`}),`\n`,_jsx(_components.li,{children:`product delivery duration: 4h (whole duration is paid as one)`}),`\n`,_jsxs(_components.li,{children:[`revenue calculation example:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`settlement (clearing) price: 100 Euro/MW`}),`\n`,_jsx(_components.li,{children:`accepted capacity: 2 MW`}),`\n`,_jsx(_components.li,{children:`revenue: 100 Euro/MW * 2 MW = 200 Euro`}),`\n`,_jsx(_components.li,{children:`delivery: 2MW over 4 hours for 200 Euro`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`6-2-afrr-capacity`,children:_jsx(_components.strong,{children:`6.2 aFRR Capacity`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`capacity price unit: EUR/MW per hour of delivery`}),`\n`,_jsx(_components.li,{children:`auction type: Pay as bid`}),`\n`,_jsx(_components.li,{children:`product delivery duration: 4h (every hour is paid)`}),`\n`,_jsxs(_components.li,{children:[`revenue calculation example:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`capacity price: 100 Euro/MW/h`}),`\n`,_jsx(_components.li,{children:`accepted capacity: 2MW`}),`\n`,_jsxs(_components.li,{children:[`revenue: (100 Euro/MW/h * 2 MW) * 4 h = 800 Euro`,`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mi,{children:`R`}),_jsx(_components.mi,{children:`e`}),_jsx(_components.mi,{children:`v`}),_jsx(_components.mi,{children:`e`}),_jsx(_components.mi,{children:`n`}),_jsx(_components.mi,{children:`u`}),_jsx(_components.mi,{children:`e`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mn,{children:`100`}),_jsx(_components.mi,{children:`E`}),_jsx(_components.mi,{children:`u`}),_jsx(_components.mi,{children:`r`}),_jsx(_components.mi,{children:`o`}),_jsx(_components.mi,{mathvariant:`normal`,children:`/`}),_jsx(_components.mi,{children:`M`}),_jsx(_components.mi,{children:`W`}),_jsx(_components.mi,{mathvariant:`normal`,children:`/`}),_jsx(_components.mi,{children:`h`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mn,{children:`2`}),_jsx(_components.mi,{children:`M`}),_jsx(_components.mi,{children:`W`}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mn,{children:`4`}),_jsx(_components.mi,{children:`h`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`Revenue = (100Euro/MW/h \\\\times 2MW) \\\\times 4h `})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6833em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0077em`},children:`R`}),_jsx(_components.span,{className:`mord mathnormal`,children:`e`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0359em`},children:`v`}),_jsx(_components.span,{className:`mord mathnormal`,children:`e`}),_jsx(_components.span,{className:`mord mathnormal`,children:`n`}),_jsx(_components.span,{className:`mord mathnormal`,children:`u`}),_jsx(_components.span,{className:`mord mathnormal`,children:`e`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord`,children:`100`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0576em`},children:`E`}),_jsx(_components.span,{className:`mord mathnormal`,children:`u`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0278em`},children:`r`}),_jsx(_components.span,{className:`mord mathnormal`,children:`o`}),_jsx(_components.span,{className:`mord`,children:`/`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.109em`},children:`M`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`W`}),_jsx(_components.span,{className:`mord`,children:`/`}),_jsx(_components.span,{className:`mord mathnormal`,children:`h`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mord`,children:`2`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.109em`},children:`M`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`W`}),_jsx(_components.span,{className:`mclose`,children:`)`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord`,children:`4`}),_jsx(_components.span,{className:`mord mathnormal`,children:`h`})]})]})]})}),`\n`]}),`\n`,_jsx(_components.li,{children:`delivery: 2MW over 4 hours for 800 Euro`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`6-3-afrr-energy`,children:_jsx(_components.strong,{children:`6.3 aFRR Energy`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`energy price unit: EUR/MWh, based on activation`}),`\n`,_jsx(_components.li,{children:`auction type: Pay as clear`}),`\n`,_jsxs(_components.li,{children:[`product delivery duration:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`15min`}),`\n`,_jsx(_components.li,{children:`power is not consistent and depends on activation`}),`\n`,_jsx(_components.li,{children:`at given granularity (e.g. 4 seconds), we take power measurements within 15 minute period, divide by granularity per hour to get TotalEnergy value`}),`\n`]}),`\n`]}),`\n`,_jsx(_components.li,{children:`revenue calculation by terralayr (4 second granularity)`}),`\n`]}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mi,{children:`T`}),_jsx(_components.mi,{children:`o`}),_jsx(_components.mi,{children:`t`}),_jsx(_components.mi,{children:`a`}),_jsx(_components.mi,{children:`l`}),_jsx(_components.mi,{children:`E`}),_jsx(_components.mi,{children:`n`}),_jsx(_components.mi,{children:`e`}),_jsx(_components.mi,{children:`r`}),_jsx(_components.mi,{children:`g`}),_jsx(_components.mi,{children:`y`}),_jsx(_components.mo,{children:`=`}),_jsxs(_components.munder,{children:[_jsx(_components.mo,{children:`∑`}),_jsxs(_components.mrow,{children:[_jsx(_components.mn,{children:`4`}),_jsx(_components.mi,{children:`s`}),_jsx(_components.mi,{children:`e`}),_jsx(_components.mi,{children:`c`}),_jsx(_components.mi,{children:`o`}),_jsx(_components.mi,{children:`n`}),_jsx(_components.mi,{children:`d`}),_jsx(_components.mi,{children:`s`})]})]}),_jsxs(_components.mfrac,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mi,{children:`P`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mn,{children:`4`}),_jsx(_components.mi,{children:`s`}),_jsx(_components.mi,{children:`e`}),_jsx(_components.mi,{children:`c`}),_jsx(_components.mi,{children:`o`}),_jsx(_components.mi,{children:`n`}),_jsx(_components.mi,{children:`d`}),_jsx(_components.mi,{children:`s`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]}),_jsxs(_components.mrow,{children:[_jsx(_components.mn,{children:`60`}),_jsx(_components.mi,{children:`m`}),_jsx(_components.mi,{children:`i`}),_jsx(_components.mi,{children:`n`}),_jsx(_components.mi,{children:`s`}),_jsx(_components.mo,{children:`∗`}),_jsx(_components.mn,{children:`60`}),_jsx(_components.mi,{children:`s`}),_jsx(_components.mi,{children:`e`}),_jsx(_components.mi,{children:`c`}),_jsx(_components.mi,{children:`o`}),_jsx(_components.mi,{children:`n`}),_jsx(_components.mi,{children:`d`}),_jsx(_components.mi,{children:`s`}),_jsx(_components.mi,{mathvariant:`normal`,children:`/`}),_jsx(_components.mn,{children:`4`}),_jsx(_components.mi,{children:`s`}),_jsx(_components.mi,{children:`e`}),_jsx(_components.mi,{children:`c`}),_jsx(_components.mi,{children:`o`}),_jsx(_components.mi,{children:`n`}),_jsx(_components.mi,{children:`d`}),_jsx(_components.mi,{children:`s`})]})]})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`Total Energy=\\\\sum_{4seconds}\\\\frac{P(4seconds)}{60mins*60seconds/4seconds}\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.8889em`,verticalAlign:`-0.1944em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`T`}),_jsx(_components.span,{className:`mord mathnormal`,children:`o`}),_jsx(_components.span,{className:`mord mathnormal`,children:`t`}),_jsx(_components.span,{className:`mord mathnormal`,children:`a`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0197em`},children:`l`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0576em`},children:`E`}),_jsx(_components.span,{className:`mord mathnormal`,children:`n`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0278em`},children:`er`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0359em`},children:`g`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0359em`},children:`y`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`2.7291em`,verticalAlign:`-1.3021em`}}),_jsx(_components.span,{className:`mop op-limits`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.05em`},children:[_jsxs(_components.span,{style:{top:`-1.8479em`,marginLeft:`0em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3.05em`}}),_jsx(_components.span,{className:`sizing reset-size6 size3 mtight`,children:_jsxs(_components.span,{className:`mord mtight`,children:[_jsx(_components.span,{className:`mord mtight`,children:`4`}),_jsx(_components.span,{className:`mord mathnormal mtight`,children:`seco`}),_jsx(_components.span,{className:`mord mathnormal mtight`,children:`n`}),_jsx(_components.span,{className:`mord mathnormal mtight`,children:`d`}),_jsx(_components.span,{className:`mord mathnormal mtight`,children:`s`})]})})]}),_jsxs(_components.span,{style:{top:`-3.05em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3.05em`}}),_jsx(_components.span,{children:_jsx(_components.span,{className:`mop op-symbol large-op`,children:`∑`})})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`1.3021em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.1667em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mopen nulldelimiter`}),_jsx(_components.span,{className:`mfrac`,children:_jsxs(_components.span,{className:`vlist-t vlist-t2`,children:[_jsxs(_components.span,{className:`vlist-r`,children:[_jsxs(_components.span,{className:`vlist`,style:{height:`1.427em`},children:[_jsxs(_components.span,{style:{top:`-2.314em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord`,children:`60`}),_jsx(_components.span,{className:`mord mathnormal`,children:`min`}),_jsx(_components.span,{className:`mord mathnormal`,children:`s`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`∗`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mord`,children:`60`}),_jsx(_components.span,{className:`mord mathnormal`,children:`seco`}),_jsx(_components.span,{className:`mord mathnormal`,children:`n`}),_jsx(_components.span,{className:`mord mathnormal`,children:`d`}),_jsx(_components.span,{className:`mord mathnormal`,children:`s`}),_jsx(_components.span,{className:`mord`,children:`/4`}),_jsx(_components.span,{className:`mord mathnormal`,children:`seco`}),_jsx(_components.span,{className:`mord mathnormal`,children:`n`}),_jsx(_components.span,{className:`mord mathnormal`,children:`d`}),_jsx(_components.span,{className:`mord mathnormal`,children:`s`})]})]}),_jsxs(_components.span,{style:{top:`-3.23em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsx(_components.span,{className:`frac-line`,style:{borderBottomWidth:`0.04em`}})]}),_jsxs(_components.span,{style:{top:`-3.677em`},children:[_jsx(_components.span,{className:`pstrut`,style:{height:`3em`}}),_jsxs(_components.span,{className:`mord`,children:[_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`P`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord`,children:`4`}),_jsx(_components.span,{className:`mord mathnormal`,children:`seco`}),_jsx(_components.span,{className:`mord mathnormal`,children:`n`}),_jsx(_components.span,{className:`mord mathnormal`,children:`d`}),_jsx(_components.span,{className:`mord mathnormal`,children:`s`}),_jsx(_components.span,{className:`mclose`,children:`)`})]})]})]}),_jsx(_components.span,{className:`vlist-s`,children:``})]}),_jsx(_components.span,{className:`vlist-r`,children:_jsx(_components.span,{className:`vlist`,style:{height:`0.936em`},children:_jsx(_components.span,{})})})]})}),_jsx(_components.span,{className:`mclose nulldelimiter`})]})]})]})]})}),`\n`,_jsx(_components.span,{className:`katex-display`,children:_jsxs(_components.span,{className:`katex`,children:[_jsx(_components.span,{className:`katex-mathml`,children:_jsx(_components.math,{xmlns:`http://www.w3.org/1998/Math/MathML`,display:`block`,children:_jsxs(_components.semantics,{children:[_jsxs(_components.mrow,{children:[_jsx(_components.mi,{children:`T`}),_jsx(_components.mi,{children:`o`}),_jsx(_components.mi,{children:`t`}),_jsx(_components.mi,{children:`a`}),_jsx(_components.mi,{children:`l`}),_jsx(_components.mi,{children:`R`}),_jsx(_components.mi,{children:`e`}),_jsx(_components.mi,{children:`v`}),_jsx(_components.mi,{children:`e`}),_jsx(_components.mi,{children:`n`}),_jsx(_components.mi,{children:`u`}),_jsx(_components.mi,{children:`e`}),_jsx(_components.mo,{children:`=`}),_jsx(_components.mi,{children:`T`}),_jsx(_components.mi,{children:`o`}),_jsx(_components.mi,{children:`t`}),_jsx(_components.mi,{children:`a`}),_jsx(_components.mi,{children:`l`}),_jsx(_components.mi,{children:`E`}),_jsx(_components.mi,{children:`n`}),_jsx(_components.mi,{children:`e`}),_jsx(_components.mi,{children:`r`}),_jsx(_components.mi,{children:`g`}),_jsx(_components.mi,{children:`y`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{children:`M`}),_jsx(_components.mi,{children:`W`}),_jsx(_components.mi,{children:`h`}),_jsx(_components.mo,{stretchy:`false`,children:`)`}),_jsx(_components.mo,{children:`×`}),_jsx(_components.mi,{children:`E`}),_jsx(_components.mi,{children:`n`}),_jsx(_components.mi,{children:`e`}),_jsx(_components.mi,{children:`r`}),_jsx(_components.mi,{children:`g`}),_jsx(_components.mi,{children:`y`}),_jsx(_components.mi,{children:`P`}),_jsx(_components.mi,{children:`r`}),_jsx(_components.mi,{children:`i`}),_jsx(_components.mi,{children:`c`}),_jsx(_components.mi,{children:`e`}),_jsx(_components.mo,{stretchy:`false`,children:`(`}),_jsx(_components.mi,{children:`E`}),_jsx(_components.mi,{children:`U`}),_jsx(_components.mi,{children:`R`}),_jsx(_components.mi,{mathvariant:`normal`,children:`/`}),_jsx(_components.mi,{children:`M`}),_jsx(_components.mi,{children:`W`}),_jsx(_components.mi,{children:`h`}),_jsx(_components.mo,{stretchy:`false`,children:`)`})]}),_jsx(_components.annotation,{encoding:`application/x-tex`,children:`TotalRevenue = TotalEnergy(MWh) \\\\times EnergyPrice(EUR/MWh)\n`})]})})}),_jsxs(_components.span,{className:`katex-html`,\"aria-hidden\":`true`,children:[_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`0.6944em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`T`}),_jsx(_components.span,{className:`mord mathnormal`,children:`o`}),_jsx(_components.span,{className:`mord mathnormal`,children:`t`}),_jsx(_components.span,{className:`mord mathnormal`,children:`a`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0197em`},children:`l`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0077em`},children:`R`}),_jsx(_components.span,{className:`mord mathnormal`,children:`e`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0359em`},children:`v`}),_jsx(_components.span,{className:`mord mathnormal`,children:`e`}),_jsx(_components.span,{className:`mord mathnormal`,children:`n`}),_jsx(_components.span,{className:`mord mathnormal`,children:`u`}),_jsx(_components.span,{className:`mord mathnormal`,children:`e`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}}),_jsx(_components.span,{className:`mrel`,children:`=`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2778em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`T`}),_jsx(_components.span,{className:`mord mathnormal`,children:`o`}),_jsx(_components.span,{className:`mord mathnormal`,children:`t`}),_jsx(_components.span,{className:`mord mathnormal`,children:`a`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0197em`},children:`l`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0576em`},children:`E`}),_jsx(_components.span,{className:`mord mathnormal`,children:`n`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0278em`},children:`er`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0359em`},children:`g`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0359em`},children:`y`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.109em`},children:`M`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`W`}),_jsx(_components.span,{className:`mord mathnormal`,children:`h`}),_jsx(_components.span,{className:`mclose`,children:`)`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}}),_jsx(_components.span,{className:`mbin`,children:`×`}),_jsx(_components.span,{className:`mspace`,style:{marginRight:`0.2222em`}})]}),_jsxs(_components.span,{className:`base`,children:[_jsx(_components.span,{className:`strut`,style:{height:`1em`,verticalAlign:`-0.25em`}}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0576em`},children:`E`}),_jsx(_components.span,{className:`mord mathnormal`,children:`n`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0278em`},children:`er`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0359em`},children:`g`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0359em`},children:`y`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`P`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0278em`},children:`r`}),_jsx(_components.span,{className:`mord mathnormal`,children:`i`}),_jsx(_components.span,{className:`mord mathnormal`,children:`ce`}),_jsx(_components.span,{className:`mopen`,children:`(`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0576em`},children:`E`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.109em`},children:`U`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.0077em`},children:`R`}),_jsx(_components.span,{className:`mord`,children:`/`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.109em`},children:`M`}),_jsx(_components.span,{className:`mord mathnormal`,style:{marginRight:`0.1389em`},children:`W`}),_jsx(_components.span,{className:`mord mathnormal`,children:`h`}),_jsx(_components.span,{className:`mclose`,children:`)`})]})]})]})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`example:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`settlement (clearing) price: 100 Euro/MWh`}),`\n`,_jsx(_components.li,{children:`activated capacity: 2MW (sum of activated energy in 1/4 second for 15 minutes)`}),`\n`,_jsx(_components.li,{children:`example revenue for full activation for 15 minutes: 100 Euro/MWh * 2MW * 0.25h = 50 Euro`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`1`,id:`7-ancillary-services-and-re-validation`,children:`7. Ancillary services and re-validation`}),`\n`,_jsx(_components.p,{children:`We will briefly walk through a scenario in which ancillary activation brings your SoC projection out of bounds to clearly pin down consequences and playing room you have.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`7.1 Scenario`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`You have an accepted wholesale schedule which keeps your SoC within the SoC bounds`}),`\n`,_jsx(_components.li,{children:`Ancillary activation (which is a result of your accepted ancillary bids) suddenly pushes your projected SoC out of bounds`}),`\n`]}),`\n`,_jsx(_components.p,{children:`→ we will cover different scenarios in the following part, depending on when SoC gets pushed out of the bounds and what your scheduled power is for the next quarter`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`7.2 What happens at several steps along the validation timeline`})}),`\n`,_jsx(_components.p,{children:`Note: All power schedules below correspond to wholesale power.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Case 1: SoC projection for the next quarter gets out of bounds before re-validation (before 7 minutes prior to delivery):`})}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Option: Your scheduled power is in the “right” direction and enough to move projected SoC back into the SoC bounds`,`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`free Action in re-validation: no action is taken`}),`\n`,_jsx(_components.li,{children:`Remaining playing room: You can still submit other power values subject to conditions before re-validation (specifically, as long as they are keeping the SoC projection within the bounds)`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Option: Your scheduled power is in the “right” direction (at the maximum available power) level, but it is not enough to move SoC projection back into the SoC bounds`,`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`free Action in re-validation: no action is taken`}),`\n`,_jsx(_components.li,{children:`Remaining playing room: You can not submit other power values, because any reduction of power would move your projected SoC even further away from the bounds.`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Option: Your scheduled power is in the “right” direction (not on the maximum available power), but it is not enough to move SoC projection back into the SoC bounds`,`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Action in re-validation: your power is corrected in a way that brings the SoC projection back into the bounds (or as close as possible) within the next quarter`}),`\n`,_jsx(_components.li,{children:`Remaining playing room: After re-validation you can still submit other power values subject to conditions before re-validation (specifically, as long as they are keeping the SoC projection within the bounds)`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Option: Your scheduled power is zero, so it does not help moving the SoC projection back in direction of the SoC bounds`,`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Action in re-validation: your power is corrected in a way that brings the SoC projection back into the bounds (or as close as possible) within the next quarter (this means increasing the power from a status quo of 0)`}),`\n`,_jsx(_components.li,{children:`Remaining playing room: After re-validation you can still submit other power values subject to conditions before re-validation(specifically, as long as they are keeping the SoC projection within the bounds)`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Option: Your scheduled power is in the “wrong” direction, so it is moving the SoC projection away from the SoC bounds`,`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Action in re-validation: your power is corrected in a way that brings the SoC projection back into the bounds (or as close as possible) within the next quarter (this means changing the direction of power)`}),`\n`,_jsx(_components.li,{children:`Remaining playing room: After re-validation you can still submit other power values subject to conditions before re-validation (specifically, as long as they are keeping the SoC projection within the bounds)`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Case 2: SoC projection gets out of bounds after re-validation but before gate-closure (later than 7 but before 5.30 minutes prior to delivery):`})}),`\n`,_jsx(_components.p,{children:`Note:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Option: Your scheduled power is in the “right” direction = moving SoC projection back in direction of the bound`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Action in time after re-validation but before gate-closure: no action is taken`}),`\n`,_jsx(_components.li,{children:`Remaining playing room: You can correct your power value, as long as new schedule brings your SoC projection back into the bounds (that is the only accepted changed schedule at this point)`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Option: Your scheduled power is zero = no effect on moving SoC projection back in direction of the bound`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Action in time after re-validation but before gate-closure: no action is taken`}),`\n`,_jsx(_components.li,{children:`Remaining playing room: You can correct your power value, as long as new schedule brings your SoC projection back into the bounds (that is the only accepted changed schedule at this point)`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Option Your scheduled power is in the “wrong” direction = moving SoC projection in direction away of the bound`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Action in time after re-validation but before gate-closure: `,_jsx(_components.strong,{children:`no action is taken`})]}),`\n`,_jsx(_components.li,{children:`Remaining playing room: You can correct your power value, as long as new schedule brings your SoC projection back into the bounds (that is the only accepted changed schedule at this point)`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Case 3: SoC gets out of bounds after gate-closure (later than 5.30 minutes prior to delivery):`})}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsxs(_components.li,{children:[`Option: Your scheduled power is in the “right” direction = moving SoC projection back in direction of the bound`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Action in time after re-validation but before gate-closure: no action is taken`}),`\n`,_jsx(_components.li,{children:`Remaining playing room: none`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Option: Your scheduled power is zero = no effect on moving SoC projection back in direction of the bound`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Action in time after re-validation but before gate-closure: no action is taken`}),`\n`,_jsx(_components.li,{children:`Remaining playing room: none`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Option Your scheduled power is in the “wrong” direction = moving SoC projection in direction away of the bound`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Action in time after re-validation but before gate-closure: `,_jsx(_components.strong,{children:`no action is taken`})]}),`\n`,_jsx(_components.li,{children:`Remaining playing room: none`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`1`,id:`8-unavailabilities-and-ancillary-services`,children:`8. Unavailabilities and ancillary services`}),`\n`,_jsx(_components.p,{children:`The last chapter will cover the effects of unavailabilities on ancillary bids and accepted capacities.`}),`\n`,_jsx(_components.p,{children:`One remark on the SoC management obligations with and without unavailabilities:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`without unavailability: it is fully the users responsibility to handle SoC management according to ancillary market regulation. As long as the virtual asset baseline conditions stay as they have been agreed on stay the same. i.e. no platform outage, not nonsense data everything and everything working as usual`}),`\n`,_jsx(_components.li,{children:`with unavailability or deviations from the agreed on baseline conditions: the user should still handle SoC management with best efforts.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`8-1-effect-of-unavailability-on-bid-capacity`,children:`8.1 Effect of unavailability on bid capacity`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Your wholesale block and available ancillary capacity is reduced / scaled down following the same mechanism.`}),`\n`,_jsx(_components.li,{children:`If you have existing bids (before gate-closure of the respective markets) these are also reduced / scaled down following the same mechanism.`}),`\n`,_jsx(_components.li,{children:`If you have existing bids after gate-closure but before results are published, you have to wait for the results and awarded capacity.`}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`8-2-ancillary-service-effects-during-planned-\u0026-unplanned-unavailability-on-awarded-capacity`,children:`8.2 Ancillary service effects during planned \u0026 unplanned unavailability - on awarded capacity`}),`\n`,_jsx(_components.p,{children:`The following chapter outlines how unavailabilities affect ancillary and wholesale power.`}),`\n`,_jsx(Heading,{level:`3`,id:`8-2-3-power-capacity-types`,children:`8.2.3 Power capacity types`}),`\n`,_jsx(_components.p,{children:`There are four “types” of power, which behave differently in the context of unavailabilities. Those are:`}),`\n`,_jsxs(_components.ol,{children:[`\n`,_jsx(_components.li,{children:`Free wholesale power block`}),`\n`,_jsx(_components.li,{children:`aFRR committed power`}),`\n`,_jsxs(_components.li,{children:[`FCR buffer in wholesale power block`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`this amounts to 25% of FCR committed power`}),`\n`]}),`\n`]}),`\n`,_jsx(_components.li,{children:`FCR committed power`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Mechanism:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Power capacities are deducted according to above order`}),`\n`,_jsx(_components.li,{children:`The wholesale block is always reduced first`}),`\n`,_jsx(_components.li,{children:`After that aFRR, FCR wholesale buffer and FCR in respective order`}),`\n`,_jsxs(_components.li,{children:[`Most importantly:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`FCR:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`FCR is prioritised over aFRR capacity and energy markets (when we talk about aFRR power, we relate to both markets)`}),`\n`,_jsx(_components.li,{children:`FCR buffer wholesale power is kept at the same ratio to FCR as in the first place (recall this is 25% wholesale power of accepted FCR power)`}),`\n`,_jsx(_components.li,{children:`That means your free power in the wholesale block always fulfils your legal power buffer obligations`}),`\n`,_jsxs(_components.li,{children:[`edge case: the 1.25MW in between each full FCR step are allocated to the aFRR block (until it is possible to allocate a full FCR + wholesale block combined MW of 1.25 again). `,_jsx(_components.em,{children:`This approach is potentially subject to change in the future`})]}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`aFRR:`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`We do not keep any wholesale buffers on your aFRR commitments`}),`\n`,_jsxs(_components.li,{children:[`If you end up in a situation with 100% of your available power capacity committed into aFRR, because your wholesale block become fully unavailable, you should`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Try to get SoC close to 50% as soon as possible`}),`\n`,_jsx(_components.li,{children:`navigate with aFRR energy bids conservatively around the 50% SoC`}),`\n`,_jsxs(_components.li,{children:[`bid the maximum price to reduce probability of getting activated, in situations where this becomes necessary`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`i.e. you are at lower SoC bound and you have an existing aFRR downard commitment from the capacity markets\n→ you should bid at the maximum price into the energy downward markets inorder to prevent further discharge activation → you could try to bid into aFRR upward markets to recharge the asset`}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`How to query changes to power capacity via API:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`how to get available capacity`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`available FCR and aFRR capacity is equal to marketable capacity`}),`\n`,_jsx(_components.li,{children:`there is no “rated” capacity endpoint for now (coming soon)`}),`\n`,_jsx(_components.li,{children:`that means, marketable capacity for aFRR and FCR changes according to unavailabilities`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`8-2-4-energy-capacity-types`,children:`8.2.4 Energy capacity types`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Mechanism:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`As outlined in the chapter `,_jsx(_components.a,{href:`/layrUserGuide/features/unavailabilities`,children:`Virtual Asset Unavailabilities`}),` if your Energy capacity is reduced`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`your relative SoC is kept the same`}),`\n`,_jsx(_components.li,{children:`that means your SoE reduces and some of your SoE is “frozen” in the unavailable part of your virtual battery`}),`\n`]}),`\n`]}),`\n`,_jsx(_components.li,{children:`That means you could end up in a situation where you had sufficient SoC buffers but the unavailability brings you into a regime where the SoC buffers are not sufficient anymore (FCR bids stay stable but energy capacity reduces)`}),`\n`,_jsx(_components.li,{children:`In this case, you should try at best efforts to return into the area between SoC bounds again!`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`How to query changes to energy capacity via API:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`see `,_jsx(_components.a,{href:`/layrUserGuide/features/unavailabilities`,children:`Virtual Asset Unavailabilities`}),` part around SoC changes`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`8-2-4-soc-bound-effects`,children:`8.2.4 SoC bound effects`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`SoC bounds might change if the “relation” of FCR bids to available energy capacity changes`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Lower bound in %:`}),` 0.458 * FCR_power / sqrt(RTE) / Energy_capacity) `,_jsx(_components.strong,{children:`Upper bound in %:`}),` 1 - (0.458 * FCR_power * sqrt(RTE) / Energy_capacity)`]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.li,{children:`With reducing energy capacity but potentially stable FCR bids (if only wholesale block is reduced) the SoC bounds can get more strict after an unavailability`}),`\n`,_jsx(_components.li,{}),`\n`]}),`\n`,_jsx(Heading,{level:`2`,id:`8-3-scenarios-and-examples`,children:`8.3 Scenarios and examples`}),`\n`,_jsx(_components.p,{children:`The following two scenarios cover the main two “complex” cases of unavailabilities, which you could face in context of ancillary services.`}),`\n`,_jsx(Heading,{level:`3`,id:`8-3-1-scenario-1-soc-bounds-get-squeezed`,children:`8.3.1 Scenario 1: SoC bounds get squeezed`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Scenario:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`In the first scenario, the unavailability reduces your energy capacity stronger in relative terms, than your bid FCR power.`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Such a change is consequence of the “prioritisation” of FCR power in the curtailing process`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`That leads to stricter SoC bounds (check `,_jsx(_components.a,{href:`https://www.notion.so/8-2-4-SoC-bound-effects-285b2013e98e80298758c6cac157a155?pvs=21`,children:`8.2.4 SoC bound effects`}),` and assume FCR_power reduces less than Energy_capacity)`]}),`\n`,_jsx(_components.li,{children:`The SoC of your virtual asset was so low, that after the unavailability comes into place, your SoC is out of bounds`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Recommended behaviour:`})}),`\n`,_jsx(_components.p,{children:`Bring your SoC back into the bounds as soon as possible with the remaining wholesale capacity you have available, at best efforts`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Baseline:`})}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-26.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=c8b6ea7b810d3b2ee69784d1605b1b5b`,alt:`Image 26`,\"data-og-width\":`1306`,width:`1306`,\"data-og-height\":`1376`,height:`1376`,\"data-path\":`images/image-26.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-26.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=da16a079cd1fef8342b235a51b616db1 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-26.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=fd35c74d61eaa9ce0338a57cff41be2e 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-26.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=74cd7e952c12141d524f956bbef3653b 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-26.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=358dba7bb8331ac9c39d0b9e444b9fcf 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-26.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=3cb6145f3f032e860b00a4fc4e652520 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-26.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=6e592b0cb5db91a627292730d1c7c867 2500w`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Post unavailability:`})}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-27.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=40319fab74c1919ea3c108848aab6857`,alt:`Image 27`,\"data-og-width\":`1312`,width:`1312`,\"data-og-height\":`1334`,height:`1334`,\"data-path\":`images/image-27.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-27.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=ad41a3d7876d48468bf1430b1989c053 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-27.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=1a3e74a046073cbc2a78e1e4d387d06a 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-27.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=92a45216e41d285c95f9087d50b4c413 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-27.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=d3b55037dec7c61c8d01e112d01c04f4 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-27.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=1a49a3d1a0bff5ad5961b367fd6b6db1 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-27.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=ff8e458134a2280a77c71b5b69764af8 2500w`}),`\n`,_jsx(Heading,{level:`3`,id:`8-3-2-scenario-2-afrr-commitments-without-wholesale-power-left`,children:`8.3.2 Scenario 2: aFRR commitments without wholesale power left`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Scenario:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`In the second scenario, you have active aFRR commitments in the capacity markets and remaining wholesale power`}),`\n`,_jsx(_components.li,{children:`The unavailability completely reduces your wholesale block and you have only aFRR committed power remaining`}),`\n`,_jsx(_components.li,{children:`As you are not legally required to keep a power buffer for your aFRR commitments, the platform does not keep a wholesale power buffer as it did for FCR power`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Recommended behaviour:`})}),`\n`,_jsx(_components.p,{children:`If you end up in a situation with 100% of your available power capacity committed into aFRR, because your wholesale block become fully unavailable, you should:`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`take SoC management into account for your bidding strategy (opportunity costs of not being able to service aFRR activations because you are on SoC bounds might be very high)`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`i.e. you are at lower SoC bound and you have an existing aFRR downard commitment from the capacity markets\n→ you should take that into account when coming up with a price for the energy downward markets → you could alternatively try to bid into aFRR upward energy markets to recharge the asset`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Baseline:`})}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-28.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=240ecb63b7d44bb3c91c93ddd435ebea`,alt:`Image 28`,\"data-og-width\":`1484`,width:`1484`,\"data-og-height\":`1270`,height:`1270`,\"data-path\":`images/image-28.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-28.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=9e32d339c73670650fc6c70a9a9ffd7e 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-28.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=698be8fb926c645113c8ee6db3a24303 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-28.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=10689463a39c1de831575e6caa059a24 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-28.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=4166a002f2f8e97711bfb6d523fcbe65 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-28.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=1ba6612a433b4de796c3019fee029092 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-28.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=ad4f0ade312c7712b1bce23ebd8e31ef 2500w`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Post unavailability:`})}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-29.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=16081e3b8923e745c038066e347a22f0`,alt:`Image 29`,\"data-og-width\":`1518`,width:`1518`,\"data-og-height\":`1266`,height:`1266`,\"data-path\":`images/image-29.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-29.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=dcd9d990a4fa25e1bfd26460bb0ba879 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-29.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=2a2e6fd7c21db943787346516a7e4e96 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-29.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=3520e169158d27eafcd7064a998d5dbc 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-29.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=239ceaba9c2a6fb2f727f3fa507778b9 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-29.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=b65ec20836c91e1b2eb44a50e6a9f564 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-29.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=369f6ef7c8dce2d42f11242389b3284d 2500w`}),`\n`,_jsx(Heading,{level:`2`,id:`8-4-ancillary-service-effects-during-short-notice-unavailability-on-awarded-capacity`,children:`8.4 Ancillary service effects during short-notice unavailability - on awarded capacity`}),`\n`,_jsx(Heading,{level:`3`,id:`8-4-1-short-notice-behaviour`,children:`8.4.1 Short notice behaviour`}),`\n`,_jsx(_components.p,{children:`For the current plus four quarters after announcement of an unavailability, the following allowances hold:`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Power effects:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`Bid and accepted FCR capacity remains`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`FCR bids and commitments can not protected by the short notice periods`}),`\n`,_jsx(_components.li,{children:`There are no ancillary returns on unavailable capacity and there is no forwarded activation`}),`\n`,_jsx(_components.li,{children:`Your “Besicherung” is jumping in`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`Bid and accepted aFRR capacity remains`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`aFRR bids and commitments can not be protected by the short notice periods`}),`\n`,_jsx(_components.li,{children:`There are no ancillary returns on unavailable capacity and there is no forwarded activation`}),`\n`,_jsx(_components.li,{children:`Your “Besicherung” is jumping in`}),`\n`]}),`\n`]}),`\n`,_jsxs(_components.li,{children:[`The scheduled wholesale power can remain or be changed subject to the rules defined in `,_jsx(_components.a,{href:`/layrUserGuide/features/unavailabilities`,children:`Virtual Asset Unavailabilities`}),` - except in the special case defined below\n`,_jsx(_components.strong,{children:`Special case: Ancillary activation and short-notice protected wholesale`}),`\n`,_jsx(_components.strong,{children:`Scenario`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Ancillary activation pushes your SoC projection out of bounds for the upcoming quarter`}),`\n`,_jsx(_components.li,{children:`That quarter is short-notice protected`}),`\n`,_jsxs(_components.li,{children:[`Your wholesale schedule for this quarter is not yet at level of the the maximum available power to bring the SoC projection back into the bounds\n`,_jsx(_components.strong,{children:`Action`})]}),`\n`,_jsx(_components.li,{children:`In such a case, applying to the legal SoC bounds is more important than the short-notice protection`}),`\n`,_jsx(_components.li,{children:`Even short notice protected power values will be corrected in the re-validation. If your projected SoC is out of SoC bounds due to sudden ancillary activation`}),`\n`]}),`\n`]}),`\n`]}),`\n`,_jsx(Heading,{level:`3`,id:`scenario-3-soc-bounds-get-squeezed-short-notice`,children:`Scenario 3: SoC bounds get squeezed - short-notice`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Scenario:`})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`In the third scenario, the unavailability reduces your energy capacity stronger in relative terms, than your bid FCR power.`,`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`Such a change is consequence of the “prioritisation” of FCR power in the curtailing process`}),`\n`]}),`\n`]}),`\n`,_jsx(_components.li,{children:`That leads to stricter SoC bounds`}),`\n`,_jsx(_components.li,{children:`The SoC of your virtual asset was so low, that after the unavailability comes into place, your SoC is out of bounds`}),`\n`]}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Recommended behaviour:`})}),`\n`,_jsx(_components.p,{children:`While you can leave your “short-notice” protected schedule as it is, you should bring your SoC back into the bounds as soon as possible with the remaining wholesale capacity you have available.`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Baseline:`})}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-30.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=d7de48c585ee5fa0b2e5f42860c13515`,alt:`Image 30`,\"data-og-width\":`1312`,width:`1312`,\"data-og-height\":`1378`,height:`1378`,\"data-path\":`images/image-30.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-30.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=5e810b887533b7de03c3c755b571bfa2 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-30.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=495dd03a09183aae3f5b3983d82fe632 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-30.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=629b676cfa74c7ba79f7796b8a255c68 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-30.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=69e94d9b99a58ac5455342906e8762ce 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-30.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=d5d966818e2062e1a10ab3519cf605ad 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-30.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=3df5ce23fc07a18b0deeb10f1b708d61 2500w`}),`\n`,_jsx(_components.p,{children:_jsx(_components.strong,{children:`Post unavailability:`})}),`\n`,_jsx(OptimizedImage,{src:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-31.png?fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=19c2e0f4cbcb25f6d503ddfd1c9f2a04`,alt:`Image 31`,\"data-og-width\":`1306`,width:`1306`,\"data-og-height\":`1404`,height:`1404`,\"data-path\":`images/image-31.png`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-31.png?w=280\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=4bb8c0ce8bb322057a87ccf4c9034182 280w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-31.png?w=560\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=df1a15e583e082e4728c585a665b3e51 560w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-31.png?w=840\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=8e7161a4e7c7c57d123c5904100c319a 840w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-31.png?w=1100\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=6ceeec3ca384bd3ad3816f7f5345329d 1100w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-31.png?w=1650\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=57608ffe74af301ece347a1b3169b8ef 1650w, https://mintcdn.com/terralayr-90/mKzyuuHfCMt-ntzL/images/image-31.png?w=2500\u0026fit=max\u0026auto=format\u0026n=mKzyuuHfCMt-ntzL\u0026q=85\u0026s=833a2a108b69e59d7cae9cd3b8534acb 2500w`})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Ancillary services (block level)","description":"How to manage virtual assets in FCR and aFRR ancillary service markets on Layr at the block level.","deprecated":true,"href":"/layrUserGuide/features/ancillary-services-block-level"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"1. Where to find your available ancillary service capacities","slug":"1-where-to-find-your-available-ancillary-service-capacities","depth":1,"children":[]},{"title":"2. Ancillary and wholesale blocks","slug":"2-ancillary-and-wholesale-blocks","depth":1,"children":[]},{"title":"2.1 Get timeseries data of your wholesale block","slug":"2-1-get-timeseries-data-of-your-wholesale-block","depth":2,"children":[]},{"title":"2.2 Interdependencies of FCR and aFRR capacity","slug":"2-2-interdependencies-of-fcr-and-afrr-capacity","depth":2,"children":[]},{"title":"3. Buffer requirements of Ancillary Service Markets on LAYR","slug":"3-buffer-requirements-of-ancillary-service-markets-on-layr","depth":1,"children":[]},{"title":"3.1 Deep-dive: FCR committed buffer power in wholesale block:","slug":"3-1-deep-dive-fcr-committed-buffer-power-in-wholesale-block","depth":2,"children":[]},{"title":"4. FCR via LAYR","slug":"4-fcr-via-layr","depth":1,"children":[]},{"title":"4.1 Submitting FCR bids","slug":"4-1-submitting-fcr-bids","depth":2,"children":[]},{"title":"4.2 Get and update FCR bids","slug":"4-2-get-and-update-fcr-bids","depth":2,"children":[]},{"title":"4.3 Get FCR results","slug":"4-3-get-fcr-results","depth":2,"children":[]},{"title":"4.4 Get FCR block","slug":"4-4-get-fcr-block","depth":2,"children":[]},{"title":"5. aFRR via LAYR","slug":"5-afrr-via-layr","depth":1,"children":[]},{"title":"5.1 Submitting aFRR bids","slug":"5-1-submitting-afrr-bids","depth":2,"children":[]},{"title":"5.2 Get and update aFRR bids","slug":"5-2-get-and-update-afrr-bids","depth":2,"children":[]},{"title":"5.3 Get aFRR results","slug":"5-3-get-afrr-results","depth":2,"children":[]},{"title":"5.4 Get aFRR block","slug":"5-4-get-afrr-block","depth":2,"children":[]},{"title":"6. Revenue calculation","slug":"6-revenue-calculation","depth":1,"children":[]},{"title":"6.1 FCR revenue","slug":"6-1-fcr-revenue","depth":2,"children":[]},{"title":"6.2 aFRR Capacity","slug":"6-2-afrr-capacity","depth":2,"children":[]},{"title":"6.3 aFRR Energy","slug":"6-3-afrr-energy","depth":2,"children":[]},{"title":"7. Ancillary services and re-validation","slug":"7-ancillary-services-and-re-validation","depth":1,"children":[]},{"title":"8. Unavailabilities and ancillary services","slug":"8-unavailabilities-and-ancillary-services","depth":1,"children":[]},{"title":"8.1 Effect of unavailability on bid capacity","slug":"8-1-effect-of-unavailability-on-bid-capacity","depth":2,"children":[]},{"title":"8.2 Ancillary service effects during planned \u0026 unplanned unavailability - on awarded capacity","slug":"8-2-ancillary-service-effects-during-planned-\u0026-unplanned-unavailability-on-awarded-capacity","depth":2,"children":[{"title":"8.2.3 Power capacity types","slug":"8-2-3-power-capacity-types","depth":3,"children":[]},{"title":"8.2.4 Energy capacity types","slug":"8-2-4-energy-capacity-types","depth":3,"children":[]},{"title":"8.2.4 SoC bound effects","slug":"8-2-4-soc-bound-effects","depth":3,"children":[]}]},{"title":"8.3 Scenarios and examples","slug":"8-3-scenarios-and-examples","depth":2,"children":[{"title":"8.3.1 Scenario 1: SoC bounds get squeezed","slug":"8-3-1-scenario-1-soc-bounds-get-squeezed","depth":3,"children":[]},{"title":"8.3.2 Scenario 2: aFRR commitments without wholesale power left","slug":"8-3-2-scenario-2-afrr-commitments-without-wholesale-power-left","depth":3,"children":[]}]},{"title":"8.4 Ancillary service effects during short-notice unavailability - on awarded capacity","slug":"8-4-ancillary-service-effects-during-short-notice-unavailability-on-awarded-capacity","depth":2,"children":[{"title":"8.4.1 Short notice behaviour","slug":"8-4-1-short-notice-behaviour","depth":3,"children":[]},{"title":"Scenario 3: SoC bounds get squeezed - short-notice","slug":"scenario-3-soc-bounds-get-squeezed-short-notice","depth":3,"children":[]}]}],"codeExamples":{}},"jsLinks":[],"subdomain":"terralayr-90","siteName":"terralayr","title":"Ancillary services (block level) - terralayr","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-07-23T15:05:50.305Z","gitLastModified":"2026-07-23T15:05:01.000Z","originalFileLocation":"layrUserGuide/features/ancillary-services-block-level.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"How to manage virtual assets in FCR and aFRR ancillary service markets on Layr at the block level.\">\u003cmeta data-mint-head name=\"application-name\" content=\"terralayr\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/terralayr-90/QAqKhv9VYa2PiyeN/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/terralayr-90/QAqKhv9VYa2PiyeN/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/terralayr-90/QAqKhv9VYa2PiyeN/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/terralayr-90/QAqKhv9VYa2PiyeN/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/terralayr-90/QAqKhv9VYa2PiyeN/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/terralayr-90/QAqKhv9VYa2PiyeN/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/terralayr-90/QAqKhv9VYa2PiyeN/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/terralayr-90/QAqKhv9VYa2PiyeN/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/terralayr-90/QAqKhv9VYa2PiyeN/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Ancillary services (block level) - terralayr\">\u003cmeta data-mint-head property=\"og:description\" content=\"How to manage virtual assets in FCR and aFRR ancillary service markets on Layr at the block level.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"terralayr\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.trlyr.com/layrUserGuide/features/ancillary-services-block-level\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://terralayr-90.mintlify.app/_mintlify/api/og/v2?division=Features\u0026amp;title=Ancillary+services+%28block+level%29\u0026amp;description=How+to+manage+virtual+assets+in+FCR+and+aFRR+ancillary+service+markets+on+Layr+at+the+block+level.\u0026amp;theme=6829ac6d8fb6a04cc851f81c\u0026amp;signature=ec5da1acbb6aacd2946973b6be8cbbd07b36bc655960defe8a6ca71b4c145516\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Ancillary services (block level) - terralayr\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"How to manage virtual assets in FCR and aFRR ancillary service markets on Layr at the block level.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://terralayr-90.mintlify.app/_mintlify/api/og/v2?division=Features\u0026amp;title=Ancillary+services+%28block+level%29\u0026amp;description=How+to+manage+virtual+assets+in+FCR+and+aFRR+ancillary+service+markets+on+Layr+at+the+block+level.\u0026amp;theme=6829ac6d8fb6a04cc851f81c\u0026amp;signature=ec5da1acbb6aacd2946973b6be8cbbd07b36bc655960defe8a6ca71b4c145516\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/terralayr-90/QAqKhv9VYa2PiyeN/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"terralayr\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#13151A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.trlyr.com/layrUserGuide/features/ancillary-services-block-level\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/layrUserGuide/features/ancillary-services-block-level.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.trlyr.com/#organization\",\"name\":\"terralayr\",\"url\":\"https://docs.trlyr.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/terralayr-90/i2mowZXsRr_Wp7MC/logo/terralayrDark.svg?fit=max\u0026auto=format\u0026n=i2mowZXsRr_Wp7MC\u0026q=85\u0026s=eb99311be47192737889489eb393e3d4\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.trlyr.com#website\",\"name\":\"terralayr\",\"url\":\"https://docs.trlyr.com\",\"publisher\":{\"@id\":\"https://docs.trlyr.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.trlyr.com/layrUserGuide/features/ancillary-services-block-level#webpage\",\"url\":\"https://docs.trlyr.com/layrUserGuide/features/ancillary-services-block-level\",\"name\":\"Ancillary services (block level)\",\"description\":\"How to manage virtual assets in FCR and aFRR ancillary service markets on Layr at the block level.\",\"dateModified\":\"2026-07-23T15:05:01.000Z\",\"isPartOf\":{\"@id\":\"https://docs.trlyr.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.trlyr.com/layrUserGuide/features/ancillary-services-block-level#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.trlyr.com/layrUserGuide/features/ancillary-services-block-level#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Features\",\"item\":\"https://docs.trlyr.com/layrUserGuide/features/ancillary-services-virtual-asset-level\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ancillary services (block level)\",\"item\":\"https://docs.trlyr.com/layrUserGuide/features/ancillary-services-block-level\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.trlyr.com/layrUserGuide/features/ancillary-services-block-level#article\",\"headline\":\"Ancillary services (block level)\",\"name\":\"Ancillary services (block level)\",\"description\":\"How to manage virtual assets in FCR and aFRR ancillary service markets on Layr at the block level.\",\"url\":\"https://docs.trlyr.com/layrUserGuide/features/ancillary-services-block-level\",\"mainEntityOfPage\":{\"@id\":\"https://docs.trlyr.com/layrUserGuide/features/ancillary-services-block-level#webpage\"},\"dateModified\":\"2026-07-23T15:05:01.000Z\",\"publisher\":{\"@id\":\"https://docs.trlyr.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.trlyr.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"terralayr\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"terralayr","nav":{"global":{"anchors":[]},"tabs":[{"tab":"Layr User Guide","groups":[{"group":"Overview","pages":[{"title":"Introduction","href":"/layrUserGuide/introduction"}]},{"group":"Getting Started","pages":[{"title":"Virtual asset off-taker onboarding","href":"/layrUserGuide/getting-started/offtaker-onboarding"},{"title":"Designated optimiser onboarding","href":"/layrUserGuide/getting-started/do-onboarding"},{"title":"Virtual battery auction (vBA) onboarding","href":"/layrUserGuide/getting-started/vba-onboarding"},{"title":"Asset owner platform onboarding","href":"/layrUserGuide/getting-started/asset-owner-onboarding"}]},{"group":"Features","pages":[{"title":"Ancillary services (virtual asset level)","description":"Implementation guide for participating in FCR and aFRR ancillary service markets at the virtual asset level on Layr.","href":"/layrUserGuide/features/ancillary-services-virtual-asset-level"},{"title":"Ancillary services (block level)","deprecated":true,"href":"/layrUserGuide/features/ancillary-services-block-level"},{"title":"Virtual asset unavailabilities","description":"How physical asset outages affect virtual batteries, and what you need to do.","href":"/layrUserGuide/features/unavailabilities"},{"title":"Virtual Asset Scheduling Errors","href":"/layrUserGuide/features/scheduling-errors"}]},{"group":"Deep dives","pages":[{"title":"Ramp Rates","href":"/layrUserGuide/deep-dives/ramp-rates"},{"title":"Soft re-validation","href":"/layrUserGuide/deep-dives/soft-revalidation"},{"title":"Cycle limits","href":"/layrUserGuide/deep-dives/cycling-calculations"}]},{"group":"Reference","pages":[{"title":"Glossary","href":"/layrUserGuide/glossary"}]}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/trlyr-API/introduction"}]},{"tab":"Product Updates \u0026 Changelog","pages":[{"title":"Product Updates \u0026 Changelog","href":"/changelog"}]},{"tab":"BESS Academy","pages":[{"title":"BESS Academy","href":"/BESS-academy/introduction"}]},{"tab":"LAYR Academy","pages":[{"title":"LAYR Academy","href":"/LAYR-academy/introduction"}]}]},"title":"Ancillary services (block level) - terralayr","buildId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","deploymentId":"dpl_EnxDqhjaNc9a8MVa833TGULPd9uJ","dynamics":["a74be98ba7"],"chunks":["zoom-image-lightbox-CVZVK4hN.js","lightbox-handle-r17bVUz3.js"]}