virtualdj / pun_sensor

Prezzi PUN del mese - Home Assistant Integration
MIT License
78 stars 13 forks source link

PSV #9

Closed jumping2000 closed 6 months ago

jumping2000 commented 1 year ago

Ciao ho visto le tue varie risposte sul PSV. Mi domandavo se aveva senso prendere, in una ipotetica versione PSV di questo custom, i dati scaricando il file giornaliero da: https://www.mercatoelettrico.org/It/download/DownloadDati.aspx?val=MGPGAS_SintesiScambio

Da quello che ho capito la definizione di PSV dovrebbe essere questa: Il valore dell’Indice PSV, quindi il prezzo del gas che si scambia sulla Borsa Italiana, e più nello specifico il PSVDA_MM, è ottenuto semplicemente come media aritmetica dei prezzi giornalieri che si sono formati all’ingrosso su tale mercato nell’arco di un mese solare, espressi in €/MWh.

Che ne pensi? Il dubbio che ho potrebbe essere che in realtà molti gestori usano ICIS PSV day-ahead ma di cui non trovo nessun report giornaliero.

https://www.qualenergia.it/articoli/nuovo-metodo-definizione-prezzo-gas-bolletta/ https://www.abbassalebollette.it/glossario/psv/ https://www.sorgenia.it/guida-energia/psv-gas-andamento-prezzo-e-regolamento https://blog.yem-energy.com/it/formule-di-indicizzazione-gas-quali-sono-e-come-sceglierle

virtualdj commented 1 year ago

Scusa ma non sono molto "preparato" sul gas... in realtà neppure sull'energia elettrica, ma lì almeno si trova documentazione e soprattutto si può fare la comparazione con le tariffe pubblicate ad esempio da A2A che corrispondono tutte esattamente coi dati calcolati dagli XML, esclusa la fascia F23 che rimane per me un mistero (e che infatti non ho inserito nell'add-on).

Se scarico il file giornaliero dal link che hai pubblicato (grazie!) non mi è proprio chiaro quale campo di questi utilizzare per la media:

<negoziazione_continua>
    <DataSessione>20230601</DataSessione>
    <NomeProdotto>MGP-2023-06-02</NomeProdotto>
    <PrimoPrezzo>26</PrimoPrezzo>
    <UltimoPrezzo>23.75</UltimoPrezzo>
    <PrezzoMassimo>26</PrezzoMassimo>
    <PrezzoMinimo>23.35</PrezzoMinimo>
    <PrezzoMedio>23.724525</PrezzoMedio>
    <PrezzoControllo>29.379</PrezzoControllo>
    <Volumi>173040</Volumi>
    <PosizioniAperte>142080</PosizioniAperte>
    <Abbinamenti>211</Abbinamenti>
  </negoziazione_continua>

