# Irish Electricity Market: Time-of-Day Profiles Analysis

**Purpose:** Comprehensive reference document for BESS financial modelling -- maps supply, demand, and price profiles across all 24 hours, seasons, and wind conditions in the Irish Single Electricity Market (SEM).

**Data basis:** 64,670 hourly SEM day-ahead prices (Oct 2018 -- Feb 2026, 2,700 days); ENTSO-E generation data (2,557 daily observations, 2019--2025); SEAI and EirGrid demand-side data.

**Last updated:** February 2026

---

## Part 1: Supply Profiles by Hour

Understanding how each generation source behaves across the 24-hour cycle is essential for projecting when the system is "long" (oversupplied, low prices) versus "short" (undersupplied, high prices). The Irish system's supply-side profile is dominated by the interaction between weather-driven wind and demand-following gas.

### 1.1 Wind (Onshore) -- ~5,100 MW installed, ~33% of generation

Wind is the single largest generation source in Ireland but follows no reliable diurnal pattern. Output is entirely weather-driven:

**Typical hourly behaviour:**
- No strong time-of-day signal. Wind blows day and night, driven by Atlantic frontal systems on 3--5 day cycles.
- A mild tendency for slightly higher output in afternoon/evening hours, particularly in summer, but this is statistically weak compared to day-to-day variability.
- Ramp events of 1,000+ MW within a few hours are common as weather fronts pass through.

**Generation variability from the data (2019--2025 daily averages):**

| Statistic | Value |
|---|---|
| Fleet mean output | ~1,100--1,300 MW |
| Maximum daily mean | 2,656 MW (8 Feb 2019) |
| Minimum daily mean | ~110 MW (low-wind days) |
| Range within a single day | Commonly 500--2,000 MW swing |
| Days with mean output <500 MW | ~15--20% of days |
| Days with mean output >2,000 MW | ~5--8% of days |

**Seasonal capacity factors (from monthly wind data):**

| Season | Months | Avg. Capacity Factor | Typical Mean Output (MW) |
|---|---|---|---|
| Winter | Dec--Feb | 33--42% | 1,500--2,100 |
| Spring | Mar--May | 22--31% | 1,000--1,500 |
| Summer | Jun--Aug | 15--22% | 650--1,050 |
| Autumn | Sep--Nov | 24--30% | 1,100--1,450 |

Selected monthly capacity factors from the data:

| Month | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 |
|---|---|---|---|---|---|---|---|
| January | 24.8% | 34.8% | 28.2% | 28.3% | 33.0% | 31.6% | 28.9% |
| February | 40.1% | 49.5% | 44.7% | 47.7% | 33.7% | 35.0% | 42.0% |
| July | 15.2% | 22.4% | 9.0% | 14.9% | 23.9% | 15.8% | 17.8% |
| August | 24.6% | 18.5% | 16.3% | 14.4% | 24.2% | 25.0% | 19.5% |
| December | 34.9% | 37.9% | 36.9% | 29.3% | 42.6% | 35.7% | 33.4% |

**Key for BESS:** Wind does not create a predictable hourly generation pattern. Its impact on the price profile operates through the *level* of daily output rather than the *shape* within each day. High-wind days compress the entire 24-hour price curve downward; low-wind days lift it upward. This is the primary driver of BESS revenue variability.

### 1.2 Solar PV -- ~2,100 MW installed, ~4% of generation (2025)

Solar follows the most predictable diurnal pattern of any source:

**Winter daily profile (Dec--Feb):**
```
Output (MW)
  400 |
  300 |                    .....
  200 |                 ...     ...
  100 |              ...           ...
    0 |..............                 ...............
      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--
      0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

      Zero output: ~16:30--08:30 (only ~8 hours of generation)
      Peak: ~11:00--13:00, reaching 200--400 MW on clear days
```

**Summer daily profile (Jun--Aug):**
```
Output (MW)
 1200 |
 1000 |                 .........
  800 |              ...         ...
  600 |           ...               ...
  400 |        ...                     ...
  200 |     ...                           ...
    0 |.....                                 .....
      +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--
      0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

      Zero output: ~21:30--05:00 (up to ~16.5 hours of generation)
      Peak: ~11:00--14:00, reaching 800--1,200 MW on sunny days
      At 2.1 GW installed, summer peak clear-sky output can exceed 1,500 MW
```

**Seasonal output range:**

| Season | Daily Generation Hours | Peak Output (clear sky) | Contribution to System |
|---|---|---|---|
| Winter | ~8 hrs | 200--400 MW | Minimal (<2%) |
| Spring | ~12 hrs | 600--1,000 MW | Moderate (3--5%) |
| Summer | ~16.5 hrs | 800--1,500 MW | Significant (5--15%+) |
| Autumn | ~10 hrs | 400--700 MW | Moderate (2--4%) |

**Key for BESS:** Solar's midday surplus is the emerging second arbitrage opportunity. At 2.1 GW, the effect on midday prices is already visible (midday prices dropped from 78% to 63% of peak between 2022 and 2025). At the 8 GW 2030 target, midday price suppression will be severe, creating a strong charge window for a second daily BESS cycle.

### 1.3 Gas CCGT -- ~3,500 MW installed, ~39% of generation

Gas CCGTs are the demand-following workhorses and dominant price setters in the SEM. Their hourly profile is the mirror image of the net demand curve (total demand minus wind minus solar):

**Typical winter weekday CCGT dispatch:**

| Hour | CCGT Output (est. MW) | Role |
|---|---|---|
| 00:00--05:00 | 800--1,200 | Minimum stable generation |
| 06:00--08:00 | 1,200--2,000 | Morning ramp |
| 08:00--12:00 | 1,800--2,500 | Morning plateau |
| 12:00--15:00 | 1,500--2,200 | Midday (lower if solar contributing) |
| 15:00--17:00 | 2,000--2,800 | Afternoon ramp to evening peak |
| 17:00--20:00 | 2,500--3,200 | **Evening peak -- maximum output** |
| 20:00--23:00 | 1,800--2,200 | Evening decline |
| 23:00--00:00 | 1,200--1,500 | Transition to overnight |

From the generation data, the average daily gas output across 2019--2025 was approximately 1,000--1,100 MW mean, with a wide range:
- High-wind day: gas drops to 400--700 MW mean (some units off)
- Low-wind day: gas rises to 1,400--1,800 MW mean (full fleet running)

**CCGT marginal cost sets the price floor for most hours:**
- Most efficient (Whitegate, 58.5% LHV): ~89 EUR/MWh at current gas/carbon prices
- Least efficient CCGT (Dublin Bay, 52%): ~99 EUR/MWh
- This 10 EUR/MWh spread within the CCGT fleet determines the price range during "normal" wind/demand conditions

### 1.4 Gas OCGT / Peakers -- ~800--1,000 MW installed, ~1--2% of generation

OCGTs run only during peak stress periods:

**Typical dispatch pattern:**
- **Running hours:** 100--500 hrs/year (capacity factor <5%)
- **Primary dispatch window:** 17:00--20:00 on winter weekday evenings during low-wind conditions
- **Secondary dispatch:** Morning ramp (07:00--09:00) during cold snaps
- **Marginal cost:** ~130--155 EUR/MWh at 33--38% efficiency
- When OCGTs set the price, wholesale prices spike to 200--500+ EUR/MWh

### 1.5 Hydro -- Turlough Hill (292 MW pumped storage) + Ardnacrusha (86 MW)

**Turlough Hill -- Ireland's only large-scale storage -- operates on a daily arbitrage cycle:**

| Mode | Typical Hours | Output/Consumption |
|---|---|---|
| **Pumping (charging)** | 01:00--06:00 | -292 MW (consuming power) |
| Idle | 06:00--07:00 | 0 |
| **Generating** | 07:00--09:00 | +292 MW (morning peak) |
| Idle / partial | 09:00--16:00 | Variable |
| **Generating** | 17:00--21:00 | +292 MW (evening peak) |
| Idle | 21:00--01:00 | 0 |

