{
    "family": "price_rhythm",
    "url": "https://www.fuel-prices.eu/live/portugal/price-changes/?lang=pt",
    "markdown": "https://www.fuel-prices.eu/live/portugal/price-changes/data.md?lang=pt",
    "language": "pt",
    "market": {
        "key": "portugal",
        "country": "Portugal",
        "cc": "PT",
        "live_map": "https://www.fuel-prices.eu/live/portugal/"
    },
    "window": {
        "d0": "2026-06-25",
        "d1": "2026-09-22",
        "days": 90
    },
    "built_at": "2026-09-23T01:12:01+00:00",
    "currency": "EUR",
    "method": {
        "series": "one price per station per day",
        "change": "two consecutive days with different prices, counted on the second",
        "max_gap_days": 3,
        "hour_of_day": "cannot be established"
    },
    "headline": [
        "Um posto em Portugal muda o preço da Gasolina 95 0.90 vezes por semana em média, e um preço acabado de mudar aguenta depois 7 dias até ao seguinte.",
        "Num dia normal, 3.6% dos postos em Portugal mudam de preço; no dia mais movimentado da janela, 82.1%.",
        "O dia mais movimentado é segunda-feira, com 63.7% de todas as alterações; o mais calmo é domingo, com 1.7%.",
        "Uma subida move o preço 0.050 EUR/L em média, uma descida 0.043 EUR/L. Ao longo da janela, 24 515 alterações foram para cima e 13 365 para baixo.",
        "Metade de todas as alterações de preço destes 89 dias aconteceu em apenas 8 deles.",
        "A Galp chega primeiro ao centro de um movimento de mercado em 3 das 10 vagas medidas; as outras seguem com uma mediana de 0.1 dias.",
        "Ao longo da janela a mediana do mercado passou de 1.924 EUR/L para 2.169 EUR/L."
    ],
    "fuels": {
        "petrol": {
            "label": "Gasolina 95",
            "code": "sp95",
            "stations": 3268,
            "days_covered": 89,
            "changes": 37880,
            "changes_per_station_per_week": 0.902,
            "median_days_between_changes": 7,
            "by_weekday": [
                {
                    "up": 16889,
                    "down": 7232,
                    "up_sum": 904.721,
                    "down_sum": 358.2
                },
                {
                    "up": 5194,
                    "down": 1688,
                    "up_sum": 227.291,
                    "down_sum": 57.931
                },
                {
                    "up": 1127,
                    "down": 1044,
                    "up_sum": 35.532,
                    "down_sum": 27.75
                },
                {
                    "up": 418,
                    "down": 340,
                    "up_sum": 15.05,
                    "down_sum": 9.746
                },
                {
                    "up": 307,
                    "down": 654,
                    "up_sum": 13.244,
                    "down_sum": 27.39
                },
                {
                    "up": 172,
                    "down": 2177,
                    "up_sum": 7.231,
                    "down_sum": 87.627
                },
                {
                    "up": 408,
                    "down": 230,
                    "up_sum": 20.547,
                    "down_sum": 11.276
                }
            ],
            "size": {
                "up": {
                    "n": 24515,
                    "mean": 0.0499,
                    "median": 0.045,
                    "p90": 0.09
                },
                "down": {
                    "n": 13365,
                    "mean": 0.0434,
                    "median": 0.04,
                    "p90": 0.1
                }
            },
            "concentration": {
                "days_for_half": 8,
                "days_total": 89,
                "share": 0.0899
            },
            "macro": {
                "up_days": 22,
                "down_days": 16,
                "mean_up": 0.0318,
                "mean_down": 0.02841,
                "run_up_mean": 1.47,
                "run_down_mean": 1.33,
                "first_median": 1.924,
                "last_median": 2.169
            },
            "networks": [
                {
                    "brand": "Alves Bandeira",
                    "key": "ALVES BANDEIRA",
                    "stations": 157,
                    "changes": 1565,
                    "active_days": 38,
                    "sync_median": 0.035,
                    "per_week": 0.775,
                    "up_share": 0.6997,
                    "lag_median": 0.0295,
                    "first": 2,
                    "waves": 10,
                    "lead_lag": 0,
                    "lead_corr": 0.835
                },
                {
                    "brand": "Galp",
                    "key": "GALP",
                    "stations": 693,
                    "changes": 9042,
                    "active_days": 71,
                    "sync_median": 0.072,
                    "per_week": 1.015,
                    "up_share": 0.6154,
                    "lag_median": 0.0325,
                    "first": 3,
                    "waves": 10,
                    "lead_lag": 0,
                    "lead_corr": 0.829
                },
                {
                    "brand": "Cepsa",
                    "key": "CEPSA",
                    "stations": 150,
                    "changes": 1373,
                    "active_days": 69,
                    "sync_median": 0.013,
                    "per_week": 0.712,
                    "up_share": 0.7079,
                    "lag_median": 0.0435,
                    "first": 0,
                    "waves": 10,
                    "lead_lag": 0,
                    "lead_corr": 0.735
                },
                {
                    "brand": "Prio",
                    "key": "PRIO",
                    "stations": 252,
                    "changes": 2294,
                    "active_days": 43,
                    "sync_median": 0.044,
                    "per_week": 0.708,
                    "up_share": 0.6857,
                    "lag_median": 0.046,
                    "first": 1,
                    "waves": 10,
                    "lead_lag": 0,
                    "lead_corr": 0.683
                },
                {
                    "brand": "Repsol",
                    "key": "REPSOL",
                    "stations": 518,
                    "changes": 7521,
                    "active_days": 69,
                    "sync_median": 0.066,
                    "per_week": 1.129,
                    "up_share": 0.6398,
                    "lag_median": 0.0535,
                    "first": 1,
                    "waves": 10,
                    "lead_lag": 0,
                    "lead_corr": 0.883
                },
                {
                    "brand": "Moeve",
                    "key": "MOEVE",
                    "stations": 106,
                    "changes": 1017,
                    "active_days": 50,
                    "sync_median": 0.019,
                    "per_week": 0.746,
                    "up_share": 0.6952,
                    "lag_median": 0.0615,
                    "first": 2,
                    "waves": 10,
                    "lead_lag": 0,
                    "lead_corr": 0.848
                },
                {
                    "brand": "Bp",
                    "key": "BP",
                    "stations": 477,
                    "changes": 5886,
                    "active_days": 71,
                    "sync_median": 0.057,
                    "per_week": 0.96,
                    "up_share": 0.6111,
                    "lag_median": 0.149,
                    "first": 1,
                    "waves": 10,
                    "lead_lag": 0,
                    "lead_corr": 0.638
                },
                {
                    "brand": "Genérico",
                    "key": "GENÉRICO",
                    "stations": 246,
                    "changes": 2226,
                    "active_days": 70,
                    "sync_median": 0.037,
                    "per_week": 0.704,
                    "up_share": 0.6923,
                    "lag_median": 0.2685,
                    "first": 0,
                    "waves": 10,
                    "lead_lag": 0,
                    "lead_corr": 0.722
                },
                {
                    "brand": "Intermarché",
                    "key": "INTERMARCHÉ",
                    "stations": 219,
                    "changes": 2320,
                    "active_days": 69,
                    "sync_median": 0.032,
                    "per_week": 0.824,
                    "up_share": 0.6823,
                    "lag_median": 0.38,
                    "first": 0,
                    "waves": 10,
                    "lead_lag": 0,
                    "lead_corr": 0.773
                },
                {
                    "brand": "Freitas",
                    "key": "FREITAS",
                    "stations": 62,
                    "changes": 736,
                    "active_days": 59,
                    "sync_median": 0.048,
                    "per_week": 0.923,
                    "up_share": 0.6467,
                    "lag_median": 0.422,
                    "first": 0,
                    "waves": 10,
                    "lead_lag": 0,
                    "lead_corr": 0.576
                }
            ],
            "hour_of_day": null
        },
        "diesel": {
            "label": "Gasóleo",
            "code": "diesel",
            "stations": 3108,
            "days_covered": 89,
            "changes": 36678,
            "changes_per_station_per_week": 0.918,
            "median_days_between_changes": 7,
            "by_weekday": [
                {
                    "up": 18036,
                    "down": 4741,
                    "up_sum": 1235.484,
                    "down_sum": 311.977
                },
                {
                    "up": 4947,
                    "down": 2095,
                    "up_sum": 321.107,
                    "down_sum": 74.136
                },
                {
                    "up": 1105,
                    "down": 1051,
                    "up_sum": 47.386,
                    "down_sum": 28.572
                },
                {
                    "up": 337,
                    "down": 378,
                    "up_sum": 17.807,
                    "down_sum": 10.766
                },
                {
                    "up": 355,
                    "down": 634,
                    "up_sum": 18.471,
                    "down_sum": 26.017
                },
                {
                    "up": 191,
                    "down": 2168,
                    "up_sum": 7.826,
                    "down_sum": 86.771
                },
                {
                    "up": 418,
                    "down": 222,
                    "up_sum": 25.88,
                    "down_sum": 11.821
                }
            ],
            "size": {
                "up": {
                    "n": 25389,
                    "mean": 0.0659,
                    "median": 0.064,
                    "p90": 0.115
                },
                "down": {
                    "n": 11289,
                    "mean": 0.0487,
                    "median": 0.05,
                    "p90": 0.085
                }
            },
            "concentration": {
                "days_for_half": 8,
                "days_total": 89,
                "share": 0.0899
            },
            "macro": {
                "up_days": 25,
                "down_days": 20,
                "mean_up": 0.03518,
                "mean_down": 0.02088,
                "run_up_mean": 1.67,
                "run_down_mean": 1.43,
                "first_median": 1.834,
                "last_median": 2.296
            },
            "networks": [
                {
                    "brand": "Alves Bandeira",
                    "key": "ALVES BANDEIRA",
                    "stations": 160,
                    "changes": 1597,
                    "active_days": 38,
                    "sync_median": 0.034,
                    "per_week": 0.776,
                    "up_share": 0.7915,
                    "lag_median": 0.036,
                    "first": 2,
                    "waves": 10,
                    "lead_lag": 0,
                    "lead_corr": 0.866
                },
                {
                    "brand": "Cepsa",
                    "key": "CEPSA",
                    "stations": 150,
                    "changes": 1378,
                    "active_days": 71,
                    "sync_median": 0.013,
                    "per_week": 0.715,
                    "up_share": 0.7794,
                    "lag_median": 0.051000000000000004,
                    "first": 0,
                    "waves": 10,
                    "lead_lag": 0,
                    "lead_corr": 0.751
                },
                {
                    "brand": "Galp",
                    "key": "GALP",
                    "stations": 705,
                    "changes": 8787,
                    "active_days": 71,
                    "sync_median": 0.068,
                    "per_week": 0.969,
                    "up_share": 0.6515,
                    "lag_median": 0.051500000000000004,
                    "first": 3,
                    "waves": 10,
                    "lead_lag": 1,
                    "lead_corr": 0.234
                },
                {
                    "brand": "Repsol",
                    "key": "REPSOL",
                    "stations": 520,
                    "changes": 7277,
                    "active_days": 70,
                    "sync_median": 0.063,
                    "per_week": 1.088,
                    "up_share": 0.6647,
                    "lag_median": 0.0545,
                    "first": 1,
                    "waves": 10,
                    "lead_lag": 0,
                    "lead_corr": 0.83
                },
                {
                    "brand": "Moeve",
                    "key": "MOEVE",
                    "stations": 106,
                    "changes": 1017,
                    "active_days": 50,
                    "sync_median": 0.019,
                    "per_week": 0.746,
                    "up_share": 0.7866,
                    "lag_median": 0.057499999999999996,
                    "first": 1,
                    "waves": 10,
                    "lead_lag": 0,
                    "lead_corr": 0.802
                },
                {
                    "brand": "Prio",
                    "key": "PRIO",
                    "stations": 49,
                    "changes": 456,
                    "active_days": 37,
                    "sync_median": 0.122,
                    "per_week": 0.724,
                    "up_share": 0.7851,
                    "lag_median": 0.181,
                    "first": 1,
                    "waves": 10,
                    "lead_lag": 0,
                    "lead_corr": 0.617
                },
                {
                    "brand": "Genérico",
                    "key": "GENÉRICO",
                    "stations": 260,
                    "changes": 2414,
                    "active_days": 70,
                    "sync_median": 0.038,
                    "per_week": 0.722,
                    "up_share": 0.7461,
                    "lag_median": 0.2885,
                    "first": 0,
                    "waves": 10,
                    "lead_lag": 0,
                    "lead_corr": 0.799
                },
                {
                    "brand": "Bp",
                    "key": "BP",
                    "stations": 482,
                    "changes": 6575,
                    "active_days": 71,
                    "sync_median": 0.062,
                    "per_week": 1.061,
                    "up_share": 0.6493,
                    "lag_median": 0.332,
                    "first": 2,
                    "waves": 10,
                    "lead_lag": 0,
                    "lead_corr": 0.689
                },
                {
                    "brand": "Intermarché",
                    "key": "INTERMARCHÉ",
                    "stations": 219,
                    "changes": 2402,
                    "active_days": 68,
                    "sync_median": 0.032,
                    "per_week": 0.853,
                    "up_share": 0.739,
                    "lag_median": 0.3845,
                    "first": 0,
                    "waves": 10,
                    "lead_lag": 0,
                    "lead_corr": 0.894
                },
                {
                    "brand": "Freitas",
                    "key": "FREITAS",
                    "stations": 62,
                    "changes": 741,
                    "active_days": 59,
                    "sync_median": 0.048,
                    "per_week": 0.93,
                    "up_share": 0.7085,
                    "lag_median": 0.4205,
                    "first": 0,
                    "waves": 10,
                    "lead_lag": 0,
                    "lead_corr": 0.671
                }
            ],
            "hour_of_day": null
        }
    }
}