每日投放报告 — 2026-08-02,对比 2026-08-01

广告系列 bailingxia_meituan_ww_cvr_260730:一个 CBO 广告组,日预算 $500,三条素材,全球投放, 仅 Android,优化目标是购买。按 UTC 日算,它在 11 个投放小时里花掉 $278.28,08-01 是 23 个 小时花掉 $733.94。报表时区、三种收入口径和预算区间的定义都在附录,附录还写了限定本报告每一次 对比的那件事:这两天不在同一个预算区间。

1总览

08-0108-02变化
投放小时数2311−12
花费$733.94$278.28−62.1%
安装数1,963745−62.0%
单次安装成本$0.374$0.374−0.1%
入账收入$1,110.93 · 1.51 (Meta 1.59)$559.00 · 2.01 (Meta 2.19)+32.7%
当日回收$980.99 · 1.34$272.13 · 0.98−26.8%
同期群 24 小时$1,163.16 · 1.58$360.61 · 1.30−18.2%

同期群价值 —— 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.3736$0.6544$0.9786$9.74$15.35$20.86938

三个收入行的变化列是 ROAS(广告支出回报率)的变化。三个口径的金额都跌了, 跌幅大致跟着花费走。

账户用同样的价格买到了更少的量。 CPM(千次展示成本)涨了 21.1%,CTR(点击率)涨了 21.2%,正好抵消。

入账收入涨了,而这一天自己的流量赚得更少。 当天安装的人赚回来的那一份从 88.3% 降到 48.7%。

下跌是真的,幅度取决于用哪个口径。 当日回收读出 26.8%,同期群 24 小时读出 18.2%; 差额是靠后的安装还剩多少时间可以付钱。

没有一行分素材收入过了付费用户门槛,付费用户分别是 13、10、9 人;第 7 节仍然给它们排了序, 但那只能看方向,不能看幅度。

2分小时,2026-08-02

花费、展示次数、点击和安装数落在投放小时上。入账收入落在钱到账的那个小时。当日回收 和同期群落在安装小时上,也就是这个小时买来的流量后来赚了多少。所以只有当日回收和同期群这 两个比率是拿一个小时的收入除以同一个小时的花费;入账收入这一列放在这里,是为了让当天的总额能 追到它落在一天中的哪个位置。

UTC 小时花费展示CPM点击CTR安装CPI入账ROAS当日回收ROAS同期群 24 小时ROAS
00$7.13799$8.92688.51%16$0.446$14.512.03$14.512.03$14.512.03
01$0.000—0—4—$2.99—$2.99—$2.99—
02$0.000—0—3—$36.50—$2.99—$2.99—
03$0.000—0—1—$8.75—$0.00—$0.00—
04$0.000—0—3—$20.27—$0.00—$0.00—
05$0.000—0—0—$18.74—$0.00—$0.00—
06$0.000—0—5—$29.49—$4.99—$4.99—
07$0.000—0—2—$23.68—$0.00—$0.00—
08$13.291,512$8.7916610.98%29$0.458$0.000.00$0.000.00$0.000.00
09$36.114,266$8.463738.74%82$0.440$7.120.20$42.581.18$42.581.18
10$41.414,119$10.053889.42%96$0.431$69.021.67$47.031.14$57.291.38
11$27.733,119$8.892949.43%80$0.347$26.360.95$16.150.58$82.262.97
12$30.762,573$11.952559.91%73$0.421$28.260.92$28.260.92$28.260.92
13$31.152,752$11.3230611.12%72$0.433$32.701.05$70.642.27$70.642.27
14$25.462,578$9.8827810.78%79$0.322$89.423.51$21.110.83$21.110.83
15$24.262,670$9.0927210.19%67$0.362$36.831.52$10.900.45$10.900.45
16$27.543,024$9.1131310.35%70$0.393$12.250.44$4.990.18$4.990.18
17$13.441,543$8.711409.07%43$0.313$32.912.45$0.000.00$0.000.00
18$0.000—0—11—$16.76—$0.00—$7.12—
19$0.000—0—2—$11.96—$0.00—$0.00—
20$0.000—0—3—$5.76—$4.99—$9.98—
21$0.000—0—2—$15.99—$0.00—$0.00—
22$0.000—0—1—$12.99—$0.00—$0.00—
23$0.000—0—1—$5.76—$0.00—$0.00—
合计$278.2828,955$9.612,8539.85%745$0.374$559.002.01$272.130.98$360.611.30

Meta 自己给这一天的入账合计是 $610.49 · 2.19,走的是它的转化时钟。零投放小时里出现的安装, 是更早那些小时留在转化时钟上的残余,一共 38 个。

分析。 01–07 时是账户日 08-01 的尾巴:按账户时区,CBO 广告组到 17:59 已经花掉 $505.93, 超过每天 $500 的预算。