- Round-trip efficiency: ~75%
- Energy capacity: ~1,800 MWh (~6 hours at full output)
- Start-up time: 70 seconds from standstill to full generation

**Ardnacrusha (86 MW):** Run-of-river, output depends on Shannon flow. Higher in winter/spring, lower in summer. Limited dispatch flexibility.

### 1.6 Interconnectors -- 1,500 MW to GB (Moyle + EWIC + Greenlink)

Net imports supplied ~15% of demand in 2025:

**Typical flow pattern:**
- **Net imports are higher during Irish peak hours** (17:00--20:00), as Irish prices exceed GB prices
- **Net exports occur during high-wind periods** when Irish prices fall below GB
- **Overnight:** Variable; depends on wind conditions in both markets
- **Greenlink (500 MW)** came online January 2025, increasing total IE--GB capacity to 1,500 MW
- **Celtic IC (700 MW to France)** due 2028, will introduce coupling to the French nuclear-dominated market

From the generation data, annual net imports have grown steadily:

| Year | Net Imports (TWh) | Share of Demand |
|---|---|---|
| 2019 | 3.97 | 13.2% |
| 2020 | 6.03 | 19.0% |
| 2021 | 7.84 | 23.2% |
| 2022 | 7.32 | 20.6% |
| 2023 | 7.48 | 21.2% |
| 2024 | 8.03 | 22.1% |
| 2025 | 9.93 | 27.3% |

### 1.7 Supply Profile Summary -- Typical Winter Weekday

| Hour | Wind | Solar | Gas CCGT | Gas OCGT | Hydro | Imports | Total Supply (MW) |
|---|---|---|---|---|---|---|---|
| 00:00 | 1,200 | 0 | 900 | 0 | -200 (pump) | 400 | ~2,300 |
| 03:00 | 1,200 | 0 | 800 | 0 | -292 (pump) | 350 | ~2,060 |
| 06:00 | 1,200 | 0 | 1,200 | 0 | 0 | 400 | ~2,800 |
| 08:00 | 1,200 | 100 | 2,000 | 0 | 200 | 500 | ~4,000 |
| 12:00 | 1,200 | 300 | 1,800 | 0 | 50 | 400 | ~3,750 |
| 15:00 | 1,200 | 100 | 2,200 | 0 | 100 | 500 | ~4,100 |
| 17:00 | 1,200 | 0 | 2,800 | 200 | 292 | 700 | ~5,190 |
| 18:00 | 1,200 | 0 | 2,600 | 100 | 292 | 600 | ~4,790 |
| 21:00 | 1,200 | 0 | 1,800 | 0 | 100 | 400 | ~3,500 |

*Note: Wind at 1,200 MW represents a moderate-wind day (~24% CF). On a low-wind day, wind drops to 200--500 MW and gas must increase correspondingly. On a high-wind day, wind rises to 2,000--3,000 MW and gas backs off.*

---

## Part 2: Demand Profiles by Hour

### 2.1 Sector-by-Sector Demand Characteristics

Ireland's demand profile is shaped by six distinct sectors, each with a unique daily pattern:

| Sector | Annual (TWh) | Share | Daily Pattern | Seasonal Pattern |
|---|---|---|---|---|
| Data Centres | ~7.0 | 22% | Flat 24/7/365 | Negligible |
| Residential | ~8.4 | 26% | Twin peaks (7--9am, 5--8pm) | Strong winter bias (+40% Q1 vs Q3) |
| Commercial | ~6.5 | 20% | Daytime 8am--7pm | Mild seasonality |
| Industrial | ~6.5--7.0 | 21% | Mostly flat / shift patterns | Low seasonality |
| Transport/EVs | ~0.3--0.4 | 1% | Evening/overnight | Low |
| Agriculture | ~0.7--0.8 | 2% | Early morning + late afternoon | Spring/summer dairy peak |

### 2.2 Stacked Demand Profile -- Typical Winter Weekday

| Hour | Data Centres | Residential | Commercial | Industrial | EVs | Agriculture | **Total (MW)** |
|---|---|---|---|---|---|---|---|
| 00:00 | 1,200 | 400 | 200 | 800 | 50 | 20 | **2,670** |
| 01:00 | 1,200 | 370 | 180 | 800 | 45 | 20 | **2,615** |
| 02:00 | 1,200 | 360 | 160 | 800 | 40 | 25 | **2,585** |
| 03:00 | 1,200 | 350 | 150 | 800 | 40 | 50 | **2,590** |
| 04:00 | 1,200 | 360 | 150 | 800 | 35 | 80 | **2,625** |
| 05:00 | 1,200 | 450 | 160 | 820 | 30 | 120 | **2,780** |
| 06:00 | 1,200 | 600 | 200 | 850 | 30 | 120 | **3,000** |
| 07:00 | 1,200 | 1,000 | 500 | 880 | 25 | 110 | **3,715** |
| 08:00 | 1,200 | 1,200 | 800 | 900 | 20 | 100 | **4,220** |
| 09:00 | 1,200 | 900 | 1,100 | 940 | 20 | 70 | **4,230** |
| 10:00 | 1,200 | 700 | 1,200 | 950 | 20 | 60 | **4,130** |
| 11:00 | 1,200 | 650 | 1,250 | 950 | 20 | 55 | **4,125** |
| 12:00 | 1,200 | 600 | 1,280 | 950 | 20 | 50 | **4,100** |
| 13:00 | 1,200 | 600 | 1,300 | 950 | 20 | 50 | **4,120** |
| 14:00 | 1,200 | 650 | 1,250 | 940 | 20 | 60 | **4,120** |
| 15:00 | 1,200 | 800 | 1,150 | 920 | 25 | 100 | **4,195** |
| 16:00 | 1,200 | 1,000 | 1,100 | 900 | 30 | 120 | **4,350** |
| 17:00 | 1,200 | 1,600 | 1,000 | 870 | 60 | 110 | **4,840** |
| 18:00 | 1,200 | 2,000 | 700 | 850 | 100 | 80 | **4,930** |
| 19:00 | 1,200 | 1,800 | 500 | 850 | 100 | 60 | **4,510** |
| 20:00 | 1,200 | 1,500 | 400 | 830 | 90 | 40 | **4,060** |
| 21:00 | 1,200 | 1,200 | 300 | 800 | 80 | 30 | **3,610** |
| 22:00 | 1,200 | 800 | 250 | 800 | 70 | 25 | **3,145** |
| 23:00 | 1,200 | 600 | 200 | 800 | 60 | 20 | **2,880** |

*Record system peak: 6,024 MW on 8 January 2025 (extreme cold). The profile above shows a typical cold winter day (~4,930 MW peak).*

### 2.3 Stacked Demand Profile -- Typical Summer Weekday

| Hour | Data Centres | Residential | Commercial | Industrial | EVs | Agriculture | **Total (MW)** |
|---|---|---|---|---|---|---|---|
| 00:00 | 1,200 | 250 | 150 | 750 | 40 | 15 | **2,405** |
| 01:00 | 1,200 | 230 | 130 | 750 | 35 | 15 | **2,360** |
| 02:00 | 1,200 | 220 | 120 | 750 | 30 | 15 | **2,335** |
| 03:00 | 1,200 | 210 | 110 | 750 | 30 | 30 | **2,330** |
| 04:00 | 1,200 | 220 | 110 | 750 | 25 | 60 | **2,365** |
| 05:00 | 1,200 | 280 | 120 | 760 | 25 | 100 | **2,485** |
| 06:00 | 1,200 | 350 | 150 | 780 | 20 | 100 | **2,600** |
| 07:00 | 1,200 | 500 | 350 | 800 | 20 | 90 | **2,960** |
| 08:00 | 1,200 | 600 | 650 | 830 | 15 | 80 | **3,375** |
| 09:00 | 1,200 | 500 | 900 | 850 | 15 | 60 | **3,525** |
| 10:00 | 1,200 | 450 | 1,000 | 870 | 15 | 50 | **3,585** |
| 11:00 | 1,200 | 420 | 1,050 | 870 | 15 | 45 | **3,600** |
| 12:00 | 1,200 | 400 | 1,050 | 870 | 15 | 40 | **3,575** |
| 13:00 | 1,200 | 380 | 1,050 | 870 | 15 | 40 | **3,555** |
| 14:00 | 1,200 | 400 | 1,000 | 860 | 15 | 50 | **3,525** |
| 15:00 | 1,200 | 450 | 950 | 840 | 20 | 80 | **3,540** |
| 16:00 | 1,200 | 550 | 900 | 820 | 25 | 100 | **3,595** |
| 17:00 | 1,200 | 700 | 800 | 800 | 40 | 90 | **3,630** |
| 18:00 | 1,200 | 850 | 600 | 780 | 60 | 70 | **3,560** |
| 19:00 | 1,200 | 800 | 450 | 770 | 70 | 50 | **3,340** |
| 20:00 | 1,200 | 700 | 350 | 760 | 60 | 35 | **3,105** |
| 21:00 | 1,200 | 550 | 250 | 750 | 55 | 25 | **2,830** |
| 22:00 | 1,200 | 400 | 200 | 750 | 50 | 20 | **2,620** |
| 23:00 | 1,200 | 300 | 170 | 750 | 45 | 15 | **2,480** |

