---
title: ""

format: 
  html:
    fig-width: 9
    fig-height: 8
    fig-dpi: 300
    embed-resources: TRUE # Entwicklung
    theme: "null" # Entwicklung
    # embed-resources: FALSE # Veröffentlichung
    # theme: none # Veröffentlichung

execute: 
  echo: FALSE
  output: asis
  warning: FALSE
  error: FALSE
---

```{r}
#| label: pakete_und_daten
#| output: false
library(tidyverse)
library(SMChelpR)
library(scales)
library(DT)
library(zoo)
library(plotly)

## wichtige Story-Parameter
storyNo <- 24114
file_name_code  <- "2024_Windausbauszenarien.qmd"

##############################

imagepath <-
  file.path("reports", storyNo)
dir.create(imagepath, showWarnings = FALSE, recursive = TRUE)

## workspace directory in RStudio interaktiv
if(rstudioapi::isAvailable()) {
  setwd(dirname(rstudioapi::getActiveDocumentContext()$path))
}

if(is.na(file_name_code)){stop("Dateiname der qmd nicht gesetzt")}
if(imagepath == file.path("fileadmin", "user_upload", "produkte")){stop("Pfad für Dateien nicht gesetzt")}

file.copy(
  from = file_name_code, 
  to = file.path(imagepath, paste0(file_name_code)), 
  overwrite = TRUE)
```


```{r}
#| label: set-graphic-parameters
#| output: true

options(list(digits = 6, scipen = 999)) # set scientific notation to be off
SMC_theme_ggplot()

caption_MaSta <-
  "Quelle: Marktstammdatenregister, Berechnungen: Science Media Center Germany."
caption_BNetzA <-
  "Quelle: Bundesnetzagentur, Berechnungen: Science Media Center Germany."
caption_MaSta_BNetzA <-
  "Quelle: Marktstammdatenregister, Bundesnetzagentur, Berechnungen: Science Media Center Germany."

if(exists("caption_")){stop("Caption wurde nicht angepasst")}
```



```{r}
#| label: load data

server_url <- "https://data.smclab.io/v1/graphql"

db_prefix <- "data_"

# EinheitenWind
wind_extended <-
  # marktstammdaten_einheiten_wind
  GraphQL_get_table_vec(
    variablen = c(
      "EinheitMastrNummer", # vorher nur MastrNummer?
      "Nettonennleistung",
      "Bundesland",
      "EinheitBetriebsstatus",
      "Inbetriebnahmedatum",
      "Lage",
      "DatumEndgueltigeStilllegung",
      "DatumBeginnVoruebergehendeStilllegung"
    ),
    tabellenname = paste0(db_prefix, "marktstammdaten_einheiten_wind"),
    datenserver = server_url
  ) |> 
  rename(MastrNummer = EinheitMastrNummer) |>
  # marktstammdaten_einheiten_genehmigung
  left_join(
    GraphQL_get_table_vec(
      # permits_units
      tabellenname = paste0(db_prefix, "marktstammdaten_einheiten_genehmigung"),
      variablen = c(
        "VerknuepfteEinheitenMaStRNummer",
        "Frist",
        "Datum",
        "Art"
      ), 
      datenserver = server_url
    ) |> 
      rename(MastrNummer = VerknuepfteEinheitenMaStRNummer, 
             FristGenehmigung = Frist,
             DatumGenehmigung = Datum,
             ArtGenehmigung = Art),
    by = "MastrNummer"
  ) |>
  mutate(
    across(
      c(
        Inbetriebnahmedatum,
        DatumEndgueltigeStilllegung,
        DatumBeginnVoruebergehendeStilllegung,
        FristGenehmigung,
        DatumGenehmigung,
      ),
      as.Date
    ),
    `Nettonennleistung in MW` = Nettonennleistung / 1000
  )|>
filter(Lage == "Windkraft an Land")


# marktstammdaten_tenders_bnetza
BNetzA_Zuschlaege <-
  GraphQL_get_table_vec(
    # Ausschreibungen BNetzA
    tabellenname = paste0(db_prefix, "marktstammdaten_tenders_bnetza"),
    variablen = c(
      "Ausschreibungsdatum_BNetzA",
      "Ausschreibungsnummer_BNetzA",
      "MastrNummer"
    ),
    datenserver = server_url
  ) |>
  # Anlage nur mit dem neuesten Zuschlag zählen
  filter(Ausschreibungsdatum_BNetzA == max(Ausschreibungsdatum_BNetzA),
         .by = MastrNummer)

wind_extended <-
  wind_extended |>
  left_join(
    BNetzA_Zuschlaege,
    by = "MastrNummer"
  ) |>
  mutate(
    Ausschreibungsdatum_BNetzA = as.Date(Ausschreibungsdatum_BNetzA),  
    Auschreibungsmonat = floor_date(Ausschreibungsdatum_BNetzA, "month"),
    Realisierungsdauer_Monate = 
      as.numeric(Inbetriebnahmedatum - Ausschreibungsdatum_BNetzA) / (365 / 12)
  )

## Korrektur Dubletten
# Dubletten <-  read_csv(file.path(imagepath, "dubletten.csv"))
Dubletten <-  read_csv("https://media.sciencemediacenter.de/reports/24114/dubletten.csv")

wind_extended <-
  wind_extended |> 
  filter(!(MastrNummer %in% Dubletten$dublette))

```