18–23 时不是预算用完: 到那时只花掉 $271.15,而且同一个账户日里广告系列后来又重新 投了出去。

十三个什么都没买到的小时,入账收入 $209.64,对应的当日回收只有 $15.96。 占入账总额 37.5%,占当日回收总额 5.9%。

投放小时之内,买量是稳的。CPM 在 $8.46 到 $11.95 之间,CTR 在 8.51% 到 11.12% 之间,整段没有 趋势。单次安装成本从 $0.458 一路滑到 $0.313。流量之后的表现就不稳:在实质相同的投放下, 分小时的当日回收 ROAS 从 0.00 跑到 2.27;同一批流量,11 时的当日回收读 0.58,观测时长 24 小时 读 2.97。

最后这一对读数就是截断,一行之内就看得见。小时之间要用同期群那一列比,两天之间要用当日回收 比。

2026-08-05T10:30:24.258157 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 0 3 6 9 12 15 18 21 hour (UTC) 0 5 10 15 20 25 30 35 40 USD Spend by hour 0 3 6 9 12 15 18 21 hour (UTC) 0 1000 2000 3000 4000 impressions Impressions and installs by hour impressions installs 0 20 40 60 80 100 installs (Meta Leads) The day's motion — whole account, 2026-08-02 (UTC)
当天的走势:分小时花费,展示次数与安装数对照
2026-08-05T10:30:24.485138 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 0 4 8 12 16 20 hour (UTC) 8.5 9.0 9.5 10.0 10.5 11.0 CTR % CTR 0 4 8 12 16 20 hour (UTC) 8.5 9.0 9.5 10.0 10.5 11.0 11.5 12.0 USD per 1,000 impressions CPM 0 4 8 12 16 20 hour (UTC) 18 20 22 24 26 28 30 installs / clicks % Click → install 0 4 8 12 16 20 hour (UTC) 0.32 0.34 0.36 0.38 0.40 0.42 0.44 0.46 USD Cost per install Delivery by hour — whole account, 2026-08-02 (UTC)
全账户分小时的 CTR、CPM、点击→安装和 CPI

对比 2026-08-01,逐小时配对

只比较两天都投放过的小时。在这个账户上做日与日对比时,一天之内的时段结构是最大的混杂因素, 所以某一天缺掉的小时直接丢弃。这一段走报表时区,用的是上面那张表同一个 加载器:花费、展示次数、点击和安装数都落在 Meta 的投放小时上,能精确地跨两个账户日重新拼接。

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

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

指标2026-08-02 更高的小时数更低的小时数符号检验
CPM9 of 101 of 10p = 0.021
CTR9 of 101 of 10p = 0.021
点击→安装3 of 107 of 10p = 0.344
CPI8 of 102 of 10p = 0.109

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

一次展示的价格几乎在每个小时都涨了,点击率跟着一起涨。 pool5 是 08-02 才进来的, 结构能推动 CTR,却推不动展示的价格。

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

每一个共同投放小时,2026-08-01 → 2026-08-02。所有列在比值两端都用 Meta 的计量口径。收入是有意不放的:每小时的付费用户只有 0 到 3 人,一列分小时收入等于把一个人的一笔消费当成比率来读。

小时展示次数CPMCTR点击→安装CPI
00370 → 79912.76 → 8.9216.76% → 8.51%38.7% → 23.5%0.197 → 0.446
087,863 → 1,5126.72 → 8.796.79% → 10.98%25.5% → 17.5%0.389 → 0.458
098,151 → 4,2666.83 → 8.466.31% → 8.74%25.1% → 22.0%0.431 → 0.440
105,917 → 4,1197.50 → 10.056.39% → 9.42%25.4% → 24.7%0.462 → 0.431
121,073 → 2,5737.79 → 11.957.74% → 9.91%26.5% → 28.6%0.380 → 0.421
132,469 → 2,7526.94 → 11.328.67% → 11.12%27.1% → 23.5%0.296 → 0.433
143,175 → 2,5787.80 → 9.889.17% → 10.78%27.8% → 28.4%0.306 → 0.322
153,452 → 2,6707.71 → 9.099.21% → 10.19%24.8% → 24.6%0.337 → 0.362
164,177 → 3,0247.04 → 9.118.55% → 10.35%23.8% → 22.4%0.346 → 0.393
175,594 → 1,5436.70 → 8.717.85% → 9.07%26.4% → 30.7%0.323 → 0.313

00 时是 CPM 和 CTR 上唯一的例外,也是唯一一个从账户日 08-01 尾巴带过来的小时。