**Key observations:**
- The demand swing is smaller in summer (~1,300 MW trough-to-peak) versus winter (~2,350 MW trough-to-peak)
- Data centres provide a constant 1,200 MW floor in both seasons -- this is 46% of overnight demand in summer
- The evening peak in summer is flatter and later (18:00--19:00 vs 17:00--18:00 in winter)
- Agriculture adds noticeable early-morning demand during the milking season

---

## Part 3: Net Position and Price Formation

### 3.1 Average Price by Hour -- All Periods

The SEM day-ahead market shows a pronounced and stable daily price curve. Data from 64,670 hourly observations across 2,700 days (Oct 2018 -- Feb 2026):

| Hour | Overall | Winter | Spring | Summer | Autumn | Weekday | Weekend |
|---|---|---|---|---|---|---|---|
| 00:00 | 90.11 | 92.09 | 91.19 | 88.80 | 87.42 | 88.96 | 93.02 |
| 01:00 | 86.49 | 87.44 | 88.23 | 85.71 | 84.34 | 85.85 | 88.10 |
| 02:00 | 82.77 | 81.86 | 84.67 | 83.38 | 81.71 | 82.56 | 83.30 |
| 03:00 | **81.35** | 78.45 | 83.32 | 83.31 | **81.89** | 81.68 | **80.54** |
| 04:00 | 83.22 | **77.98** | 85.46 | 85.43 | 87.92 | 84.86 | 79.07 |
| 05:00 | 91.66 | **81.80** | 93.71 | 95.25 | 103.66 | 95.96 | 80.82 |
| 06:00 | 107.53 | 94.90 | 109.09 | 111.24 | 125.61 | 116.07 | 85.98 |
| 07:00 | 124.49 | 113.06 | 123.86 | 127.24 | 143.89 | 136.11 | 95.16 |
| 08:00 | 127.43 | 124.10 | 125.15 | 124.78 | 141.63 | 137.06 | 103.14 |
| 09:00 | 125.89 | 131.42 | 121.05 | 119.06 | 131.77 | 132.61 | 108.92 |
| 10:00 | 120.37 | 129.39 | 112.35 | 113.90 | 121.23 | 125.35 | 107.80 |
| 11:00 | 116.39 | 125.71 | 107.34 | 110.63 | 116.22 | 120.90 | 105.00 |
| 12:00 | 111.86 | 126.00 | 102.44 | 102.20 | 109.33 | 116.17 | 100.98 |
| 13:00 | 107.56 | 123.59 | 96.90 | 96.32 | 105.18 | 112.02 | 96.31 |
| 14:00 | 107.34 | 122.63 | 95.24 | 96.18 | 107.78 | 112.30 | 94.84 |
| 15:00 | 116.34 | 127.07 | 101.97 | 106.84 | 125.39 | 121.95 | 102.19 |
| 16:00 | 135.76 | 150.48 | 117.05 | 121.25 | 150.01 | 141.45 | 121.43 |
| **17:00** | **155.61** | **181.07** | 137.98 | 129.99 | **167.30** | **161.08** | **141.82** |
| **18:00** | **152.79** | 168.48 | **152.05** | **130.42** | 162.94 | 157.45 | 141.03 |
| 19:00 | 138.56 | 142.95 | 145.86 | 127.39 | 143.63 | 142.30 | 129.11 |
| 20:00 | 125.26 | 125.11 | 127.98 | 124.60 | 124.26 | 127.79 | 118.88 |
| 21:00 | 110.55 | 114.13 | 109.40 | 110.94 | 103.37 | 111.71 | 107.62 |
| 22:00 | 101.65 | 99.70 | 99.81 | 105.15 | 100.84 | 102.53 | 99.44 |
| 23:00 | 96.09 | 99.13 | 95.68 | 95.13 | 91.92 | 97.13 | 93.45 |

*All prices in EUR/MWh. Bold indicates peak/trough hours for each column.*

**Peak and trough summary:**

| Metric | Overall | Winter | Spring | Summer | Autumn |
|---|---|---|---|---|---|
| Peak hour | 17:00 | 17:00 | 18:00 | 18:00 | 17:00 |
| Peak price | 155.61 | 181.07 | 152.05 | 130.42 | 167.30 |
| Trough hour | 03:00 | 04:00 | 03:00 | 03:00 | 03:00 |
| Trough price | 81.35 | 77.98 | 83.32 | 83.31 | 81.89 |
| Peak-to-trough spread | 74.26 | 103.09 | 68.73 | 47.11 | 85.41 |
| Peak-to-trough ratio | 1.91x | 2.32x | 1.82x | 1.57x | 2.04x |

### 3.2 Identifying "Long" and "Short" Hours

**"Long" hours (oversupplied -- below-average prices):**

| Hour Range | Avg. Price | vs. Daily Mean | Characterisation |
|---|---|---|---|
| 01:00--04:00 | 83.46 | -26% | Deep overnight trough -- BESS **charge window** |
| 00:00 | 90.11 | -20% | Late-night wind surplus |
| 05:00 | 91.66 | -18% | Pre-dawn, demand still low |
| 12:00--14:00 | 108.92 | -3% | Emerging midday solar trough |

**"Short" hours (undersupplied -- above-average prices):**

| Hour Range | Avg. Price | vs. Daily Mean | Characterisation |
|---|---|---|---|
| 16:00--19:00 | 145.68 | +30% | Evening peak -- BESS **discharge window** |
| 17:00 | 155.61 | +38% | Absolute peak: highest demand, lowest solar, gas at max |
| 18:00 | 152.79 | +36% | Second peak hour |
| 07:00--09:00 | 125.94 | +12% | Morning ramp -- secondary discharge opportunity |

### 3.3 BESS Charge/Discharge Window Mapping

Using the optimal 4-hour windows from the price analysis:

| Scenario | Charge Window | Avg Charge Price | Discharge Window | Avg Discharge Price | **4h Spread** |
|---|---|---|---|---|---|
| **Overall** | 01:00--04:00 | 83.46 | 16:00--19:00 | 145.68 | **62.22** |
| Winter | 02:00--05:00 | 80.02 | 16:00--19:00 | 160.74 | **80.72** |
| Spring | 01:00--04:00 | 85.42 | 17:00--20:00 | 140.97 | **55.55** |
| Summer | 01:00--04:00 | 84.46 | 17:00--20:00 | 128.10 | **43.64** |
| Autumn | 00:00--03:00 | 83.84 | 16:00--19:00 | 155.97 | **72.13** |
| Weekday | 01:00--04:00 | 83.74 | 16:00--19:00 | 150.57 | **66.83** |
| Weekend | 02:00--05:00 | 80.93 | 16:00--19:00 | 133.35 | **52.41** |
| **Recent (2024--25)** | 01:00--04:00 | 84.05 | 16:00--19:00 | 147.36 | **63.32** |

