SUMÁRIO
  1. A pergunta
  2. Por que um índice — e não centavos por kWh
  3. Fontes de dados
  4. A bridge metodológica pré-1996
  5. Marcadores históricos
  6. Código: leitura e merge dos dados
  7. Código: gráfico
  8. Como reproduzir
  9. Limitações e ressalvas
  10. Pontos frágeis desta demonstração

1. A pergunta

Como o preço residencial real da eletricidade no Reino Unido se comportou desde a privatização de 1990, e como esse comportamento se relaciona com a penetração crescente de solar e eólica na matriz? Privatização, mecanismos de subsídio (RO, CfD), saída do carvão, choque do gás de 2022 — todos os grandes pontos da história entram no mesmo gráfico, contra a curva de quanto da geração é solar mais eólica.

2. Por que um índice — e não centavos por kWh

Os outros dois plots desta série (Califórnia e Alemanha) trazem o eixo vertical em ct/kWh real — preço nominal de fato cobrado da residência, deflacionado pelo CPI do país. Para o Reino Unido a unidade é diferente: componente eletricidade do CPI da ONS, em termos reais, base 2010=100. Não é dinheiro — é número-índice.

A escolha foi deliberada. O Reino Unido publica, via DESNZ, uma tabela chamada "Historical electricity data since 1920" que reúne o sub-índice de eletricidade do CPI já em termos reais — a deflação está feita por dentro pela própria ONS. É a série mais longa, mais limpa e mais consistente metodologicamente que existe para o país. A alternativa seria juntar várias tabelas de pence/kWh nominais (Tables 211, 214, 221, 224, 231, 234) ao longo de quebras de metodologia entre Ofgem, BEIS e DESNZ, depois deflacionar manualmente — esforço grande para um resultado pior.

O leitor deve ler o eixo Y como "o quanto a residência britânica gasta com eletricidade hoje, em poder de compra constante, comparado com 2010". Conceitualmente é a mesma coisa que o ct/kWh real dos outros plots — só está apresentado em outra unidade.

3. Fontes de dados

Preço (índice real): Department for Energy Security and Net Zero (DESNZ), Historical electricity data since 1920, planilha "Electricity Prices", coluna "Electricity component of the consumer prices index in real terms, 2010=100". gov.uk/government/statistical-data-sets/historical-electricity-data
Participação na geração: Our World in Data, "Share of electricity generation by source", para Reino Unido. Compilação de Ember + Energy Institute Statistical Review of World Energy. ourworldindata.org/grapher/share-electricity-solar e share-electricity-wind

Os arquivos consumidos pelo script estão em Energy/Costs/data/:

  • uk_electricity_cpi_real.csv — preço real, formato (year, cpi_electricity_real_2010_100)
  • owid_share_solar.csv — share solar para todos os países (filtrado para "United Kingdom")
  • owid_share_wind.csv — share eólico, idem

4. A bridge metodológica pré-1996

Há um degrau visível na série entre 1995 e 1996. Ele não é um movimento de preço — é a transição da ONS entre o método antigo de construção do CPI e o método mais moderno alinhado ao HICP europeu. O índice antes e depois da transição não é estritamente comparável: a base, os itens da cesta e a forma de agregar mudaram.

No gráfico, o segmento pré-1996 aparece em linha tracejada com marcadores ocos e o intervalo é sombreado em cinza claro. É uma marcação visual para o leitor: a continuidade aparente é visual, não estatística. As inferências sobre tendência devem partir de 1996 em diante.

5. Marcadores históricos

Quatro eventos ancoram a leitura política do gráfico. Cada um aparece como linha vertical fina, com legenda em itálico ao lado.

AnoMarcadorO que foi
1990PrivatisationElectricity Act de 1989 — separação de geração, transmissão, distribuição e venda; criação do pool e dos primeiros agentes privados.
2002RO schemeRenewables Obligation — fornecedores obrigados a comprar uma fração crescente de eletricidade renovável certificada (ROCs).
2013EMR / CfDElectricity Market Reform introduz Contracts for Difference — Estado garante preço fixo a usinas renováveis (e a Hinkley Point C).
2022Gas crisisChoque do gás natural após a invasão da Ucrânia — preço de atacado explode e atinge a tarifa residencial via price cap da Ofgem.

6. Código: leitura e merge dos dados

Script completo em Energy/Costs/scripts/build_uk_price.py. Trecho essencial:

