每日投放报告:2026-08-03,对比 2026-08-02

这个 UTC 日里有两个广告系列在买量,而且没有共用过任何一个小时。原有的全球投放广告系列从 UTC 04:00 开始投,到 11:20 被关掉;一个新搭的广告系列带五个广告组、每组一条素材、日预算各 $100,从 12:44 开始投,一直跑到午夜。两者合计花费 $445.83,按 Meta 的口径买到 766 次安装,按我们自己的记录是 805;报表时区、三种收入口径和预算区间的定义在附录。

1总览

2026-08-022026-08-03
花费$278.28$445.83
展示次数28,955213,053
CPM(千次展示成本)$9.61$2.09
链接点击量2,8535,649
CTR(点击率)9.85%2.65%
安装数(Meta)745766
点击→安装26.1%13.6%
单次安装成本(CPI)$0.374$0.582
安装数(我们的记录)795805
入账收入$559.00 · ROAS 2.01 (Meta $610.49 / 2.19)$709.35 · ROAS 1.59 (Meta $738.83 / 1.66)
当日回收$272.13 · ROAS 0.98$397.69 · ROAS 0.89
同期群 24 小时$360.61 · ROAS 1.30 · 覆盖率 100%$474.05 · ROAS 1.06 · 覆盖率 100%
当日回收付费用户3239
当日回收 ARPU / ARPPU$0.342 / $8.50$0.494 / $10.20

同期群价值 —— d0 / d3 / d7 的 ARPU 与 ARPPU

按安装日计算,从每个用户自己的安装时刻起算:dN 是他自己的前 (N+1) x 24 小时。ARPU 取自 Adjust,也就是合作方后台看到的那一套;ARPPU 取自我们自己的支付流水,因为 Adjust 没有累计去重付费人数这个字段。窗口还没走完的档位留空,不写 0。

应用ARPU (d0)ARPU (d3)ARPU (d7)ARPPU (d0)ARPPU (d3)ARPPU (d7)安装数
Vloom$0.5289$0.8934$1.1111$10.30$14.29$16.06896

⚠ 混合投放各列不能用。 一条广告(spill)买走了 85.7% 的展示次数,其中 99.6% 落在同一个小时里,CPM $0.52。剔掉它:

08-0208-03 混合08-03 剔除 spill
花费$278.28$445.83$336.11
展示次数28,955213,05330,405
CPM$9.61$2.09$11.05
CTR9.85%2.65%8.61%
点击→安装26.1%13.6%26.5%
单次安装成本$0.374$0.582$0.485

剔掉 spill,变贵了,转化率持平。 展示次数 +5%,CPM +15%,点击→安装 26.5% 对 26.1%,CPI +30%;花费 +21%,Meta 记的安装数 −7%。

三种收入口径同时下跌,所以这个方向不是口径造成的假象。 入账收入 2.01 → 1.59,当日回收 0.98 → 0.89,同期群 24 小时 1.30 → 1.06。

2分小时:2026-08-03

投放各列,比值两端都取 Meta 的计量口径;付费用户数、ARPU 和 ARPPU 两端都取我们自己的。两套安装数从不交叉使用。入账收入挂在付款小时上,当日回收和同期群挂在安装小时上。小时为 UTC。

小时花费展示CPM点击CTR安装点击→安装CPI入账$bROAS当日回收$wROAS当日回收付费同期群$cROAS
00.000—0—3——8.75—0.000.0000.000.00
10.000—0—1——60.76—0.000.0000.000.00
20.000—0—0——41.69—0.000.0000.000.00
30.000—0—1——26.21—0.000.0000.000.00
45.6551510.975811.26%1017.2%0.5656.471.140.000.0000.000.00
519.642,0099.781899.41%3820.1%0.51710.730.554.990.2514.990.25
624.632,4719.972228.98%6127.5%0.40426.321.0720.060.81320.060.81
727.852,8049.932428.63%5422.3%0.51625.870.9336.631.32440.191.44
830.143,4208.812667.78%6223.3%0.48623.950.7978.622.61578.622.61
929.743,7267.982947.89%7726.2%0.38638.961.3129.981.01348.721.64
1029.543,2039.222507.81%6124.4%0.48419.710.6714.710.50214.710.50
119.081,0468.68999.46%3535.4%0.25952.185.7549.725.48449.725.48
120.29338.79412.12%4100.0%0.07315.5653.670.000.0000.000.00
1318.841,59011.851116.98%2522.5%0.75421.601.1520.411.08326.311.40
14107.17182,8050.593,0001.64%612.0%1.75721.960.200.000.00019.160.18
158.108239.84769.23%2127.6%0.38638.224.725.630.7015.630.70
1614.191,08013.14948.70%2425.5%0.59187.446.1623.201.63223.201.63
1716.031,26712.651038.13%2423.3%0.66822.861.435.760.3615.760.36
1818.311,18115.501079.06%3229.9%0.57228.871.5825.771.41434.941.91
1921.441,26316.981219.58%3327.3%0.65018.880.8832.521.52132.521.52
2018.581,14116.2811610.17%4034.5%0.4659.160.490.000.0006.840.37
2119.931,04619.0512912.33%3426.4%0.58623.221.170.000.0000.000.00
2213.6685915.909511.06%3637.9%0.37948.373.5418.101.33321.771.59
2313.0277116.89739.47%2939.7%0.44931.592.4331.592.43240.923.14
合计445.83213,0532.095,6492.65%76613.6%0.582709.351.59397.690.8939474.051.06