### 3.4 Residual Demand and Price Formation

Residual demand = Total demand - Wind - Solar. This is the demand that gas (and other dispatchable sources) must fill. Residual demand is the primary driver of the hourly price shape.

From the generation data, daily residual load averaged approximately:
- **High-wind days:** 1,100--1,900 MW residual load (gas barely needed)
- **Normal days:** 2,200--2,800 MW residual load (CCGTs running, setting price)
- **Low-wind days:** 3,000--3,500+ MW residual load (full CCGT fleet + OCGTs, high prices)

**How residual demand maps to price:**

| Residual Demand Level (MW) | Marginal Generator | Typical Price (EUR/MWh) |
|---|---|---|
| <1,000 | Interconnector/renewables | 0--50 |
| 1,000--2,000 | Efficient CCGT (Whitegate) | 80--100 |
| 2,000--3,000 | Mid-merit CCGT | 100--130 |
| 3,000--3,500 | Least-efficient CCGT + imports | 130--200 |
| >3,500 | OCGT / scarcity pricing | 200--500+ |

The evening peak (17:00--19:00) consistently has the highest residual demand because:
1. Total demand peaks (residential evening peak + remaining commercial load)
2. Solar output drops to zero (winter) or near-zero (autumn/spring evenings)
3. Wind provides no additional help on average (no diurnal wind pattern)

The overnight trough (01:00--04:00) has the lowest residual demand because:
1. Total demand is at its minimum (only data centres, industrial baseload, and overnight heating)
2. Any available wind directly reduces residual demand
3. Interconnector flows tend to bring in cheap overnight power from GB

### 3.5 Price Distribution by Hour

The distribution of prices at each hour reveals the volatility structure:

| Hour | Mean | Median | Std Dev | P10 | P90 | % Negative | % >200 |
|---|---|---|---|---|---|---|---|
| 00:00 | 90.11 | 83.05 | 69.26 | 23.75 | 173.00 | 2.63% | 6.57% |
| 03:00 | 81.35 | 76.83 | 65.02 | 16.01 | 155.68 | 4.16% | 5.45% |
| 08:00 | 127.43 | 110.00 | 88.35 | 40.31 | 247.69 | 0.52% | 16.25% |
| 12:00 | 111.86 | 90.86 | 81.18 | 36.02 | 221.40 | 0.30% | 13.14% |
| **17:00** | **155.61** | **130.24** | **100.43** | **51.93** | **298.86** | **0.00%** | **23.78%** |
| **18:00** | **152.79** | **130.89** | **97.18** | **53.00** | **287.70** | **0.00%** | **22.63%** |
| 21:00 | 110.55 | 98.74 | 74.44 | 36.11 | 202.56 | 0.11% | 10.24% |

**Key observations:**
- Hours 17:00--18:00 have **zero negative-price occurrences** across the entire dataset -- there is always demand for power at evening peak
- Hours 17:00--18:00 have prices exceeding 200 EUR/MWh nearly one quarter of the time (24%)
- Hours 02:00--04:00 have negative prices 3.9--4.2% of the time -- free or paid-to-charge opportunities
- The standard deviation at peak hours (97--100 EUR/MWh) is 50% higher than at trough hours (65 EUR/MWh), confirming peak hours are more volatile

---

## Part 4: Wind Variability and Its Impact on Price Profiles

Wind variability is the single most important driver of BESS revenue in the Irish market. Using daily average price as a wind proxy (bottom quartile = "high wind", top quartile = "low wind"), the price profile transforms dramatically.

### 4.1 Price Profiles by Wind Condition

| Hour | High Wind | Normal | Low Wind | Low-Wind Premium |
|---|---|---|---|---|
| 00:00 | 27.22 | 79.66 | 173.59 | +146.37 |
| 01:00 | 24.51 | 76.80 | 167.56 | +143.05 |
| 02:00 | 22.38 | 73.84 | 160.71 | +138.33 |
| 03:00 | 21.46 | 72.63 | 158.40 | +136.94 |
| 04:00 | 22.42 | 74.42 | 161.31 | +138.89 |
| 05:00 | 25.44 | 83.24 | 174.39 | +148.95 |
| 06:00 | 32.47 | 97.35 | 202.58 | +170.11 |
| 07:00 | 40.97 | 110.30 | 235.96 | +195.00 |
| 08:00 | 43.70 | 110.78 | 244.06 | +200.36 |
| 09:00 | 44.49 | 107.31 | 244.02 | +199.53 |
| 10:00 | 42.98 | 101.41 | 235.28 | +192.30 |
| 11:00 | 41.80 | 97.73 | 227.90 | +186.10 |
| 12:00 | 39.68 | 93.17 | 221.04 | +181.36 |
| 13:00 | 37.49 | 89.14 | 214.09 | +176.60 |
| 14:00 | 36.93 | 89.10 | 213.88 | +176.95 |
| 15:00 | 40.25 | 97.57 | 229.60 | +189.35 |
| 16:00 | 49.26 | 117.12 | 259.13 | +209.87 |
| **17:00** | **59.66** | **137.56** | **287.17** | **+227.51** |
| **18:00** | **59.61** | **135.43** | **280.20** | **+220.59** |
| 19:00 | 53.56 | 122.99 | 254.25 | +200.69 |
| 20:00 | 47.40 | 112.08 | 229.10 | +181.70 |
| 21:00 | 41.01 | 98.42 | 204.02 | +163.01 |
| 22:00 | 36.67 | 90.29 | 188.93 | +152.26 |
| 23:00 | 32.45 | 84.47 | 182.91 | +150.46 |

### 4.2 Spread Comparison by Wind Condition

| Metric | High Wind | Normal | Low Wind |
|---|---|---|---|
| Days in sample | 675 | 1,350 | 675 |
| Mean daily price (EUR/MWh) | 38.46 | 98.02 | 214.59 |
| Optimal charge price (01--04) | 22.69 | 74.42 | 162.00 |
| Optimal discharge price (16--19) | 55.52 | 128.28 | 270.19 |
| **4-hour theoretical spread** | **32.83** | **53.85** | **108.19** |
| Spread relative to overall avg | 0.53x | 0.87x | **1.74x** |

**Low-wind days deliver 3.3x the spread of high-wind days.** The spread comparison:

```
Low wind:   |================================================| 108.19 EUR/MWh
Normal:     |==========================|                       53.85 EUR/MWh
High wind:  |================|                                 32.83 EUR/MWh
```

### 4.3 Wind Drought Scenarios

Wind droughts -- consecutive days of very low wind output -- create the most extreme BESS revenue opportunities:

- A "wind drought" in Ireland is typically defined as 3--5+ consecutive days with capacity factors below 10--15%
- From the monthly data, July 2021 stands out with a mean capacity factor of just 9.0% -- the lowest month in the dataset
- During such periods, gas plants run near-continuously, prices stay elevated around the clock, and the daily spread can reach 200--400+ EUR/MWh

From the extreme day analysis, the top 20 highest-spread days had:
- Average daily spread: 411.21 EUR/MWh
- Average charge price (02--05): 101.64 EUR/MWh
- Average discharge price (16--19): 352.19 EUR/MWh
- **Theoretical 4-hour spread: 250.56 EUR/MWh** -- 4.0x the overall average

These extreme days are concentrated in winter months and energy-crisis periods but occur in every year:
- 2021: 5 days in top 20 (Jan and Mar -- cold snaps during gas price surge)
- 2022: 7 days in top 20 (energy crisis peak)
- 2024--2025: 3 days in top 20 (Dec 2024, Jan 2025, Nov 2025 -- demonstrating these events persist post-crisis)

### 4.4 The Wind-BESS Revenue Relationship

The counter-cyclical nature of BESS revenue relative to wind is one of the strongest arguments for BESS in project finance:

