A la hora de fijar estrategias de operación desde el punto de vista de una comercializadora, resulta interesante realizar un seguimiento de los KPIs de la competencia. Existen diferentes tipos de información a seguir: la evolución del número de clientes, los productos que ofrecen, los resultados económicos del año fiscal, o la cantidad de energía física que gestionan. Para realizar el seguimiento de esto último, el operador del sistema publica de forma gratuita un tipo de fichero de granularidad horaria con la cantidad de energía comprada o vendida a lo largo del día. Este tipo de fichero, llamado P48, puede ser obtenido para dos finalidades:
- Analizar la estrategia de compra/venta en las diferentes sesiones del mercado.
- Analizar la evolución de la cantidad de energía total gestionada.
El primero tiene una vocación operacional para arbitrar en los mercados intradiarios, mientras que el segundo tiene vocación de seguimiento de negocio (es decir, no vamos a tomar decisiones inmediatas en función de este tipo de información).
Archivos utilizados
- P48cierre: en formato XML, utilizaré el de cierre, es decir, el de una fecha ya pasada al día en curso. Es descargable desde la API pública de ESIOS y dispone del detalle horario de las Unidades de Programación (UP) para el día seleccionado. La definición ortodoxa es la siguiente: > Programa horario operativo cierre (P48CIERRE): Es el programa de las unidades de programación que queda establecido al finalizar el horizonte diario de programación y que contiene los programas resultantes del Programa Diario Base de Funcionamiento (PDBF), los ajustes de programa diario base de funcionamiento y de las diferentes sesiones del mercado intradiariorealizados en los mercados intradiarios, así como las modificaciones de los programas asociadas a los procesos de resoluciónsolución de restricciones técnicas y a la participación de las diferentes unidades en los servicios de regulación frecuencia-potencia del sistema y en el proceso de gestión de desvíos generación-consumo. Asimismo, incorpora los correspondientes redespachos generados como consecuencia de las declaraciones de indisponibilidad y de la comunicación de desvíos de las unidades de programación.
- Archivo que relaciona UP con sujetos de mercado: en formato csv, descargable también diariamente desde ESIOS.
- Archivo que relaciona sujeto de mercado con la descripción de la empresa o razón social: en formato xlsx, descargable desde OMIE.
- Archivo de festivos: elaborado manualmente con los calendarios oficiales.
Una vez tengo toda esta información, puedo crear una tabla base sobre la que trabajar:
library(tidyverse)
library(data.table)
library(lubridate)
library(kableExtra)
library(readxl)
library(tsibble)
library(feasts)
# Cargamos BBDD de P48
BBDD <- readRDS("/Users/pherreraariza/Documents/P48cierre/BBDD/p48cierreBBDD.rds") # %>% mutate(fecha = ymd(fecha))
# Cargamos archivo de sujetos de mercado y unidades de programación de ESIOS
sujetos <- fread("/Users/pherreraariza/Documents/P48cierre/input/export_unidades-de-programacion.csv")
# Cargamos archivo de sujetos de mercado y empresa de OMIE
empresas <- read_excel("/Users/pherreraariza/Documents/P48cierre/input/LISTA_AGENTES.xlsx")
# Cargamos festivos
festivos <- read_csv2("/Users/pherreraariza/Documents/ModeloESIOS/calendario/festivos.csv", col_types = c("cc")) %>%
mutate(fecha = dmy(fecha)) %>% dplyr::rename(tipo_dia = tipo)
## Using ',' as decimal and '.' as grouping mark. Use read_delim() for more control.
# Generamos tabla completa con P48, sujetos y festivos del año móvil
tabla <- BBDD %>% group_by(UP, tipo, hora, fecha, negocio) %>%
summarise(energia = sum(energia, na.rm = TRUE)) %>%
ungroup %>%
arrange(fecha, hora, UP) %>%
left_join(sujetos, by = c("UP" = "Código de UP")) %>%
left_join(empresas, by = c("Sujeto del Mercado" = "CODIGO OMEL")) %>%
left_join(festivos, by = "fecha") %>%
mutate(weekday = wday(fecha))
tabla$tipo_dia <- if_else(is.na(tabla$tipo_dia) & tabla$weekday %in% c(2,3,4,5,6), "L", "F")
El aspecto de la tabla es el siguiente:
glimpse(tabla)
## Observations: 43,125,312
## Variables: 20
## $ UP <chr> "AAYUC01", "ABA1", "ABA2", "ABO1", "ABO2", …
## $ tipo <chr> "C", "V", "V", "V", "V", "C", "C", "V", "C"…
## $ hora <int> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1…
## $ fecha <date> 2016-01-01, 2016-01-01, 2016-01-01, 2016-0…
## $ negocio <chr> "mercado", "mercado", "mercado", "mercado",…
## $ energia <dbl> 0.2, 0.1, 0.1, 245.0, 424.0, 0.0, 0.0, 168.…
## $ `Descripción corta` <chr> NA, "ABA1", "ABA2", "ABOÑO 1", "ABOÑO 2", "…
## $ `Descripción larga` <chr> NA, "ABARAN", "ABARAN 2", "C.T. ABOÑO 1", "…
## $ `Potencia máxima MW` <chr> NA, "0,3", "0,4", "341,7", "561,8", "0,1", …
## $ `Código EIC` <chr> NA, "18WABA1-123456-K", "18WABA2-123456-A",…
## $ `Tipo de producción` <chr> NA, "Hidráulica UGH", "Hidráulica UGH", "Hu…
## $ Negocio <chr> NA, "Venta", "Venta", "Venta", "Venta", "Co…
## $ `Zona de Regulación` <chr> NA, "SZR", "SZR", "HC", "HC", "SZR", "SZR",…
## $ `Sujeto del Mercado` <chr> NA, "BARER", "BARER", "HC G", "HC G", "ABOU…
## $ `Tipo de UP` <chr> NA, "Generación", "Generación", "Generación…
## $ `CODIGO MINISTERIO` <chr> NA, "BARER", "BARER", "HC G", "HC G", "ABOU…
## $ DESCRIPCIÓN <chr> NA, "BARBO ENERGÍAS RENOVABLES S.A.", "BARB…
## $ `TIPO AGENTE` <chr> NA, "GENERACIÓN", "GENERACIÓN", "GENERACIÓN…
## $ tipo_dia <chr> "F", "F", "F", "F", "F", "F", "F", "F", "F"…
## $ weekday <dbl> 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6…
La variable negocio corresponde con el nodo del XML del P48 llamado TipoNegocio, que puede tomar dos valores: Z21 y Z24. El primero corresponde a energía a mercado y el segundo a bilateral. Sin embargo, el último valor Z24 data del 12 de junio de 2018.
Volúmenes de energía programados: a mercado y bilateral
Una parte de la energía programada no es comprada o vendida en el mercado OMIE, sino transaccionada entre dos unidades que han de declarar el volumen intercambiado comercialmente ante REE a un precio confidencial que únicamente las dos entidades conocen, según contrato establecido.
Por tanto, no puedo saber con el P48 entre qué UP se intercambia la energía, pero sí qué cuota representa y agruparla por tecnologías:
# Genero tabla sumarizada de energía por tipo de negocio
bilaterales <- tabla %>% group_by(negocio, tipo, año = year(fecha)) %>% summarise(energia = sum(energia, na.rm = TRUE))
# Grafico
bilaterales %>% ggplot(aes(x = año, y = energia, fill = tipo)) + geom_bar(stat="identity", position=position_dodge()) + facet_grid(. ~ negocio) + scale_fill_brewer(palette="Paired") + theme_minimal()
# Tabla
dcast(bilaterales, negocio + tipo ~ año, sum) %>% kable() %>% kable_styling(bootstrap_options = c("striped", "hover"))
negocio | tipo | 2016 | 2017 | 2018 | 2019 |
---|---|---|---|---|---|
bilateral | C | 135249412 | 138470639 | 60913914 | 0 |
bilateral | V | 66354537 | 60520886 | 30301600 | 0 |
mercado | C | 133247461 | 134252271 | 207866093 | 157344961 |
mercado | V | 202969371 | 211348069 | 239681494 | 158022624 |
Existe una discontinuidad de los datos a partir de 2018. Tras consultarlo con el servidio digame de REE, parece que debido a la entrada en funcionamiento del Mercado Intradiario Continuo (MIC), el valor que idenficaba los bilaterales se dejo de publicar, pasando a todo a asignarse a mercado (cuando esto es falso, ya que según el I90 que publica OMIE, obviamente sigue programándose energía por bilateales).
Ránking de energía gestionada durante el año móvil
Un primer punto de partida sería analizar las comercializadoras no incumbentes y graficar un ranking de la energía programada. Dicha energía no tiene por qué ser la medida real de sus puntos de suministro, ya que la reducción de la penalización por desvíos entre programa y medida puede venir por estimar correctamente el sentido de los mismos, siendo el operador del sistema el encargado de comprar o vender la energía deficitaria o excedentaria.
La agrupación más sencilla consiste en hacerla por sujeto de mercado, aunque dará lugar a una clasificación con ciertas particularidades, al no contemplar la energía total de un grupo o holding empresarial (caso de Energya VM, por citar algún ejemplo):
# Ranking de comercializadoras no incumbentes por energía total acumulada del año móvil
ranking_comerc_libres_no_incb <- tabla %>% mutate(energia = if_else(tipo == "C", energia, energia * (-1))) %>%
filter(`Tipo de producción` == "Comercializadores mercado libre") %>%
filter(!`Sujeto del Mercado` %in% c("ENDCO", "IBCLI", "GNSE", "GNCO", "NATGA", "VIEE", "HC G", "HCENE")) %>%
filter(fecha >= last(fecha) - years(1)) %>%
group_by(`Sujeto del Mercado`, DESCRIPCIÓN) %>%
summarise(energia = sum(energia, na.rm = TRUE)/1000) %>%
arrange(desc(energia)) %>%
ungroup() %>%
mutate(sujeto = paste0(`Sujeto del Mercado`, " - ", DESCRIPCIÓN)) %>%
select(sujeto, energia)
# Dotplot
ranking_comerc_libres_no_incb %>% top_n(50) %>%
arrange(energia) %>%
mutate(sujeto = factor(sujeto, sujeto)) %>%
ggplot(aes(x = sujeto, y = energia)) +
geom_point(col="orange", size = 1) + # Draw points
geom_segment(aes(x = sujeto,
xend = sujeto,
y = min(energia),
yend = max(energia)),
linetype="dashed",
size=0.1) + # Draw dashed lines
labs(title="Ranking comercializadoras no incumbentes",
subtitle="Energía programada",
caption="source: ESIOS",
y = "GWh",
x = "Sujeto de mercado") +
coord_flip() +
theme_light() +
theme(panel.grid.major.y = element_blank(),
panel.border = element_blank(),
axis.ticks.y = element_blank(),
axis.text=element_text(size=5)) +
scale_y_continuous(labels = scales::comma)
ranking_comerc_libres_no_incb %>% top_n(50) %>% kable() %>% kable_styling(bootstrap_options = c("striped", "hover"))
sujeto | energia |
---|---|
FORTI - FORTIA ENERGIA, S.L. | 9444.4313 |
EGED - ACCIONA GREEN ENERGY DEVELOPMENTS (ACT. COMERCI | 5637.1786 |
FEN - FENIE ENERGIA | 4433.5571 |
CENTE - ENERGYA VM GESTION DE ENERGIA, S.L. | 2963.9502 |
EGLE - AXPO IBERIA, S.L. | 2887.9233 |
NEXU - NEXUS ENERGÍA (ACT. COMERCIALIZACIÓN RE) | 2630.2428 |
ALDRO - ALDRO ENERGIA Y SOLUCIONES S.L | 2523.2997 |
EBLCO - ENGIE ESPAÑA,S.L.U | 2424.1257 |
CHC - CIDE HCENERGIA, S.A | 1389.2193 |
ADXRE - AUDAX RENOVABLES S.A. | 1367.5227 |
GVME - VILLAR MIR ENERGÍA, S.L. | 1271.9766 |
DETIC - CEPSA GAS Y ELECTRICIDAD SAU | 1228.8097 |
CLIDM - CLIDOM ENERGY SL | 1040.3625 |
TGYE - TOTAL GAS Y ELECTRICIDAD ESPANA SAU | 997.5399 |
EPLUS - ENERGÍA DLR COMERCIALIZADORA, S.L. | 980.5602 |
EFG - FACTOR ENERGIA (ACT. GENERACIÓN) | 813.3080 |
AURA - AURA ENERGIA S.L. | 786.5840 |
UNEL - UNIELECTRICA ENERGIA S.A. | 723.4692 |
GESTE - GESTERNOVA, S.A. | 679.8707 |
WATIU - WATIUM SL | 617.5752 |
ALCAN - ALCANZIA ENERGIA S.L. | 617.4447 |
NABAL - NABALIA ENERGIA 2000 S.A. | 573.0443 |
DREUA - FOENER ENERGÍA, S.L. | 550.9967 |
FOX - FOX ENERGIA, S.A. | 539.0906 |
HISPE - ALPIQ ENERGÍA ESPAÑA, S.A.U. | 468.7907 |
INES - INSERIMOS ENERGIA, S.L. | 460.4148 |
INTEG - INTEGRACIÓN EUROPEA DE ENERGIA SAU | 411.0872 |
SOMEN - SOM ENERGIA SCCL | 342.5128 |
EPYM - NA | 335.4472 |
GALP - GALP ENERGÍA ESPAÑA, S.A.U. | 323.0706 |
AME - FACTOR ENERGIA ESPAÑA SAU | 320.1134 |
BECO - BASSOLS ENERGÍA COMERCIAL, S.L. | 304.6548 |
ATLAS - ATLAS ENERGIA COMERCIAL SL | 304.6053 |
ONDEM - ON DEMAND FACILITIES S.L.U. | 302.1352 |
PESL - PETRONIEVES ENERGÍA 1, S.L. | 271.7488 |
RSPRA - RESPIRA ENERGIA, S.A. | 266.3773 |
LIUP - FLIP ENERGÍA SL | 248.9698 |
OPPI - ESTRATEGIAS ELÉCTRICAS INTEGRALES S.A. | 225.0216 |
ECADZ - COMERCIALIZADORA ELECTRICA DE CADIZ, S.A. | 222.4835 |
WMARK - WIND TO MARKET, S.A. | 216.5311 |
SCV - SYDER COMERCIALIZADORA VERDE, S.L. | 213.8656 |
SUNAI - SUNAIR ONE ENERGY S.L. | 209.1763 |
SWAPE - SWAP ENERGIA S.A | 206.1622 |
TERSA - TERSA - TRACTAMENT I SELECCIÓ DE RESIDUS, S.A. | 197.7501 |
ENERG - XENERA COMPAÑIA ELECTRICA S.A. | 175.3929 |
ODF - ENERGIA LIBRE COMERCIALIZADORA SL | 168.7324 |
ACSOL - ACSOL ENERGIA GLOBAL, S.A. | 168.6427 |
ECAL - ELECTRA CALDENSE ENERGIA, S.A. | 166.7788 |
NINOB - NINOBE SERVICIOS ENERGÉTICOS, SL | 163.1070 |
ICGAS - INGENIERIA Y COMER. DEL GAS, S.A. | 160.0444 |
Durante el año móvil (tomado desde el 2 de agosto de 2019) se diferencian varios grupos destacables:
- Fortia, con unca cartera de cerca de 10 TWh/año.
- Acciona y Fenie: con alrededor de 5 TWh/año.
- Energya VM, Axpo, Nexus, Aldro y Engie: alrededor de 3 TWh/año.
- Finalmente una gran cola con una distribución más suave que engloba al resto.
Evolución anual del top 10
Teniendo datos desde 2016, se puede ver la evolución mensual hasta julio de 2019 (incluido) para ver tendencias del top 10 de comercializadoras de mercado libre:
# Selecciono el top 10 del ranking anterior
top10 <- ranking_comerc_libres_no_incb %>% top_n(10) %>% select(sujeto) %>% pull()
# Creo la tabla con el año y mes para cada sujeto
evolucion <- tabla %>% mutate(energia = if_else(tipo == "C", energia, energia * (-1))) %>%
filter(`Tipo de producción` == "Comercializadores mercado libre" & fecha < ymd("2019-08-01")) %>%
group_by(`Sujeto del Mercado`, DESCRIPCIÓN, año = year(fecha), mes = month(fecha)) %>%
summarise(energia = sum(energia, na.rm = TRUE)/1000) %>%
arrange(desc(energia)) %>%
ungroup() %>%
mutate(sujeto = paste0(`Sujeto del Mercado`, " - ", DESCRIPCIÓN),
añomes = ymd(paste(año, mes, "01"))) %>%
filter(sujeto %in% top10) %>%
select(añomes, sujeto, energia)
# Grafico
p <- evolucion %>% ggplot(aes(x = añomes, y = energia, fill = sujeto)) +
geom_area(stat = "identity") + facet_wrap(sujeto ~ ., scales="free_y") +
theme_minimal() +
theme(legend.position="none") #, strip.text.y = element_blank())
p
Existen varias tipologías de tendencias a la vista de los datos en esta selección. Existen comercializadoras, como Fortia, Cide, con una clara estacionalidad de tipo mensual, donde la tendencia es plana. Otras, por otra parte, poseen una estacionalidad muy diluida pero con tendencias muy acentuadas, como Aldro y Fenie. Pero se observa en general que cada una tiene sus propios drivers y su propia evolución.
Estacionalidad
A continuación, para el análisis de las estacionalidad se puede graficar la energía programada para cada año. Al no estar normalizada o escalada, también tiene el efecto de crecimiento neto para cada compañía.
# Convierto tabla 'evolucion' en un time-series para utilizar la función de graficación de la estacionalidad
estacionalidad <- evolucion %>% mutate(indice = yearmonth(añomes)) %>%
as_tsibble(index = indice, key = sujeto) %>%
select(-añomes)
# Grafico
estacionalidad %>% gg_season(energia, labels = "both") +
ylab("GWh") +
ggtitle("Estacionalidad por sujeto")
Existe una estacionalidad variable, desde curvas semiplanas con tendencia lineal positiva, hasta curvas en forma de W, con picos en enero, julio/agosto y diciembre, propias de carteras domésticas.
Curvas de programa operativo por mes y año
Finalmente, se puede visualizar la curva horaria, distinguiendo entre días laborales y festivos + fines de semana. De esta manera se llega a la máxima granularidad a la hora de extraer posibles conclusiones.
# Verifico que hay una única UP para cada entrada de sujeto de mercado de tipo comercializador
top10_UP <- tabla %>% select(`Sujeto del Mercado`, UP, `Tipo de producción`, DESCRIPCIÓN) %>%
filter(`Tipo de producción` == "Comercializadores mercado libre") %>%
mutate(sujeto = paste0(`Sujeto del Mercado`, " - ", DESCRIPCIÓN)) %>%
filter(sujeto %in% top10) %>%
select(sujeto, UP) %>%
distinct()
top10_UP %>% kable() %>% kable_styling(bootstrap_options = c("striped", "hover"))
sujeto | UP |
---|---|
ALDRO - ALDRO ENERGIA Y SOLUCIONES S.L | ALDRC01 |
ADXRE - AUDAX RENOVABLES S.A. | AUDAC01 |
CENTE - ENERGYA VM GESTION DE ENERGIA, S.L. | CENTC01 |
CHC - CIDE HCENERGIA, S.A | CHCC01 |
EBLCO - ENGIE ESPAÑA,S.L.U | EBLCO01 |
EGED - ACCIONA GREEN ENERGY DEVELOPMENTS (ACT. COMERCI | EGEDC01 |
EGLE - AXPO IBERIA, S.L. | EGLEC01 |
FEN - FENIE ENERGIA | FENC01 |
FORTI - FORTIA ENERGIA, S.L. | FORTC01 |
NEXU - NEXUS ENERGÍA (ACT. COMERCIALIZACIÓN RE) | NEXUC01 |
# Tabla de curvas horarias de programa para las UP del top 10
curvas <- tabla %>% mutate(energia = if_else(tipo == "C", energia, energia * (-1))) %>%
filter(UP %in% top10_UP$UP & fecha < ymd("2019-08-01")) %>%
group_by(fecha, UP, hora, tipo_dia) %>%
summarise(energia = sum(energia, na.rm = TRUE))
ALDRO
El primer impacto visual viene dado por el fuerte crecimiento en energía (cartera) que presenta desde el Q4 de 2018, con una curva horaria típica de las tarifas 3.0A, con un pico a mediodía y forma decreciente sin pico nocturno. Además, excepto por los meses de octubre y noviembre de 2018, las curvas son muy estables.
curvas %>% filter(UP == "ALDRC01") %>% ggplot(aes(x=hora, y=energia, group = fecha, color = tipo_dia)) + geom_line(alpha=0.2) + facet_grid(year(fecha) ~ month(fecha)) + ggtitle("ALDRO")
AUDAX
Se observa un perfil de curva típicamente de empresa, bastante estable en general, exceptuando los meses de agosto y diciembre. Al igual que Aldro, hay una clara diferenciación entre festivos y laborables.
curvas %>% filter(UP == "AUDAC01") %>% ggplot(aes(x=hora, y=energia, group = fecha, color = tipo_dia)) + geom_line(alpha=0.2) + facet_grid(year(fecha) ~ month(fecha)) + ggtitle("AUDAX")
ENERGYA VM
Perfil muy parecido al de Audax. La única diferencia aparente radica en la evolución de la altura de la curva.
curvas %>% filter(UP == "CENTC01") %>% ggplot(aes(x=hora, y=energia, group = fecha, color = tipo_dia)) + geom_line(alpha=0.2) + facet_grid(year(fecha) ~ month(fecha)) + ggtitle("ENERGYA VM")
CIDE
Este perfil tiene poca diferenciación entre festivo y laborable, y presenta un doble pico de consumo a lo largo del día, lo que indica que se trata eminentemente de una cartera de tipo doméstico.
curvas %>% filter(UP == "CHCC01") %>% ggplot(aes(x=hora, y=energia, group = fecha, color = tipo_dia)) + geom_line(alpha=0.2) + facet_grid(year(fecha) ~ month(fecha)) + ggtitle("CIDE")
ENGIE
Este perfil es casi plano, con diferenciación entre festivo y laborable acentuado en enero y diciembre durante 2016 y que se va dispersando en los siguientes años. Se trata principalmente de una cartera industrial, con procesos estables, continuos que generan este tipo de curvas.
curvas %>% filter(UP == "EBLCO01") %>% ggplot(aes(x=hora, y=energia, group = fecha, color = tipo_dia)) + geom_line(alpha=0.2) + facet_grid(year(fecha) ~ month(fecha)) + ggtitle("ENGIE")
ACCIONA
Esta unidad es de las que más dispersión presenta, pese a tratarse de una cartera eminentemente industrial como la anterior. La curva deja de ser plana para pasar a incorporar una zona valle con un menor consumo de energía.
curvas %>% filter(UP == "EGEDC01") %>% ggplot(aes(x=hora, y=energia, group = fecha, color = tipo_dia)) + geom_line(alpha=0.2) + facet_grid(year(fecha) ~ month(fecha)) + ggtitle("ACCIONA")
AXPO
Perfil similar a Engie, estable excepto los meses de agosto, donde paran los procesos productivos.
curvas %>% filter(UP == "EGLEC01") %>% ggplot(aes(x=hora, y=energia, group = fecha, color = tipo_dia)) + geom_line(alpha=0.2) + facet_grid(year(fecha) ~ month(fecha)) + ggtitle("AXPO")
FENIE
Fenie presenta uno de los perfiles con más casuísticas: tiene un crecimiento mensual muy acentuado entre 2017 y 2018, para después volver a programar menos energía durante el primer semestre de 2019. Además, la forma de la curva es un mix entre las de doméstico y empresa, donde posiblemente los industriales simplemente eleven o disminuyan la altura de la misma. Llama la atención la dispersión atípica de los meses de enero y febrero, que podría deberse a finalización de contratos de industriales de consumo plano.
curvas %>% filter(UP == "FENC01") %>% ggplot(aes(x=hora, y=energia, group = fecha, color = tipo_dia)) + geom_line(alpha=0.2) + facet_grid(year(fecha) ~ month(fecha)) + ggtitle("FENIE")
FORTIA
Pefil muy marcado con elevado consumo durante las primeras horas de la noche, para bajar casi un 50% después. Llama la atención que durante los festivos se programe más energía que durante los días laborables, a diferencia de lo que se ha visto en el resto de casos.
curvas %>% filter(UP == "FORTC01") %>% ggplot(aes(x=hora, y=energia, group = fecha, color = tipo_dia)) + geom_line(alpha=0.2) + facet_grid(year(fecha) ~ month(fecha)) + ggtitle("FORTIA")
NEXUS
Nexus presenta un perfil de empresa acentuado, muy estable y con poca dispersión, y con clara diferenciación entre festivo y laborable.
curvas %>% filter(UP == "NEXUC01") %>% ggplot(aes(x=hora, y=energia, group = fecha, color = tipo_dia)) + geom_line(alpha=0.2) + facet_grid(year(fecha) ~ month(fecha)) + ggtitle("NEXUS")
Conclusiones
La gran cantidad de datos y formas de visualización hace que sea necesario un dashboard interactivo, ya que un report del tipo presentado aquí apenas araña la superficie del potencial de análisis. Además, dependerá de cada compañía profundizar en los negocios de comercialización o generación, monitorizar las no incumbentes o no, analizar la evolución de los mercados (regulado vs libre), o simplemente seguir a una selección de compañías con distintos fines de benchmark.