14 时就是这一天全部的异常。 花掉 $107.17,CPM $0.59,其他有投放的小时在 $8–$19;点击→安装 2.0%,其他买到一百次以上点击的小时在 17%–40%;当日回收为零;占当天花费 24.0%、展示次数 85.8%。

前四行没有花费,却有入账收入。那几个小时没有人在买量,但前一天和前两天安装的人还在付钱,这部分只有入账口径会计进来。

每小时的付费用户数在 0 到 5 之间,所以分小时的 ARPPU 就是某一个人的一笔账。水平看合计那一行,各小时只看形状。这张表里干净的信号是 CPM 走势,因为它的分母是展示次数:原有广告系列那几个小时(04:00–11:00)在 $7.98 到 $10.97 之间,没有趋势;新广告系列那几个小时从 13:00 的 $11.85 一路爬到 18:00–23:00 的 $15.50 和 $19.05。

2026-08-05T10:30:27.056632 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 0 3 6 9 12 15 18 21 hour (UTC) 0 20 40 60 80 100 USD Spend by hour 0 3 6 9 12 15 18 21 hour (UTC) 0 25000 50000 75000 100000 125000 150000 175000 impressions Impressions and installs by hour impressions installs 0 10 20 30 40 50 60 70 80 installs (Meta Leads) The day's motion — whole account, 2026-08-03 (UTC)
这一天的走势:分小时花费,以及展示次数对安装数
2026-08-05T10:30:27.279759 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 0 4 8 12 16 20 hour (UTC) 2 4 6 8 10 12 CTR % CTR 0 4 8 12 16 20 hour (UTC) 0.0 2.5 5.0 7.5 10.0 12.5 15.0 17.5 USD per 1,000 impressions CPM 0 4 8 12 16 20 hour (UTC) 5 10 15 20 25 30 35 40 installs / clicks % Click → install 0 4 8 12 16 20 hour (UTC) 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 USD Cost per install Delivery by hour — whole account, 2026-08-03 (UTC)
全账户分小时的 CTR、CPM、点击→安装与 CPI

对比 2026-08-02:逐小时对齐

只比较两天都有投放的小时。在这个账户上做日环比,一天之内的时段结构是最大的混杂因素,所以只要有一天缺了某个小时,这个小时就整个丢掉。这一段按报表时区计算,读表的代码和上面那张表是同一套,因为花费、展示次数、点击和安装都挂在 Meta 的投放小时上,跨两个账户日可以精确重新拼接。

按 UTC 时钟,两天都有投放的小时:08、09、10、11、13、14、15、16、17。2026-08-03 另外还投了 04、05、06、07、18、19、20、21、22、23。2026-08-02 另外还投了 00、12。只比较共同投放小时。

数一下每个共同投放小时朝哪个方向走,这不需要加权,问的只是方向:

指标2026-08-03 更高的小时数更低的小时数符号检验
CPM9 个里 5 个9 个里 4 个p = 1.000
CTR9 个里 1 个9 个里 8 个p = 0.039
点击→安装9 个里 5 个9 个里 4 个p = 1.000
CPI9 个里 7 个9 个里 2 个p = 0.180

符号检验把幅度扔掉,换来一个不需要加权的方向。

只有 CTR 一个比值的差异显著:9 个共同投放小时里有 8 个在 08-03 更低,p = 0.039。CPM 和点击→安装是抛硬币;CPI 偏贵,但没过 0.05。

逐小时完整对照,2026-08-02 → 2026-08-03

每一个共同投放小时,2026-08-02 → 2026-08-03。所有列的每个比值,两端都是 Meta 的计量口径。这里刻意不放收入:每小时的付费用户数在 0 到 3 之间,收入列会把某一个人的一笔账当成比率来读。

小时展示次数CPMCTR点击→安装CPI
081,512 → 3,4208.79 → 8.8110.98% → 7.78%17.5% → 23.3%0.458 → 0.486
094,266 → 3,7268.46 → 7.988.74% → 7.89%22.0% → 26.2%0.440 → 0.386
104,119 → 3,20310.05 → 9.229.42% → 7.81%24.7% → 24.4%0.431 → 0.484
113,119 → 1,0468.89 → 8.689.43% → 9.46%27.2% → 35.4%0.347 → 0.259
132,752 → 1,59011.32 → 11.8511.12% → 6.98%23.5% → 22.5%0.433 → 0.754
142,578 → 182,8059.88 → 0.5910.78% → 1.64%28.4% → 2.0%0.322 → 1.757
152,670 → 8239.09 → 9.8410.19% → 9.23%24.6% → 27.6%0.362 → 0.386
163,024 → 1,0809.11 → 13.1410.35% → 8.70%22.4% → 25.5%0.393 → 0.591
171,543 → 1,2678.71 → 12.659.07% → 8.13%30.7% → 23.3%0.313 → 0.668