| Grid Condition | Wind Revenue | BESS Revenue | System Need |
|---|---|---|---|
| High wind | High output, low prices | Low spread (33 EUR/MWh) -- BUT still positive | Grid needs flexibility to absorb |
| Low wind | Low output, high prices | **High spread (108 EUR/MWh)** | Grid needs capacity and flexibility |
| Normal | Moderate | Moderate spread (54 EUR/MWh) | Balanced |

Even on high-wind days, the BESS spread remains meaningfully positive at 33 EUR/MWh, because overnight prices during wind events can drop to near-zero or negative while daytime demand still creates a modest peak.

---

## Part 5: Seasonal Analysis

### 5.1 Seasonal Spread Variation

The seasonal pattern in BESS economics follows from the interaction of wind availability, solar output, demand level, and daylight hours:

| Season | Charge Price (EUR/MWh) | Discharge Price (EUR/MWh) | **4h Spread** | Spread vs. Annual |
|---|---|---|---|---|
| **Winter** (Dec--Feb) | 80.02 | 160.74 | **80.72** | +30% |
| Spring (Mar--May) | 85.42 | 140.97 | **55.55** | -11% |
| **Summer** (Jun--Aug) | 84.46 | 128.10 | **43.64** | -30% |
| **Autumn** (Sep--Nov) | 83.84 | 155.97 | **72.13** | +16% |
| Annual average | 83.46 | 145.68 | **62.22** | -- |

```
Monthly estimated spread pattern:

  90 |        *
  80 |     *     *                                    *
  70 |  *           *                              *     *
  60 |                 *                        *
  50 |                    *                  *
  40 |                       *     *     *
     +--+--+--+--+--+--+--+--+--+--+--+--
      Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
```

### 5.2 Winter vs Summer -- Supply and Demand Differences

| Factor | Winter | Summer | Impact on Spread |
|---|---|---|---|
| Total demand | 4,500--5,500+ MW peak | 3,300--3,600 MW peak | Winter higher demand = higher peak prices |
| Wind capacity factor | 33--45% | 15--22% | Winter wind is variable but strong; summer is weak |
| Solar output | Minimal (200--400 MW peak, 8 hrs) | Significant (800--1,500 MW, 16 hrs) | Summer solar suppresses midday but not evening |
| Gas running | Full fleet often needed | Mid-merit only in normal conditions | Winter requires more expensive units |
| Peak hour | 17:00 | 18:00 | Summer peak delayed by longer daylight |
| Overnight trough depth | 77--82 EUR/MWh | 83--85 EUR/MWh | Winter overnights slightly cheaper |
| Evening peak height | 168--181 EUR/MWh | 127--130 EUR/MWh | Winter evening peak much higher |
| Daylight at peak | Dark by 16:30 | Light until 21:30 | Winter darkness amplifies heating/lighting load |

### 5.3 Renewable Share by Season

From the generation data (2019--2025 averages):

| Season | Wind CF | Solar Contribution | Total Renewable Share | Gas Share |
|---|---|---|---|---|
| Winter | 35--42% | <2% | ~35--40% | ~40--45% |
| Spring | 25--31% | 3--5% | ~30--35% | ~35--40% |
| Summer | 15--22% | 5--15% | ~25--35% | ~35--45% |
| Autumn | 24--30% | 2--4% | ~28--33% | ~38--43% |

The highest renewable share months tend to be February (high wind + moderate demand) and December (high wind + improving solar base). The lowest renewable share months are typically July--August (low wind, even with good solar).

### 5.4 BESS Revenue Seasonality

Applying the seasonal spreads to a 100 MW / 2-hour BESS (single daily cycle, 85% round-trip efficiency):

| Season | Days | Spread (EUR/MWh) | Gross Revenue per Day | Quarterly Gross Revenue |
|---|---|---|---|---|
| Winter (DJF) | 90 | 80.72 | 13,722 | 1,235,000 |
| Spring (MAM) | 92 | 55.55 | 9,444 | 869,000 |
| Summer (JJA) | 92 | 43.64 | 7,419 | 682,000 |
| Autumn (SON) | 91 | 72.13 | 12,262 | 1,116,000 |
| **Annual** | **365** | **62.22** | **10,577** | **3,902,000** |

*Revenue = Spread x Capacity (MW) x Duration (hrs) x RTE. Example: 80.72 x 100 x 2 x 0.85 = EUR 13,722/day.*

**Winter delivers 1.8x the revenue of summer.** This suggests scheduling maintenance in July--August to minimise revenue loss.

---

## Part 6: Weekend vs Weekday

### 6.1 Price Profiles Compared

| Hour | Weekday | Weekend | Difference |
|---|---|---|---|
| 00:00 | 88.96 | 93.02 | -4.06 |
| 01:00 | 85.85 | 88.10 | -2.25 |
| 02:00 | 82.56 | 83.30 | -0.74 |
| 03:00 | 81.68 | 80.54 | +1.14 |
| 04:00 | 84.86 | 79.07 | +5.79 |
| 05:00 | 95.96 | 80.82 | +15.14 |
| 06:00 | 116.07 | 85.98 | +30.09 |
| 07:00 | 136.11 | 95.16 | +40.95 |
| 08:00 | 137.06 | 103.14 | +33.92 |
| 09:00 | 132.61 | 108.92 | +23.69 |
| 10:00 | 125.35 | 107.80 | +17.55 |
| 11:00 | 120.90 | 105.00 | +15.90 |
| 12:00 | 116.17 | 100.98 | +15.19 |
| 13:00 | 112.02 | 96.31 | +15.71 |
| 14:00 | 112.30 | 94.84 | +17.46 |
| 15:00 | 121.95 | 102.19 | +19.76 |
| 16:00 | 141.45 | 121.43 | +20.02 |
| 17:00 | 161.08 | 141.82 | +19.26 |
| 18:00 | 157.45 | 141.03 | +16.42 |
| 19:00 | 142.30 | 129.11 | +13.19 |
| 20:00 | 127.79 | 118.88 | +8.91 |
| 21:00 | 111.71 | 107.62 | +4.09 |
| 22:00 | 102.53 | 99.44 | +3.09 |
| 23:00 | 97.13 | 93.45 | +3.68 |

### 6.2 Spread Comparison

| Metric | Weekday | Weekend | Difference |
|---|---|---|---|
| Charge price (01--04) | 83.74 | 80.93 | -2.81 |
| Discharge price (16--19) | 150.57 | 133.35 | -17.22 |
| **4h spread** | **66.83** | **52.41** | **-14.42** |
| Spread premium | +28% | baseline | |

**Weekdays deliver ~28% more arbitrage revenue than weekends.** This is driven entirely by higher peak prices on weekdays -- the overnight charge prices are actually similar (weekends are slightly cheaper overnight).

### 6.3 Why Weekdays Are More Valuable

1. **Commercial demand:** ~1,200--1,500 MW of commercial load is present on weekdays but largely absent on weekends, amplifying the morning and midday demand
2. **Industrial shift patterns:** Some industrial sites run reduced weekend schedules
3. **Morning ramp:** The weekday morning ramp is much steeper (85.85 to 136.11 EUR/MWh from 01:00 to 07:00) versus the gradual weekend ramp (88.10 to 95.16 EUR/MWh over the same period)
4. **Compressed peak window:** Weekend demand builds more slowly, reaching peak later (the "lazy morning" effect), reducing the intensity of the evening peak

### 6.4 Combined Seasonal and Day-Type Analysis

| Season + Day Type | Charge Price | Discharge Price | **4h Spread** |
|---|---|---|---|
| **Winter Weekday** | 81.83 | 166.77 | **84.93** |
| Winter Weekend | 74.68 | 145.64 | **70.97** |
| Spring Weekday | 85.30 | 145.43 | **60.13** |
| Spring Weekend | 83.68 | 129.82 | **46.14** |
| Summer Weekday | 85.37 | 131.32 | **45.95** |
| **Summer Weekend** | 81.30 | 120.66 | **39.36** |
| **Autumn Weekday** | 81.14 | 159.84 | **78.70** |
| Autumn Weekend | 88.92 | 145.68 | **56.77** |