2026-08-05T10:30:24.730644 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 0.0 2.5 5.0 7.5 10.0 12.5 15.0 17.5 hour (UTC) 6 8 10 12 14 16 CTR % CTR 2026-08-01 2026-08-02 0.0 2.5 5.0 7.5 10.0 12.5 15.0 17.5 hour (UTC) 7 8 9 10 11 12 13 USD per 1,000 impressions CPM 0.0 2.5 5.0 7.5 10.0 12.5 15.0 17.5 hour (UTC) 20 25 30 35 installs / clicks % Click → install 0.0 2.5 5.0 7.5 10.0 12.5 15.0 17.5 hour (UTC) 0.20 0.25 0.30 0.35 0.40 0.45 USD Cost per install Delivery by hour — 2026-08-02 against 2026-08-01, shared hours only (UTC)
同样四个比率,把前一天叠在当天上,只取共同投放小时

3分国家

2026-08-23T12:43:18.238753 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ IN US BR ID TR MY PH GB IT TH MX DE 0 10 20 30 40 50 60 70 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-02 spend within-day revenue
分国家的花费与当日回收
2026-08-23T12:43:18.275722 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-02 (report clock)
分国家的单次安装成本

(一)大盘分国家,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 —— 没有国家小节:它这一天什么都没有投出去,是实测的零。

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

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

国家花费占比展示次数CPM注册数 (自有)单次注册成本当日回收wROAS付费用户
IN$237.9832.4%52,368$4.54700$0.340$203.940.8643
US$38.575.3%689$55.9750$0.771$60.911.587
BR$32.244.4%3,182$10.13146$0.221$72.622.254
ID$25.763.5%4,560$5.65123$0.209$50.551.963
TR$24.033.3%1,304$18.4344$0.546$21.250.883
MY$21.973.0%2,074$10.6067$0.328$42.811.953
GB$20.232.8%499$40.5324$0.843$0.000.000
MX$17.362.4%1,406$12.3531$0.560$5.710.333
PH$16.002.2%3,280$4.88101$0.158$55.243.454
DE$13.691.9%269$50.8712$1.141$0.000.000
AR$13.541.8%997$13.5836$0.376$24.931.842
PL$10.801.5%416$25.9819$0.568$35.813.323

其余 182 个国家未列出, $261.77 合计(占本表 35.7%)。

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

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

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

B1

国家花费占比展示次数CPM注册数 (自有)单次注册成本当日回收wROAS付费用户
IN$237.9832.4%52,368$4.54700$0.340$203.940.8643
US$38.575.3%689$55.9750$0.771$60.911.587
BR$32.244.4%3,182$10.13146$0.221$72.622.254
ID$25.763.5%4,560$5.65123$0.209$50.551.963
TR$24.033.3%1,304$18.4344$0.546$21.250.883
MY$21.973.0%2,074$10.6067$0.328$42.811.953
GB$20.232.8%499$40.5324$0.843$0.000.000
MX$17.362.4%1,406$12.3531$0.560$5.710.333
PH$16.002.2%3,280$4.88101$0.158$55.243.454
DE$13.691.9%269$50.8712$1.141$0.000.000
AR$13.541.8%997$13.5836$0.376$24.931.842
PL$10.801.5%416$25.9819$0.568$35.813.323

其余 182 个国家未列出, $261.77 合计(占本表 35.7%)。

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

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

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

4汇总:两日对比

按 UTC 时钟,在两天都投放的 10 个小时上合并。每一个比值两端都用 Meta 的计量口径。

花费展示次数CPM点击量CTR安装数点击→安装CPI
2026-08-01$301.3942,2417.143,1907.55%82625.89%$0.365
2026-08-02$250.5525,8369.702,5599.90%62724.50%$0.400

跨小时合并是一次结构对比。 它按每个小时投放了多少来加权,所以它和第 2 节不加权配对 对不上的时候,动的是结构。

在这两天上,两种读法是一致的。 两种读法都把 CTR 判成上涨,也都没能把点击→安装读出 结果,而且没有哪一个小时在被比较的展示次数里占主导。

如果把比较固定在一条两天都跑过的素材上,就只能走广告账户自己的时区:共同投放小时的计算把每个 格子键在(广告系列,广告组,广告,账户日,账户小时)上,它那套共同小时的逻辑只有对着 Meta 自己的投放日才成立。下面是账户日 08-02 对账户日 08-01,相对本报告其他所有表格是一对偏移七小时 的窗口,水平值和它们对不上。只用两个账户日都投放的九个小时,因为一天之内的时段结构是最大的 混杂因素:01、02、03、05、06、07、08、09、10。

这里的安装数按格子归因、带回溯分配,相对 Meta 的 Leads 和原始注册时间戳,这是第三种计量口径。 这个子集在 H=24 上的同期群覆盖率两天都是 100%。