合并行是 14 时一手造成的:第 4 节给这一天合并的 198,960 次展示里,182,805 次来自这一个小时。它是已被否掉的 spill 版本(DECISION_LOG.md #50)。

2026-08-05T10:30:27.528711 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 8 10 12 14 16 hour (UTC) 2 4 6 8 10 CTR % CTR 2026-08-02 2026-08-03 8 10 12 14 16 hour (UTC) 0 2 4 6 8 10 12 USD per 1,000 impressions CPM 8 10 12 14 16 hour (UTC) 5 10 15 20 25 30 35 installs / clicks % Click → install 8 10 12 14 16 hour (UTC) 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 USD Cost per install Delivery by hour — 2026-08-03 against 2026-08-02, shared hours only (UTC)
同样这四个比值,把前一天叠在当天上,只取共同投放小时

3分国家

2026-08-23T12:43:18.483707 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ IN US GB PH ID MY TR MX FR AR AU ES 0 20 40 60 80 100 USD delivery raked onto the report clock against two measured margins; revenue is the report day Spend against within-day revenue by country — 2026-08-03 spend within-day revenue
分国家:花费对当日回收
2026-08-23T12:43:18.533837 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ −0.04 −0.02 0.00 0.02 0.04 USD per install Cost per install by country — 2026-08-03 (report clock)
分国家的单次安装成本

(一)大盘分国家,2026-08-03。 按报表时区。 Meta 不提供小时 × 国家的交叉表,所以每一份国家切片都要从它自己的账户日折算到 UTC;自有口径本就在 UTC 上。

国家花费占比展示次数CPM注册数 (自有)单次注册成本当日回收wROAS付费用户
IN$108.1524.3%91,101$1.19216$0.501$97.680.9033
US$33.097.4%762$43.4123$1.439$4.990.154
GB$14.243.2%986$14.4318$0.791$16.901.191
PH$13.993.1%12,670$1.1042$0.333$5.630.402
ID$13.363.0%3,374$3.9642$0.318$15.961.204
MY$12.872.9%3,555$3.6219$0.678$11.740.911
TR$12.802.9%826$15.5027$0.474$53.224.163
MX$11.352.5%2,365$4.8019$0.597$11.421.016
FR$11.002.5%1,530$7.1915$0.733$31.152.832
AR$10.072.3%1,695$5.9429$0.347$0.000.001
AU$8.021.8%257$31.266$1.337$0.000.001
ES$7.901.8%1,645$4.8015$0.526$38.844.922

其余 191 个国家未列出, $188.99 合计(占本表 42.4%)。

对账:哪些是实测的,哪些是折算的。 每一个分国家单元格都是一次跨小时的分配;每一个总计都是实测的。B1(UTC-7)$49.92 来自账户日 2026-08-02、$395.91 来自账户日 2026-08-03,实测的 UTC 日总计是 $445.83。

上表中没有出现的账户: Nomad Node, KBM1, HR1. 它们的花费在每一张日粒度的表里都有;缺的只是国家切片。

(二)同一切片,每一个账户,2026-08-03.

B1

国家花费占比展示次数CPM注册数 (自有)单次注册成本当日回收wROAS付费用户
IN$108.1524.3%91,101$1.19216$0.501$97.680.9033
US$33.097.4%762$43.4123$1.439$4.990.154
GB$14.243.2%986$14.4318$0.791$16.901.191
PH$13.993.1%12,670$1.1042$0.333$5.630.402
ID$13.363.0%3,374$3.9642$0.318$15.961.204
MY$12.872.9%3,555$3.6219$0.678$11.740.911
TR$12.802.9%826$15.5027$0.474$53.224.163
MX$11.352.5%2,365$4.8019$0.597$11.421.016
FR$11.002.5%1,530$7.1915$0.733$31.152.832
AR$10.072.3%1,695$5.9429$0.347$0.000.001
AU$8.021.8%257$31.266$1.337$0.000.001
ES$7.901.8%1,645$4.8015$0.526$38.844.922

其余 191 个国家未列出, $188.99 合计(占本表 42.4%)。

Nomad Node —— 没有国家小节:它这一天什么都没有投出去,是实测的零。

KBM1 —— 没有国家小节:它这一天什么都没有投出去,是实测的零。

HR1 —— 没有国家小节:它这一天什么都没有投出去,是实测的零。

前一日,2026-08-02,同样两张表。

(一)大盘分国家,2026-08-02。 按报表时区。 Meta 不提供小时 × 国家的交叉表,所以每一份国家切片都要从它自己的账户日折算到 UTC;自有口径本就在 UTC 上。

国家花费占比展示次数CPM注册数 (自有)单次注册成本当日回收wROAS付费用户
IN$72.7126.1%13,199$5.51210$0.346$56.740.7825
US$14.815.3%317$46.7133$0.449$35.962.434
BR$14.475.2%1,162$12.4574$0.195$50.923.524
ID$12.544.5%1,832$6.8556$0.224$0.000.001
TR$9.143.3%471$19.4119$0.481$21.252.333
MY$7.182.6%825$8.7019$0.378$0.000.000
PH$6.352.3%1,431$4.4337$0.172$0.000.000
GB$6.192.2%184$33.626$1.032$0.000.000
IT$5.371.9%217$24.707$0.767$0.000.000
TH$5.151.9%584$8.8213$0.396$0.000.000
MX$5.111.8%458$11.1612$0.426$0.000.002
DE$4.921.8%126$39.009$0.547$0.000.000

其余 178 个国家未列出, $114.35 合计(占本表 41.1%)。

对账:哪些是实测的,哪些是折算的。 每一个分国家单元格都是一次跨小时的分配;每一个总计都是实测的。B1(UTC-7)$7.13 来自账户日 2026-08-01、$271.15 来自账户日 2026-08-02,实测的 UTC 日总计是 $278.28。

上表中没有出现的账户: Nomad Node, KBM1, HR1. 它们的花费在每一张日粒度的表里都有;缺的只是国家切片。

(二)同一切片,每一个账户,2026-08-02.

B1

国家花费占比展示次数CPM注册数 (自有)单次注册成本当日回收wROAS付费用户
IN$72.7126.1%13,199$5.51210$0.346$56.740.7825
US$14.815.3%317$46.7133$0.449$35.962.434
BR$14.475.2%1,162$12.4574$0.195$50.923.524
ID$12.544.5%1,832$6.8556$0.224$0.000.001
TR$9.143.3%471$19.4119$0.481$21.252.333
MY$7.182.6%825$8.7019$0.378$0.000.000
PH$6.352.3%1,431$4.4337$0.172$0.000.000
GB$6.192.2%184$33.626$1.032$0.000.000
IT$5.371.9%217$24.707$0.767$0.000.000
TH$5.151.9%584$8.8213$0.396$0.000.000
MX$5.111.8%458$11.1612$0.426$0.000.002
DE$4.921.8%126$39.009$0.547$0.000.000

其余 178 个国家未列出, $114.35 合计(占本表 41.1%)。

Nomad Node —— 没有国家小节:它这一天什么都没有投出去,是实测的零。

KBM1 —— 没有国家小节:它这一天什么都没有投出去,是实测的零。

HR1 —— 没有国家小节:它这一天什么都没有投出去,是实测的零。

4汇总:两日对比

按 UTC 时钟,合并两天都有投放的那 9 个小时。每个比值两端都是 Meta 的计量口径。

花费展示次数CPM点击CTR安装数点击→安装CPI
2026-08-02$240.3925,5839.402,5309.89%61824.43%$0.389
2026-08-03$262.83198,9601.324,2932.16%3909.08%$0.674

跨小时合并按每个小时投放了多少来加权。 第 2 节的逐小时对照是同样这两天的不加权读法;两者对不上,动的就是结构。

点击→安装在两种读法下对不上,CTR 一致。 合并出来的 62.8% 跌幅全部来自 14 时;CTR 跌的 78.2% 在两种读法下都成立,但只能看方向。

以下固定在原有广告系列的三条素材上,按广告账户自己的时区。单条素材的共同投放小时数据只能按导出文件自带的时钟来切,所以下面这些小时是广告账户自己的 UTC-7 小时。它们落在两个报告日内部的 UTC 08:00–11:59,所以这一段既在本报告的这一天里,也在对比那一天里;但它的小时标签和第 2 节不是一套,它的合并行合并的是四个账户日小时,而不是上面那九个 UTC 小时。

有投放的账户日小时,08-02:[1–10, 21–23];08-03:[0–4]。共同投放小时:[1, 2, 3, 4]。 观测时长 H=6 的覆盖率两天都是 100%。两天都存在的只有原有广告系列的三条素材,所以对比固定在它们身上。

固定在指标08-0208-03变化p判定
合并点击→安装25.63%29.37%+14.6%0.055差异不显著
合并付费率2.88%5.24%+82.4%0.145差异不显著
合并CPI$0.379$0.369更好—
合并RPI$0.338$0.479更好—
合并ROAS0.891.30更好—
bodysuit付费率1.81%6.45%+257.0%0.041更好
bikini付费率7.94%3.23%−59.4%0.252差异不显著
pool5付费率1.19%3.57%+200.0%0.341差异不显著

在共同投放小时上,原有广告系列持平到更好。 每一个合并项都朝账户有利的方向走,没有一个达到显著。

这件事之所以要紧,是因为第 1 节的全天画面显示三种口径的 ROAS 全部下跌。两件事同时成立:整体上这一天投得不如 08-02,而同样三条素材两天都在跑的那几个小时并没有变差。差别在于构成。报告日有十二个小时买的是一个全新的广告系列,对比日没有对应的东西;CPM 一路走高,中间还夹着一个坏掉的小时。

三种口径并排,下面一行是不设观测时长上限的迄今同期群,仅供参考:

口径08-0208-03当天结束后还会变吗
入账收入$559.00 · 2.01$709.35 · 1.59午夜后几小时结算完成,此后固定
当日回收$272.13 · 0.98$397.69 · 0.89不会
同期群 24 小时$360.61 · 1.30$474.05 · 1.06覆盖满即冻结,两天都是 100%
迄今同期群$542.23 · 1.95$524.63 · 1.18约 72 小时内持续上升,仅供参考,从不跨日比较

把入账收入按付款人安装的那个 UTC 日拆开,第一行就是当日回收:

付款人安装于08-02 的入账08-03 的入账
当天$272.13 (48.7%)$397.69 (56.1%)
前一天$239.67 (42.9%)$109.64 (15.5%)
前两天$47.20 (8.4%)$137.54 (19.4%)
前三天—$58.74 (8.3%)
前四天—$5.74 (0.8%)

继承来的收入从当天入账的 51.3% 降到 43.9%,入账收入和当日回收之间的差额全部是它。

2026-08-05T10:30:27.809664 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ booked within-day cohort @ 24h 0 100 200 300 400 500 600 700 USD 2.01 0.98 1.30 1.59 0.89 1.06 the number above each bar is that measure's ROAS against the same day's spend The three revenue measures, 2026-08-02 against 2026-08-03 (UTC) 2026-08-02 2026-08-03
两天的三种收入口径,每根柱子上方是 ROAS
2026-08-05T10:30:27.883889 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 2026-08-02 2026-08-03 0 100 200 300 400 500 600 700 USD the bottom segment IS the within-day figure: the same number seen twice Booked revenue by the day its payer installed (UTC) the day itself one day earlier two days earlier three days earlier four or more
入账收入按付款人安装的日期拆分

5分广告组:分小时

各行按素材标注。新广告系列里每个广告组只有一条广告、一条素材,所以广告组这一行就是素材这一行;原有广告系列的三条素材是同一个广告组里的三条广告,那几行比广告组低一层。

每条素材完整的分小时表格在 _runs/2026-08-05_0804_settled/utc_2026-08-03/measures_out.txt。要看的形状是每条素材什么时候在投,因为这一天两个广告系列没有共用过任何一个小时:

素材投放小时(UTC)花费
earner/bodysuit04:00 – 11:00$88.59
earner/bikini、earner/pool505:00 – 11:00$48.16, $39.52
E2/bikini、E2/mugshot12:00 – 23:00$48.91, $54.49
E2/spill13:00 – 22:00(99.6% 的展示落在 14 时内)$109.72
E2/bodysuit、E2/pool518:00 – 23:00$24.16, $32.28

原有广告系列拿走当天 39.5% 的花费和 55.0% 的 Meta 记安装数,混合 CPI $0.419;新广告系列拿走 60.5% 的花费和 45.0% 的安装数,CPI $0.781。按当日回收算,原有广告系列回报 1.35,新广告系列 0.59;按同期群 24 小时算是 1.51 对 0.77。剔掉 spill,新广告系列的 CPI 是 $0.588,仍比原有广告系列高 40%。

新广告系列做不了分素材的日环比,因为它在 08-02 还不存在;第 4 节的共同投放小时那一段只覆盖原有广告系列的三条素材。

2026-08-05T10:30:27.958518 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 0 2 4 6 8 10 12 14 16 18 20 22 hour (UTC) 5 10 15 20 CTR % CTR by hour — every asset, 2026-08-03 (UTC) E2/spill earner/bodysuit E2/mugshot E2/bikini earner/bikini earner/pool5 E2/pool5 E2/bodysuit
分小时 CTR,每条素材一条线
2026-08-05T10:30:28.166182 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 0 2 4 6 8 10 12 14 16 18 20 22 hour (UTC) 0 10 20 30 40 50 60 installs / clicks % Click → install by hour — every asset, 2026-08-03 (UTC) E2/spill earner/bodysuit E2/mugshot E2/bikini earner/bikini earner/pool5 E2/pool5 E2/bodysuit
分小时点击→安装,每条素材一条线
2026-08-05T10:30:28.264587 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 0 2 4 6 8 10 12 14 16 18 20 22 hour (UTC) 0.5 1.0 1.5 2.0 2.5 3.0 USD Cost per install by hour — every asset, 2026-08-03 (UTC) E2/spill earner/bodysuit E2/mugshot E2/bikini earner/bikini earner/pool5 E2/pool5 E2/bodysuit
分小时单次安装成本,每条素材一条线
2026-08-05T10:30:28.052068 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 0 2 4 6 8 10 12 14 16 18 20 22 hour (UTC) 0 5 10 15 20 25 USD per 1,000 impressions CPM by hour — every asset, 2026-08-03 (UTC) E2/spill earner/bodysuit E2/mugshot E2/bikini earner/bikini earner/pool5 E2/pool5 E2/bodysuit
分小时 CPM,每条素材一条线

6分广告组 × 国家

⚠ 和第 3 节一样,花费与安装按账户日切。 只列花费超过 $1 的格子,按花费排序;完整表格在 _runs/2026-08-05_0804_settled/utc_2026-08-03/measures_out.txt。这里是它最前面的几行:

素材国家花费安装CPI当日回收wROAS同期群@24cROAS
E2/spillIN23.6945.9230.000.000.000.00
E2/mugshotIN23.56191.2400.000.000.000.00
E2/bikiniIN21.93470.46720.830.9520.830.95
earner/bodysuitIN19.59500.39259.573.0481.874.18
E2/pool5IN9.52170.5600.000.000.000.00
E2/pool5US9.2761.5450.000.000.000.00
earner/bikiniIN9.12290.3145.760.635.760.63
E2/bodysuitUS8.8261.4700.000.000.000.00
E2/bodysuitIN8.19170.4820.000.005.760.70
earner/pool5IN6.39100.63911.521.8011.521.80

在成本上,各实验臂差距最大的地方是印度:earner/bodysuit $0.392,E2/spill $5.923,E2/mugshot $1.240,一个国家内部拉开十五倍。

同一条素材在两个广告系列里都跑过的位置,也只有印度这三处。bikini 在原有广告系列是 $0.314,在新广告系列是 $0.467;bodysuit 是 $0.392 对 $0.482;pool5 是 $0.639 对 $0.560。三对里有两对老广告组便宜 23% 和 49%,这正是新广告组溢价该有的样子;第三对反过来,新广告组便宜 12%。所以这笔溢价在三对样本上只是一种倾向,还称不上量出来的数。

2026-08-05T10:30:28.398124 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ E2/spill E2/mugshot E2/bikini E2/pool5 earner/bodysuit E2/bodysuit earner/bikini earner/pool5 0 20 40 60 80 100 % of that asset's spend Where each asset bought — share of its own spend by region, 2026-08-03 (META day) IN US GB PH MX ID other
每条素材买在哪里:它自己的花费按地区的占比
2026-08-05T10:30:28.501184 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ E2/spill E2/mugshot E2/bikini E2/pool5 earner/bodysuit E2/bodysuit earner/bikini earner/pool5 0 1 2 3 4 5 6 USD per install Cost per install by region — every asset, 2026-08-03 (META day) IN US GB PH MX ID
分地区的单次安装成本,全部素材
2026-08-05T10:30:28.592297 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ E2/spill E2/mugshot E2/bikini E2/pool5 earner/bodysuit E2/bodysuit earner/bikini earner/pool5 0 10 20 30 40 50 60 USD Within-day revenue by region — every asset, 2026-08-03 (META day) IN US GB PH MX ID
分地区的当日回收,全部素材

这三张地区图和上表出自同一份分国家导出,所以同样带着账户日的口径限制,每张图的标题上都标了。

7分广告组:汇总,三种口径

下面三张表由 report_tables.py 生成,列和顺序与本系列其他每一份报告完全一致,这正是一天能拿去和另一天比的前提。它们的支付数据截止到 2026-08-05 10:59 UTC。当日回收在午夜已封存,入账收入在午夜后几小时已结算,两者都不会再动;同期群 24 小时在这一天覆盖率 100%,因此同样冻结。各行按素材标注,和第 5 节同一套。

A. 分素材:投放端

每个比值两端都是 Meta 的计量口径。我们自己的注册记录不进这张表。

素材花费展示次数CPM点击CTR安装数点击→安装CPI
E2/spill$109.72182,6480.603,0301.66%732.41%$1.503
earner/bodysuit$88.5910,8258.188017.40%20825.97%$0.426
E2/mugshot$54.493,39416.052878.46%6924.04%$0.790
E2/bikini$48.914,37511.183748.55%10227.27%$0.480
earner/bikini$48.164,67010.314529.68%12828.32%$0.376
earner/pool5$39.523,69910.683679.92%8523.16%$0.465
E2/pool5$32.281,80917.8421511.89%5324.65%$0.609
E2/bodysuit$24.161,63314.791237.53%4839.02%$0.503

B. 分素材:三种收入口径

每一列都是我们自己的记录。Meta 只能给出入账收入,所以它以括注形式跟在那一列旁边,从不单独占一行。付费用户是去重的人数,从不是交易笔数。同期群观测时长 H=24h,这一天覆盖率 100%。报表时区为 UTC。

素材入账bROAS (Meta)当日回收wROAS同期群@HcROAS付费用户付费率ARPUARPPU最大付费用户占比
E2/spill$5.890.05 (0.11)$5.890.05$25.050.2311.3%0.0755.89100.0%
earner/bodysuit$340.673.85 (4.61)$127.821.44$156.951.77125.2%0.54910.6522.2%
E2/mugshot$10.700.20 (0.26)$10.700.20$16.600.3022.9%0.1575.3553.4%
E2/bikini$73.431.50 (1.65)$73.431.50$80.511.6598.6%0.6998.1623.0%
earner/bikini$159.563.31 (2.15)$86.261.79$86.261.7975.3%0.65812.3248.0%
earner/pool5$43.341.10 (1.12)$23.580.60$23.580.6044.5%0.2655.8926.8%
E2/pool5$44.601.38 (1.38)$44.601.38$44.601.3835.8%0.85814.8772.9%
E2/bodysuit$25.411.05 (1.05)$25.411.05$40.491.6812.1%0.52925.41100.0%

16 付费用户门槛(#37):上表里付费用户数不到 16 的行,只能看方向,不能看幅度。

C. 分素材:国家结构

⚠ 这张表按账户日切,不按 UTC 日。 Meta 不提供「小时 × 国家」的交叉表,所以分国家的投放数据只存在于广告账户自己的 UTC-7 日上,无法重新拼接。相对上面的 A、B 两表,它是一个偏移七小时的窗口;只能读结构,绝不能拿去和它们比水平。

最后一列是该素材自己的当日回收里来自美国的比例:只要它远高于美国的花费占比,这条素材的回报是它买到的那块地域的属性。

素材花费印度 %美国 %其他 %美国占其收入 %
E2/spill$110.0521.5%4.5%74.0%0.0%
earner/bodysuit$57.1134.3%3.0%62.7%0.0%
E2/mugshot$78.3630.1%6.9%63.0%46.6%
E2/bikini$68.5632.0%8.5%59.5%0.0%
earner/bikini$38.3023.8%9.1%67.1%0.0%
earner/pool5$30.9520.6%6.8%72.6%0.0%
E2/pool5$64.6114.7%14.3%70.9%0.0%
E2/bodysuit$53.7715.2%16.4%68.4%0.0%

⚠ 原有广告系列的入账 ROAS 被继承来的收入抬高了,新广告系列没有这回事。 原有广告系列在 UTC 11:20 就停止买量,却整天都在收更早安装日的付款;earner/bodysuit 入账 3.85 对当日回收 1.44,差的就是这一块。新广告系列的各实验臂完全没有更早的同期群,所以它们的入账和当日回收数字按定义就相等。比较各实验臂要用当日回收或同期群,绝不能用入账。

B 表没有一行过得了 16 付费用户门槛。earner/bodysuit 以 12 个当日回收付费用户排当天第一,所以这一天分素材的收入排名整体只是一组方向。

2026-08-05T10:30:28.700533 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 08-01 08-02 08-03 08-04 day (UTC) 0 1 2 3 4 5 6 7 8 payers / installs % Payer rate by day — every asset (UTC) earner/bodysuit earner/bikini E2/bikini E2/bodysuit E2/pool5 E2/mugshot earner/pool5 E2/spill E2/spill2
分日付费率,每条素材一条线
2026-08-05T10:30:28.797322 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 08-01 08-02 08-03 08-04 day (UTC) 0.0 0.2 0.4 0.6 0.8 1.0 1.2 within-day USD per install ARPU by day — every asset (UTC) earner/bodysuit earner/bikini E2/bikini E2/bodysuit E2/pool5 E2/mugshot earner/pool5 E2/spill E2/spill2
分日 ARPU,每条素材一条线
2026-08-05T10:30:28.890837 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 08-01 08-02 08-03 08-04 day (UTC) 0 5 10 15 20 25 within-day USD per payer ARPPU by day — every asset (UTC) earner/bodysuit earner/bikini E2/bikini E2/bodysuit E2/pool5 E2/mugshot earner/pool5 E2/spill E2/spill2
分日 ARPPU,每条素材一条线
2026-08-05T10:30:29.061875 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 08-01 08-02 08-03 08-04 day (UTC) 0.0 0.5 1.0 1.5 2.0 revenue / spend Within-day ROAS by day — every asset (UTC) earner/bodysuit earner/bikini E2/bikini E2/bodysuit E2/pool5 E2/mugshot earner/pool5 E2/spill E2/spill2
分日当日回收 ROAS,每条素材一条线

收入按天画、跨整段投放,从不按小时画,因为每条素材每小时只有 0 到 2 个付费用户,分小时的 ARPPU 就是某一个人的一笔账。上面四张图里的空心点表示未过 16 付费用户门槛,这一天的每一个点都是空心的。安装数不足 20 的素材不进下面的综合图,也不进第 6 节的地区图;这一天八条素材全部过了这道关,所以一条都没缺。

2026-08-05T10:30:29.175309 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ CTR click→install CPI payer rate * ARPU * wROAS * 0.0 0.2 0.4 0.6 0.8 1.0 normalised across the day (1.0 = best of the pack) * axis sits under the 16-payer bar on most days: direction only, never a level. Assets under 20 installs on the day are not plotted. Composite — every asset across every measure, 2026-08-03 E2/spill earner/bodysuit E2/mugshot E2/bikini earner/bikini earner/pool5 E2/pool5 E2/bodysuit
综合图:每条素材在每个指标上的表现,在当天范围内归一化

同预算区间、结构中性的切分

账户时区。 五个实验臂处在同一个日预算 $100 的预算区间里,08-03 05:44 → 08-04 00:01 PT。结构中性一列把每个实验臂的 ROAS 按该区间的合并国家结构重新定价;各格已按观测时长 H=6 累积。

广告预算区间日预算安装花费CPMCTRIN%CPIRPIROAS结构中性
bikiniE2-R110016069.811.328.82%34%0.4360.4901.121.08
bodysuitE2-R110011156.212.586.90%17%0.5060.4230.840.80
pool5E2-R110011166.714.889.93%15%0.6010.5991.000.81
mugshotE2-R11009580.916.978.64%22%0.8520.1790.210.22
spillE2-R110085111.10.611.67%7%1.3080.0690.050.08

结构中性重新定价没有让任何一个实验臂的 ROAS 变动超过 0.19,排序也一个都没变,所以地域不是这个排名的成因。

安装同期群的 ARPU 与 ARPPU,固定观测时长

安装日按 UTC 时钟,安装数和付费用户数取自我们自己的记录。这一天八个实验臂在 H=24 上覆盖率都是 100%。付费率和 ARPPU 两列是迄今数字,会随同期群变老而增长,所以它们描述的是这一天,不能跨日读;能跨日比的是 H=24 那一列。

实验臂安装数付费用户付费率ARPPU(迄今)ARPU @ H=24
earner/bodysuit233135.6%$12.890.674
earner/bikini13196.9%$10.950.658
earner/pool58955.6%$7.070.265
E2/bikini105109.5%$9.640.767
E2/bodysuit4836.2%$13.500.844
E2/pool55235.8%$14.870.858
E2/mugshot6834.4%$5.530.244
E2/spill7922.5%$12.530.317

只有原有广告系列的三条素材在同一观测时长、同一覆盖率下有前一天的数据。在 H=24 上,bodysuit 从 0.449 走到 0.674,bikini 从 0.407 走到 0.658,pool5 从 0.499 掉到 0.265。三条里两涨一跌,各自背后只有 5 到 13 个付费用户。新广告系列的 mugshot 和 spill 停在 0.244 和 0.317,低于账户里其他任何一个实验臂,而它们也正是单次安装成本排最后的那两个。

8口径与边界

9要把这些问题定下来,需要什么

10交给五条实验臂测试的东西

预算对齐的那个区间在 08-04 00:01 PT 结束,五个新广告组从那一刻起成为一次随机化测试的实验臂。这一天是它们的观察基线:

11附录:报表时区、三种口径与预算区间

报告日是一个 UTC 日。 Meta 的导出文件按广告账户自己的时区 UTC-7 打时间戳,所以这一天是 Meta 的 08-02 17:00–23:59 接上 Meta 的 08-03 00:00–16:59,上面每一个投放数字都是跨这两个账户日重新拼接出来的。

三种收入口径贯穿每一张表,从不混用。

口径计什么当天结束后还会变吗
入账收入在这个 UTC 日之内到账的钱,不论付款人哪天安装午夜后几小时结算完成,此后固定。Meta 自己的数字就是这个口径
当日回收当天安装并且在当天结束前付了钱的人不会。午夜已封存
同期群 H 小时收入当天的安装,每个人只计到他自己活满 H 小时为止。本项目的观测时长 H=24,两天在这个口径下覆盖率都是 100%一直上升,直到每一次安装都活满 H 小时

三种口径读的都是我们自己的支付记录;Meta 的数字以括注形式出现在入账那一列旁边,从不单独占一行。

口径校验按账户时区做,因为 Meta 的转化金额挂在它自己的转化小时上,是唯一一列无法诚实地重新拼接进 UTC 日的数据。固定在那个时钟上,我们的记录在 08-03 是 Meta 入账金额的 0.98,08-02 是 0.91,都落在已记录的 0.91–1.06 区间内。第 1 节表里的括注 Meta 数字是为了可追溯;在报表时区上,两者之间的比值不是一次有效的校验。

预算区间指的是广告组日预算没有变动的那一段时间。 它之所以要紧,是因为在这个账户上预算是地域旋钮:预算提上去,买到的国家就更宽、更便宜,所以跨越预算变动去衡量两条素材,比的是两批不同的人群。

这一天处在两个时间上不重叠的预算区间里。 原有广告系列到 UTC 11:20 为止一直是每天 $500 不变,这也是它整个 08-02 所处的同一个预算区间,两天能比较全靠这一点。之后新广告系列从 UTC 12:44 到午夜跑五个广告组,每组每天 $100 不变,这个预算区间在对比日没有对应物。没有任何东西横跨两者,所以本报告不做跨预算区间的比较。

12复现

CFG=_runs/2026-08-05_0804_settled/run_config.json          # tz = UTC
MET=_runs/2026-08-05_0804_settled/run_config_meta.json     # tz = META

# 1 — the three revenue measures, at campaign / hourly / country / asset
PYTHONIOENCODING=utf-8 python -m ad_ops.measures --config $CFG --day 2026-08-03 --prev 2026-08-02

# 1b — the instrument gate, which is only valid on Meta's clock
PYTHONIOENCODING=utf-8 python -m ad_ops.measures --config $MET --day 2026-08-03 --prev 2026-08-02

# 2 — matched clock hours at a fixed horizon, with two-proportion tests (META clock)
PYTHONIOENCODING=utf-8 python -m ad_ops.day_compare --config $MET \
  --today 2026-08-03 --prev 2026-08-02 --h 6 \
  --ads "ww_bikini_10s,ww_bodysuit_10s,ww_pool5_15s" \
  --campaign "bailingxia_meituan_ww_cvr_260730"

# 3 — regimes, horizons, delivery overlap, the decidability gate (META clock)
PYTHONIOENCODING=utf-8 python -m ad_ops.asset_estimator hourly \
  --meta _runs/2026-08-04_e2_start_and_0803_report/exports/ads_hourly_aug3_settled.csv \
         _runs/2026-08-05_0804_settled/exports/ads_hourly_aug4_settled.csv \
  --lum _runs/2026-08-05_0804_settled/lum \
  --fx _runs/2026-08-02_today_read/fx_rates.json \
  --ads "ww_bikini_10s,ww_bodysuit_10s,ww_pool5,ww_mugshot,ww_spill" \
  --campaign "bailingxia_meituan_ww_cvr_260802" --horizon 6

# 4 — install-cohort ARPU and ARPPU, to date and at fixed horizons
PYTHONIOENCODING=utf-8 python -m ad_ops.cohort_arpu --config $CFG \
  --days 2026-07-31,2026-08-01,2026-08-02,2026-08-03

# 5 — §7's three standing tables, §2's matched-hours pairing, §4's pooled funnel,
#     and the nineteen standing charts
PYTHONIOENCODING=utf-8 python -m ad_ops.report_tables --config $CFG \
  --day 2026-08-03 --prev 2026-08-02
PYTHONIOENCODING=utf-8 python -m ad_ops.report_charts --config $CFG \
  --day 2026-08-03 --prev 2026-08-02 \
  --days 2026-08-01,2026-08-02,2026-08-03 --out ad_ops/figures/2026-08-03 \
  --md _runs/2026-08-05_0804_settled/chartblock_2026-08-03.md --relpath figures/2026-08-03

report_tables --prev 除了第 7 节的三张固定表格,还会输出第 2 节的共同投放小时对照和第 4 节的合并漏斗。report_charts 写出全部十九张图,以及按节分组的图片链接。

报表时区是 UTC,广告账户的时区是 UTC-7,所以按 UTC 拉数比按账户日拉数每次都要多一份导出:前一个账户日的分小时文件,每次都要。这一天由 ads_hourly_aug2_settled.csv 的 17–23 时和 ads_hourly_aug3_settled.csv 的 00–16 时拼成,对比日由 ads_hourly_aug1_settled.csv 的 17–23 时和 ads_hourly_aug2_settled.csv 的 00–16 时拼成。估算器还会额外载入 ads_hourly_aug4_settled.csv,这样午夜之后的安装就不会被倒算回 08-03 最后一个有投放的格子。

Meta 的导出文件都是在各自那一天收尾并结算之后拉的,每一份都用它自己的内容、行数,以及从 Reporting starts / Reporting ends 读出的窗口来核验,从不靠文件名。分国家数据来自 ads_country_day_jul1_aug5.csv,它按账户日组织,这就是第 3 节、第 6 节、C 表和地区图无法跟随报表时区的原因。

支付记录:两个通知频道的 Telegram 导出,用 ad_ops/lum_notifications/parse_export.py 解析。支付数据切至 2026-08-05 10:59 UTC,此时两天的同期群在 H=24 上覆盖率都是 100%;截止时各次安装的年龄,08-03 是 35.0–58.1 小时,08-02 是 61.4–82.9 小时。

全程按 Ad ID 选取,从不按广告名或广告组名。两个广告系列跑的素材名逐字节相同,按名字过滤会多归因约 70%。

Internal — noindex. Not for distribution outside the team.