The best case (winter weekday, 84.93 EUR/MWh) delivers **2.16x** the spread of the worst case (summer weekend, 39.36 EUR/MWh).

---

## Part 7: Battery Charge/Discharge Mapping

### 7.1 Optimal Charge Window

The charge window is remarkably stable across all conditions:

| Period | Optimal Charge Hours | Avg. Charge Price (EUR/MWh) |
|---|---|---|
| Overall | 01:00--04:00 | 83.46 |
| Winter | 02:00--05:00 | 80.02 |
| Spring | 01:00--04:00 | 85.42 |
| Summer | 01:00--04:00 | 84.46 |
| Autumn | 00:00--03:00 | 83.84 |
| Weekday | 01:00--04:00 | 83.74 |
| Weekend | 02:00--05:00 | 80.93 |
| High wind | 01:00--04:00 | 22.69 |
| Normal wind | 01:00--04:00 | 74.42 |
| Low wind | 01:00--04:00 | 162.00 |

**Consistency across all years:**

| Year | Optimal Charge Window | Optimal Discharge Window | Trough Hour |
|---|---|---|---|
| 2019 | 01:00--04:00 | 16:00--19:00 | 03:00 |
| 2020 | 01:00--04:00 | 16:00--19:00 | 03:00 |
| 2021 | 01:00--04:00 | 16:00--19:00 | 03:00 |
| 2022 | 01:00--04:00 | 16:00--19:00 | 03:00 |
| 2023 | 01:00--04:00 | 16:00--19:00 | 03:00 |
| 2024 | 01:00--04:00 | 16:00--19:00 | 03:00 |
| 2025 | 01:00--04:00 | 16:00--19:00 | 03:00 |

**Seven consecutive years with identical optimal windows.** This is the strongest possible evidence for a fixed-schedule BESS strategy.

### 7.2 Optimal Discharge Window

| Period | Optimal Discharge Hours | Avg. Discharge Price (EUR/MWh) |
|---|---|---|
| Overall | 16:00--19:00 | 145.68 |
| Winter | 16:00--19:00 | 160.74 |
| Spring | 17:00--20:00 | 140.97 |
| Summer | 17:00--20:00 | 128.10 |
| Autumn | 16:00--19:00 | 155.97 |
| Weekday | 16:00--19:00 | 150.57 |
| Weekend | 16:00--19:00 | 133.35 |
| High wind | 16:00--19:00 | 55.52 |
| Normal wind | 16:00--19:00 | 128.28 |
| Low wind | 16:00--19:00 | 270.19 |

Note: In spring and summer, the discharge window shifts one hour later (17:00--20:00) due to longer daylight delaying the demand peak. A smart BESS controller could capture this ~2--5 EUR/MWh improvement by shifting seasonally.

### 7.3 How Wind Conditions Affect the Windows

Wind conditions do not change the *timing* of optimal windows (01--04 charge, 16--19 discharge is universal) but dramatically affect the *value*:

| Wind Condition | Charge Price | Discharge Price | Spread | Revenue Index |
|---|---|---|---|---|
| High wind | 22.69 | 55.52 | 32.83 | 0.53x |
| Normal | 74.42 | 128.28 | 53.85 | 0.87x |
| **Low wind** | **162.00** | **270.19** | **108.19** | **1.74x** |
| Extreme days (top 20) | 101.64 | 352.19 | 250.56 | 4.03x |

The BESS captures value in all wind conditions, but the distribution is heavily skewed:
- 25% of days (high wind): contribute ~17% of annual revenue
- 50% of days (normal): contribute ~44% of annual revenue
- 25% of days (low wind): contribute ~39% of annual revenue
- Top 20 extreme days alone: contribute ~10%+ of annual revenue in a typical year

### 7.4 Potential for a Second Daily Cycle

An emerging opportunity exists for a second BESS cycle, charging during the midday solar surplus and discharging during the evening peak:

**Midday charge window potential (11:00--14:00):**

| Year | Midday Avg Price | Peak Price | Midday-to-Peak Spread | Midday as % of Peak |
|---|---|---|---|---|
| 2019 | 51.99 | 74.77 | 22.78 | 69.5% |
| 2020 | 39.16 | 65.37 | 26.21 | 59.9% |
| 2021 | 141.04 | 197.76 | 56.72 | 71.3% |
| 2022 | 226.22 | 289.60 | 63.38 | 78.1% |
| 2023 | 118.20 | 159.18 | 40.98 | 74.3% |
| 2024 | 104.85 | 149.61 | 44.76 | 70.1% |
| **2025** | **102.01** | **161.44** | **59.43** | **63.2%** |

The midday-to-peak spread has been **growing** as solar penetration increases. In 2025, midday prices fell to just 63.2% of the peak -- the lowest ratio in the dataset. This creates a viable second-cycle opportunity:

**Illustrative second-cycle economics (2025 data, 100 MW / 2h BESS):**
- Midday charge: 102.01 EUR/MWh (average of hours 11--14)
- Evening discharge: 161.44 EUR/MWh (peak hour 18)
- Gross spread: 59.43 EUR/MWh
- Net after RTE losses (85%): 35.21 EUR/MWh
- This would add ~35% to daily revenue on top of the primary overnight-to-evening cycle

**Current constraints on a second cycle:**
- Battery degradation from additional cycling (but LFP chemistry mitigates this)
- The midday charge window is only viable in spring/summer when solar contributes meaningfully
- The spread must exceed the marginal degradation and efficiency costs (~15--20 EUR/MWh)
- By 2030 with 8 GW solar, the midday charge window will be deep and sustained, making the second cycle highly attractive

### 7.5 Revenue Distribution by Hour of Day

For a BESS that could hypothetically arbitrage every hour independently, the value of each hour relative to the daily average is:

| Hour | Price vs. Daily Mean | BESS Action | Contribution to Revenue |
|---|---|---|---|
| 00:00 | -20% | Charge | Low charge cost |
| 01:00 | -23% | **Charge (optimal)** | Lowest charge cost |
| 02:00 | -26% | **Charge (optimal)** | Very low charge cost |
| 03:00 | -28% | **Charge (optimal)** | **Lowest price of day** |
| 04:00 | -26% | **Charge (optimal)** | Low charge cost |
| 05:00 | -18% | Hold | Transition |
| 06:00 | -4% | Hold | Near average |
| 07:00 | +11% | Hold / Secondary discharge | Morning ramp |
| 08:00 | +13% | Hold / Secondary discharge | Morning peak |
| 09:00 | +12% | Hold | Morning plateau |
| 10:00--14:00 | -1% to +7% | Hold / **Midday charge (future)** | Emerging solar trough |
| 15:00 | +4% | Hold | Pre-ramp |
| 16:00 | +21% | **Discharge (optimal)** | Evening ramp begins |
| 17:00 | **+38%** | **Discharge (optimal)** | **Absolute peak** |
| 18:00 | **+36%** | **Discharge (optimal)** | Second-highest price |
| 19:00 | +23% | **Discharge (optimal)** | Evening shoulder |
| 20:00 | +11% | Hold | Declining |
| 21:00 | -2% | Hold | Below average |
| 22:00--23:00 | -10% to -14% | Hold / Pre-charge | Transition to overnight |

---

## Part 8: Emerging Trends

### 8.1 The Duck Curve Is Arriving

Ireland's price profile is developing the characteristic "duck curve" shape seen in markets with high solar penetration. The midday price depression is deepening year by year:

| Year | Midday Avg (EUR/MWh) | Peak Price (EUR/MWh) | Midday as % of Peak | Trend |
|---|---|---|---|---|
| 2019 | 51.99 | 74.77 | 69.5% | Pre-solar baseline |
| 2020 | 39.16 | 65.37 | 59.9% | COVID low demand |
| 2021 | 141.04 | 197.76 | 71.3% | Gas crisis elevates all |
| 2022 | 226.22 | 289.60 | **78.1%** | Energy crisis -- no solar effect |
| 2023 | 118.20 | 159.18 | 74.3% | Solar starting to grow |
| 2024 | 104.85 | 149.61 | 70.1% | 1.2 GW solar -- visible midday dip |
| 2025 | 102.01 | 161.44 | **63.2%** | 2.1 GW solar -- clear duck curve |

