每个价格监控项目都从同一个问题开始:我们需要多久检查一次?检查太少,就会错过那些你花钱想看到的变化。检查太频繁,就会花钱记录那些根本没有变动的价格。
答案取决于价格实际变化的速度有多快,而这一点已经被仔细测量过。经济学家们花了二十年时间大规模抓取在线价格来研究通货膨胀,他们的论文中包含了关于零售商重新定价频率、这一频率如何变化,以及采样方式如何扭曲观察结果的最可靠数据。
本研究将这些数据汇总在一起。以下每个数字均来自论文正文或表格,来源列于文末。
关键要点
- 在线价格变化的速度比过去更快。 在美国大型多渠道零售商中,常规价格每月变化的频率从2008-2010年的15.4%上升到2014-2017年的27.4%。典型的常规价格维持时间从约六个半月降到了不足四个月。
- 市场平台是另一番景象。 在一组追踪六周的Amazon畅销产品中,只有13%的产品保持同一Buy Box价格不变,一半的产品价格变动超过14次。
- 2022-2023年的通胀飙升使各行业和各国在线价格变化的频率翻了一倍多,此前多年这一行为一直保持稳定。
- 零售商的每日和每周检查捕捉到的变化几乎相同。 按月检查会漏掉许多变化,而将一周内的价格取平均会凭空制造出从未发生过的微小变化。
- **合适的检查节奏取决于渠道:**零售商网站每周到每天,竞争激烈的市场平台挂牌则需要每小时或更快。
价格变化如何衡量
研究中反复出现两个指标。
- 频率是指某产品价格与前一次观测值不同的观测次数所占的比例。月度频率为20%意味着在典型的一个月里,五分之一的产品会改变价格。
- 隐含持续时间将频率转换为价格通常维持多久。大多数论文使用公式-1/ln(1 - f),该公式假设每一期价格变化的概率恒定;有些论文则使用更简单的1/f。同样的频率在两种算法下会得出不同的数字,因此持续时间只应在同一篇论文内部进行比较。
研究中还区分了标价(包含临时促销)与常规价(剔除促销)。一个产品在周末促销中降价、之后恢复原价,在标价统计中算作两次变化,而在常规价统计中则不计为变化。
零售商价格的表现
最详尽的证据来自Alberto Cavallo在MIT和Billion Prices Project的研究,该项目到2010年时已经从50个国家300多家零售商每天收集五百万条价格数据。他2018年针对美国大型多渠道零售商的研究,使用汇总为月度频率的每日数据,展示了十年间定价速度加快了多少:
| 时期 | 常规价格月度变化频率 | 隐含持续时间 | 涨价比例 | 降价比例 | 变化的平均幅度 |
|---|---|---|---|---|---|
| 2008-2010 | 15.4% | 6.5个月 | 6.9% | 8.9% | 17.5% |
| 2011-2013 | 22.4% | 4.5个月 | 10.3% | 12.1% | 16.2% |
| 2014-2017 | 27.4% | 3.7个月 | 12.5% | 15.0% | 15.0% |
来源:Cavallo (2018年),《More Amazon Effects》,表1。持续时间使用1/f计算。
若将促销计算在内,月度频率在同一时期内从21%上升到超过31%。价格变化变得更频繁,幅度也略小。
这种加速在各品类之间并不均匀。休闲娱乐和电子产品的常规价格持续时间从13.1个月降到5.5个月,家具和家居用品从14.2个月降到5.9个月。食品和非酒精饮料则持平在6.4个月。变化最快的品类正是在线竞争增长最多的品类。
竞争在产品层面也有所体现。在2016年至2018年每天追踪的约50,000件Walmart商品中,那些同时在Amazon上出售的商品价格维持时间比其他商品短约20%。在服装和鞋类品类中,这一差距更大。
线上和线下价格的联动程度超出许多人的想象。 在另一项针对10个国家56家大型多渠道零售商的研究中,在线价格与门店价格一致的比例为72%,在线价格变化的每周频率(7.6%)与线下(6.8%)并无显著差异。对于同时进行线上线下销售的零售商而言,其网站通常能可靠地反映货架情况。我们关于检测地理定向和动态定价的指南涵盖了并非如此的情况。
市场平台价格的表现
市场平台是定价变化最快的地方。东北大学研究人员在2016年的一项研究追踪了1,641件Amazon畅销产品,每25分钟记录每件产品的前20名卖家情况。在六周内:
| 指标 | 结果 |
|---|---|
| Buy Box价格从未变化的产品比例 | 13% |
| Buy Box价格变化超过14次的产品比例 | 50% |
| Buy Box获胜者从未变化的产品比例 | 31% |
| 被检测到使用算法定价的卖家数量 | 543个,占所有卖家的2.4% |
| 在某产品上变价20次以上的卖家中使用算法定价的比例 | 38% |
来源:Chen、Mislove和Wilson (2016年)。
有些产品在六周内Buy Box变化达数百次,远超过每天一次,而大多数单个卖家从未改变过自己的价格。一小部分采用算法定价的卖家带动了大部分的价格波动。有算法定价卖家参与的产品,几乎从未保持Buy Box价格不变(2%),而没有此类卖家参与的产品这一比例为20%。
重新定价工具如今在Amazon之外也很普遍。在欧盟委员会2017年的电子商务行业调查中,53%的零售商表示会追踪竞争对手的在线价格。其中三分之二使用软件来实现这一点,而在使用软件的零售商中有78%会据此调整自己的价格。关于这在实践中如何运作,请参阅我们关于构建实时竞争价格信息流的指南。
通胀飙升期间发生了什么
价格制定并非一成不变。Cavallo、Lippi和Miyahara使用来自美国及多个欧洲国家的每日抓取价格数据发现,在线价格变化的频率在2021年之前大致保持稳定,此后”在2022年和2023年显著上升,在所有行业和国家均翻了一倍多”。
起点其实很慢。在飙升发生之前的2019-2021年,食品和饮料零售商平均每年改变常规价格约1.9次,从英国的0.8次到荷兰的2.3次不等。
官方消费者价格数据(主要覆盖实体店)也呈现出同样的模式:
- **美国:**剔除促销后的月度价格变化频率从疫情前的约10%上升到2022年初略高于20%的峰值,到2024年回落到约13%(美联储理事会,2025年)。
- **欧元区:**月度频率从2010-2019年平均的8%上升到2022年的12%,随后在2023年和2024年回落(意大利银行,2026年)。同一研究发现,德国数据中在线价格的变化往往比线下更频繁。
2019年足够用的监控节奏,到了2022年就不够用了。节奏应随市场变化而重新审视,而非一次设定就一劳永逸。
在线与线下基准的对比
作为参考,关于美国消费者价格的经典研究发现,包含促销的价格中位持续时间为4.3个月,剔除促销后为5.5个月(Bils和Klenow,2004年)。仅就常规价格而言,1988-2005年间的中位数为8到11个月(Nakamura和Steinsson,2008年)。
与此基准相比,2014-2017年美国大型在线零售商3.7个月的常规价格持续时间大约快了两到三倍。两者使用不同的数据和方法,因此比较只是大致的,但方向是明确的。
这对监控节奏意味着什么
对监控团队最有用的发现来自Cavallo 2018年的研究,该研究比较了同一抓取数据在不同采样间隔下的结果:
| 采样方式 | 美国隐含持续时间 | 发生的情况 |
|---|---|---|
| 每日 | 2.68个月 | 基准 |
| 每周 | 2.91个月 | 几乎相同:“很少有产品每周价格变化超过一次” |
| 每月 | 4.7个月 | ”月内许多价格变化未被观察到” |
| 每周平均值 | 约为每周价格持续时间的一半 | 取平均会产生虚假的小幅变化 |
来源:Cavallo (2018年),《Scraped Data and Sticky Prices》,已发表版本。
由此可得出四条实用规则。
- 对于零售商网站,每周采样能捕捉到大部分变化,每天采样则几乎能捕捉到全部。 从每周改为每天,测量结果几乎没有差别。从每周改为每月,则会造成很大差异。
- 在测量变化之前绝不要对价格取平均。 每周平均值会使测得的持续时间和变化幅度都减半,因为一次发生在周中的降价会变成两次较小的变动。应存储每一个观测到的价格。
- 对于市场平台,分钟和小时级别的差异很重要。 竞争激烈的Buy Box价格一天之内可能变化多次。东北大学团队最终确定每25分钟采集一次,因为他们发现每分钟爬取大多捕捉到的是市场平台自身系统产生的短暂波动,而非真实的重新定价。
- 既要记录价格,也要记录库存情况。 在Cavallo的每日数据中,22%到37%的每日观测值缺失,原因是产品缺货或页面无法采集,而缺货本身被证明是一个有用的信号:在美国,缺货率在疫情期间从约14%激增到超过35%。数据中的空缺本身就是信息,而不仅仅是噪音。
| 渠道 | 建议的起始节奏 |
|---|---|
| 零售商网站,稳定品类(杂货、家居用品) | 每周一次,促销期间每天一次 |
| 零售商网站,快速变化品类(电子产品、家居用品) | 每天一次 |
| 有多个卖家的市场平台挂牌 | 每小时一次,畅销品更快 |
| 旅行票价和酒店房价 | 每个出发或入住日期每天一次,临近日期时更频繁 |
在自己的数据上进行测量
如果你已经在收集价格数据,就可以测量自己市场的波动性,而不必依赖别人样本的平均值。下面的函数可根据每日观测值计算频率、隐含持续时间、涨价比例以及变化幅度的中位数:
import math
from collections import defaultdict
def change_stats(observations, min_change=0.0):
"""observations: (product_id, day, price) tuples from a daily scrape.
Compares each price with the product's previous observed price on the day
before. Gaps are skipped, not filled: a price carried across a missing day
would hide changes, and an interpolated one would invent small ones.
"""
by_product = defaultdict(dict)
for product, day, price in observations:
by_product[product][day] = price
pairs = changes = increases = 0
sizes = []
for prices in by_product.values():
for day in sorted(prices):
previous = prices.get(day - 1)
if previous is None:
continue
pairs += 1
change = (prices[day] - previous) / previous
if abs(change) > min_change:
changes += 1
increases += change > 0
sizes.append(abs(change))
frequency = changes / pairs if pairs else 0.0
sizes.sort()
return {
"daily_pairs": pairs,
"frequency": round(frequency, 4),
# Mean days between changes if each day were an independent draw.
"implied_duration_days": round(-1 / math.log(1 - frequency), 1) if 0 < frequency < 1 else None,
"share_increases": round(increases / changes, 3) if changes else None,
"median_abs_change": round(sizes[len(sizes) // 2], 4) if sizes else None,
}
它只将每个价格与前一天的价格进行比较。缺失的日期会被跳过而非填补,因为将最后一个价格延续下去会掩盖真实变化,而用估算值填补空缺则会凭空制造出微小的变化。这正是研究在平均化数据中发现的同一种扭曲。
一个简单的例子:
from price_changes import change_stats
observations = [
("sku-1", 1, 19.99), ("sku-1", 2, 19.99), ("sku-1", 3, 17.99), ("sku-1", 4, 17.99),
("sku-2", 1, 5.49), ("sku-2", 2, 5.49), ("sku-2", 4, 5.79), ("sku-2", 5, 5.79),
("sku-3", 1, 249.00), ("sku-3", 2, 239.00), ("sku-3", 3, 249.00), ("sku-3", 4, 249.00),
]
print(change_stats(observations))
{'daily_pairs': 8, 'frequency': 0.375, 'implied_duration_days': 2.1, 'share_increases': 0.333, 'median_abs_change': 0.0418}
第二个产品的价格在缺失的一天内从5.49涨到5.79,因此该变化未被计入。在真实数据中,缺失的日期往往是缺货和采集失败的日期,应在报告结果时一并说明缺失的数量。一开始就干净地采集数据会有所帮助:因被封锁而导致的缺失观测,看起来与因缺货而导致的缺失观测并无二致。我们关于每条干净记录的成本的指南阐述了失败率如何影响监控预算。
针对每个品类和每个竞争对手分别运行该函数。隐含持续时间只有几天的品类需要每天或更频繁地采集。以月为单位计量的品类则可以每周检查一次而不会错失信息。
常见问题
在线价格多久变化一次?
在美国大型多渠道零售商中,2014-2017年间约27%的产品在典型月份内改变了常规价格,因此一个常规价格大约维持四个月。市场平台的价格变化要快得多:在一项研究中,一半的Amazon畅销产品在六周内Buy Box价格变化超过14次。
每日价格监控是否必要?
对大多数零售商网站来说,每周监控就能捕捉到大部分变化,比较每日和每周采样的研究发现两者结果几乎相同。每日监控对快速变化的品类、促销活动和市场平台而言很重要。按月监控会漏掉许多变化。
在线价格是否比实体店价格变化更频繁?
在同时经营线上线下业务的零售商中,价格一致的比例约为72%,变化速率也相近。只有线上渠道的竞争,尤其是市场平台,才是价格变化最频繁的地方。
通货膨胀是否改变了价格变化的频率?
是的。在线价格变化的频率在2022年和2023年翻了一倍多,美国和欧元区的官方价格数据也显示出类似的上升,随后部分回落到早先水平。
结论
如今在线价格变化的速度比十年前更快,市场平台上的变化速度远远快于零售商网站,而通胀上升时变化速度还会进一步加快。研究给出了一条明确的监控准则:在零售商网站上,每周采集能捕捉到每日采集所能捕捉到的大部分内容,按月采集会漏掉许多变化,而取平均的数据会扭曲真实情况。衡量你自己的品类,根据它们实际变化的速度设定节奏,并在市场变化时重新审视这一节奏。
来源与参考文献
- Cavallo, A. (2018年). More Amazon Effects: Online Competition and Pricing Behaviors. NBER工作论文25138号。
- Cavallo, A. (2018年). Scraped Data and Sticky Prices. Review of Economics and Statistics 100(1)。
- Cavallo, A. (2017年). Are Online and Offline Prices Similar? Evidence from Large Multi-Channel Retailers. American Economic Review 107(1)。
- Cavallo, A. 和 Rigobon, R. (2016年). The Billion Prices Project: Using Online Prices for Measurement and Research. NBER工作论文22111号,发表于Journal of Economic Perspectives 30(2)。
- Cavallo, A., Lippi, F. 和 Miyahara, K. (2023年). Large Shocks Travel Fast. NBER工作论文31659号。
- Cavallo, A. 和 Kryvtsov, O. (2023年). What Can Stockouts Tell Us About Inflation? Evidence from Online Micro Data. NBER工作论文29209号。
- Chen, L., Mislove, A. 和 Wilson, C. (2016年). An Empirical Analysis of Algorithmic Pricing on Amazon Marketplace. WWW 2016。
- 欧盟委员会 (2017年). Final report on the E-commerce Sector Inquiry 及 staff working document。
- Montag, H. 和 Villar, D. (2025年). Post-Pandemic Price Flexibility in the U.S. 美联储理事会,FEDS 2025-024号。
- Gautier, E. 等 (2026年). Consumer price stickiness in the euro area during an inflation surge. 意大利银行,讨论文稿1524号。
- Bils, M. 和 Klenow, P. (2004年). Some Evidence on the Importance of Sticky Prices. Journal of Political Economy 112(5)。
- Nakamura, E. 和 Steinsson, J. (2008年). Five Facts About Prices: A Reevaluation of Menu Cost Models. Quarterly Journal of Economics 123(4)。
Cavallo的多项研究使用了来自PriceStats的数据,他是该公司的联合创始人;相关论文对此均有披露。