Qual è quello corretto? PrezzoMedio o UltimoPrezzo? Se guardi poi per ogni giorno ce ne sono più di uno di questi nodi, ad esempio per il giorno 01/06/2023:

  <negoziazione_continua>
    <DataSessione>20230601</DataSessione>
    <NomeProdotto>MGP-2023-06-02</NomeProdotto>
    <PrimoPrezzo>26</PrimoPrezzo>
    <UltimoPrezzo>23.75</UltimoPrezzo>
    <PrezzoMassimo>26</PrezzoMassimo>
    <PrezzoMinimo>23.35</PrezzoMinimo>
    <PrezzoMedio>23.724525</PrezzoMedio>
    <PrezzoControllo>29.379</PrezzoControllo>
    <Volumi>173040</Volumi>
    <PosizioniAperte>142080</PosizioniAperte>
    <Abbinamenti>211</Abbinamenti>
  </negoziazione_continua>
  <negoziazione_continua>
    <DataSessione>20230601</DataSessione>
    <NomeProdotto>MGP-2023-06-03</NomeProdotto>
    <PrimoPrezzo>21.9</PrimoPrezzo>
    <UltimoPrezzo>21.9</UltimoPrezzo>
    <PrezzoMassimo>21.9</PrezzoMassimo>
    <PrezzoMinimo>21.9</PrezzoMinimo>
    <PrezzoMedio>21.9</PrezzoMedio>
    <PrezzoControllo>29.379</PrezzoControllo>
    <Volumi>48</Volumi>
    <PosizioniAperte>48</PosizioniAperte>
    <Abbinamenti>1</Abbinamenti>
  </negoziazione_continua>
  <negoziazione_continua>
    <DataSessione>20230601</DataSessione>
    <NomeProdotto>MGP-2023-06-04</NomeProdotto>
    <PrimoPrezzo>11.01</PrimoPrezzo>
    <UltimoPrezzo>11.01</UltimoPrezzo>
    <PrezzoMassimo>11.01</PrezzoMassimo>
    <PrezzoMinimo>11.01</PrezzoMinimo>
    <PrezzoMedio>11.01</PrezzoMedio>
    <PrezzoControllo>29.379</PrezzoControllo>
    <Volumi>48</Volumi>
    <PosizioniAperte>48</PosizioniAperte>
    <Abbinamenti>1</Abbinamenti>
  </negoziazione_continua>
  <negoziazione_continua>
    <DataSessione>20230601</DataSessione>
    <NomeProdotto>WE-2023-22</NomeProdotto>
    <PrimoPrezzo>23.15</PrimoPrezzo>
    <UltimoPrezzo>23</UltimoPrezzo>
    <PrezzoMassimo>23.15</PrezzoMassimo>
    <PrezzoMinimo>21.2</PrezzoMinimo>
    <PrezzoMedio>22.032907</PrezzoMedio>
    <PrezzoControllo>29.379</PrezzoControllo>
    <Volumi>57312</Volumi>
    <PosizioniAperte>56064</PosizioniAperte>
    <Abbinamenti>55</Abbinamenti>
  </negoziazione_continua>

perciò anche qui come si fa? La media di ciascuno?

Scrivere il codice non penso sia un problema, dovrebbe essere piuttosto simile all'altro. Ma mi servirebbe quantomeno che qualcuno mi indicasse l'algoritmo, per così dire.

jumping2000 commented 1 year ago

Ciao in realtà neanche io sono preparato sul gas e il problema è anche che si trovano poche informazioni, cmq quello che ho capito io guardando anche le bollette è:

1 il PSV usato dalle bollette sembra essere ICIS PSV Day-Ahead ma non ho trovato modo di recuperare il dato da ICIS, e non so se è uguale al PSV "italiano" 2 l'indice Psbil_buy G è pubblicato qui: https://www.mercatoelettrico.org/It/esiti/MGS/EsitiPrezzoSbilanciamento.aspx e questo si avvicina al PSV ma non è il PSV. 3 per quanto riguarda il PSV "italiano" potrebbe essere questo: https://www.mercatoelettrico.org/It/Esiti/MGP-GAS/EsitiGasMGP.aspx ma non ne ho certezza e neppure ho certezza di quale sia il file XML esatto da recuperare, potrebbe essere quello nel link che ti ho dato l'altro giorno.

Detto ciò, la mia ide era quella di scrivere al GME sperando che rispondano in merito al punto 3. Potremmo sentirci tra qualche giorno se ci sono più certezze. Ciao

Gianpi

virtualdj commented 1 year ago

neppure ho certezza di quale sia il file XML esatto da recuperare

Anche se fosse quello, dobbiamo però capire quali campi di esso si devono utilizzare per il calcolo. E non è affatto chiaro!

Potremmo sentirci tra qualche giorno se ci sono più certezze

Va bene!

jumping2000 commented 1 year ago

Ciao, ho fatto alcuni approfondimenti "on-line" su varie pubblicazioni e sito GME (ai quali ho scritto una mail, chissà se rispondono), ecco alcune evidenze e le conclusioni che ho tratto:

1) Il Mercato del giorno prima del gas (MGP-GAS) è la sede di negoziazione delle offerte di acquisto e vendita di gas per i “tre giorni-gas” successivi a quello in cui si apre la sessione di negoziazione. Sul MGP-GAS possono operare tutti gli operatori abilitati ad effettuare transazioni sul Punto Virtuale di Scambio (PSV), un hub virtuale gestito da Snam Rete Gas

2) Mercato del giorno prima del gas  (MGP-GAS) - Sede di negoziazione delle Offerte di acquisto e vendita di gas per i tre giorni-gas successivi a quello in cui si apre la Sessione di negoziazione. Su MGP-GAS possono operare tutti gli operatori abilitati ad effettuare transazioni sul Punto Virtuale di Scambio (PSV). Il MGP-GAS si svolge secondo le modalità della Negoziazione continua.

Quindi un possibile algoritmo potrebbe essere:

1) al giorno X (mattina presto?) scarico file xml giorno X-1 (da https://www.mercatoelettrico.org/It/download/DownloadDati.aspx?val=MGPGAS_SintesiScambio).

2) prendo, "ultimo prezzo" relativo al giorno X, il motivo è che i giorni X+1 e X+2 hanno volumi e posizioni poco significativi, ultimo prezzo perchè è il prezzo di chiusura:

    <DataSessione>X-1</DataSessione>
    <NomeProdotto>MGP- X </NomeProdotto>
    <UltimoPrezzo>YY</UltimoPrezzo>
virtualdj commented 1 year ago

Facciamo un esempio: oggi è il 27/06/2023 (X), richiedo quello di ieri 26/06/2023 (X-1) e il risultato è questo:

  <negoziazione_continua>
    <DataSessione>20230626</DataSessione>
    <NomeProdotto>MGP-2023-06-27</NomeProdotto>
    <PrimoPrezzo>37</PrimoPrezzo>
    <UltimoPrezzo>36.2</UltimoPrezzo>
    <PrezzoMassimo>38</PrezzoMassimo>
    <PrezzoMinimo>35.1</PrezzoMinimo>
    <PrezzoMedio>36.280386</PrezzoMedio>
    <PrezzoControllo>36.623</PrezzoControllo>
    <Volumi>139920</Volumi>
    <PosizioniAperte>111336</PosizioniAperte>
    <Abbinamenti>189</Abbinamenti>
  </negoziazione_continua>
  <negoziazione_continua>
    <DataSessione>20230626</DataSessione>
    <NomeProdotto>MGP-2023-06-28</NomeProdotto>
    <PrezzoControllo>37.562</PrezzoControllo>
    <PosizioniAperte>0</PosizioniAperte>
    <Abbinamenti>0</Abbinamenti>
  </negoziazione_continua>
  <negoziazione_continua>
    <DataSessione>20230626</DataSessione>
    <NomeProdotto>MGP-2023-06-29</NomeProdotto>
    <PrezzoControllo>37.562</PrezzoControllo>
    <PosizioniAperte>0</PosizioniAperte>
    <Abbinamenti>0</Abbinamenti>
  </negoziazione_continua>

Dovrò quindi estrarre <UltimoPrezzo>36.2</UltimoPrezzo> e poi fare la media di tutti i giorni precedenti dello stessso mese per ottenere il prezzo attuale del gas in €/mc?

jumping2000 commented 1 year ago

si mi sembra l'unica cosa possibile dalle poche info reperite. poi spero che il GME risponda.

virtualdj commented 1 year ago

Allora se sei d'accordo quando ho un attimo (ma lasciami un po' di giorni perché ora ho altre cose più urgenti) provo a buttare giù il codice. Poi ti lascerò il link a una branch qui, così lo testi e poi mi dici se può andare bene.

virtualdj commented 1 year ago