**The midday/peak ratio dropped from 78% to 63% in three years (2022--2025).** This 15-percentage-point decline directly reflects the impact of solar capacity growing from ~250 MW to ~2,100 MW.

**Projection to 2030:** At 8 GW solar, midday prices on sunny summer days could regularly approach zero or go negative, while the evening ramp steepens further. The midday-as-%-of-peak ratio could fall to 40--50%, creating spreads of 80--120 EUR/MWh for midday-to-evening arbitrage alone.

### 8.2 Peak Hour Shifting from 17:00 to 18:00

The peak price hour has shifted for the first time in the dataset:

| Year | Peak Hour |
|---|---|
| 2019 | 17:00 |
| 2020 | 17:00 |
| 2021 | 17:00 |
| 2022 | 17:00 |
| 2023 | 17:00 |
| 2024 | 17:00 |
| **2025** | **18:00** |

In 2025, the peak hour moved to 18:00 (161.44 EUR/MWh vs 158.63 at 17:00). This is a small but significant shift, likely driven by:

1. **Growing solar capacity:** Solar output at 17:00 in spring/summer pushes that hour's price down; by 18:00, solar fades
2. **Residential peak timing:** The true residential demand peak is 18:00--19:00 (cooking, heating, lighting after dark)
3. **Interconnector scheduling:** Market participants may be shifting export schedules in response to the evolving price curve

**Implication for BESS:** The 16:00--19:00 discharge window already captures both the old (17:00) and new (18:00) peak. No strategy adjustment is needed, but BESS operators should monitor for further rightward shift toward 19:00--20:00 as solar capacity grows.

### 8.3 Growing Negative Price Frequency

Negative prices are becoming more common, concentrated in overnight hours:

| Hour | % Negative Prices | Absolute Min (EUR/MWh) |
|---|---|---|
| 00:00 | 2.63% | -30.99 |
| 01:00 | 3.15% | -31.25 |
| 02:00 | 3.86% | -31.25 |
| 03:00 | 4.16% | -39.97 |
| 04:00 | 3.90% | -41.09 |
| 05:00 | 3.27% | -33.52 |
| 17:00 | 0.00% | 0.00 |
| 18:00 | 0.00% | 0.00 |

Negative prices at hour 03:00 have reached 4.16% frequency -- meaning approximately 15 nights per year, the BESS would be *paid to charge*. The deepest negative price observed was -41.09 EUR/MWh (hour 04:00).

As wind and solar capacity grow further, negative price frequency is expected to increase significantly:
- **Current (5.1 GW wind, 2.1 GW solar):** ~4% of overnight hours negative
- **2028 (6--7 GW wind, 4--5 GW solar):** Estimated 8--12% of overnight hours negative, plus emerging midday negatives
- **2030 (9 GW wind, 8 GW solar, 5 GW offshore):** Could see 15--25% of overnight hours and 5--15% of midday hours going negative in high-renewable periods

**BESS opportunity:** Negative-price charging effectively adds 30--40 EUR/MWh to the arbitrage spread on those hours (being paid to charge instead of paying). As negative price frequency increases, the value of the charge window increases.

### 8.4 Year-by-Year Spread Evolution

| Year | Mean 4h Spread | Median Spread | Peak-to-Trough Ratio | % Positive Days |
|---|---|---|---|---|
| 2019 | 34.91 | 27.24 | 2.31x | 98.9% |
| 2020 | 33.78 | 25.48 | 3.05x | 96.4% |
| 2021 | 82.22 | 64.62 | 2.09x | 98.9% |
| 2022 | 101.82 | 95.31 | 1.70x | 95.9% |
| 2023 | 57.61 | 46.50 | 1.73x | 98.9% |
| 2024 | 61.54 | 47.39 | 1.90x | 95.9% |
| 2025 | 65.10 | 52.49 | 1.88x | 97.0% |

**Post-crisis "new normal" spreads (2023--2025) are roughly double pre-crisis levels (2019--2020).** The mean spread has stabilised around 57--65 EUR/MWh, driven by:
1. Higher gas prices (TTF ~30--45 EUR/MWh vs pre-crisis ~15--20)
2. Higher carbon prices (ETS ~60--85 EUR/tCO2 vs pre-crisis ~25--30)
3. Growing renewable penetration increasing intra-day variability
4. Rising data centre baseload tightening the supply-demand balance

### 8.5 What 8 GW Solar + 5 GW Offshore Wind Will Do by 2030

Ireland's Climate Action Plan targets for 2030 would transform the price profile:

**Supply-side changes (2025 vs 2030):**

| Source | 2025 | 2030 Target | Change |
|---|---|---|---|
| Onshore wind | 5.1 GW | 9 GW | +76% |
| Offshore wind | ~0 GW | 5 GW | New source |
| Solar | 2.1 GW | 8 GW | +280% |
| Interconnection | 1.5 GW | 2.7+ GW | +80% |
| BESS | 0.5 GW | 4--5 GW (est.) | +800% |

**Expected impact on the 24-hour price profile:**

1. **Overnight (00:00--05:00):** Prices collapse further. With 14 GW of combined wind capacity (onshore + offshore) and strong overnight wind, expect frequent zero or negative pricing. Charge window deepens significantly.

2. **Morning (06:00--09:00):** Offshore wind's higher consistency will provide more reliable morning generation, potentially reducing the morning ramp price spike.

3. **Midday (10:00--15:00):** This is where the biggest change occurs. At 8 GW solar, clear-sky summer midday output could reach 6,000--7,000 MW. Combined with wind, total renewable output could regularly exceed demand, creating a deep midday price trough. Negative midday prices will become frequent.

4. **Evening (16:00--20:00):** The evening peak becomes *even more valuable*. Solar fades to zero, wind may or may not be available, and demand peaks. The remaining gas fleet (still ~3,500 MW) will set very high prices during low-wind evenings. OCGTs and scarcity pricing become more frequent.

5. **Net effect on BESS:**
   - **Primary arbitrage (overnight-to-evening):** Spread likely *increases* as overnight prices fall further while evening peaks remain high or increase
   - **Second cycle (midday-to-evening):** Becomes a core revenue stream in summer months
   - **Total daily revenue potential:** Could increase 30--60% relative to 2025 levels
   - **BUT competition increases:** With 4--5 GW of BESS by 2030, the spread available to each individual battery compresses. Early-mover advantage is significant.

---

## Appendix A: Complete Hourly Price Profiles by Year