展示次数点击量CTR安装数点击→安装付费用户付费率ROAS
08-01 合并41,8713,1287.47%89628.64%364.02%1.50
08-02 合并25,0372,4919.95%67126.94%253.73%1.04
bodysuit 08-0125,6751,9977.78%55127.59%203.63%1.52
bodysuit 08-0212,8891,0738.32%31829.64%72.20%0.72
bikini 08-0110,9107626.98%23931.36%104.18%1.22
bikini 08-023,10531810.24%7222.64%68.33%1.25

bikini 的共同窗口是四个小时:02、03、05、06;bodysuit 是全部九个。

那个合并漏斗同样读不出两天的差别。点击→安装跌 6.0%,p = 0.156;付费率跌 7.3%, p = 0.767。固定到 bodysuit,点击→安装涨 7.4%,p = 0.230,付费率跌 39.4%,p = 0.242,底下是 七个付费用户。

bikini 的点击→安装下跌取决于用哪套口径,不能当成定论。 按格子归因跌 27.8%,p = 0.004; 改用 Meta 自己的点击和安装跌 19.3%,p = 0.083。

所以点击之后的漏斗,在这两个账户日之间没有实质差别。动的是展示的价格。

回到报表时区,两天在三种口径上的读数:

08-0108-02
花费$733.94$278.28
安装数1,963745
单次安装成本$0.374$0.374
入账收入$1,110.93 · 1.51 (Meta 1.59)$559.00 · 2.01 (Meta 2.19)
当日回收$980.99 · 1.34$272.13 · 0.98
同期群 24 小时$1,163.16 · 1.58$360.61 · 1.30
同期群 24 小时覆盖率100%,已走完100%,已走完

入账收入按付费用户实际安装的 UTC 日拆开:

付费用户的安装日08-01 的入账收入08-02 的入账收入
当天本身$980.99 (88.3%)$272.13 (48.7%)
前一天$129.94 (11.7%)$239.67 (42.9%)
前两天—$47.20 (8.4%)

分析。 拆分表的第一行就是当日回收,所以入账和当日回收之间的差额就是继承下来的 同期群,没有别的东西。

08-01 两者几乎一致,1.51 对 1.34,因为到账的钱有 88.3% 是当天赚的。08-02 两者拉得很开, 2.01 对 0.98,因为不到一半是当天赚的。一天花得更少,而前几天的买家还在继续付钱,这样的日子在 入账收入上一定好看,在 Meta 版本的入账收入上更好看。这就是这个口径按定义该有的行为。

有两件事限定了 0.98 这个数能被推到多远:

两边都不能拿累积不足来解释:两个同期群在观测时长 24 小时上都是 100% 覆盖,08-02 最年轻的一次 安装在支付记录截取时点已经有 61.4 小时。

2026-08-05T10:30:25.031280 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ booked within-day cohort @ 24h 0 200 400 600 800 1000 1200 USD 1.51 1.34 1.58 2.01 0.98 1.30 the number above each bar is that measure's ROAS against the same day's spend The three revenue measures, 2026-08-01 against 2026-08-02 (UTC) 2026-08-01 2026-08-02
两天的三种收入口径,每根柱子上方标 ROAS
2026-08-05T10:30:25.098031 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 2026-08-01 2026-08-02 0 200 400 600 800 1000 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分广告组,分小时

这个广告系列只有一个 CBO 广告组,里面装着三条广告,所以广告组这一行就是整个账户,能分开的 层级是广告;这里的行按素材标注。

只取投放小时,单一时钟的指标,按 UTC 日。bodysuit 投了 11 个小时,pool5 10 个,bikini 9 个;三条一起跑的是 09:00 到 17:59 这九个小时。

08-02花费展示次数CPM点击量CTR安装数点击→安装CPI
ww_bodysuit_10s$129.1515,331$8.421,2648.24%36729.03%$0.352
ww_pool5_15s$77.056,942$11.1093113.41%21322.88%$0.362
ww_bikini_10s$72.086,682$10.796589.85%16525.08%$0.437

两个 UTC 日都跑过的两条素材:

08-01花费展示次数CPM点击量CTR安装数点击→安装CPI
ww_bodysuit_10s$432.4256,102$7.714,7338.44%1,23526.09%$0.350
ww_bikini_10s$301.5236,344$8.302,7827.65%72826.17%$0.414

分析。 相对 bodysuit,pool5 每次展示多付 31.8%,多拿 62.7% 的点击,转化率低 21.2%: 三个效应抵消到单次安装成本上落后 2.8%。