Allora ho buttato giù uno script di prova e, come immaginavo, i calcoli non tornano... Trovi lo script da eseguire in Python qui: https://gist.github.com/virtualdj/e5ffea98f79b92c51b310e409e1982b8

Io ho provato a verificare i dati di maggio 2023, scaricando lo ZIP tra le date 30/04/2023 e 30/05/2023 (essendo che dentro i prezzi sono del giorno dopo).

Eseguendo lo script risulta:

2023-05-01 = 0.4062433183664742 €/Smc
... tagliato ...
2023-05-31 = 0.30895873423134484 €/Smc
PSV = 0.372775 €/Smc

che non corrisponde con il valore in tabella disponibile ad esempio qui (0.364547 €/Smc). Idee?

kisjeth commented 1 year ago

Questo link può servire? È come quello del PUN ma riferito al PSV, sempre di A2A

https://www.a2aenergia.eu/assistenza/tutela-cliente/indici/indice-psv

kisjeth commented 1 year ago

Io uso questa configurazione per il PUN

  - resource: https://www.a2aenergia.eu/assistenza/tutela-cliente/indici/indice-pun
    sensor:
      - name: PUN
        value_template: "{{ (value | replace (',', '.'))| float(default=0)}}"
        select: "td"
        index: 0

  - resource: https://www.a2aenergia.eu/assistenza/tutela-cliente/indici/indice-pun
    sensor:
      - name: PUN MONO
        value_template: "{{ (value | replace (',', '.'))| float(default=0)}}"
        select: "td"
        device_class: monetary
        index: 1
        unit_of_measurement: €/kWh
kisjeth commented 1 year ago

Scusate l'ennesimo messaggio, ma ieri ho provato a copiare quello del PUN (che già funzionava di suo) e integrarlo col PSV e sembrerebbe funzionare.

Io ho questa configurazione, alla fine, se volete provare e darmi conferma:

scrape:
  - resource: https://www.a2aenergia.eu/assistenza/tutela-cliente/indici/indice-pun
    sensor:
      - name: PUN
        value_template: "{{ (value | replace (',', '.'))| float(default=0)}}"
        select: "td"
        index: 0

  - resource: https://www.a2aenergia.eu/assistenza/tutela-cliente/indici/indice-pun
    sensor:
      - name: PUN MONO
        value_template: "{{ (value | replace (',', '.'))| float(default=0)}}"
        select: "td"
        device_class: monetary
        index: 1
        unit_of_measurement: €/kWh

  - resource: https://www.a2aenergia.eu/assistenza/tutela-cliente/indici/indice-psv
    sensor:
      - name: PSV
        value_template: "{{ (value | replace (',', '.'))| float(default=0)}}"
        select: "td"
        device_class: monetary
        index: 1
        unit_of_measurement: €/smc
jumping2000 commented 1 year ago

Scusate l'ennesimo messaggio, ma ieri ho provato a copiare quello del PUN (che già funzionava di suo) e integrarlo col PSV e sembrerebbe funzionare.

Io ho questa configurazione, alla fine, se volete provare e darmi conferma:

scrape:
  - resource: https://www.a2aenergia.eu/assistenza/tutela-cliente/indici/indice-pun
    sensor:
      - name: PUN
        value_template: "{{ (value | replace (',', '.'))| float(default=0)}}"
        select: "td"
        index: 0

  - resource: https://www.a2aenergia.eu/assistenza/tutela-cliente/indici/indice-pun
    sensor:
      - name: PUN MONO
        value_template: "{{ (value | replace (',', '.'))| float(default=0)}}"
        select: "td"
        device_class: monetary
        index: 1
        unit_of_measurement: €/kWh

  - resource: https://www.a2aenergia.eu/assistenza/tutela-cliente/indici/indice-psv
    sensor:
      - name: PSV
        value_template: "{{ (value | replace (',', '.'))| float(default=0)}}"
        select: "td"
        device_class: monetary
        index: 1
        unit_of_measurement: €/smc

