Project Hammer:カナダの食料品カルテルを減らす
(jacobfilipp.com)- カナダの食料品市場で高い集中度が価格競争を弱めているなか、Project Hammerは主要事業者の過去の価格データを公開し、カルテル検知と競争促進に活用しようとするプロジェクト
- データセットには Voila、T&T、Loblaws、No Frills、Metro、Galleria、Walmart Canada、Save-On-Foods など8事業者が含まれ、期間は2024年2月28日から最新の取り込み分まで
- 公開ファイルは製品メタデータ用の
productと時系列価格用のrawに分かれており、2つのCSVまたはSQLiteファイルで分析できる - 価格はWebサイトUIをスクリーンスクレイピングして収集した、トロントのある地区における「in store pickup」基準のため、内部APIのデータと異なったり、一部の日付・事業者で欠落があったりする可能性がある
- 経済分析、データ正規化、バグ検証、政治・報道・法務での活用が組み合わさってこそ、このデータは学術分析や法的措置につながりやすくなる
Project Hammerが目指すこと
- Project Hammerの目標は、カナダの食料品部門における競争を増やし、カルテルを減らすこと
- そのために3つの取り組みを進めている
- 主要な食料品事業者のWebサイトから過去の価格データベースを構築する
- 学術分析と法的措置に適した形でデータを提供する
- 変化を起こせる人々にデータセットの存在を知らせ、実際の利用を支援する
公開された食料品価格データ
- データセットには8つの食料品事業者が含まれる
- Voila
- T&T
- Loblaws
- No Frills
- Metro
- Galleria
- Walmart Canada
- Save-On-Foods
- 提供期間は2024年2月28日から最新の取り込み分まで
- データは2つの方法で入手できる
- 2つのCSV
productファイルには製品メタデータと製品詳細が含まれるrawファイルには時系列の価格データが含まれる- 2つのファイルは
id列とproduct_id列で結合する
- SQLiteファイル
- SQLiteファイル確認ツールとしてDB Browserが推奨されている
- フィルタリングとCSVエクスポートが可能
- 2つのCSV
- データフィールドと収集方法はプロジェクトのFAQセクションで確認できる
参加が必要な人々
- このプロジェクトは1人で完成させるのが難しく、分析・正規化・検証・活用を担うコミュニティが必要
- 特に次の役割での参加を求めている
- 時間に伴う複数の価格推移の相互作用と相関関係を経済分析できる人
- データ処理と正規化に熟練した人
- 1日データを触ってみて、バグ、問題、機会を知らせてくれる人
- 他国で類似の価格分析を行っている人、またはMario Zechnerの取り組みに着想を得た人
- カナダの高度に集中した食料品部門を改善しようとするデータ志向の政治家、補佐官、活動家、記者、弁護士
データで問えること
- 標準的なサンドイッチの価格を事業者別に可視化できる
- 例:白パン200g、ハム20g、レタス20gなど
- どの事業者が最も安いか比較できる
- 特定製品について、11月1日から2月5日まで価格凍結があったか確認できる
- Metroは、自社ブランドとナショナルブランドの食料品製品について、11月1日から2月5日までの価格凍結は業界慣行であり、Metro店舗にも適用されると述べたことがある
- 「割引」価格が実際に何を意味するのかも分析対象
- 前回の割引からどれだけ時間が経っているかを確認する
- ずっと割引中の商品なら、それが事実上の通常価格なのかを見ることができる
- 割引直前に価格を上げ、その後通常水準に戻したのか確認できる
- 事業者間の価格反応も比較できる
- 特定の製品やカテゴリで誰が先に価格変動を始めるのかを見ることができる
- どの小売事業者が常に反応するだけで、価格変動を始めないのか確認する
- 一部事業者の価格が正確に連動して動くかを見ることができる
- 価格が相互作用なしにランダムに動くのかも分析できる
- 価格が常に上がるだけ、または下がるだけなのか確認できる
- 比較可能な製品群全体でどの事業者が一般に最も安いのか、1つの事業者内で卵・牛乳・パンのような製品バスケットが連動して動くのかも見ることができる
収集方法とデータの制約
- データは食料品事業者のWebサイトUIをスクリーンスクレイピングして得た情報
- Webサイトを動かす内部APIから得られる情報が抜けている可能性がある
- 価格はトロントのある地区で設定した「in store pickup」オプション基準
- 毎日すべての事業者のすべてのデータがあるわけではない
- 2024年2月28日から7月10日または11日までは「small basket」製品の価格を収集した
- それ以降は、はるかに幅広い製品価格を保有している
- 特定の日に特定事業者の抽出が失敗し、データが欠けることがある
productテーブル
productテーブルには製品メタデータが含まれる- 製品名
- 事業者
- ブランド
- 単位サイズ
- 新しい製品が見つかった場合のみ更新される
- 例:これまでなかった単位サイズのバリエーションが見つかった場合
- 主な列は次のとおり
id:productテーブルとrawテーブルを結合する製品IDだが、毎日変わり、安定した一意識別子ではないconcatted:事業者、製品名、単位、ブランドを連結した独自の一意識別子で、中間段階で使われるvendor:8つの食料品事業者のいずれかproduct_name:製品名で、ブランドや単位が含まれることがあるunits:g、kg、包装内の個数のような単位で、一部の事業者や製品では空の場合があるbrand:製品メーカーのブランドで、空の場合があるdetail_url:製品詳細ページのURLで、SKUとUPCの抽出に使われるsku:各事業者が使う製品固有識別子で、detail_urlから抽出されるupc:事業者をまたぐ汎用製品識別子だが、見つけるのが難しい
- UPCの信頼性は事業者ごとに異なる
- Metro、Galleria、Save-On-FoodsのUPCが最も信頼性が高く、事業者のWebサイトから直接得られる
- WalmartはSKUを、Walmartが所有していると見られるサイトのUPCと照合しており、ファジーマッチングではなく完全一致
- Loblaws、NoFrills、T&T、Voilaはファジーマッチングで潜在的なUPCを探し、手動の品質検査を行ったが、誤りがある可能性がある
- 事業者間で比較する際は、
product_nameを見て常識的に確認する必要がある
rawテーブル
rawテーブルは特定時点の製品価格を含み、新しいデータが毎日追加される- 主な列は次のとおり
nowtime:データ収集時刻current_price:抽出時点の価格old_price:取り消し線表示された以前の価格で、割引中であることを示すprice_per_unit:事業者のWebサイトに表示された単位当たり価格で、current_priceをunitsで割った実際の計算値と一致しない場合があるother:「Out of stock」「SALE」「Best seller」「$5.00 MIN 2」のようなその他の表示情報product_id:productテーブルと結合するIDだが、毎日変わり、安定した一意識別子ではない
CSVとSQLite使用時の注意点
- CSVファイルはExcel向けに調整されている
- ファイルの先頭に、ExcelにUTF-8として処理させるためのBOM文字が含まれる
- 他の分析ツールで読み込む場合、BOMの削除が必要になることがある
- SQLiteファイル構造は単純
productテーブルはvendor、product_name、units、brandを含むrawテーブルはnowtime、current_price、old_price、price_per_unitを含む- 2つのテーブルは
product.idとraw.product_idで結合する - 速度のために
raw.product_idにインデックスがある
- SQL例は、特定ブランドや製品群を検索する方法として提供されている
- Becelブランドは事業者によって
product_nameだけにある場合、またはbrandだけにある場合があるため、両方の列を検索する - Miss Vickie's製品は事業者ごとに
Miss Vickies、Miss Vickie's、特殊なUTF-8引用符を使った表記が混在しているため、miss vickで検索する - Miss Vickie's Original Recipe chipsの検索結果には59g、200g、275g製品が一緒に含まれる可能性があるため、事業者間で比較する際はSQLをさらに絞り込むか、CSVにエクスポートしてフィルタリングする必要がある
- Becelブランドは事業者によって
- 分析例では、Miss Vickies' Original Kettle Chips 200gの価格をExcel PivotChartで可視化し、Walmartが最も低く、アジア系食料品店中心の事業者が最も高い価格を示した
参考用SQLと分析例
- 6月10日と9月17日の価格比較用SQLが提供されている
- 説明上の最初の全体抽出日は6月10日だが、SQL条件は
2024-06-11%と2024-09-17%を使っている - 同じ製品の開始価格と終了価格を1行にピボットしたうえで、両方の日付に存在しない製品は除外する
- 説明上の最初の全体抽出日は6月10日だが、SQL条件は
- 価格の最大、最小、平均、件数を求めるSQLもある
rawから日付・価格・製品IDの一意な組み合わせを作ったうえで、製品別集計を行う- 結果を
productテーブルと結合し、事業者、製品名、単位、ブランドとともに確認する
- コード、データ、メモをSQL Notebook形式で共有する方法のほうがよいか、フィードバックを求めている
既知のデータ問題
- 同じ日に同じ製品で異なる価格点が取得される問題がある
- 例:Loblawsの「100% Natural Origin Moisturizing Lip Balm, Cucumber Mint」、Sisuの「Melatonin」
- 原因は、事業者のWebサイトに名前と単位サイズが同じ別製品が存在していたため
- 2024年9月30日までは両者を区別する方法がなく、それ以降は
detail_urlとskuの値で区別できる
- 1日のうちに同じ製品の同一価格項目が複数回入る問題がある
- 2024年11月2日時点で、1日あたり約6,500製品が影響を受ける
- 例:MetroのDaiya「Mexican 4 Cheeze Blend Gluten Free Shreds」
- 同じ製品が複数カテゴリに掲載されたり、広告商品として別カテゴリまたはページ上部に繰り返し表示されたりするためかもしれない
- Save-On-Foodsの抽出では、一部の製品名・ブランドの組み合わせが
detail_urlの値と合わない問題があった- 影響規模は1日あたり約9製品で、全体約1万製品の一部
- 毎日異なる製品群で発生する可能性がある
- 2024年12月25日のデータセットから修正されたが、以前のデータには遡及適用されていない
関連する食料品価格資料
- 複数のカナダ食料品事業者の価格を一括検索して比較するツール:文書化されていない内部APIを使用
- grocerytracker.ca
- StatcanのMonthly average retail prices for selected products:主要110製品の月平均小売価格データ
- Statcanのポッドキャスト「Eh Sayers」Episode 18 - Why Food Inflation Is Such A Hard Nut To Crack
- Statcanは独自のWebスクレイピングと、食料品小売業者からの直接POSデータを収集している
- そのデータは公開されていない
- Competition BureauのRetail Grocery Market Study Report
- Competition Tribunalへのアクセスは2025年6月20日により容易になる予定だと記されている
- 反競争的濫用で有罪と判断された当事者が支払う罰金に上限を設ける点は批判的に扱われている
- あわせて読む価値のある関連記事と外部事例も整理されている
1件のコメント
Hacker News の意見
「価格データの経済分析、特に時間の経過に伴う複数の価格推移の相互作用/相関関係」は、筆者が考えているよりずっと難しい
カナダには競争政策機関があり、調査の過程で企業にデータを要求する権限もほぼ確実にある。そちらのデータのほうが、ここで使っているデータより良い可能性が高い
こうした案件は、データ分析だけで立証するのはほぼ不可能。もし可能なら、世界中の反トラスト当局がそうしたデータをただ監視していただろうし、談合する側もその監視を逆手に取って回避しようとしたはず
食料品データには、異なる供給者、コスト構造、原材料ショックを持つ何千もの商品の価格が混在しているので、良いアイデアではあるが、実際には時間の無駄に近いと思う――実際に反トラスト分野で働く者として
政府機関は技術的負債が深刻なことで有名なので、データを要求する権限はあっても、それを現代的なデータ分析に近い形で処理しているかは非常に疑わしい。きちんとしたデータレイク、Spark クラスター、クラウドデータウェアハウスではなく、古い SQL データベースからスプレッドシートに引っ張ってくる程度である可能性が高い
StatsCan のような技術中心の部局を除けば、政府のデータサイエンス能力は概して高くない
そのリストに載らないために「もっと露骨に競争してほしい」という圧力をかける出発点になり得る
当該機関は予算も人員も不足しており、全国的にあまりに広く蔓延していて、多くの人にとって日常のように定着した問題を実際に正すインセンティブも弱そうだ
このプロジェクトは気に入った。トロントから引っ越してきたばかりだが、米国と比べると、カナダの主要産業の大半が事実上寡占である点に不満を感じていた
通信、銀行、保険、食料品、航空などを見ると、大手の競合が数社あるだけだ。規制のせいで新しい競争相手を作るのが難しく、小規模な競合は結局大企業に買収されることが多い
その結果、体験はひどいものになる。通信はケーブルもモバイルも高すぎるし、銀行は米国では無料の基本機能にまであらゆる手数料を乗せ、カスタマーサポートもお粗末だ
少なくとも通信市場では、価格談合がかなり明白に見えるので驚きはない。政府の立場からすると、こうした寡占/談合は GDP と税収を押し上げる面があるため厄介だろうが、結局はより多くの競争と消費者保護が、住みやすい国を作るのだと思う
「カナダは多くの面で独占の上に築かれてきた。Hudson’s Bay Company や Canadian Pacific Rail を考えてみればいい。カナダは、自国企業が巨大化するのを許さなければ、米国の競争相手に飲み込まれると常に恐れてきた。だから、競争を支持すると言う政治家たちと、統合を促す法律との間に緊張関係がある」
この戦略は 20 年ほど前まではそれなりに機能していたと思う。消費者にとって理想的ではなかったが、ほとんどのカナダ人にとっては十分に許容範囲だった。今では寡占企業が事実上、略奪的になり、政府資金や市場支配の機会を手当たり次第に飲み込んでいる
例として、Temporary Foreign Worker プログラムは現在カナダ人口の 7%を占め、住宅、医療、労働市場に負担をかけ、国連からは「奴隷制の温床」とまで呼ばれた [1]
[0] https://www.wealthsimple.com/en-ca/magazine/canada-monopolie...
[1] https://documents.un.org/doc/undoc/gen/g24/120/97/pdf/g24120...
また、カナダの合併法は米国とはかなり異なっていたと思う。カナダでは、合併が顧客にとって良いかよりも、株主にとって良いかを基準に見ていたと理解している。ここ 1〜2 年の法改正で変わりつつあり、遅いが変化は来ている
通信会社や銀行が少数で、法外な手数料を課しているのは米国も同じだ。物理インフラと銀行業は世界的に参入障壁が高く、それにはそれなりの理由もある。単にそれだけの問題ではない
筆者がここにいるかは分からないが、ダウンロード可能なSQLite データベースは圧縮をかけると大きく改善する。gzip だけでも約 75% 小さくなる
価格をどう収集したのかをまとめた記事があるのかも気になる。似た分析を数年前からやりたいと思っていたが、労力の 95% をスクレイピングとエンティティマッチングに費やすことになると気づいて、すぐ諦めた
メーカーはたいてい、比較を避けるために意図的に固有の SKU を提供しているようだ
Accept-Encoding: gzipヘッダーを送っているはずだと言おうとしたが、サーバーはContent-Encoding: gzipで応答するつもりがなさそうだ.sqliteアーカイブは 61 MiB まで下がり、ファイルサイズは約 92% 小さくなるカナダが米国と似ているなら、「Xチェーンのバター1ポンドはいくらか」のような質問に答えようとするときの障害は、スーパーが今では価格いじりをあまりにも多くやっていて、正解が一つではないことだと思う
地域や近所によって価格が違うことがあり、在庫管理上の必要性や地域ごとの支払い意思額を反映しているように見える
さらに価格の小技が多い。近所のスーパーではポテトチップス1袋が通常6.99ドルなのに、ある時期には「4個買うと1.99ドル」になる。ある包装食品は、クラッカー、Tide、Pillsburyのビスケットのような互いに関係ない対象商品を5個買うと、4.99ドルのものが1.99ドルになる。チラシを念入りに見なければならず、棚が対象商品をいつもすべて教えてくれるわけでもない
最悪なのは「デジタルクーポン適用価格」だ。電波も悪い店内で遅いアプリを開き、ログインし、セキュリティコードのメールを確認してから、クーポンを探して「クリップ」して初めてセール価格になる。忘れると定価を払う
こういう状況では消費者ごとに実際の支払額が変わるため、データの完全性が心配になる。たとえば誰もがポテトチップス4袋を家に持ち帰るスペースを持っているわけではないので、ある人は4個8ドルではなく1個7ドルを払うことになる。だからポテトチップスは同時に2ドルでもあり7ドルでもある
これが価格を下げるという理論がきっとあるのだろうが、それが何なのか気になる。不動産市場はこの数年、データサイエンティストの学習データに使われるほど透明性がほぼ無限に高まった
その結果、投機家が市場に入り込んでめちゃくちゃになった
変化は、前回の住宅危機とその後のゼロ金利政策が巨大テック企業や不動産関係者を支え、住宅購入へと参入させた側面に近い
何年も水面下ローン状態だった人々と、非常に高い固定費に耐えられず、最終的に多くの地方自治体で住宅ローンより高い家賃を払う新しい市場が結びついた
資本が多いなら、保証されたリターンのある場所にお金を入れるのは完全に理にかなっている
Project Hammerの前提は、食品産業に透明性を適用して談合をあぶり出し、そうした寡占にどんな法律を適用すべきかという議論を促すことだと見ている
株なら高頻度取引業者が押し寄せたと責めることもできるが、不動産価格は別の理由で上がっており、データアクセス性の向上はたまたま同じ時期に起きたことだという可能性のほうがはるかに高く見える。NIMBY、移民、海外投資家など理由はいろいろあり得る。https://xkcd.com/925/ のようなケースに近い
カナダの食料品問題が起きる理由はかなり単純だ
私がリンゴの価格を近隣平均より標準偏差0.5分低く設定したら、それは市場をアンダーカットしようとしているのか、それとも市場と談合しているのか?
平均に設定したら談合なのか、それともリンゴの利益を最大化しようとしているのか?
平均より高く設定したら談合なのか、それともプレミアムなリンゴだと市場に伝えているのか?
相関関係からどうやって談合へ移れるのか? このプロジェクトは、他の市場価格を見て価格を決めることが談合だという前提に立っているように見える。そうでないなら、どうやって談合を叩くハンマーになれるのか? 規制当局が相関関係を合意の証拠と見なせるようにするには、価格を決めるときに市場価格を知らない必要があるということなのか?
見かけは自由市場なのに、競争がその結果を生み出せないなら、それは社会の問題だ。そうなれば社会には適切な手段で是正する権限がある。市場への新規参入者向けの融資・補助金、価格規制法、特定の税制政策、さらには自由市場を拒否して中央統制に移ることまで、社会のイデオロギー次第であり得る
たとえるなら、謎めいた暴力犯罪事件は正義の実現のために解決すべきかもしれないが、社会が全体としてより安全になるために必ずしもその事件を解決しなければならないわけではない
これは単なるデータセットであり、それ自体で談合のようなものを明らかにすることはできない。しかし談合を研究するなら、このデータを企業行動の理解に使うことはできる
それに、談合は必ずしも価格に関係している必要もない
一人で決めて競合より低い価格で売るなら、それは自由市場において資本主義がまさに期待する行動だ
近所の店に電話して「みんなでリンゴの価格を今の2倍に上げよう。そうすれば消費者はその価格で買うしかない」と言えば談合だ
ただし要点は合っている。外部から単純な相関関係だけで談合と非談合を区別するのは非常に難しい。価格はさまざまな正当な理由で収束し得るし、内部情報なしに談合を安定して識別するのは難しい
このプロジェクトでできる最善は、単一の商品群を包括的にモデル化し、価格パターンが談合でしか説明できないことを示す程度だろう。成功するには、その後の訴訟で有罪を示すコミュニケーションのような直接証拠が出てくる必要がある
[1] https://en.m.wikipedia.org/wiki/Collusion
カナダの競争に対する姿勢は米国とは異なる。農産物、つまり乳製品、小麦、メープルシロップ、そして程度は低いが小売のビールと酒類は、価格を決める国家独占によって管理されている
食品が高い理由は、この数年の燃料費にあり、そこに連邦燃料税の引き上げや、輸出支援のためにカナダドルを米ドルに対して弱く保つ半ば公式の政策が購買力を弱めたことも、助けにはならなかった
こうした取り組みは「価格統制」を支持する経済音痴の有権者には受ける
カナダが脱クラーク化のスパイラルのどのあたりにいるのか知りたいなら、国家は政策の失敗を「ぼったくり業者」のせいにしている。次に来るのは買い占め屋、投機家、そしておそらく「国際銀行家」のようなお決まりのクリシェだろう
ただし食品については別だと思う。上位3社の食料品業者はパン価格の談合 [1]、賃金談合 [2]、特定時期の競争禁止合意 [3]を行ってきた。ここでは食品価格は基礎コストだけで動いているわけではない
米国は裏側で税金により価格を支える方式を使っている。その一つが「政府チーズ」で、連邦政府が大量の牛乳を買い上げてチーズにし、福祉受給者に配る。余剰分を買い取って牛乳価格を維持するのだ
カナダはその代わりにクォータで牛乳価格を規制している。どちらの方式も価格を人為的に高く保つ。米国も他の市場で同じようなことをしている
素人目に少し見た限りでは、カナダの食料品チェーンが米国よりずっと集中しているようには見えない。複数のチェーンが同じ少数のブランドに属しているので比較は難しいが、このチャートが参考になる
https://www.howtocook.recipes/the-largest-grocery-stores-and...
上位10社を見て、WalgreensとCVSは除外することにする。3億3,000万人の米国人の大半を8つの財閥がサービスしている計算に見える。Targetを含めるべきかは不明だ。あそこの売上のうち実際の食料品がどれほどなのか分からない。元投稿は、3,800万人のカナダ人の大多数を5つの財閥がサービスしていると示している
例えば最大の食料品チェーンの利益率は、Covid期間中に実際に50%増加した
その代わり分析は、ただ「政府が悪い!」で終わっている。もちろん、政府が通貨供給量の増加や言及された各種政策のために問題の大きな部分であることを否定するわけではない。だがCovidや記録的な企業利益に触れずに食品価格を説明しようとするのは、非常に不誠実だ
それでも、高い価格に文句を言う「経済音痴」の農奴たちが問題だ、ということなのだろう?
数年前、オンタリオ州のビールの単一購入者であるBrewers Retail、つまりThe Beer Storeの価格を、より見やすいスプレッドシート形式で掲載し、総額、mLあたり価格、ケースサイズ別価格などで並べ替えられるようにしたWebサイトがあった
本当に良く、透明で、ただのデータだった
ところが訴訟で脅されて閉鎖された。カナダではどうやら、そういうことはできないらしい。データは自分たちのもので使えない、という馬鹿げた細かい文字の規約があった
食料品のチラシにも似たような細かい文字があった記憶がある
彼らが何をしているのか、そして親切な近所の民主主義がどれほど優れているのかは、みんなよく知っているはずだ。この数年/数十年、毎日新聞で文字どおり読めるのだから
こういうスレッドは粗石の中のダイヤモンドなので、集めるのが好きだ
ノルウェーの食料品市場の大部分を占める上位3社の食料品会社が、価格カルテルで罰金[1]を科されました。
容疑の一つは、特定カテゴリの値上げを知らせるために、そのカテゴリ内の特定商品の価格を上げてシグナルを送っていたというものです。価格調査員を広範に使っていたことも、これに役立っていました。
当初の罰金ははるかに大きかったものの、最終的には3社合計で約4億5,000万ドルとなりました。
比較すると、最大手企業の2023年の税引前利益[2]がだいたいその程度でした。
最近の食料品価格の大幅なインフレは、農家が原材料に対して受け取った金額の増加を大きく上回っていました。
ただしノルウェーは、あちこちに大型店舗が少ない構造ではなく、小規模で地域密着型の食料品店がとんでもなく多いです。オスロ郊外にいる今でも、徒歩15分以内に上位3社傘下の食料品店が8軒あります。
[1]: https://www.nrk.no/norge/daglegvare-etterforskinga_-4_9-mill...
[2]: https://www.dn.no/handel/resultathopp-for-norgesgruppen-tjen...
Norgesgruppenの2005年の年次報告書を見ると、利益率は2.2%でした。2021年には3.8%に上がっており、これはマージンがほぼ75%成長したことになります。