SPB Git

spb/wp37_uqo

Public
16.2 KB · 84 lines latex
1\section{Empirical results}\label{sec:results}23\subsection{H1: Matched-item dispersion is large and persistent}4Table~\ref{tab:dispersion} and Figure~\ref{fig:dispersion}A report the distribution of within-product, cross-banner log price gaps on 30{,}042 group-weeks. The median max--min gap is 0.154 (interquartile range 0.059--0.279, mean 0.189); 79\% of group-weeks exceed the registered 5\% threshold and 63\% exceed 10\%. The median coefficient of variation is 0.073. Gaps are somewhat larger across companies (median 0.183 on 2{,}103 group-weeks) than within a company (0.151), but the within-company gaps---the discount banner against the conventional supermarket of the same chain on the same UPC---are the bulk of the evidence and are far from zero.5\input{tables/tab_dispersion}67\begin{figure}[htbp]\centering8\includegraphics[width=\textwidth]{figures/fig_dispersion.pdf}9\caption{Cross-banner dispersion on identical products (tiers A+B, storefront). A: distribution of the group-week max--min log gap by company relation. B: banner fixed effects relative to Metro with 95\% intervals (banners with at least 50 matched listing-weeks; standard errors clustered by match group).}\label{fig:dispersion}10\end{figure}1112The banner fixed effects (Table~\ref{tab:bannerfe}, Figure~\ref{fig:dispersion}B) are the price-level architecture of the market as seen through identical products: relative to Metro, Maxi posts 18.4 log points lower (s.e.\ 0.016), Club Entrepôt 13.6 lower, Super~C 10.0 lower (s.e.\ 0.003, on 17{,}329 listing-weeks), Provigo 4.3 lower; Walmart and Giant Tiger are 20 and 19 points lower but on few matched listing-weeks; specialty and online shops (La Boîte à Grains, Marché Nuvo, Maturin) post 8--12 points higher. The residual standard deviation after product-week and banner effects is 0.115: knowing the banner explains the level, but a product-specific component of comparable size remains---consistent with the ``relative dispersion'' emphasised by \citet{kaplan2019}.13\input{tables/tab_banner_effects}1415Persistence is strong. The pooled AR(1) coefficient of banner-pair gaps is 0.663 (s.e.\ 0.014); permuting banner labels within group-week gives 0.004 (s.d.\ 0.011 over 20 permutations). The coefficient is similar within (0.668) and across (0.630) companies. Among 4{,}884 banner pairs observed in at least four weeks, 46\% keep the same sign throughout. Part of the persistence reflects the stickiness of posted prices themselves---a gap that does not change because neither price changed---but the placebo shows that it is a property of banners, not of the construction, and the sign stability indicates that for close to half of the pairs one banner is systematically cheaper. Figure~\ref{fig:heatmap} displays the median pairwise gaps for banner pairs with at least 30 common group-weeks: the Loblaw discount banners (Maxi, Club Entrepôt) and Super~C are cheaper than Metro and Provigo by 10--26 log points, while Mayrand and the health-food shops are dearer.1617\begin{figure}[htbp]\centering18\includegraphics[width=0.85\textwidth]{figures/fig_heatmap.pdf}19\caption{Pairwise median log price gaps on identical products (row banner minus column banner), tiers A+B, storefront channel, pairs with at least 30 group-weeks. Blue: row banner cheaper.}\label{fig:heatmap}20\end{figure}2122Category heterogeneity is wide (Table~\ref{tab:robust} and \texttt{robustness\_category\_gaps.csv}): fish and seafood (median gap 0.183, 9{,}577 group-weeks, dominated by Metro/Super~C private-label frozen seafood), snacks (0.154) and bakery (0.136) show the largest gaps; fresh produce (0.002) and deli/cheese (0.000) show essentially none---for these categories the matched listings within a chain are priced identically across its banners. H1 is supported on both registered criteria (median gap $\ge 5\%$; AR(1) $\ge 0.5$), with the qualification that most of the evidence is within-chain format differentiation.2324\subsection{H2: Promotions double posted-price volatility}25Table~\ref{tab:promotions} and Figure~\ref{fig:promotions} summarise Model~B on 102{,}835 storefront listings observed in at least eight weeks. Inferred promotions cover 4.6\% of listing-weeks (4.4\% in the last week, against 9.5\% of active listings carrying an on-sale flag---the flag also captures small reductions and loyalty prices that our 10\% rule excludes; agreement between the two is 90\%). Promotions are deep: the median depth is 0.224 log points (mean 0.29). The weekly change frequency of posted prices is 8.5\%, and \emph{half} of all weekly changes are entries into or exits from a promotion. The standard deviation of weekly log changes is 0.106 for posted prices and 0.055 for the reference series, a ratio of 1.92 (bootstrap 95\% CI 1.84--2.02). The ratio is 2.1--2.8 for the large chains' storefronts (Maxi 2.84, Giant Tiger 2.30, Metro 2.12, Super~C 2.03) and close to one for health-food and online-only shops that rarely promote (La Boîte à Grains 1.01). The registered falsification holds: 4.7\% of listing-weeks display more than one price value in single-store shops against 22.8\% in anti-bot storefronts, so the weekly aggregation was necessary and the store-mixture reading of the oscillation stands. H2 is supported: promotion-adjusted (reference) volatility is about half of raw volatility.26\input{tables/tab_promotions}2728\begin{figure}[htbp]\centering29\includegraphics[width=\textwidth]{figures/fig_promotions.pdf}30\caption{Promotion dynamics (Model B, storefront listings). A: event-study coefficients of $\log p$ around the first promoted week of return episodes (listing and week fixed effects, reference week $-1$, 95\% bands clustered by listing). B: depth of uncensored episodes by kind. C: weekly transition matrix between regular and promoted states.}\label{fig:promotions}31\end{figure}3233\subsection{H3: Temporary sales return exactly to their reference; no drift within the window}34The transition matrix (Figure~\ref{fig:promotions}C) has $P(\text{promo}\to\text{promo})=0.49$ and $P(\text{regular}\to\text{promo})=0.03$. Of 11{,}705 uncensored low-price episodes, 52\% are \emph{return} episodes (the price comes back to within 2\% of the pre-episode reference), 42\% are regular-price resets downward and 6\% resets upward; the 10\% rule, applied to a short panel, flags many permanent price cuts, which is why amendment A-003 was needed. Return episodes---the promotions of the theory---last one week in 80\% of cases (median 1, mean 1.3 weeks) with a median depth of 0.288 log points; the median interval between two episodes of the same listing is three weeks and 23\% of listings have at least two episodes. For return episodes the mean change of the reference price from before to after the sale is $-0.0003$ log points (s.e.\ 0.0001; 0.5\% of references move up, 0.5\% move down), against a placebo of $+0.0003$ (s.e.\ 0.0007) at random dates in never-promoted listings. The point estimate is statistically distinguishable from zero because of the sample size, but it is economically zero: within eleven weeks, Quebec storefront promotions neither precede nor follow a reference-price adjustment. For all low-price episodes the reference falls by 10 log points on average, which is simply the reset-down class.3536The event study (Figure~\ref{fig:promotions}A) shows the price 33 log points below the pre-week during the first promoted week and back to 5--6 points below it afterwards; the pre-period dummies are jointly non-zero ($p<0.001$) and \emph{negative}: the week immediately before a sale is about 5 log points higher than the weeks $-4$ to $-2$ and than the weeks after. Taken at face value this is the ``pre-sale price elevation'' predicted by the reference-price-inflation hypothesis. Splitting by feed type deflates it: in anti-bot storefronts the elevation of week $-1$ relative to weeks $-4\ldots-2$ and $+1\ldots+4$ is 5--9 log points, in single-store shops it is 1--3 log points. The larger part is therefore a store-mixture artefact---the week before an episode is, by construction, a week in which the modal price was the higher value of the store distribution---and the residual two-point elevation in single-store shops is a small, exploratory indication of pre-sale repricing that a longer and store-identified panel should re-examine. We register the direction found for H3 as ``no reference-price drift after temporary sales; a small pre-sale elevation in clean feeds''.3738Circulars provide the complementary, observed view: 33{,}006 circular items, 22.7\% with an explicit regular price, a median observed depth of 0.224 log points (mean 0.287) that matches the inferred storefront depth, and 60\% of items recurring in more than one weekly circular within the window.3940\subsection{H4: Small lead--lag associations; cross-company placebo fails}41Table~\ref{tab:spillovers} and Figure~\ref{fig:spillovers} report Model~C. A banner's weekly log change is associated with the mean change of its rivals in the same group at lag 0 (0.037, s.e.\ 0.018), lag 1 (0.037, 0.012), lag 2 (0.015, 0.013) and lag 3 (0.043, 0.015), with leads at 0.009 (0.012) and 0.013 (0.015). The probability that a banner changes its price in a week is 25\% if a rival changed its price the week before and 17\% if not. These associations come almost entirely from same-company pairs (lag~1: 0.042, s.e.\ 0.012, on 21{,}192 observations), i.e.\ from Metro following Super~C or Maxi following Provigo on the same UPC---coordination within a chain's pricing calendar rather than competitive response. For other-company rivals the sample is small (1{,}784 observations), the lags are insignificant or negative, and the \emph{lead} coefficient is $-0.108$ (s.e.\ 0.048): rivals' future changes ``predict'' current changes, which a causal response cannot do. The placebo fails, and we draw no causal conclusion. Promotions co-move only weakly: two or more banners of a group are simultaneously at a low in 1.7\% of group-weeks against 0.6\% expected under independence.42\input{tables/tab_spillovers}4344\begin{figure}[htbp]\centering45\includegraphics[width=0.8\textwidth]{figures/fig_spillovers.pdf}46\caption{Lead--lag associations between a banner's weekly log price change and its rivals' (Model C), 95\% intervals clustered by match group. Shaded region: leads (placebo).}\label{fig:spillovers}47\end{figure}4849\subsection{H5: Composition, not price, drives naive averages}50Over eleven weeks storefront posted prices rose by 0.28\% on the chained Jevons matched-model index (bootstrap 95\% CI 0.15--0.42\%), 0.10\% on the fixed-basket Jevons over the 44{,}423 listings present in every week, $-0.05$\% on the fixed-basket Dutot and 2.7\% on the Carli (which is upward-biased by construction); the naive mean of posted prices rose by 0.37\% and the naive median not at all (Table~\ref{tab:indices}, Figure~\ref{fig:indices}). At the market level the registered gap between the naive mean and the matched-model index is 0.06 percentage points with a bootstrap interval of $-0.78$ to $+0.84$: H5 is \emph{not} supported over this window for the market as a whole. It is strongly supported for individual banners whose assortment turned over: the naive mean rose 28.8\% for Walmart, 14.6\% for Maxi and 11.0\% for Provigo while their matched-model indices moved by 0.2\%, 0.9\% and 0.6\%; across all channels the naive mean \emph{fell} 2.9\% because circular items---cheap by construction---entered the catalogue, while the matched-model index rose 0.24\%. Assortment turnover is substantial: of 71{,}694 storefront listings, 20{,}260 entered and 17{,}295 exited during the window (weekly entry rate 3.6\%). Package-size changes within a listing are unobservable in this source. The Statistics Canada index for food purchased from stores in Quebec fell 0.67\% from August to September 2026 while our storefront matched-model index rose 0.10\% over the same two months; with two monthly observations, different coverage (online catalogues vs.\ store collection) and no weights, this is a coherence check, not a validation.51\input{tables/tab_indices}5253\begin{figure}[htbp]\centering54\includegraphics[width=0.8\textwidth]{figures/fig_indices.pdf}55\caption{Unweighted price indices on storefront listings, 13 August 2026 $=100$: naive mean of posted prices, chained Jevons (matched model), fixed-basket Jevons and Carli. No expenditure weights exist; these are not consumer price indices.}\label{fig:indices}56\end{figure}5758\subsection{H6: Two banners capture most of the posted-price savings}59Table~\ref{tab:basket} and Figure~\ref{fig:basket} report Model~E. On the primary block (five banners, 15--18 items depending on the week, weekly mean cost), the best single banner costs 67.3~CAD, two banners 58.5, three 57.2 and the unconstrained optimum 56.9: unconstrained cheapest-banner shopping saves 15.4\% relative to the best single banner, and two banners capture 85\% of that saving. The pattern is stable across block sizes ($B=4$: 15.1\%, 82\%; $B=6$: 11.4\%, 75\%; $B=7$: 12.0\%, 72\%). The spread between the cheapest and the most expensive single banner for the same items is 91\% of the cheapest---banner choice matters far more than multi-banner optimisation. With an illustrative fixed cost of 5~CAD per banner visited the optimum uses 1.8 banners on average, with 10~CAD 1.3 and with 20~CAD one banner only. H6 is supported in its posted-price form; whether the savings are \emph{feasible} depends on store access and travel costs that this source does not observe, so the 15\% is an upper bound on achievable savings from banner choice within the matched catalogues, not an estimate of what a household can realise.60\input{tables/tab_basket}6162\begin{figure}[htbp]\centering63\includegraphics[width=\textwidth]{figures/fig_basket.pdf}64\caption{Fixed-basket optimisation (Model E, $B=5$). A: mean weekly basket cost against the maximum number of banners visited. B: sensitivity to an illustrative fixed cost per banner visited (travel costs are unobserved).}\label{fig:basket}65\end{figure}6667\subsection{Forecasting}68Table~\ref{tab:fprice}, Table~\ref{tab:fpromo} and Figure~\ref{fig:forecast} report Model~F on 215{,}264 test observations over four origins. For next-week log posted price the last value is the best model on mean absolute error (0.0226, against 0.0248 for banner--category drift, 0.0299 ridge and 0.0301 gradient boosting), while ridge and boosting have the lowest root mean squared error (0.099--0.100 against 0.108): the learned models trade frequent small errors for fewer large ones, which is what a mixture of sticky prices and occasional deep promotions implies. For next-week promotion state gradient boosting reaches an AUC of 0.936 and a Brier score of 0.031 against a base rate of 5.7\% (Brier 0.057) and a persistence rule (AUC 0.75, Brier 0.051): promotions are predictable from a listing's own recent history (depth, recurrence, banner, category). These are honest out-of-time results on a short panel; they do not speak to horizons beyond one week.69\input{tables/tab_forecast_price}\input{tables/tab_forecast_promo}7071\begin{figure}[htbp]\centering72\includegraphics[width=\textwidth]{figures/fig_forecast.pdf}73\caption{Rolling-origin forecast errors by origin week (Model F). A: MAE of next-week log posted price. B: AUC for next-week promotion state.}\label{fig:forecast}74\end{figure}7576\subsection{The QGPAI components}77Figure~\ref{fig:qgpai} and Table~\ref{tab:qgpai} present the five components over the eleven weeks. The comparable price index on matched groups dips in late August (98.7 on 27 August) and ends at 100.7 on 22 October, with a bootstrap band over groups of about $\pm$0.5; the promotion share rises from 3--4\% in August to 6--7\% in October while the observed circular depth is flat at 0.21--0.25; the dispersion component is remarkably stable at a median gap of 0.15; the fixed-block basket cost falls from 34 to 31~CAD for the best single banner and from 30 to 28~CAD unconstrained. The fifth component is not computed. Two illustrative composites with prespecified weights are in the replication package; we do not interpret them, because any weighting of these components is a normative choice, not an estimate.78\input{tables/tab_qgpai}7980\begin{figure}[htbp]\centering81\includegraphics[width=\textwidth]{figures/fig_qgpai.pdf}82\caption{QGPAI components by circular week, 2026. Bands: bootstrap over match groups (components 1 and 3). Component 2 is undefined in the first week (no trailing history). Component 5 (access and affordability) is not computable from this source.}\label{fig:qgpai}83\end{figure}84
Files · 6b98ba74da2dd3460762f3a83a17630795fba248
Menu

Theme