Scusami ma stiamo cercando di trovare il modo per recuperare i dati giornalieri del PSV non il mensile che si può recuperare come hai fatto te con un rest sensor.

jumping2000 commented 1 year ago

Allora ho buttato giù uno script di prova e, come immaginavo, i calcoli non tornano... Trovi lo script da eseguire in Python qui: https://gist.github.com/virtualdj/e5ffea98f79b92c51b310e409e1982b8

Io ho provato a verificare i dati di maggio 2023, scaricando lo ZIP tra le date 30/04/2023 e 30/05/2023 (essendo che dentro i prezzi sono del giorno dopo).

Eseguendo lo script risulta:

2023-05-01 = 0.4062433183664742 €/Smc
... tagliato ...
2023-05-31 = 0.30895873423134484 €/Smc
PSV = 0.372775 €/Smc

che non corrisponde con il valore in tabella disponibile ad esempio qui (0.364547 €/Smc). Idee?

l'unica che mi viene in mente è aspettare una risposta da GME, purtroppo non mi sembra ci siano altre strade. Provo a sollecitare

kisjeth commented 1 year ago

Ah ok. Anche se il giornaliero non ha molto senso tanto alla fine quello che ha valore è il mensile no?

jumping2000 commented 1 year ago

Ah ok. Anche se il giornaliero non ha molto senso tanto alla fine quello che ha valore è il mensile no?

ha molto senso: con il PSV giornaliero ti costruisci un PSV mensile ma aggiornato giorno per giorno, questo insieme ai consumi giornalieri in SMC ti permette di costruire il costo in euro mentre sta "progredendo". con il mensile recuperato a posteriori, agisci, come detto a posteriori.

kisjeth commented 1 year ago

E come fai a calcolare il consumo giornalmente, scusa? Che io sappia non esistono integrazioni per il contatore del gas.

Il gio 29 giu 2023, 11:37 Gianpiero @.***> ha scritto:

Ah ok. Anche se il giornaliero non ha molto senso tanto alla fine quello che ha valore è il mensile no?

ha molto senso: con il PSV giornaliero ti costruisci un PSV mensile ma aggiornato giorno per giorno, questo insieme ai consumi giornalieri in SMC ti permette di costruire il costo in euro mentre sta "progredendo". con il mensile recuperato a posteriori, agisci, come detto a posteriori.

— Reply to this email directly, view it on GitHub https://github.com/virtualdj/pun_sensor/issues/9#issuecomment-1612716401, or unsubscribe https://github.com/notifications/unsubscribe-auth/AVWQJK6WSPLRDLVN5LLENALXNVEHLANCNFSM6AAAAAAZRKYE2M . You are receiving this because you commented.Message ID: @.***>

jumping2000 commented 1 year ago

Puoi trovare diverso materiale nel forum di HA, cmq:

virtualdj commented 1 year ago

tanto alla fine quello che ha valore è il mensile no

Per fare quello non serve un'integrazione, basta un sensore REST come quello che hai fatto tu. Tra l'altro hai visto che neppure i vari siti sono d'accordo? Ad esempio, A2A che hai linkato tu e questo che avevo linkato io:

Confronto PSV di A2A e AbbassaLeBollette

Non è un problema di arrotondamento, sono proprio numeri diversi (e tutti i mesi). Mi chiedo quale dei due sia quello corretto?

Anche se il giornaliero non ha molto senso tanto alla fine quello che ha valore è il mensile no?

Dopotutto - almeno per l'energia elettrica - è lo scopo della mia integrazione. Ovvero rendersi conto man mano che il tempo passa quanto è il costo dell'energia che si sta prelevando. Il totale uno poi lo vede tranquillamente anche in bolletta se è per questo.

l'unica che mi viene in mente è aspettare una risposta da GME, purtroppo non mi sembra ci siano altre strade. Provo a sollecitare

Speriamo facciano qualcosa di utile e rispondano!

kisjeth commented 1 year ago