from pathlib import Path
import pandas as pd

HERE = Path(__file__).parent
ROOT = HERE.parent
DATA = ROOT / "data"

def load() -> pd.DataFrame:
    price = pd.read_csv(DATA / "uk_electricity_cpi_real.csv")

    solar = pd.read_csv(DATA / "owid_share_solar.csv")
    solar = solar[solar["Entity"] == "United Kingdom"].rename(
        columns={"Year": "year", "Solar": "solar_pct"}
    )[["year", "solar_pct"]]

    wind = pd.read_csv(DATA / "owid_share_wind.csv")
    wind = wind[wind["Entity"] == "United Kingdom"].rename(
        columns={"Year": "year", "Wind": "wind_pct"}
    )[["year", "wind_pct"]]

    df = price.merge(solar, on="year", how="left").merge(wind, on="year", how="left")
    df["solar_pct"] = df["solar_pct"].fillna(0)
    df["wind_pct"]  = df["wind_pct"].fillna(0)
    return df

O how="left" preserva todos os anos do índice DESNZ. Para anos antes da existência de geração solar/eólica relevante, o fillna(0) substitui o NaN — não havia geração mensurável, então zero é a leitura correta.

7. Código: gráfico

import matplotlib.pyplot as plt

PLOTS = ROOT / "plots"
STYLE = ROOT.parent.parent / "vintage.mplstyle"

def save_plot(df: pd.DataFrame) -> None:
    plt.style.use(str(STYLE))
    fig, ax1 = plt.subplots(figsize=(10, 6))

    pre    = df[df["year"] <  1996]
    post   = df[df["year"] >= 1996]
    bridge = df[(df["year"] >= 1995) & (df["year"] <= 1996)]

    # Pos-1996: linha solida, marcadores cheios
    l_price, = ax1.plot(post["year"], post["cpi_electricity_real_2010_100"],
                        linestyle="-",  linewidth=1.6, color="black",
                        marker="o", markersize=3.5,
                        label="Price index (real, 2010=100)")
    # Pre-1996: linha tracejada, marcadores ocos
    ax1.plot(pre["year"], pre["cpi_electricity_real_2010_100"],
             linestyle="--", linewidth=1.0, color="black",
             marker="o", markersize=3.0, markerfacecolor="white")
    # Bridge 1995-1996: tracejado conector
    ax1.plot(bridge["year"], bridge["cpi_electricity_real_2010_100"],
             linestyle="--", linewidth=1.0, color="black")

    ax1.set_ylabel("Electricity CPI component (real, 2010=100)")
    ax1.set_xlabel("Year")
    ax1.set_ylim(60, 220)

    ax2 = ax1.twinx()
    l_solar, = ax2.plot(df["year"], df["solar_pct"],
                        linestyle="--", linewidth=1.2, color="black",
                        label="Solar share of generation")
    l_wind,  = ax2.plot(df["year"], df["wind_pct"],
                        linestyle=":",  linewidth=1.4, color="black",
                        label="Wind share of generation")
    ax2.set_ylabel("Share of electricity generation (%)")
    ax2.set_ylim(bottom=0)
    ax2.spines["right"].set_visible(True)

    # Sombreamento do periodo pre-bridge
    ax1.axvspan(1990, 1996, color="black", alpha=0.04, zorder=0)
    ax1.text(1993, 62, "CPI methodology bridge (pre-1996)",
             fontsize=7.5, ha="center", va="bottom",
             style="italic", alpha=0.7)

    markers = [
        (1990, "Privatisation (1990)", 155),
        (2002, "RO scheme (2002)",     213),
        (2013, "EMR / CfD (2013)",     213),
        (2022, "Gas crisis (2022)",    213),
    ]
    for year, label, y in markers:
        ax1.axvline(year, color="black", linewidth=0.5,
                    linestyle="-", alpha=0.4)
        ax1.text(year, y, f" {label}",
                 fontsize=8, va="top", ha="left", style="italic")

    ax1.legend([l_price, l_solar, l_wind],
               [l.get_label() for l in (l_price, l_solar, l_wind)],
               loc="upper left", bbox_to_anchor=(0.0, 1.0),
               frameon=False, fontsize=9)

    ax1.set_title(
        "United Kingdom — real residential electricity price vs renewable share",
        loc="left", fontweight="bold"
    )

    fig.savefig(PLOTS / "uk_price_vs_renewables.png",
                dpi=300, bbox_inches="tight")
    plt.close(fig)