```{r}
#| label: Funktion Windkraftausbau abhängig Monatsgewichten
Ausbau_berechnen <-
  function(Monatsgewichte, zukuenftige_Ausschreibungen) {
    Zubau_bisher <-
      wind_extended |>
      filter(EinheitBetriebsstatus != "In Planung") |>
      mutate(Monat = floor_date(Inbetriebnahmedatum, "month")) |>
      summarise(`Zubau in MW` = sum(Nettonennleistung) / 1000,
                .by = c(`Monat`)) |> 
      left_join(
        wind_extended |>
          filter(EinheitBetriebsstatus == "Endgültig stillgelegt") |>
          mutate(Monat = floor_date(DatumEndgueltigeStilllegung, "month")) |>
          summarise(
            `Endgueltige Stilllegung in MW` = sum(Nettonennleistung) / 1000,
            .by = c(`Monat`)
          ), 
        by = "Monat"
      )  |>
      left_join(
        wind_extended |>
          filter(EinheitBetriebsstatus == "Vorübergehend stillgelegt") |>
          mutate(Monat = floor_date(
            DatumBeginnVoruebergehendeStilllegung, "month"
          )) |>
          summarise(
            `Voruebergehende Stilllegung in MW` = sum(Nettonennleistung) / 1000,
            .by = c(`Monat`)
          ), 
        by = "Monat"
      )  |>
      full_join(tibble(Monat = seq.Date(
        floor_date(today(), "year"),
        floor_date(today() + years(3), "year"),
        by = "month"
      )), by = "Monat") |>
      replace_na(
        list(
          `Voruebergehende Stilllegung in MW` = 0,
          `Endgueltige Stilllegung in MW` = 0,
          `Zubau in MW` = 0
        )
      ) |>
      mutate(
        `Endgueltige Stilllegung in MW` = 
          if_else(
          Monat < today(),
          `Endgueltige Stilllegung in MW`,
          600/12 # Erwarteter Rückbau in der Zukunft
        ),
        `Nettonennleistung in MW` = `Zubau in MW` - `Endgueltige Stilllegung in MW` - `Voruebergehende Stilllegung in MW`,
        # `Nettonennleistung in MW` =
        #   if_else(is.na(`Nettonennleistung in MW`), 0, `Nettonennleistung in MW`),
        status = "aktuell gebaut"
      )
    
    Zubau_in_Planung <-
      wind_extended |>
      filter(EinheitBetriebsstatus == "In Planung",
             !is.na(Ausschreibungsdatum_BNetzA)) |> 
      summarise(`Nettonennleistung in MW` = sum(`Nettonennleistung in MW`),
                .by = Ausschreibungsdatum_BNetzA) |>
      arrange(Ausschreibungsdatum_BNetzA) |>
      mutate(status = "aktuell bezuschlagt") |>
      bind_rows(zukuenftige_Ausschreibungen) |>
      expand_grid(Realisierungsdauer_Monate = Monatsgewichte$Realisierungsdauer_Monate) |>
      mutate(`Monat` = Ausschreibungsdatum_BNetzA + months(Realisierungsdauer_Monate)) |>
      filter(`Monat` > today()) |>
      left_join(Monatsgewichte, by = "Realisierungsdauer_Monate") |>
      mutate(Nettonennleistung_Anteil =
               `Nettonennleistung in MW` * Anteil / sum(Anteil),
             .by = Ausschreibungsdatum_BNetzA) |>
      summarise(
        `Nettonennleistung in MW` = sum(Nettonennleistung_Anteil),
        .by = c(`Monat`, status)
      ) |>
      ## füge bisher gebaute ein
      bind_rows(Zubau_bisher) |>
      arrange(`Monat`, status) |>
      mutate(
        `kumulierter Zubau in MW` = round(cumsum(`Nettonennleistung in MW`)),
        `Zubau in MW` = round(`Nettonennleistung in MW`),
        .by = status
      ) |>
      mutate(status = factor(
        status,
        levels = c("zukünftige Ausschreibungen", "aktuell bezuschlagt", "aktuell gebaut")
      ))
    return(Zubau_in_Planung)
  }

```