Personalmente avendo A2A mi tengo il loro valore che poi alla fine è quasi inutile per me avendo tutto elettrico al 95% in casa, e usando quindi il gas solo quando d'inverno la caldaia ibrida non regge con la sola elettricità. Comunque grazie per la discussione e il confronto 💪

Il gio 29 giu 2023, 19:14 virtualdj @.***> ha scritto:

tanto alla fine quello che ha valore è il mensile no

Per fare quello non serve un'integrazione, basta un sensore REST come quello che hai fatto tu. Tra l'altro hai visto che neppure i vari siti sono d'accordo? Ad esempio, A2A che hai linkato tu https://www.a2aenergia.eu/assistenza/tutela-cliente/indici/indice-psv e questo che avevo linkato io https://www.abbassalebollette.it/glossario/psv/:

[image: Confronto PSV di A2A e AbbassaLeBollette] https://user-images.githubusercontent.com/3251704/249850745-c4104eb6-5483-4447-8c30-d8c89c1ef3cc.png

Anche se il giornaliero non ha molto senso tanto alla fine quello che ha valore è il mensile no?

Dopotutto - almeno per l'energia elettrica - è lo scopo della mia integrazione. Ovvero rendersi conto man mano che il tempo passa quanto è il costo dell'energia che si sta prelevando. Il totale uno poi lo vede tranquillamente anche in bolletta se è per questo.

Non è un problema di arrotondamento, sono proprio numeri diversi (e tutti i mesi). Mi chiedo quale dei due sia quello corretto?

l'unica che mi viene in mente è aspettare una risposta da GME, purtroppo non mi sembra ci siano altre strade. Provo a sollecitare

Speriamo facciano qualcosa di utile e rispondano!

— Reply to this email directly, view it on GitHub https://github.com/virtualdj/pun_sensor/issues/9#issuecomment-1613553651, or unsubscribe https://github.com/notifications/unsubscribe-auth/AVWQJK6W4Z5IXZ4QHVSUQLTXNWZYRANCNFSM6AAAAAAZRKYE2M . You are receiving this because you commented.Message ID: @.***>

Bobsilvio commented 10 months ago

per illumia: Prezzo Gas = PSV + Fee dove il PSV sarà determinato dalla media aritmetica mensile dei prezzi giornalieri, come pubblicato nell’“European Gas Spot Market Report” da ICIS Heren il giorno lavorativo immediatamente precedente al giorno di somministrazione, uguale alla media aritmetica dei prezzi Bid e Ask in Eur/MWh del prezzo del gas naturale sotto il titolo “PSV Price Assessment - Day Ahead”, ad eccezione del weekend dove il riferimento dei prezzi Bid e Ask sarà “PSV Price Assessment - Weekend” e in caso di Bank Holiday (in London) dove il riferimento dei prezzi Bid e Ask sarà “PSV Price Assessment - Weekend”, (qualora cessi la pubblicazione dei citati parametri di riferimento, il Cliente accetta che vengano individuati dal Fornitore criteri alternativi equivalenti). Se nessun prezzo sarà pubblicato per un determinato giorno, il prezzo utilizzato sarà quello del giorno immediatamente precedente. PSV espresso in €/MWh è convertito in €/Smc sulla base di un coefficiente moltiplicativo pari a 0,0107. Il fornitore renderà disponibile l’indice PSV nell’Area Riservata del Cliente sul sito www.illumia.it o tramite e-mail scrivendo al Servizio Clienti. Il valore massimo raggiunto dall’indice PSV nel corso degli ultimi 12 mesi è stato pari a 2,4987 €/Smc con riferimento al mese di Agosto 2022.

Bobsilvio commented 10 months ago

mi ci ritrovo effettivamente: https://www.estra.it/indici-energetici/

virtualdj commented 9 months ago

Provo a sollecitare

@jumping2000 Immagino non si siano mai degnati di rispondere... che faccio, chiudo nel frattempo?