| Hour | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 |
|---|---|---|---|---|---|---|---|
| 00:00 | 37.45 | 26.18 | 106.19 | 191.11 | 100.33 | 85.49 | 91.31 |
| 01:00 | 35.04 | 24.30 | 101.74 | 182.27 | 96.25 | 83.32 | 89.65 |
| 02:00 | 33.22 | 22.14 | 96.94 | 173.36 | 92.49 | 80.38 | 87.34 |
| 03:00 | 32.43 | 21.41 | 94.57 | 170.66 | 92.02 | 78.93 | 86.03 |
| 04:00 | 33.65 | 22.65 | 97.44 | 174.04 | 95.12 | 79.80 | 86.99 |
| 05:00 | 37.14 | 25.15 | 107.12 | 189.47 | 105.57 | 88.95 | 97.43 |
| 06:00 | 44.86 | 31.36 | 124.62 | 221.28 | 122.02 | 105.38 | 115.54 |
| 07:00 | 55.85 | 38.65 | 147.64 | 251.68 | 137.21 | 123.44 | 130.97 |
| 08:00 | 58.20 | 41.72 | 154.50 | 255.58 | 138.84 | 125.44 | 130.74 |
| 09:00 | 59.38 | 43.28 | 154.49 | 252.70 | 137.27 | 122.46 | 122.88 |
| 10:00 | 57.34 | 42.31 | 151.34 | 243.84 | 130.94 | 115.63 | 111.35 |
| 11:00 | 56.39 | 41.93 | 150.02 | 236.28 | 124.39 | 110.62 | 104.72 |
| 12:00 | 53.10 | 40.07 | 143.76 | 228.26 | 119.07 | 105.43 | 101.30 |
| 13:00 | 49.78 | 37.64 | 136.42 | 220.47 | 114.70 | 101.29 | 99.70 |
| 14:00 | 48.68 | 36.98 | 133.98 | 219.88 | 114.62 | 102.07 | 102.34 |
| 15:00 | 52.88 | 40.11 | 143.54 | 235.55 | 124.17 | 111.69 | 114.78 |
| 16:00 | 63.07 | 50.54 | 169.72 | 263.49 | 141.01 | 131.91 | 138.38 |
| 17:00 | 74.77 | 65.37 | 197.76 | 289.60 | 159.18 | 149.61 | 158.63 |
| 18:00 | 72.68 | 60.09 | 189.72 | 286.11 | 158.44 | 149.08 | 161.44 |
| 19:00 | 63.44 | 49.64 | 162.35 | 268.41 | 147.68 | 137.99 | 151.96 |
| 20:00 | 54.26 | 42.61 | 142.94 | 248.58 | 135.27 | 127.12 | 138.10 |
| 21:00 | 46.37 | 36.87 | 126.59 | 223.16 | 120.58 | 109.59 | 120.76 |
| 22:00 | 44.18 | 33.03 | 119.03 | 211.73 | 111.47 | 96.71 | 105.08 |
| 23:00 | 40.16 | 29.87 | 113.75 | 202.29 | 106.09 | 91.61 | 97.07 |
| **Peak** | **74.77** | **65.37** | **197.76** | **289.60** | **159.18** | **149.61** | **161.44** |
| **Trough** | **32.43** | **21.41** | **94.57** | **170.66** | **92.02** | **78.93** | **86.03** |
| **Spread** | **42.34** | **43.96** | **103.19** | **118.94** | **67.16** | **70.68** | **75.41** |

## Appendix B: Daily Spread Distribution Statistics

Using fixed windows (charge 01:00--04:00, discharge 16:00--19:00):

| Statistic | Value |
|---|---|
| Mean daily spread | 62.22 EUR/MWh |
| Median daily spread | 46.28 EUR/MWh |
| Standard deviation | 53.83 EUR/MWh |
| P5 | 8.79 EUR/MWh |
| P10 | 14.50 EUR/MWh |
| P25 | 25.55 EUR/MWh |
| P75 | 83.93 EUR/MWh |
| P90 | 134.32 EUR/MWh |
| P95 | 170.43 EUR/MWh |
| Min | -89.99 EUR/MWh |
| Max | 584.09 EUR/MWh |
| Days with positive spread | **97.48%** |
| Days with spread >20 EUR/MWh | **83.08%** |
| Days with spread >50 EUR/MWh | **46.31%** |

## Appendix C: Extreme Day Price Profiles

**Top 5 highest-spread days:**

| Rank | Date | Min Price | Max Price | Daily Spread | Mean Price |
|---|---|---|---|---|---|
| 1 | 2022-03-09 | 65.00 | 705.47 | 640.47 | 408.04 |
| 2 | 2022-03-07 | 127.68 | 636.00 | 508.32 | 408.99 |
| 3 | 2022-03-08 | 0.00 | 489.31 | 489.31 | 217.58 |
| 4 | 2021-01-14 | 53.44 | 500.00 | 446.56 | 123.40 |
| 5 | 2022-04-07 | 64.00 | 500.00 | 436.00 | 226.41 |

On the top 20 highest-spread days, the hourly profile becomes extremely pronounced:
- Charge price (02--05): 101.64 EUR/MWh
- Discharge price (16--19): 352.19 EUR/MWh
- **4h spread: 250.56 EUR/MWh** -- 4.03x the overall average

## Appendix D: Monthly Wind Capacity Factors (2019--2025)

| Month | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 |
|---|---|---|---|---|---|---|---|
| Jan | 24.8% | 34.8% | 28.2% | 28.3% | 33.0% | 31.6% | 28.9% |
| Feb | 40.1% | 49.5% | 44.7% | 47.7% | 33.7% | 35.0% | 42.0% |
| Mar | 30.1% | 35.1% | 28.8% | 26.7% | 31.0% | 34.5% | 26.8% |
| Apr | 25.4% | 17.6% | 20.0% | 24.7% | 25.6% | 26.2% | 21.2% |
| May | 16.9% | 22.6% | 22.2% | 24.3% | 15.5% | 15.2% | 16.1% |
| Jun | 19.6% | 22.3% | 18.2% | 21.4% | 15.3% | 18.2% | 21.8% |
| Jul | 15.2% | 22.4% | 9.0% | 14.9% | 23.9% | 15.8% | 17.8% |
| Aug | 24.6% | 18.5% | 16.3% | 14.4% | 24.2% | 25.0% | 19.5% |
| Sep | 24.6% | 23.0% | 16.1% | 19.1% | 24.4% | 22.3% | 25.5% |
| Oct | 28.9% | 35.0% | 28.2% | 36.8% | 22.8% | 27.9% | 28.9% |
| Nov | 28.1% | 33.4% | 28.7% | 39.5% | 32.2% | 24.9% | 29.6% |
| Dec | 34.9% | 37.9% | 36.9% | 29.3% | 42.6% | 35.7% | 33.4% |
| **Annual** | **26.0%** | **28.9%** | **24.6%** | **26.7%** | **26.8%** | **25.5%** | **25.4%** |

---

## Key Findings for BESS Financial Modelling

1. **The charge/discharge schedule is fixed and proven:** Charge 01:00--04:00, discharge 16:00--19:00, every year since 2019. No need for complex optimisation for the primary cycle.

2. **Post-crisis "new normal" spread of ~63 EUR/MWh is structurally supported:** Higher gas prices, higher carbon prices, and growing renewable penetration all sustain wider spreads than the pre-2021 era.

3. **Revenue reliability is high:** 97.5% of days produce positive arbitrage spreads. Even the P10 day delivers 14.50 EUR/MWh.

4. **Seasonal strategy matters:** Winter (81 EUR/MWh spread) delivers nearly double summer (44 EUR/MWh). Schedule maintenance for July--August.

5. **Weekdays are more valuable:** 67 vs 52 EUR/MWh spread. But weekends still generate meaningful revenue.

6. **Low-wind days are the BESS's best friend:** 108 EUR/MWh spread (3.3x high-wind days). BESS revenue is counter-cyclical to wind -- highest when the grid needs it most.

7. **Extreme days deliver outsized returns:** Top 20 days average 4.0x normal spread (251 EUR/MWh). A BESS that can capture scarcity pricing significantly outperforms fixed-schedule modelling.

8. **The duck curve is emerging and accelerating:** Midday prices fell from 78% to 63% of peak (2022--2025). A second daily cycle (midday charge, evening discharge) is becoming viable and will be a core revenue stream by 2030 at 8 GW solar.

9. **Peak hour shifting to 18:00 (first observed 2025):** The evening peak is moving rightward as solar pushes down late-afternoon prices. The 16:00--19:00 window captures this shift.

10. **Negative price frequency is growing:** 4.2% of hour-03 periods are negative. This will increase significantly with 22+ GW of renewables by 2030, making the overnight charge window even more attractive.

---

*Data sources: SEMOpx Day-Ahead Market hourly prices (64,670 observations, Oct 2018 -- Feb 2026); ENTSO-E/Energy-Charts generation data via Energy-Charts API (2,557 daily observations, 2019--2025); SEAI Energy in Ireland 2025; EirGrid Generation Capacity Statement and Ten Year Adequacy Forecast; CSO Metered Electricity Consumption 2024; Wind Energy Ireland 2025 Annual Report. Full price statistics in `price_profiles_analysis.json`. Full generation data in `generation_by_type.csv` and `generation_mix_annual.csv`.*