日与日之间,两条回来的素材走法不同。bodysuit 的展示价格涨 9.2%,点击率滑了 2.4%,但它多转化 了 11.3% 的点击,单次安装成本因此和前一天只差 0.6%。bikini 的展示价格涨 30.0%,点击率涨 28.8%,两边抵消,每次安装多付 5.6%。所以账户合并后持平的单次安装成本,是两条各自只动了 0.6% 和 5.6% 的素材,加上 pool5 以 $0.362 进场、占 27.7% 的花费。

2026-08-05T10:30:25.181663 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 0 2 4 6 8 10 12 14 16 18 20 22 hour (UTC) 6 8 10 12 14 16 CTR % CTR by hour — every asset, 2026-08-02 (UTC) earner/bodysuit earner/pool5 earner/bikini
分小时 CTR,每条素材一条线
2026-08-05T10:30:25.332170 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 0 2 4 6 8 10 12 14 16 18 20 22 hour (UTC) 15 20 25 30 35 40 45 installs / clicks % Click → install by hour — every asset, 2026-08-02 (UTC) earner/bodysuit earner/pool5 earner/bikini
分小时点击→安装,每条素材一条线
2026-08-05T10:30:25.399328 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.25 0.30 0.35 0.40 0.45 0.50 0.55 0.60 0.65 USD Cost per install by hour — every asset, 2026-08-02 (UTC) earner/bodysuit earner/pool5 earner/bikini
分小时单次安装成本,每条素材一条线
2026-08-05T10:30:25.248271 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 0 2 4 6 8 10 12 14 16 18 20 22 hour (UTC) 8 10 12 14 USD per 1,000 impressions CPM by hour — every asset, 2026-08-02 (UTC) earner/bodysuit earner/pool5 earner/bikini
分小时 CPM,每条素材一条线

6分广告组 × 国家

⚠ 花费和安装数是第 3 节说的账户日切法;收入走 UTC 日。 只列花费超过 $3 的格子,按花费排序。

素材国家花费安装CPI入账当日回收ROAS同期群 24 小时ROAS
bodysuitIN$37.7892$0.411$51.09$11.520.30$11.520.30
pool5IN$23.9547$0.510$11.52$11.520.48$11.520.48
bikiniIN$20.2942$0.483$43.03$27.951.38$35.071.73
bodysuitUS$8.9818$0.499$7.98$4.990.56$4.990.56
bodysuitBR$6.8343$0.159$10.26$10.261.50$76.3711.18
bodysuitID$5.7627$0.213$4.99$0.000.00$0.000.00
pool5BR$5.5022$0.250$35.53$35.536.46$35.536.46
pool5ID$5.1014$0.364$0.00$0.000.00$0.000.00
bodysuitMY$5.0510$0.505$0.00$0.000.00$0.000.00
bodysuitPH$4.4228$0.158$0.00$0.000.00$0.000.00
bodysuitMX$4.3511$0.396$0.00$0.000.00$0.000.00
bikiniUS$4.137$0.590$17.98$17.984.35$17.984.35
bodysuitTR$4.084$1.020$5.89$5.891.44$5.891.44
bikiniTR$4.028$0.503$5.89$5.891.47$5.891.47
bodysuitAU$3.852$1.925$0.00$0.000.00$0.000.00
pool5US$3.667$0.523$0.00$0.000.00$0.000.00
bikiniBR$3.6312$0.303$5.13$5.131.41$5.131.41
bikiniTH$3.335$0.666$0.00$0.000.00$0.000.00
bikiniID$3.3310$0.333$0.00$0.000.00$0.000.00
pool5TR$3.0310$0.303$9.47$9.473.12$9.473.12

分析。 印度内部和巴西内部,三条素材的跨度和国家之间的跨度一样宽,而每个格子只有一两个 付费用户:这个格子规模上分不出高下。

这张表做得好的是定位收入。每条素材的当日回收数字都靠着一个人。bodysuit 最大的单个付费用户占它 $100.67 的 42.3%,也就是 $42.58,正好是 09 时的当日回收合计。pool5 最大的那个占它 $105.65 的 33.6%,$35.53,正好是它整个巴西格子。bikini 最大的那个占它 $65.81 的 27.3%,$17.98,正好是 它整个美国格子。三条素材,三个摆在台面上的数字,底下各压着一笔消费。

bodysuit 的巴西行还把截断直接摆了出来:当日回收 $10.26,24 小时口径 $76.37。这个格子赚到的 钱大部分是在 UTC 午夜之后、买家到来之后的一天之内付的。