```{r}
#| label: Funktion Grafik erwarteter Zubau
Ausbau_darstellen <- function(Zubau_in_Planung, filename, title) {
Ausbau_gesamt <- 
  Zubau_in_Planung |> 
  filter(
   Monat >= as.Date("2023-01-01"),
   Monat <= as.Date("2026-12-31")
   ) |> 
  mutate(
    `Installierte Leistung (GW)` = `kumulierter Zubau in MW` / 1000, 
    # Monat = factor(format(Monat, "%b '%y"), levels = unique(format(Monat, "%b '%y")))
    ) %>% 
  summarise(`Installierte Leistung (GW)` = sum(`Installierte Leistung (GW)`), 
            .by = Monat)

ausbauziel_Jahre <- c(2025,2027)
ausbauziel_Wert <- c(69, 84)


tmp <- 
  Zubau_in_Planung |> 
  filter(
   Monat >= as.Date("2023-01-01"),
   Monat <= as.Date("2026-12-31")
   ) |> 
  mutate(
    `Installierte Leistung (GW)` = `kumulierter Zubau in MW` / 1000,
    # Monat = factor(format(Monat, "%b '%y"), levels = unique(format(Monat, "%b '%y"))),
    Status = status
  ) |>
  write_csv(
    file.path(imagepath, paste0(filename, ".csv"))
  ) |>
  ggplot(
    aes(
      x = Monat,
      y = `Installierte Leistung (GW)`,
      fill = Status,
      text = paste0(status, ": ", `Installierte Leistung (GW)`, " GW")
    )
  ) + 
  geom_vline(xintercept = as.numeric(as.Date(paste0(ausbauziel_Jahre, "-01-15"))-months(1)), linetype = 2, color = "lightgrey") +
  geom_col(
    data = Ausbau_gesamt,
    aes(
      x = Monat,
      y = `Installierte Leistung (GW)`,
      text = paste0("Gesamt: ", `Installierte Leistung (GW)`, " GW")
    ), inherit.aes = FALSE) +
  geom_col() +
  theme(
    axis.text.x = element_text(
      angle = 45,
      hjust = 1
    )
  ) + 
  coord_cartesian(ylim = c(58, 89))  +
  scale_y_continuous(breaks = seq(50, 100, 5), expand = c(0.01,0.01)) + 
  scale_x_date(date_breaks = "3 months", date_labels = "%b '%y") +
  labs(title = title, 
       x = "") + 
  geom_hline(yintercept = ausbauziel_Wert, linetype = 2) + 
  annotate(
    geom = "text",
    x = as.Date("2023-06-01"),
    y = ausbauziel_Wert - 1.5,
    label = paste0("Ziel ", ausbauziel_Jahre-1, ": ", ausbauziel_Wert, " GW"),
    hjust = 0,
    size = 4.2
  )


return (tmp)
}
```



::: m-news-single__ce

## Wie steht es um den Ausbau der Windenergie an Land?

* Gesamtleistung der genehmigten Windkraftanlagen steigt weiter an
* Realisierungsdauer vieler im Jahr 2022 genehmigter Windräder ist länger als erwartet
* Datenreport zeigt: Ausbauziele für 2024 und 2026 trotz optimistischer Annahmen wahrscheinlich nicht zu erreichen