Reino Unido: preço real vs renováveis — resultado esperado
Resultado esperado. O índice cai bruscamente entre 1990 e 1995 (período da privatização e do barateamento via combustíveis fósseis), atinge o vale por volta de 2003, e começa a subir continuamente conforme RO e depois CfD entram em vigor. O choque de 2022 leva o índice ao valor mais alto da série — quase o dobro do vale de 2003 em termos reais.

8. Como reproduzir

# Pre-requisitos
pip install pandas matplotlib

# Estrutura esperada
Plotter/
+-- vintage.mplstyle
+-- Energy/
    +-- Costs/
        +-- scripts/
        |   +-- build_uk_price.py
        +-- data/
        |   +-- uk_electricity_cpi_real.csv
        |   +-- owid_share_solar.csv
        |   +-- owid_share_wind.csv
        +-- plots/

# Executar
cd Plotter/Energy/Costs
python scripts/build_uk_price.py

# Saidas geradas:
#   data/uk_electricity_real_prices.csv   (consolidado)
#   plots/uk_price_vs_renewables.png

9. Limitações e ressalvas

  • Índice, não preço. O eixo Y compara o poder de compra exigido pela conta de luz, não centavos por kWh. Para conversões em valor absoluto, é preciso ancorar o índice em uma tarifa de um ano específico — escolha que envolve decidir se a tarifa é com ou sem standing charge, com ou sem desconto sazonal etc.
  • Apenas residencial. O CPI-eletricidade da ONS reflete a cesta do consumidor doméstico. A indústria britânica paga preços bem distintos, com grandes consumidores tendo contratos bilaterais que escapam do CPI.
  • Geração ≠ consumo. O eixo direito mostra share de geração interna do Reino Unido. O país importa eletricidade da França e dos Países Baixos via interconectores; a participação solar+eólica da eletricidade efetivamente consumida na ilha é ligeiramente diferente.
  • Solar britânica é pequena por motivos físicos. Latitude alta + nebulosidade dão a fazendas solares no Reino Unido fatores de capacidade da ordem de 10-12% (contra 22-25% na Espanha, 27-30% no Texas). A baixa participação solar no gráfico não é falta de subsídio — é geografia.

10. Pontos frágeis desta demonstração

Três pontos da metodologia merecem ser explicitados antes de tomar o gráfico como veredito.

10.1 A bridge pré-1996 é uma fronteira de dados, não de preço

O degrau entre 1995 e 1996 não corresponde a nada que tenha acontecido no mercado britânico — é a ONS trocando o método de construção do CPI. Conclusões sobre tendência devem começar em 1996. O segmento anterior está plotado em tracejado com marcadores ocos exatamente para alertar visualmente o leitor.

10.2 Privatização de 1990 reorganizou a cadeia de preço

Em 1990 o Reino Unido desmontou a CEGB e dividiu a cadeia em geração, transmissão, distribuição e suprimento — quatro mercados distintos com regras próprias. O preço residencial pré-1990 vinha de uma estatal verticalmente integrada; o preço pós-1990 emerge de um pool atacadista, contratos bilaterais e margens regulamentadas. Comparar o ponto de 1990 com o de 1995 é tecnicamente possível, mas o leitor está comparando duas máquinas diferentes — apenas o sub-índice CPI as torna numericamente comparáveis, não a estrutura econômica subjacente.

10.3 O price cap da Ofgem distorce o pico de 2022

Desde 2019 a Ofgem impõe um teto trimestral à tarifa residencial padrão variável. Em 2022 o teto foi rasgado de fato: o governo britânico passou a subsidiar diretamente a diferença entre o preço de atacado (explosivo, por causa do gás) e o que a residência vê na fatura (Energy Price Guarantee, outubro de 2022). Ou seja, o pico de 2022 no gráfico é o que chegou ao consumidor depois do amortecedor estatal — sem o EPG, o índice teria subido bem mais. Em 2023 o subsídio foi sendo retirado, e a queda visível da série tem componente de remoção de proteção, não só de queda de preço de atacado.

Tem uma sugestão melhor? Se você consegue refinar essa metodologia — substituir o índice por uma série em pence/kWh continuamente reconciliada, incorporar consumo (não geração), ou propor outra forma de marcar a transição metodológica de 1996 — escreva para statisticsreal1@gmail.com. Críticas técnicas são exatamente o que esta seção espera receber.