2026-08-05T10:30:25.501344 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ earner/bodysuit earner/pool5 earner/bikini 0 20 40 60 80 100 % of that asset's spend Where each asset bought — share of its own spend by region, 2026-08-02 (META day) IN US BR ID TR MY other
每条素材买在哪里:各地区占它自己花费的比例
2026-08-05T10:30:25.578267 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ earner/bodysuit earner/pool5 earner/bikini 0.0 0.2 0.4 0.6 0.8 1.0 USD per install Cost per install by region — every asset, 2026-08-02 (META day) IN US BR ID TR MY
分地区的单次安装成本,全部素材
2026-08-05T10:30:25.641819 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ earner/bodysuit earner/pool5 earner/bikini 0 5 10 15 20 25 30 35 USD Within-day revenue by region — every asset, 2026-08-02 (META day) IN US BR TR
分地区的当日回收,全部素材

地区图承接第 3 节的口径限制,画在账户日的国家切法上。

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

下面三张表是固定素材小节,由 report_tables.py 生成,原样贴入。这一系列的每一份报告里, 它们的列和列序都相同,所以任意两天都能对着读。

A. 分素材:投放端

每个比值两端都用 Meta 的计量口径。我们自己的注册数据完全不进这张表。

素材花费展示次数CPM点击量CTR安装数点击→安装CPI
earner/bodysuit$129.1515,3318.421,2648.24%36729.03%$0.352
earner/pool5$77.056,94211.1093113.41%21322.88%$0.362
earner/bikini$72.086,68210.796589.85%16525.08%$0.437

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

每一列都是我们自己的口径。Meta 只能表达 booked 这一个,所以它括在那一列旁边,永远不单独成行。付费用户是去重的人数,不是交易笔数。同期群观测时长 H=24h,这一天覆盖率 100%。报表时区 UTC。

素材入账bROAS (Meta)当日回收wROAS同期群@HcROAS付费用户付费率ARPUARPPU最大付费用户
earner/bodysuit$350.232.71 (3.14)$100.670.78$175.441.36133.3%0.2577.7442.3%
earner/pool5$105.651.37 (1.34)$105.651.37$112.241.46104.4%0.47010.5733.6%
earner/bikini$103.121.43 (1.42)$65.810.91$72.931.0195.0%0.3687.3127.3%