Der Ausbau der Windenergie an Land kommt offenbar langsam in Gang; das Ergebnis der jüngsten Ausschreibung 2024 zur Förderung der Windenergie stimmte die Bundesnetzagentur  [optimistisch](https://www.bundesnetzagentur.de/SharedDocs/Pressemitteilungen/DE/2024/20240703_Onshore_Inno.html){target="_blank"}. Trotzdem werden die im Erneuerbaren Energien Gesetz (EEG) vorgesehenen [Ausbauziele](https://www.gesetze-im-internet.de/eeg_2014/__4.html){target="_blank"} für 2024  (69 Gigawatt -- GW -- installierte Leistung) und für 2026 (84 GW) unter den derzeitigen Bedingungen verfehlt. Das zeigt unser Report auf Basis der Marktstammdaten. 
Von einem Erfolg wie beim Ausbau der Photovoltaik, deren Ausbauziel für 2024 bereits [übertroffen](https://www.bundesregierung.de/breg-de/aktuelles/ausbau-erneuerbare-energien-2225808){target="_blank"} 
wurde, ist die Windenergie noch weit entfernt. 


### Ausschreibungen und Realisierungsdauer

Bis zur Inbetriebnahme durchläuft eine Windenergieanlage (WEA) verschiedene Schritte. Zunächst muss die geplante Anlage von der zuständigen Behörde genehmigt werden. Soll es über das EEG mit einer Marktprämie gefördert werden, müssen sich die Projektierer danach mit einem Gebot an einer Ausschreibung der Bundesnetzagentur beteiligen. Bekommt das Gebot einen Zuschlag, ist klar, wie die WEA  gefördert wird, sie kann in Bau gehen. Zwischen diesem Zuschlag und der Inbetriebnahme (Realisierungsdauer) dürfen in der Regel nicht mehr als [36 Monate](https://www.gesetze-im-internet.de/eeg_2014/__36e.html) vergehen. Mehr zum Verfahren im Report [Das Wind-Ausbauziel für 2024](https://www.sciencemediacenter.de/alle-angebote/data-report/details/news/das-wind-ausbauziel-fuer-2024/){target="_blank"}.

<p align="center">
  <img src="https://media.sciencemediacenter.de/reports/24114/schaubild_wka_prozess.svg" />
</p>




### Leistung der genehmigten Windkraftanlagen gestiegen

Dem Marktstammdatenregister zufolge (*Stand: 28. August 2024*) wurden im ersten Halbjahr 2024 geplante WEA mit gut 5600 Megawatt (MW) Leistung genehmigt. Das ist deutlich mehr als im ersten Halbjahr 2023 (etwa 3300 MW). Die Zahl der genehmigten Anlagen für das dritte Quartal ist darin noch nicht enthalten, weil das Quartal noch nicht abgeschlossen ist. Für den Windenergieausbau der kommenden Jahre ist das eine gute Nachricht. Denn bislang blieben die  [Ausschreibungen der Bundesnetzagentur](https://www.bundesnetzagentur.de/DE/Fachthemen/ElektrizitaetundGas/Ausschreibungen/Wind_Onshore/BeendeteAusschreibungen/start.html){target="_blank"} oft unter den gesetzlich vorgeschriebenen Mengen, weil gar nicht genügend genehmigte Windenergieprojekte vorlagen. Der eigentlich vorgesehene Ausbau kann daher nicht erfolgen. 


```{r}
#| label: Gesamtleistung der genehmigten Windkraftanlagen

wind_extended |> 
  filter(!is.na(DatumGenehmigung)) |>
  filter(DatumGenehmigung < as.Date("2024-07-01")) |> # 2024 3. Quartal noch nicht beendet, daher unvollständig
  mutate(Genehmigung = floor_date(DatumGenehmigung, "quarter"),
         Genehmigung = paste0(year(Genehmigung), " ", floor(month(Genehmigung)/3)+1, ". Quartal")) |> 
  summarise(`Gesamtleistung in MW` = round(sum(`Nettonennleistung in MW`)), 
            `Anzahl Anlagen` = n_distinct(MastrNummer), .by = Genehmigung) |> 
  arrange(desc(Genehmigung)) |> 
  datatable(rownames = FALSE)
```

#### Anmerkung 

Im Halbjahresbericht zum Windenergieausbau der [Deutschen Windguard](https://www.windguard.de/Statistik-1-Halbjahr-2024.html?file=files/cto_layout/img/unternehmen/windenergiestatistik/2024/Halbjahr/Status%20des%20Windenergieausbaus%20an%20Land_Halbjahr%202024.pdf){target="_blank"} sind für das erste Halbjahr 2024 neu genehmigte WEA mit einer Leistung von nur 4772 Megawatt aufgeführt. Das lässt sich durch eine abweichende Methodik erklären: Wenn sich neue Rahmenbedingungen für eine Windenergieanlage ergeben, die bereits genehmigt, aber noch nicht gebaut wurde, ist teilweise eine neue Genehmigung des gleichen Projektes nötig. In den Daten des Marktstammdatenregisters wird die Anlage im Quartal der jüngsten Genehmigung aufgeführt, die Windguard zeigt sie zum Zeitpunkt der ersten Genehmigung. 


### Können die Ausbauziele bis 2026 erreicht werden?

Um abschätzen zu können, inwiefern die Ausbauziele für die kommenden Jahre realistisch erreicht werden können, zeigt dieser Report zwei verschiedene Szenarien. 

#### Basisszenario 2024 bis 2026

Für 2024 nimmt das Basisszenario die von der Bundesnetzagentur bereits geplanten Ausschreibungsmengen an. Zum Gebotstermin 1. August 2024 wurden laut [ Bundesnetzagentur](https://www.bundesnetzagentur.de/DE/Fachthemen/ElektrizitaetundGas/Ausschreibungen/start.html){target="_blank"} 2708 Megawatt ausgeschrieben, für den November-Termin sind 4094 Megawatt geplant. Das sind insgesamt mehr als die ursprünglich geplanten 5000 Megawatt, aber weniger, als gesetzlich vorgesehen. [Leistungen aus dem Vorjahr](https://www.gesetze-im-internet.de/eeg_2014/__28.html){target="_blank"}, die [nicht vergeben werden](https://www.bundesnetzagentur.de/DE/Fachthemen/ElektrizitaetundGas/Ausschreibungen/Wind_Onshore/BeendeteAusschreibungen/start.html){target="_blank"} konnten, werden im folgenden Jahr erneut angeboten. Daher hat die Bundesnetzagentur die ursprünglich gesetzlich vorgesehene Menge für 2024 von 10 auf 14,8 Gigawatt erhöht.\
Für die beiden folgenden Jahre stützt sich das Szenario auf den im EEG vorgeschriebenen Pfad. Danach sollen jedes Jahr vier Ausschreibungen mit je 2500 Megawatt stattfinden. Wegen der beschriebenen Regelung können die tatsächlichen Werte jedoch auch nach oben abweichen. 

Um zu berechnen, wann die bezuschlagten Windräder voraussichtlich fertiggestellt werden, arbeitet das Modell mit einer Verteilung der Realisierungsdauer der Vergangenheit. Dazu werden alle Zuschläge der BNetzA seit der zweiten Ausschreibung 2019 verwendet. Realisierungsdauern länger als 36 Monate benötigen eine Ausnahmegenehmigung, Realisierungsdauern jenseits der 40 Monate werden nicht berücksichtigt. Die daraus resultierende Verteilung ist etwas zu optimistisch, da gerade die Inbetriebnahmen der Anlagen mit langer Realisierungsdauer für jüngere Ausschreibungsrunden noch in der Zukunft liegen und so nicht berücksichtigt werden können.

Auch die weiteren Annahmen des Modells sind optimistisch: 

* Erstens geht das Modell davon aus, dass es für alle Ausschreibungsrunden genug Gebote gibt, um die volle Leistung zu bezuschlagen. Das war in der Vergangenheit selten der Fall.

* Zweitens wird die stillgelegte Leistung konservativ geschätzt. Im Jahr 2023 wurden 569 Megawatt stillgelegt. Für die Zukunft geht das Modell von jährlich 600 Megawatt stillgelegter Leistung aus, der tatsächliche Wert kann aber durchaus höher liegen. Die bisherigen Stilllegungen in diesem Jahr lassen beispielsweise erwarten, dass der Wert für 2024 übertroffen wird.

Dass die Annahmen des Modells optimistisch gewählt sind, zeigt sich auch in der Grafik: Das Wachstum der installierten Leistung würde sich laut Modell ab September 2024 stark beschleunigen.

Die Grafik zeigt für jeden Monat bis Ende 2027 die Gesamtleistung der Windkraftanlagen, die laut Szenario in Betrieb sein werden (Höhe der Säulen). Die Farbgebung veranschaulicht den Status dieser WEA im August 2024: den Anteil der bereits gebauten (blau), der bereits bezuschlagten (grün) und der erst nach August 2024 überhaupt erst ausgeschriebenen Leistung (rot).

```{r}
#| label: Berechnung_Rueckbau
#| output: false

wind_extended %>% 
  filter(EinheitBetriebsstatus == "Endgültig stillgelegt") %>% 
  filter(DatumEndgueltigeStilllegung >= as.Date("2010-01-01")) %>% 
  mutate(Jahr = floor_date(DatumEndgueltigeStilllegung, "year")) %>% 
      summarise(
    `Endgueltige Stilllegung in MW` = sum(Nettonennleistung) / 1000, .by = Jahr) |> 
  arrange(Jahr)
  
```

```{r}
#| label: Grafik erwarteter Zubau
filename <- "Basisszenario"

Monatsgewichte <-
  wind_extended |>
  mutate(Realisierungsdauer_Monate = as.integer(round(Realisierungsdauer_Monate))) |> 
  filter(
    !is.na(Realisierungsdauer_Monate),
    Realisierungsdauer_Monate > 0,
    Realisierungsdauer_Monate <= 40
  )  |>
  summarise(Leistung = sum(`Nettonennleistung in MW`), .by = Realisierungsdauer_Monate) |>  # Anteil Leistung
  arrange(Realisierungsdauer_Monate) |>
  mutate(Anteil = Leistung / sum(Leistung), 
         Verteilung = cumsum(Anteil))


zukuenftige_Ausschreibungen <-
  ### Hier zukuenftige Ausschreibungsdaten einfuegen
  tibble(
    Ausschreibungsdatum_BNetzA = as.Date(
      c(
        "2024-08-01",
        "2024-11-01",
        "2025-02-01",
        "2025-05-01",
        "2025-08-01",
        "2025-11-01",
        "2026-02-01",
        "2026-05-01",
        "2026-08-01",
        "2026-11-01"
      )
    ),
    `Nettonennleistung in MW` = c(2708, 4094, 2500, 2500, 2500, 2500, 2500, 5000, 2500, 2500),
    status = "zukünftige Ausschreibungen"
  )


Zubau_in_Planung <- Ausbau_berechnen(Monatsgewichte = Monatsgewichte, zukuenftige_Ausschreibungen)

tmp <- Ausbau_darstellen(Zubau_in_Planung = Zubau_in_Planung, filename = filename, title = "Installierte Leistung im Basisszenario") 


ggplotly_SMC(tmp, tooltip=c("text")) |>
  plotly::layout(
    legend = list(y = -0.35),
    xaxis = list(ticks = 'inside', hoverformat = "%b '%y"),
    hovermode = "x unified") |> 
  plotly::style(tmp, hoverinfo = "skip", traces = 0:1) |> # exclude vertical lines from hover
  plotly::style(tmp, hoverinfo = "skip", traces = 6:7)  # exclude horizontal lines from hover
  

tmp |>
  image_helper(filename,
               imagepath,
               plotly = TRUE,
               caption = caption_MaSta)
```

Trotz der optimistischen Annahmen werden die gesetzlich vorgesehenen Ausbauziele in diesem Szenario für 2024 und 2026 verfehlt: 2024 fehlen rund 5 Gigawatt installierte Leistung, 2026 immerhin noch 3 Gigawatt. Immerhin würde aber unter den gewählten Annahmen die Lücke zum Ausbauziel kleiner. 

#### Szenario bei verdoppelter Zuschlagsmenge

Dass es fast unmöglich ist, die Ausbauziele für 2024 und 2026 zu erreichen, zeigt das zweite, noch optimistischere Szenario. Selbst unter der Annahme, dass ab 2025 bei jeder Ausschreibung statt 2500 Megawatt die doppelte Menge bezuschlagt werden könnte -- zum Beispiel, wenn Genehmigungen weiter erleichtert, oder der Ausbaupfad erhöht würden -- könnte das Ziel für 2026 nur knapp erreicht werden. Dies verdeutlicht noch einmal, dass die Bestrebungen, die Zuschlagsmengen zu erhöhen, erst mit Verzögerung wirken können.

```{r}
#| label: Doppelte Genehmigungsmenge
filename <- "Doppelte_Genehmigungsmenge"

zukuenftige_Ausschreibungen <-
  ### Hier zukuenftige Ausschreibungsdaten einfuegen
  tibble(
    Ausschreibungsdatum_BNetzA = as.Date(
      c(
        "2024-08-01",
        "2024-11-01",
        "2025-02-01",
        "2025-05-01",
        "2025-08-01",
        "2025-11-01",
        "2026-02-01",
        "2026-05-01",
        "2026-08-01",
        "2026-11-01"
      )
    ),
    `Nettonennleistung in MW` = c(2708, 4094, 5000, 5000, 5000, 5000, 5000, 5000, 5000, 5000),
    status = "zukünftige Ausschreibungen"
  )


Zubau_in_Planung <- Ausbau_berechnen(Monatsgewichte = Monatsgewichte, zukuenftige_Ausschreibungen)

tmp <- Ausbau_darstellen(Zubau_in_Planung = Zubau_in_Planung, filename = filename, title = "Installierte Leistung bei verdoppelten \nZuschlagsmengen") 


ggplotly_SMC(tmp, tooltip=c("text"), mehrzeiliger_titel = TRUE) |>
  plotly::layout(
    legend = list(y = -0.475),
    xaxis = list(ticks = 'inside', hoverformat = "%b '%y"),
    hovermode = "x unified") |> 
  plotly::style(tmp, hoverinfo = "skip", traces = 0:1) |> # exclude vertical lines from hover
  plotly::style(tmp, hoverinfo = "skip", traces = 6:7)  # exclude horizontal lines from hover
  

tmp |>
  image_helper(filename,
               imagepath,
               plotly = TRUE,
               caption = caption_MaSta)
```


#### Realisierungsdauer der Windkraftanlagen 

Um den Ausbau zu beschleunigen, müsste auch die Realisierungsdauer -- der Zeitraum zwischen Zuschlag und Inbetriebnahme -- verkürzt werden. 

Seit 2022 ist hier jedoch eher ein gegenläufiger Trend zu beobachten: 
Aus der Verteilung der Realisierungsdauer der zurückliegenden Jahre lässt sich berechnen, wie viele bezuschlagte WKA der jeweiligen Ausschreibungsrunden heute eigentlich in Betrieb sein müssten. Insbesondere bei den ersten drei Ausschreibungen aus dem Jahr 2022 wurden jedoch bislang erheblich weniger Anlagen gebaut, als eigentlich erwartbar gewesen wären -- die Realisierungsdauer hat sich also verlängert. 

Von den 784 Megawatt, die am 01.09.2022 einen Zuschlag erhalten haben, wurden beispielsweise erst 37,8 Prozent gebaut - obwohl ein Bau von 72 Prozent der Leistung zum jetzigen Zeitpunkt erwartbar gewesen wäre. 


```{r}
#| label: Nennleistung nach Ausschreibungsdatum
wind_extended |> 
  filter(!is.na(Ausschreibungsdatum_BNetzA)) |> 
  mutate(`Nicht gebaute Leistung in MW` = if_else(EinheitBetriebsstatus == "In Planung", `Nettonennleistung in MW`, 0)) |> 
rename(`Ausschreibungs-\ndatum` = Ausschreibungsdatum_BNetzA ) |> 
  summarise(`Bezuschlagt (MW)` = round(sum(`Nettonennleistung in MW`), 1), 
            `Noch nicht gebaut(MW)` = round(sum(`Nicht gebaute Leistung in MW`), 1),
            `Anzahl Anlagen` = n_distinct(MastrNummer),
            `Anzahl Anlagen nicht gebaut` = n_distinct(MastrNummer[EinheitBetriebsstatus == "In Planung"]),
            .by = `Ausschreibungs-\ndatum`) |> 
  mutate(`Gebaut (%)` = round((1 - `Noch nicht gebaut(MW)` / `Bezuschlagt (MW)`) * 100, digits = 1), 
         Realisierungsdauer_Monate = round(as.numeric(today() - `Ausschreibungs-\ndatum`)/30)) |>
  left_join(
    Monatsgewichte, by = "Realisierungsdauer_Monate"
  ) |> 
  mutate(`Erwarteter Anteil gebaut (%)` = if_else(is.na(Verteilung), 100, round((Verteilung) * 100)),
         `Differenz zur Erwartung (%)` = round(`Gebaut (%)` - `Erwarteter Anteil gebaut (%)`)) |> 
  select(`Ausschreibungs-\ndatum`, `Bezuschlagt (MW)`, `Gebaut (%)`, `Erwarteter Anteil gebaut (%)`, `Differenz zur Erwartung (%)`) |>
  arrange(desc(`Ausschreibungs-\ndatum`)) |> 
  datatable(
    options = list(
      pageLength = 15
    ),
    rownames = FALSE
    ) |> 
  formatStyle(
  'Ausschreibungs-\ndatum',
  target = 'row',
  fontWeight = 
styleInterval(as.Date(c("2021-12-31", "2022-11-30")), c('normal', 'bold', 'normal'))
  # fontWeight = styleEqual(c(0, 1), c('bold', 'normal'))
)
  

# prozentual noch nicht gebaut
```

Die Deutsche Windguard legte im Juli 2024 auf einer Pressekonferenz dar, die Gründe dafür lägen unter anderem in den Wetterbedingungen im Frühling. Im April gab es demnach wegen starken Windes technische Probleme auf den Baustellen. Außerdem habe die Sperrung der Autobahn A27 zeitweise dazu geführt, dass kein Transport von Windrädern von Cuxhaven ins Landesinnere möglich war.

Da beide dargestellten Szenarien aber mit der Verteilung der Realisierungsdauer aus der Vergangenheit rechnen, sind die angenommenen Werte der installierten Leistung für die kommenden Monate vermutlich zu hoch. Ob die Windkraftanlagen aus den Ausschreibungen von 2022 nun zeitnah gebaut werden und ein Aufholeffekt eintritt, muss sich noch zeigen. 


### Datengrundlage und Code

Das Modell zur Berechnung des zu erwartenden Windkraftausbaus basiert auf einer Auswertung des
[Marktstammdatenregisters](https://www.marktstammdatenregister.de/MaStR){target="_blank"}
und den [Ausschreibungsergebnissen](https://www.bundesnetzagentur.de/DE/Fachthemen/ElektrizitaetundGas/Ausschreibungen/Wind_Onshore/BeendeteAusschreibungen/start.html){target="_blank"} der Bundesnetzagentur. 
Das Marktstammdatenregister ist eine von der Bundesnetzagentur geführte Datenbank zur Erfassung und Verwaltung von Informationen über alle Akteure und Anlagen im deutschen Strom- und Gasmarkt. Die Einträge erfolgen dabei von den Akteuren und Anlagenbetreibern in Eigenverantwortung selbst. Da den Akteuren Fristen zum Eintragen gewährt werden, kann die Zahl der genehmigten oder in-Betrieb-gegangenen WEA im MStR geringfügig von der Wirklichkeit abweichen. Die Ausschreibungsergebnisse sind auf der [Seite der Bundesnetzagentur](https://www.bundesnetzagentur.de/DE/Fachthemen/ElektrizitaetundGas/Ausschreibungen/Wind_Onshore/BeendeteAusschreibungen/start.html){target="_blank"} als .csv verfügbar. Für die Berechnungen wurde versucht, Duplikate im Marktstammdatenregister zu bereinigen.
Weitere Methodenbeschreibungen finden sich auch im Data Report [Das Wind-Ausbauziel für 2024](https://www.sciencemediacenter.de/alle-angebote/data-report/details/news/das-wind-ausbauziel-fuer-2024/){target="_blank"}.

Den Code für diesen Data Report stellen wir [hier]( `r file.path(imagepath, paste0(today(), "_", file_name_code))` ){target="_blank"} zur Verfügung.
Die [Liste der Dubletten]( `r file.path(imagepath, "dubletten.csv")` ){target="_blank"} und das Schaubild zum [Prozess der Windkraftanlagenbaus]( `r file.path(imagepath, "schaubild_wka_prozess.svg")` ){target="_blank"} sind ebenfalls verfügbar.
Neben Standard R-Paketen wird ein eigenes Paket verwendet, das [hier](https://github.com/sciencemediacenter/SMChelpR){target="_blank"} bereitgestellt wird.


### Ihre Ansprechpersonen in Redaktion und SMC Lab

Wenn Sie Fragen zu diesen Daten haben oder weitere Auswertungen erhalten wollen, kann das SMC Lab Auswertungen erzeugen.


*Redaktion*\
Sönke Gäthke, Redakteur für Energie und Mobilität\
Veronika Fritz, Redakteurin für Energie und Mobilität\
[redaktion\@sciencemediacenter.de](mailto:redaktion@sciencemediacenter.de){.email}

*Datenauswertung*\
Simon Essink\
Lars Koppers\
[lab\@sciencemediacenter.de](mailto:lab@sciencemediacenter.de){.email}


Telefon: +49 221 8888 25-0\
E-Mail Inhalt: [redaktion\@sciencemediacenter.de](mailto:redaktion@sciencemediacenter.de){.email}\
E-Mail Datenauswertung: [lab\@sciencemediacenter.de](mailto:lab@sciencemediacenter.de){.email}
:::

```{r}
#| label: Code speichern
#| output: false
# dir.create(file.path(imagepath, "libs"), showWarnings = FALSE, recursive = TRUE)
file_name_code_without_ext <- tools::file_path_sans_ext(file_name_code)
file.copy(
  from = file.path(paste0(file_name_code_without_ext, "_files"), "libs"), 
  to = file.path(imagepath), 
  recursive = TRUE,
  overwrite = TRUE)
```

