We are often asked how the financial optimization (or: arbitrage) of a battery across the different market places of the spot market works. We show this x-market optimization here by way of example focusing on the day-ahead spot market (hourly auction at 12 noon), intraday quarter-hourly auction (at 3 p.m.) and the so-called intraday continuous market (quarter-hourly products up to five minutes before delivery).
In order not to let the complexity get out of hand, we make some simplifying assumptions:
Battery Energy Storage System (BESS) with 1 MW / 1 MWh, no state-of-charge-(SoC) restrictions
1 cycle/day and 100% efficiency
We start our arbitrage with an empty battery and a SoC of 0
Perfect price forecasts for all three markets
These assumptions are of course not given in practice, but they help to simplify the example....
We look at the prices on Sunday, July 09, 2023, because the price movements on that day were not exceptional in any way.
We always look at the 96 quarter hours of a day. If the battery delivers at 1 MW in a quarter hour, then it delivers 0.25 MWh.
Arbitrage of Battery Storage on the Day-Ahead Spot Market
We start our trading optimization on the day-ahead market, basically the earliest point in time where we can trade the storage unit on spot markets. This takes place at 12 noon of the day before delivery.
We buy 1 MW each in the cheapest hour for 36.99 EUR/MWh in the hour 1-2 p.m.. At this time the sun is shining and the demand is low. In the evening in the hour 9-10 p.m., the demand is higher and the sun goes down. The price is highest here at 134.10 EUR/MWh. We sell this hour and plan to discharge the battery and deliver power. We have now bought electricity for 36.99 EUR/MWh and sold electricity for 134.10 EUR/MWh. Thus, we have made a profit of 97.11 EUR.
The schedule of our battery after the day-ahead market closure is as follows: We charge the battery from 13-14 o'clock and discharge it from 9-10 p.m.
Arbitrage of Battery Storage in the Intraday Auction
At 3 p.m. on the previous day, the so-called intraday auction takes place. This works similarly to the day-ahead auction, but quarter-hourly products are traded here. As a rule, these are more volatile in price.
We now identify the quarter hours 11q4, 14q1, 15q1 and 16q1 (or quarter hours 48, 57, 61 and 65) with prices 3.78 EUR/ MWh, 17.80 EUR/MWh, 14.46 EUR/ MWh and 3.05 EUR/MWh as the four cheapest quarter hours. We buy these for a total of 9.77 EUR (remember: we only ever buy 0.25 MWh).
But now we have a problem. We have already bought the hour 13-14 and would now have eight quarter hours in which we have to recharge, but we can only do this in four quarter hours. Therefore, we have to sell our position in hour 13-14 (which are quarter hours 53-56). These quarter hours have a price of 55.20 EUR/ MWh, 34.00 EUR/MWh, 36.30 EUR/ MWh and 70.50 EUR/MWh, i.e. an average of 49 EUR/MWh. Since we bought these quarter hours in the Day Ahead for 36.99 EUR/MWh and we are now selling them for 49 EUR/MWh on average, we were a bit lucky and made a profit with this trade.
The most expensive four quarter hours in the intraday auction are 18q4, 19q4, 21q1 and 22q1 with prices of 155.11 EUR/MWh, 195.08 EUR/MWh, 178.15 EUR/MWh and 182.18 EUR/MWh. However, we have already sold the quarter hour 21q1 in the Day-Ahead and selling twice is not possible...
Accordingly, we sell 18q4, 19q4 and 22q1 and generate income of 133.10 EUR. However, we now have the same problem as before, namely that we are still "short" the quarter hours 21q2, 21q3 and 21q4 from the day-ahead. This means that we have to close this position and buy these quarter hours for 141.09 EUR/MWh, 129.48 EUR/ MWh and 125 EUR/MWh. We pay a total of 99.05 EUR for this.
This means that we bought electricity in the intraday auction for 108.80 EUR and sold it for 182.09 EUR and thus generated additional revenue of 73.27 EUR through our arbitrage in the intraday auction. Together with the day-ahead auction, we have a turnover of 170.38 EUR.
The battery's schedule has changed, as it now charges in the cheapest quarter hours of the intraday auction and discharges in the most expensive quarter hours.
Arbitrage of Battery Storage on the Continuous Intraday Market
Now we move towards the time of delivery and thus the actual delivery day and look at the so-called intraday continuous market.
This market trades in continuous products, so it does not take place in an auction. Accordingly, there are thousands of trades at different prices for each quarter-hourly product every day. So in reality there is not ONE intraday price, but very many different ones.
In this example we work with the ID_1 price. This is the volume-weighted average price of all trades that take place one hour before the end of the trading period (usually up to 5 minutes before delivery). This is a gross simplification and systematically underestimates the opportunities in intraday trading. Accordingly, this analysis of an exemplary arbitrage strategy can be considered conservative.
We now see from the ID1 prices that the prices in 13q2, 13q3, 13q4 and 14q1 become a little negative. They are trading at -12.77 EUR/ MWh, -14.72 EUR/MWh,-11.57 EUR/ MWh and -14.88 EUR/MWh. We would like to buy these quarter hours for negative prices. We also do this for all except 14q1, which we have already bought in the intraday auction. So we buy the three cheapest quarter hours and receive (negative prices!) 9.77 EUR/MWh for them.
In order to close our charging position, however, we now have to sell the quarter hours 11q4, 15q1 and 16q1 again. These have a price of 40.52 EUR/MWh, 16.54 EUR/MWh and 47.45 EUR/MWh in the Intraday Market. We get a total of 26.13 EUR for this. So we had bought these quarter hours on average for 21.30 EUR/MWh and are selling them for around 34.80 EUR/MWh. Another nice trade.
Now we look at the expensive quarter hours. Here, the quarter hour 15q4 skyrocketed to 185.70 EUR/MWh in intraday. So we sell this for a turnover of 46.42 EUR (0.25 MWh).
Apart from that, no hour in the intraday continuous market can keep up with the price level from the quarter-hourly auction. Accordingly, everything remains the same for the other discharging quarter hours. Now, however, we have an open position again because we have sold five quarter hours. So we pick the cheapest quarter hour in which we are short and buy it. This is 18q4 and we can buy it back for 93.19 EUR/MWh, which is 23.30 EUR per quarter of an hour. Here we were also a bit lucky again, because we had sold this quarter-hour in the intraday auction for 155.11 EUR/MWh.
In Continuous Intraday trading, we spent another EUR 13.53 and took in EUR 72.55, i.e. a turnover of EUR 59.02. Across all markets, we are now at 229.4 EUR due to our optimisation. Our roadmap for the battery is now as follows:
Settling the Bill
We see that our arbitrage strategy has worked. We now charge the battery at the lowest point across all price curves and discharge it in the most expensive four quarter hours. As long as the battery runs this schedule without any technical problems, we have therefore earned just under 230 EUR for one cycle through our optimisation.
It is important to understand that there is further potential for cross-market optimisation through tenders in the primary and secondary balancing markets (FCR and aFRR). But I think that for now, the present complexity is sufficient, especially since we believe that the greatest potential indeed lies in the spot market.