16 付费用户门槛(#37):上面任何一行,只要付费用户数不到 16,就只能看方向,不能看幅度。

C. 分素材:国家结构

⚠ 本表按账户日切,而本页其余各表都在 UTC 时钟上。 Meta 不提供小时 × 国家的交叉表,所以分国家的投放数据只存在于广告账户自己的 UTC-7 日上,无法重新拼接。相对上面的 A 表和 B 表,它是一个偏移七小时的窗口;看结构可以,绝不能拿它和它们比水平。

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

素材花费印度 %美国 %其他 %美国占它收入的 %
earner/bodysuit$153.9424.5%5.8%69.6%5.0%
earner/pool5$85.6528.0%4.3%67.8%0.0%
earner/bikini$82.0724.7%5.0%70.2%27.3%

分析。 哪条素材最好,取决于读哪个口径,而各个口径给出的答案对不上。

按当天的入账收入,bodysuit 遥遥领先,2.71 对 1.37 和 1.43,Meta 读得还要高,3.14。按它自己的 流量算,它在当日回收上垫底,0.78。pool5 说明了原因:它的入账和当日回收是同一个数, $105.65。 08-01 的 UTC 日它一点量都没买,07-30 和 07-31 收来的买家也没有一个在这个 UTC 日里 付钱,所以记在它头上的每一块钱都来自当天安装的人。bodysuit 和 bikini 在这之前的两个 UTC 日 都投放过,bodysuit 被记上的钱里有 71.3%、bikini 有 36.2%,是更早安装的人付的。只要哪一天 花费下降,入账收入就会把老买家存量最大、而且这些人还在付钱的那条素材推到前面。

不受小时影响的口径把差距收窄了。在观测时长 24 小时上,pool5 以 1.46 领先, bodysuit 1.36 在后,bikini 1.01 垫底。bodysuit 从 0.78 跳到 1.36,就是第 4 节说的那个 截断:它在 UTC 日里投得最晚,光是巴西一个格子就从当日回收的 $10.26 变成 24 小时口径的 $76.37。

2026-08-05T10:30:25.733114 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:25.824986 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:25.925764 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:26.022938 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,每条素材一条线

上面四张图里的空心点表示未过 16 付费用户门槛,而这一天所有点都是空心的。安装数不到 20 的素材 不进下面的合成图,也不进第 6 节的地区图:四次安装出一个付费用户,在归一化的收入轴上就到 1.0, 会把每一条真实的实验臂压到图的底部。

2026-08-05T10:30:26.123626 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-02 earner/bodysuit earner/pool5 earner/bikini
合成图:所有素材在所有口径上的表现,按当天归一化

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

估算器把每个格子键在账户日和账户小时上,它的预算区间以 Meta 时钟上的具体时刻为界:预算是在 账户时区 04:10 改的,那就是事件本身。所以下面这张表走 Meta 的时钟,跨的是完整的预算区间, 观测时长 12 小时。结构中性这一列把每条素材的回报,按它所在预算区间合并后的国家结构 重新折算,回答的是「如果这条素材买的国家和它的同伴一样,它会跑成什么样」。

素材预算区间$/天安装数花费CPMCTR印度占比CPI同期群 12 小时 ROAS结构中性
ww_bikini_10sR5500352$135.1$10.169.57%27%$0.3841.521.54
ww_bodysuit_10sR55001,430$501.2$8.578.37%29%$0.3511.181.20
ww_pool5_15sR5500309$116.6$10.9512.20%19%$0.3771.111.02
ww_bikini_10sR4875732$286.7$8.337.62%32%$0.3921.171.17
ww_bodysuit_10sR4875488$144.2$6.167.86%39%$0.2961.451.45

R5 内部,两条最大的实验臂的 95% 置信区间是 bikini 0.73–2.51、bodysuit 0.82–1.60,估算器 自己的受众检验算出它们的国家结构相互只值 +1.5%,而这个区间跨过零。

在 Meta 时钟上按完整预算区间来看,排序又变了。R5 里三条都跑在每天 $500,bikini 以 1.52 领先, bodysuit 1.18,pool5 1.11 垫底,而结构中性这一列说这里面没有一项是国家结构造成的假象: 它把 bikini 和 bodysuit 各抬 0.02,把 pool5 压低 0.09。整个 R5 里 pool5 买的结构是三条 中最便宜的,印度占 19%,把这个优势去掉之后它仍然垫底。同时 bikini 在 R4、每天 $875 时是 1.17,在 R5、每天 $500 时是 1.52,印度占比从 32% 变到 27%:预算是地域旋钮,跨过一次预算改动 得出的结论,说的是预算。

按天和按预算区间在 pool5 上给的答案相反,两个都不足以定案。 它的领先建立在十个付费用户 和一笔消费上;整个 R5 里它排在最后,置信区间几乎完全重叠。

8口径与边界

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

问题需要什么
pool5 在当日回收上的领先是真的,还是因为它新?一个它自己也带着继承同期群的日子。它在整个 R5 上的同预算区间数字是 1.11,落后两条同伴,所以日级别的领先目前还没有旁证
印度的折价有多大?覆盖整段投放的读法算出印度是账户水平的 0.87 倍,底下 1,283 次安装,折价是真实的,但比任何单独一天显示的都小得多。给它一个自己的广告组和自己的预算,才能定下来这个折价能不能绕开
巴西的暴涨是真的吗?更多付费用户。在整段投放的 370 次安装上,巴西回报是账户的 0.71 倍,所以当天那个数字是一笔消费,不是一个市场
到底哪条素材赢?E2 的随机分流。在这样的付费用户数下,这个广告系列的结构没有任何东西能把一个 CBO 广告组里的三条素材分开

10交给 E2 的东西

按 Meta 时钟,CBO 广告组在 08-03 的 04:20 停止投放,接替它的是 E2:一个随机素材测试,每个 ABO 广告组只放一条素材。

要超过的基准是 UTC 时钟上当日回收 ROAS 0.98、单次安装成本 $0.374,或者观测时长 24 小时上的 1.30。不是入账的 2.01,也不是 Meta 记的 2.19。 E2 的每一条实验臂都是全新的,因此没有继承 同期群,就像 pool5 在 08-02 一个都没攒到一样;拿一条 E2 实验臂去比这个广告系列的入账数字, 等于用当期新增去比累计存量,会让 E2 显得比实际差。当日回收比当日回收,同期群 24 小时比同期群 24 小时。印度仍然占买量的四分之一,价值是账户的 0.87 倍,任何素材测试都碰不到这一点。

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

报表日是 UTC 日,为的是和 Adjust 对齐。Meta 的分小时导出按广告账户自己的时区 UTC-7 打时间 戳,所以上面每一个投放数字都是从两个账户日重新拼接出来的:08-01 17:00–23:59 和 08-02 00:00–16:59。

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

口径统计什么这一天结束后还会变吗
入账收入在这个 UTC 日之内到账的钱,无论付钱的人哪天安装。它继承更早的买家午夜之后几个小时结算完,之后固定。Meta 自己的数字就是这个口径
当日回收当天安装并且在这一天结束前付了钱的人不会。午夜封存
同期群 24 小时当天的安装,按每个人自己安装之后的 24 小时来计,这样就去掉了早上安装相对晚上安装的优势会涨,直到每一次安装都满 24 小时。这里两天都已走完

三个都读我们自己的支付记录,Meta 的数字括在入账收入旁边,永远不单独占一行。两者之间的口径 校验走 Meta 时钟,在那里它的转化价值可以对着它所属的那一天来读;两个账户日上,我们的记录分别 是 Meta 入账价值的 0.94 和 0.91,落在已记录的 0.91–1.06 区间里。

两套口径统计的安装人群不同。 Meta 归因出 1,963 和 745 次安装;我们自己的记录把 2,134 和 795 条注册系到这些广告上。本报告里每一个 ROAS 都是收入除以花费,两个数都没有用到。安装数和 单次安装成本这两行用的是 Meta 的。

预算区间是广告组日预算没有发生变化的一段时间。 它之所以重要,是因为在这个账户上预算是 地域旋钮:调高预算就会买到更宽、更便宜的国家,所以跨过一次预算改动去测两条素材,比的是不同 的受众。

这两天不在同一个预算区间,这一条限定了报告里的每一次对比。 08-02 整天都落在一个预算区间 里,R5,每天 $500,按 Meta 时钟它从 08-01 04:10 跑到 08-03 04:20。08-01 不是:它的窗口开在 更早一段每天 $500 设置的尾巴上,中间跑在每天 $875,UTC 11:10 又回到每天 $500,它的花费里 $435.60 落在这次改动之前,$298.34 落在之后。这种横跨来自 UTC 窗口要往回伸进上一个账户日。 预算区间要从 Ads Manager 的操作历史里读,任何导出文件都还原不出来。

12复现

报表日 2026-08-02 00:00 → 24:00 UTC,从账户日 08-01 17:00–23:59 和 08-02 00:00–16:59 重新 拼接,账户固定在 UTC-7。所以一次 UTC 口径的拉取,除了当天的分小时导出,还需要前一个账户日的。 支付记录截取到 2026-08-05 10:59 UTC,这让 08-02 的安装有 61.4 到 82.9 小时、08-01 的有 83.1 到 106.9 小时,两个 24 小时同期群因此都已走完。国家数字来自一次全账户的 Country × Day 拉取,按账户日切。

Meta 的行按 Ad ID 选取,不按广告组名或素材名:E2 的素材名和这个广告系列的逐字节相同, 而它的第一个广告组在 08-02–08-03 有十个小时也叫 ww_broad_purchase_adv_cbo150。按名字过滤会 多归因约 70%。

cd C:/Projects/VideoGenAI_Related
CFG=_runs/2026-08-05_0804_settled/run_config.json          # tz: UTC
python -m ad_ops.measures      --config $CFG --day 2026-08-02 --prev 2026-08-01
python -m ad_ops.cohort_arpu   --config $CFG --days 2026-07-31,2026-08-01,2026-08-02
python -m ad_ops.report_tables --config $CFG --day 2026-08-02 --prev 2026-08-01
python -m ad_ops.report_charts --config $CFG --day 2026-08-02 --prev 2026-08-01 \
    --days 2026-07-31,2026-08-01,2026-08-02 \
    --out ad_ops/figures/2026-08-02 --relpath figures/2026-08-02

# META clock — the instrument gate, §4's per-creative tests, and the regime table
python -m ad_ops.measures --config _runs/2026-08-05_0804_settled/run_config_meta.json \
    --day 2026-08-02 --prev 2026-08-01
python -m ad_ops.day_compare --config $CFG --today 2026-08-02 --prev 2026-08-01 --h 24 \
    --campaign bailingxia_meituan_ww_cvr_260730 --ads ww_bikini_10s,ww_bodysuit_10s,ww_pool5
python -m ad_ops.asset_estimator hourly --horizon 12 \
    --meta ad_ops/_data/b1_meta_exports/B1-Ads-Jul-30-2026-Jul-30-2026.csv \
           ad_ops/_data/b1_meta_exports/B1-Ads-Jul-31-2026-Jul-31-2026.csv \
           _runs/2026-08-03_aug2_hourly/exports/ads_hourly_aug1_settled.csv \
           _runs/2026-08-03_aug2_hourly/exports/ads_hourly_aug2_settled.csv \
           _runs/2026-08-04_e2_start_and_0803_report/exports/ads_hourly_aug3_settled.csv \
    --lum _runs/2026-08-05_0804_settled/lum \
    --fx  _runs/2026-08-02_today_read/fx_rates.json \
    --ads ww_bikini,ww_bodysuit,ww_pool5

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

如果前一个账户日的分小时导出缺失,measures 这一步会直接报出缺的是哪一个文件;没有这道拦截, UTC 日的前七个小时就会被填成偏低的数字。估算器出于反方向的同一个原因需要 08-03 的分小时 文件:广告系列跨过午夜还在投放,没有这个文件,attach_cohorts 会把午夜之后的每一次安装都 带回到 08-02 的最后一个格子里。

Internal — noindex. Not for distribution outside the team.