这个 UTC 日里有两个广告系列在买量,而且没有共用过任何一个小时。原有的全球投放广告系列从 UTC 04:00 开始投,到 11:20 被关掉;一个新搭的广告系列带五个广告组、每组一条素材、日预算各 $100,从 12:44 开始投,一直跑到午夜。两者合计花费 $445.83,按 Meta 的口径买到 766 次安装,按我们自己的记录是 805。报表时钟、三种收入口径和预算区间的定义在附录。
| 2026-08-02 | 2026-08-03 | |
|---|---|---|
| 花费 | $278.28 | $445.83 |
| 展示次数 | 28,955 | 213,053 |
| CPM(千次展示成本) | $9.61 | $2.09 |
| 链接点击量 | 2,853 | 5,649 |
| CTR(点击率) | 9.85% | 2.65% |
| 安装数(Meta) | 745 | 766 |
| 点击→安装 | 26.1% | 13.6% |
| 单次安装成本(CPI) | $0.374 | $0.582 |
| 安装数(我们的记录) | 795 | 805 |
| 入账收入 | $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% |
| 当日闭合付费用户 | 32 | 39 |
| 当日闭合 ARPU / ARPPU | $0.342 / $8.50 | $0.494 / $10.20 |
⚠ 08-03 的混合投放各列不能用,也不能被引用。 一条广告(spill)买走了当天 85.7% 的展示次数,而它自己 99.6% 的展示落在同一个小时里,CPM 只有 $0.52。就是这一个小时,把账户 CPM 拖到 $2.09、CTR 拖到 2.65%、点击→安装拖到 13.6%,这三个数没有一个代表得了这一天。把这条广告剔掉:
| 08-02 | 08-03 混合 | 08-03 剔除 spill | |
|---|---|---|---|
| 花费 | $278.28 | $445.83 | $336.11 |
| 展示次数 | 28,955 | 213,053 | 30,405 |
| CPM | $9.61 | $2.09 | $11.05 |
| CTR | 9.85% | 2.65% | 8.61% |
| 点击→安装 | 26.1% | 13.6% | 26.5% |
| 单次安装成本 | $0.374 | $0.582 | $0.485 |
按诚实的那组数字,这一天是变贵了,转化没有变差。 展示次数多 5%,CPM 高 15%,点击转安装的比率持平(26.5% 对 26.1%),每次安装贵 30%。花费涨 21%,而 Meta 记的安装数掉 7%,这一天的变化全在这里。
三种收入口径同时下跌,所以这个方向不是口径造成的假象。 入账收入 2.01 → 1.59,当日闭合收入 0.98 → 0.89,同期群 24 小时 1.30 → 1.06。
投放各列,比值两端都取 Meta 的计量口径;付费用户数、ARPU 和 ARPPU 两端都取我们自己的。两套安装数从不交叉使用。入账收入挂在付款小时上,当日闭合收入和同期群挂在安装小时上。小时为 UTC。
| 小时 | 花费 | 展示 | CPM | 点击 | CTR | 安装 | 点击→安装 | CPI | 入账$ | bROAS | 闭合$ | wROAS | 闭合付费 | 同期群$ | cROAS |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | 0.00 | 0 | — | 0 | — | 3 | — | — | 8.75 | — | 0.00 | 0.00 | 0 | 0.00 | 0.00 |
| 1 | 0.00 | 0 | — | 0 | — | 1 | — | — | 60.76 | — | 0.00 | 0.00 | 0 | 0.00 | 0.00 |
| 2 | 0.00 | 0 | — | 0 | — | 0 | — | — | 41.69 | — | 0.00 | 0.00 | 0 | 0.00 | 0.00 |
| 3 | 0.00 | 0 | — | 0 | — | 1 | — | — | 26.21 | — | 0.00 | 0.00 | 0 | 0.00 | 0.00 |
| 4 | 5.65 | 515 | 10.97 | 58 | 11.26% | 10 | 17.2% | 0.565 | 6.47 | 1.14 | 0.00 | 0.00 | 0 | 0.00 | 0.00 |
| 5 | 19.64 | 2,009 | 9.78 | 189 | 9.41% | 38 | 20.1% | 0.517 | 10.73 | 0.55 | 4.99 | 0.25 | 1 | 4.99 | 0.25 |
| 6 | 24.63 | 2,471 | 9.97 | 222 | 8.98% | 61 | 27.5% | 0.404 | 26.32 | 1.07 | 20.06 | 0.81 | 3 | 20.06 | 0.81 |
| 7 | 27.85 | 2,804 | 9.93 | 242 | 8.63% | 54 | 22.3% | 0.516 | 25.87 | 0.93 | 36.63 | 1.32 | 4 | 40.19 | 1.44 |
| 8 | 30.14 | 3,420 | 8.81 | 266 | 7.78% | 62 | 23.3% | 0.486 | 23.95 | 0.79 | 78.62 | 2.61 | 5 | 78.62 | 2.61 |
| 9 | 29.74 | 3,726 | 7.98 | 294 | 7.89% | 77 | 26.2% | 0.386 | 38.96 | 1.31 | 29.98 | 1.01 | 3 | 48.72 | 1.64 |
| 10 | 29.54 | 3,203 | 9.22 | 250 | 7.81% | 61 | 24.4% | 0.484 | 19.71 | 0.67 | 14.71 | 0.50 | 2 | 14.71 | 0.50 |
| 11 | 9.08 | 1,046 | 8.68 | 99 | 9.46% | 35 | 35.4% | 0.259 | 52.18 | 5.75 | 49.72 | 5.48 | 4 | 49.72 | 5.48 |
| 12 | 0.29 | 33 | 8.79 | 4 | 12.12% | 4 | 100.0% | 0.073 | 15.56 | 53.67 | 0.00 | 0.00 | 0 | 0.00 | 0.00 |
| 13 | 18.84 | 1,590 | 11.85 | 111 | 6.98% | 25 | 22.5% | 0.754 | 21.60 | 1.15 | 20.41 | 1.08 | 3 | 26.31 | 1.40 |
| 14 | 107.17 | 182,805 | 0.59 | 3,000 | 1.64% | 61 | 2.0% | 1.757 | 21.96 | 0.20 | 0.00 | 0.00 | 0 | 19.16 | 0.18 |
| 15 | 8.10 | 823 | 9.84 | 76 | 9.23% | 21 | 27.6% | 0.386 | 38.22 | 4.72 | 5.63 | 0.70 | 1 | 5.63 | 0.70 |
| 16 | 14.19 | 1,080 | 13.14 | 94 | 8.70% | 24 | 25.5% | 0.591 | 87.44 | 6.16 | 23.20 | 1.63 | 2 | 23.20 | 1.63 |
| 17 | 16.03 | 1,267 | 12.65 | 103 | 8.13% | 24 | 23.3% | 0.668 | 22.86 | 1.43 | 5.76 | 0.36 | 1 | 5.76 | 0.36 |
| 18 | 18.31 | 1,181 | 15.50 | 107 | 9.06% | 32 | 29.9% | 0.572 | 28.87 | 1.58 | 25.77 | 1.41 | 4 | 34.94 | 1.91 |
| 19 | 21.44 | 1,263 | 16.98 | 121 | 9.58% | 33 | 27.3% | 0.650 | 18.88 | 0.88 | 32.52 | 1.52 | 1 | 32.52 | 1.52 |
| 20 | 18.58 | 1,141 | 16.28 | 116 | 10.17% | 40 | 34.5% | 0.465 | 9.16 | 0.49 | 0.00 | 0.00 | 0 | 6.84 | 0.37 |
| 21 | 19.93 | 1,046 | 19.05 | 129 | 12.33% | 34 | 26.4% | 0.586 | 23.22 | 1.17 | 0.00 | 0.00 | 0 | 0.00 | 0.00 |
| 22 | 13.66 | 859 | 15.90 | 95 | 11.06% | 36 | 37.9% | 0.379 | 48.37 | 3.54 | 18.10 | 1.33 | 3 | 21.77 | 1.59 |
| 23 | 13.02 | 771 | 16.89 | 73 | 9.47% | 29 | 39.7% | 0.449 | 31.59 | 2.43 | 31.59 | 2.43 | 2 | 40.92 | 3.14 |
| 合计 | 445.83 | 213,053 | 2.09 | 5,649 | 2.65% | 766 | 13.6% | 0.582 | 709.35 | 1.59 | 397.69 | 0.89 | 39 | 474.05 | 1.06 |
14 时这一行就是这一天全部的异常。 $107.17 买到 182,805 次展示,CPM $0.59,其他每个有投放的小时都在 $8 到 $19;它把 2.0% 的点击转成安装,而其他每个买到一百次以上点击的小时都在 17% 到 40%;61 次安装带回的当日闭合收入是零。这一个小时占当天花费的 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。
只比较两天都有投放的小时。在这个账户上做日环比,一天之内的时段结构是最大的混杂因素,所以只要有一天缺了某个小时,这个小时就整个丢掉,不拿去和空值配对。这一段按报表时钟计算,读表的代码和上面那张表是同一套,因为花费、展示次数、点击和安装都挂在 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 更高的小时数 | 更低的小时数 | 符号检验 |
|---|---|---|---|
| CPM | 9 个里 5 个 | 9 个里 4 个 | p = 1.000 |
| CTR | 9 个里 1 个 | 9 个里 8 个 | p = 0.039 |
| 点击→安装 | 9 个里 5 个 | 9 个里 4 个 | p = 1.000 |
| CPI | 9 个里 7 个 | 9 个里 2 个 | p = 0.180 |
符号检验把幅度扔掉,换来一个不需要加权的方向:它回答这一天往哪边走,永远不回答走了多少。
只有一个比值分得开,是 CTR。 9 个共同投放小时里有 8 个在 08-03 更低,p = 0.039,这是这一天本身的性质,不属于其中某一个小时。CPM 和点击→安装在不加权的计数上各自都是抛硬币,p 都是 1.000;CPI 有 7 个小时偏贵,但没过 0.05。最后这一条,正是价格上涨在九小时样本上会呈现的样子:数得出来,还判不了。第 4 节的合并行在同样这九个小时上读出点击→安装 −62.8%、p = 0.000,和这里的小时计数正好相反,而两种读法同时跑,为的就是把这种不一致摆出来。
每一个共同投放小时,2026-08-02 → 2026-08-03。所有列的每个比值,两端都是 Meta 的计量口径。这里刻意不放收入:每小时的付费用户数在 0 到 3 之间,收入列会把某一个人的一笔账当成比率来读。
| 小时 | 展示次数 | CPM | CTR | 点击→安装 | CPI |
|---|---|---|---|---|---|
| 08 | 1,512 → 3,420 | 8.79 → 8.81 | 10.98% → 7.78% | 17.5% → 23.3% | 0.458 → 0.486 |
| 09 | 4,266 → 3,726 | 8.46 → 7.98 | 8.74% → 7.89% | 22.0% → 26.2% | 0.440 → 0.386 |
| 10 | 4,119 → 3,203 | 10.05 → 9.22 | 9.42% → 7.81% | 24.7% → 24.4% | 0.431 → 0.484 |
| 11 | 3,119 → 1,046 | 8.89 → 8.68 | 9.43% → 9.46% | 27.2% → 35.4% | 0.347 → 0.259 |
| 13 | 2,752 → 1,590 | 11.32 → 11.85 | 11.12% → 6.98% | 23.5% → 22.5% | 0.433 → 0.754 |
| 14 | 2,578 → 182,805 | 9.88 → 0.59 | 10.78% → 1.64% | 28.4% → 2.0% | 0.322 → 1.757 |
| 15 | 2,670 → 823 | 9.09 → 9.84 | 10.19% → 9.23% | 24.6% → 27.6% | 0.362 → 0.386 |
| 16 | 3,024 → 1,080 | 9.11 → 13.14 | 10.35% → 8.70% | 22.4% → 25.5% | 0.393 → 0.591 |
| 17 | 1,543 → 1,267 | 8.71 → 12.65 | 9.07% → 8.13% | 30.7% → 23.3% | 0.313 → 0.668 |
合并行是 14 时一手造成的。 在对照里它是展示次数 2,578 → 182,805、CPM 9.88 → 0.59、CTR 10.78% → 1.64%,而另外八个共同投放小时的变动都在正常幅度内,方向也有来有回。第 4 节的合并行给这一天记的 198,960 次展示里,182,805 次来自这一个小时。它是已被否掉的 spill 版本(DECISION_LOG.md #50),所以这两天的任何合并对比,主要都是在讲它。
⚠ 这张表的花费列和安装列按账户日切。 Meta 不提供「小时 × 国家」的交叉表,所以分国家的投放数据只存在于广告账户自己的 UTC-7 日上,无法重新拼接。它的收入列和报告其余部分一样按 UTC 时钟分桶,所以比值那几列跨了七小时的偏移。这张表只能读结构,绝不能拿去和第 1 节或第 2 节比水平。
按花费取前十二,三种口径全列。
| 国家 | 花费 | 安装 | CPI | 入账 | bROAS | 闭合 | wROAS | 同期群@24 | cROAS |
|---|---|---|---|---|---|---|---|---|---|
| IN | 121.99 | 193 | 0.632 | 147.93 | 1.21 | 97.68 | 0.80 | 125.73 | 1.03 |
| US | 41.57 | 29 | 1.433 | 33.94 | 0.82 | 4.99 | 0.12 | 4.99 | 0.12 |
| GB | 16.69 | 24 | 0.695 | 16.90 | 1.01 | 16.90 | 1.01 | 16.90 | 1.01 |
| PH | 16.44 | 46 | 0.357 | 15.67 | 0.95 | 5.63 | 0.34 | 5.63 | 0.34 |
| MX | 14.55 | 27 | 0.539 | 11.42 | 0.78 | 11.42 | 0.78 | 14.82 | 1.02 |
| ID | 14.15 | 30 | 0.472 | 21.95 | 1.55 | 15.96 | 1.13 | 15.96 | 1.13 |
| MY | 13.86 | 16 | 0.866 | 11.74 | 0.85 | 11.74 | 0.85 | 11.74 | 0.85 |
| TR | 13.18 | 19 | 0.694 | 53.22 | 4.04 | 53.22 | 4.04 | 53.22 | 4.04 |
| FR | 13.08 | 19 | 0.688 | 31.15 | 2.38 | 31.15 | 2.38 | 31.15 | 2.38 |
| AR | 12.34 | 36 | 0.343 | 2.99 | 0.24 | 0.00 | 0.00 | 0.00 | 0.00 |
| AU | 8.94 | 8 | 1.117 | 19.76 | 2.21 | 0.00 | 0.00 | 0.00 | 0.00 |
| ES | 8.34 | 8 | 1.042 | 38.84 | 4.66 | 38.84 | 4.66 | 38.84 | 4.66 |
印度占账户日买量的四分之一,是账户日花费的 24.4%,也是这张表上唯一一个样本值得读的国家:193 次安装,单次 $0.632,同期群 24 小时 1.03。整整一天只有 39 个当日闭合付费用户,人均 $10.20,所以印度以下每一个国家都只是几笔账:土耳其的 $53.22 和西班牙的 $38.84 是其中最大的两笔,背后都不可能超过五六个人。这些比值只能看方向,不能看幅度;哪个国家顶着一个抢眼的数字,能不能当真要看最大那一个付费用户占了多少。
泰国和巴西没有出现在这张表的前列,原因不在表现。这个账户已经投不了这两个国家,当天在这两地花费超过一美元的格子全部属于原有广告系列,而它中午之前就停止买量了。见 _runs/2026-08-04_e2_start_and_0803_report/th_br_what_its_worth.md。
按 UTC 时钟,合并两天都有投放的那 9 个小时。每个比值两端都是 Meta 的计量口径。
| 花费 | 展示次数 | CPM | 点击 | CTR | 安装数 | 点击→安装 | CPI | |
|---|---|---|---|---|---|---|---|---|
| 2026-08-02 | $240.39 | 25,583 | 9.40 | 2,530 | 9.89% | 618 | 24.43% | $0.389 |
| 2026-08-03 | $262.83 | 198,960 | 1.32 | 4,293 | 2.16% | 390 | 9.08% | $0.674 |
跨小时合并是一次结构对比。 它按每个小时投放了多少来加权,所以只要一天在时钟上的买量分布变了,这几行就会动,而任何一个小时本身可以完全没变。分小时那一节的逐小时对照,是同样这两天的不加权读法;两者对不上,动的就是结构。
两种读法在点击→安装上对不上,在 CTR 上一致。 合并起来,点击→安装跌 62.8%,p = 0.000;逐小时数,它在 9 个共同投放小时里涨了 5 个,符号检验读作 p = 1.000。合并出来的这个跌幅全部来自 14 时一个小时,那 182,805 次展示只把 2.0% 的点击转成了安装,所以它讲的不是这个账户怎么转化,也不能被当成这样引用。CTR 是另一种情况:合并起来跌 78.2%,不加权的计数也说它跌了,9 个小时里跌了 8 个,p = 0.039。即使在这里,幅度仍然属于 14 时,两种读法共同撑住的只有方向。两种读法一致的地方,动的是这一天;只有合并行在动的地方,动的是结构。
以下固定在原有广告系列的三条素材上,按广告账户自己的时钟。单条素材的共同投放小时数据只能按导出文件自带的时钟来切,所以下面这些小时是广告账户自己的 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-02 | 08-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 | 更好 | — | |
| 合并 | ROAS | 0.89 | 1.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 | 分不开 |
在共同投放小时上,原有广告系列持平到更好。 每一个合并项都朝账户有利的方向走,没有一个分得开。唯一过了 0.05 的是 bodysuit 的付费率,它建立在 3 个对 8 个付费用户之上,是八次检验里的一次显著,扛不过 Holm 校正。本报告不采信它。
这件事之所以要紧,是因为第 1 节的全天画面显示三种口径的 ROAS 全部下跌。两件事同时成立:整体上这一天投得不如 08-02,而同样三条素材两天都在跑的那几个小时并没有变差。差别在于构成。报告日有十二个小时买的是一个全新的广告系列,对比日没有对应的东西;CPM 一路走高,中间还夹着一个坏掉的小时。
三种口径并排,下面一行是不设观测时长上限的迄今同期群,仅供参考:
| 口径 | 08-02 | 08-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%。 入账收入和当日闭合收入之间的差额全部是它,也正因为这样,一个花费在涨的日子,在入账口径上会比在会封存的那两个口径上好看。
各行按素材标注。新广告系列里每个广告组只有一条广告、一条素材,所以广告组这一行就是素材这一行;原有广告系列的三条素材是同一个广告组里的三条广告,那几行比广告组低一层。
每条素材完整的分小时表格在 _runs/2026-08-05_0804_settled/utc_2026-08-03/measures_out.txt。要看的形状是每条素材什么时候在投,因为这一天两个广告系列没有共用过任何一个小时:
| 素材 | 投放小时(UTC) | 花费 |
|---|---|---|
earner/bodysuit | 04:00 – 11:00 | $88.59 |
earner/bikini、earner/pool5 | 05:00 – 11:00 | $48.16, $39.52 |
E2/bikini、E2/mugshot | 12:00 – 23:00 | $48.91, $54.49 |
E2/spill | 13:00 – 22:00(99.6% 的展示落在 14 时内) | $109.72 |
E2/bodysuit、E2/pool5 | 18: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 节的共同投放小时那一段,是这里唯一一次把时钟对齐的读数,而它只覆盖原有广告系列的三条素材。
⚠ 和第 3 节一样,花费与安装按账户日切。 只列花费超过 $1 的格子,按花费排序;完整表格在 _runs/2026-08-05_0804_settled/utc_2026-08-03/measures_out.txt。这里是它最前面的几行:
| 素材 | 国家 | 花费 | 安装 | CPI | 闭合 | wROAS | 同期群@24 | cROAS |
|---|---|---|---|---|---|---|---|---|
E2/spill | IN | 23.69 | 4 | 5.923 | 0.00 | 0.00 | 0.00 | 0.00 |
E2/mugshot | IN | 23.56 | 19 | 1.240 | 0.00 | 0.00 | 0.00 | 0.00 |
E2/bikini | IN | 21.93 | 47 | 0.467 | 20.83 | 0.95 | 20.83 | 0.95 |
earner/bodysuit | IN | 19.59 | 50 | 0.392 | 59.57 | 3.04 | 81.87 | 4.18 |
E2/pool5 | IN | 9.52 | 17 | 0.560 | 0.00 | 0.00 | 0.00 | 0.00 |
E2/pool5 | US | 9.27 | 6 | 1.545 | 0.00 | 0.00 | 0.00 | 0.00 |
earner/bikini | IN | 9.12 | 29 | 0.314 | 5.76 | 0.63 | 5.76 | 0.63 |
E2/bodysuit | US | 8.82 | 6 | 1.470 | 0.00 | 0.00 | 0.00 | 0.00 |
E2/bodysuit | IN | 8.19 | 17 | 0.482 | 0.00 | 0.00 | 5.76 | 0.70 |
earner/pool5 | IN | 6.39 | 10 | 0.639 | 11.52 | 1.80 | 11.52 | 1.80 |
在成本上,各实验臂分得最开的地方是印度。 同一个国家,原有广告系列的 bodysuit 买一次安装 $0.392,spill 要 $5.923,mugshot 要 $1.240,一个地区内部拉开十五倍。
同一条素材在两个广告系列里都跑过的位置,也只有印度这三处。bikini 在原有广告系列是 $0.314,在新广告系列是 $0.467;bodysuit 是 $0.392 对 $0.482;pool5 是 $0.639 对 $0.560。三对里有两对老广告组便宜 23% 和 49%,这和新广告组要付一笔溢价对得上,和素材本身对不上;第三对反过来,新广告组便宜 12%。所以这笔溢价在三对样本上只是一种倾向,不是量出来的数。
这三张地区图和上表出自同一份分国家导出,所以同样带着账户日的口径限制,每张图的标题上都标了。
下面三张表由 report_tables.py 生成,列和顺序与本系列其他每一份报告完全一致,这正是一天能拿去和另一天比的前提。它们切在 2026-08-05 10:59 UTC 的支付数据切点上。当日闭合收入在午夜已封存,入账收入在午夜后几小时已结算,两者都不会再动;同期群 24 小时在这一天覆盖率 100%,因此同样冻结。各行按素材标注,和第 5 节同一套。
每个比值两端都是 Meta 的计量口径。我们自己的注册记录不进这张表。
| 素材 | 花费 | 展示次数 | CPM | 点击 | CTR | 安装数 | 点击→安装 | CPI |
|---|---|---|---|---|---|---|---|---|
E2/spill | $109.72 | 182,648 | 0.60 | 3,030 | 1.66% | 73 | 2.41% | $1.503 |
earner/bodysuit | $88.59 | 10,825 | 8.18 | 801 | 7.40% | 208 | 25.97% | $0.426 |
E2/mugshot | $54.49 | 3,394 | 16.05 | 287 | 8.46% | 69 | 24.04% | $0.790 |
E2/bikini | $48.91 | 4,375 | 11.18 | 374 | 8.55% | 102 | 27.27% | $0.480 |
earner/bikini | $48.16 | 4,670 | 10.31 | 452 | 9.68% | 128 | 28.32% | $0.376 |
earner/pool5 | $39.52 | 3,699 | 10.68 | 367 | 9.92% | 85 | 23.16% | $0.465 |
E2/pool5 | $32.28 | 1,809 | 17.84 | 215 | 11.89% | 53 | 24.65% | $0.609 |
E2/bodysuit | $24.16 | 1,633 | 14.79 | 123 | 7.53% | 48 | 39.02% | $0.503 |
每一列都是我们自己的记录。Meta 只能给出入账收入,所以它以括注形式跟在那一列旁边,从不单独占一行。付费用户是去重的人数,从不是交易笔数。同期群观测时长 H=24h,这一天覆盖率 100%。报表时钟为 UTC。
| 素材 | 入账 | bROAS (Meta) | 当日闭合 | wROAS | 同期群@H | cROAS | 付费用户 | 付费率 | ARPU | ARPPU | 最大付费用户占比 |
|---|---|---|---|---|---|---|---|---|---|---|---|
E2/spill | $5.89 | 0.05 (0.11) | $5.89 | 0.05 | $25.05 | 0.23 | 1 | 1.3% | 0.075 | 5.89 | 100.0% |
earner/bodysuit | $340.67 | 3.85 (4.61) | $127.82 | 1.44 | $156.95 | 1.77 | 12 | 5.2% | 0.549 | 10.65 | 22.2% |
E2/mugshot | $10.70 | 0.20 (0.26) | $10.70 | 0.20 | $16.60 | 0.30 | 2 | 2.9% | 0.157 | 5.35 | 53.4% |
E2/bikini | $73.43 | 1.50 (1.65) | $73.43 | 1.50 | $80.51 | 1.65 | 9 | 8.6% | 0.699 | 8.16 | 23.0% |
earner/bikini | $159.56 | 3.31 (2.15) | $86.26 | 1.79 | $86.26 | 1.79 | 7 | 5.3% | 0.658 | 12.32 | 48.0% |
earner/pool5 | $43.34 | 1.10 (1.12) | $23.58 | 0.60 | $23.58 | 0.60 | 4 | 4.5% | 0.265 | 5.89 | 26.8% |
E2/pool5 | $44.60 | 1.38 (1.38) | $44.60 | 1.38 | $44.60 | 1.38 | 3 | 5.8% | 0.858 | 14.87 | 72.9% |
E2/bodysuit | $25.41 | 1.05 (1.05) | $25.41 | 1.05 | $40.49 | 1.68 | 1 | 2.1% | 0.529 | 25.41 | 100.0% |
16 付费用户门槛(#37):上表里付费用户数不到 16 的行,只能看方向,不能看幅度。
⚠ 这张表按账户日切,不按 UTC 日。 Meta 不提供「小时 × 国家」的交叉表,所以分国家的投放数据只存在于广告账户自己的 UTC-7 日上,无法重新拼接。相对上面的 A、B 两表,它是一个偏移七小时的窗口;只能读结构,绝不能拿去和它们比水平。
这张表解释 B 表里哪一行读得住、哪一行读不住。最后一列是该素材自己的当日闭合收入里来自美国的比例:只要它远高于美国的花费占比,这条素材买到的就是一个地域,而不是挣到了一个结果。
| 素材 | 花费 | 印度 % | 美国 % | 其他 % | 美国占其收入 % |
|---|---|---|---|---|---|
E2/spill | $110.05 | 21.5% | 4.5% | 74.0% | 0.0% |
earner/bodysuit | $57.11 | 34.3% | 3.0% | 62.7% | 0.0% |
E2/mugshot | $78.36 | 30.1% | 6.9% | 63.0% | 46.6% |
E2/bikini | $68.56 | 32.0% | 8.5% | 59.5% | 0.0% |
earner/bikini | $38.30 | 23.8% | 9.1% | 67.1% | 0.0% |
earner/pool5 | $30.95 | 20.6% | 6.8% | 72.6% | 0.0% |
E2/pool5 | $64.61 | 14.7% | 14.3% | 70.9% | 0.0% |
E2/bodysuit | $53.77 | 15.2% | 16.4% | 68.4% | 0.0% |
⚠ 原有广告系列的入账 ROAS 被继承来的收入抬高了,新广告系列没有这回事。 原有广告系列在 UTC 11:20 就停止买量,却整天都在收更早安装日的付款;earner/bodysuit 入账 3.85 对当日闭合 1.44,差的就是这一块。新广告系列的各实验臂完全没有更早的同期群,所以它们的入账和当日闭合数字按定义就相等。比较各实验臂要用当日闭合或同期群,绝不能用入账。
B 表没有一行过得了 16 付费用户门槛。earner/bodysuit 以 12 个当日闭合付费用户排当天第一,所以这一天分素材的收入排名整体只是一组方向。
收入按天画、跨整段投放,不按小时画,因为每条素材每小时只有 0 到 2 个付费用户,分小时的 ARPPU 是某一个人的一笔账,不是比率。上面四张图里的空心点表示未过 16 付费用户门槛,这一天的每一个点都是空心的。安装数不足 20 的素材不进下面的综合图,也不进第 6 节的地区图;这一天八条素材全部过了这道关,所以一条都没缺。
账户时钟。 五个新实验臂处在同一个预算区间里,从 08-03 05:44 到 08-04 00:01 PT 每个都是日预算 $100,所以它们彼此之间的预算天然对齐,可以直接比较。结构中性一列把每个实验臂的 ROAS 按这个预算区间的合并国家结构重新定价,同时保留它自己的成本效率和收入效率,从而抹掉实验臂之间的地域差异。各格已按观测时长 H=6 累积。
| 广告 | 预算区间 | 日预算 | 安装 | 花费 | CPM | CTR | IN% | CPI | RPI | ROAS | 结构中性 |
|---|---|---|---|---|---|---|---|---|---|---|---|
bikini | E2-R1 | 100 | 160 | 69.8 | 11.32 | 8.82% | 34% | 0.436 | 0.490 | 1.12 | 1.08 |
bodysuit | E2-R1 | 100 | 111 | 56.2 | 12.58 | 6.90% | 17% | 0.506 | 0.423 | 0.84 | 0.80 |
pool5 | E2-R1 | 100 | 111 | 66.7 | 14.88 | 9.93% | 15% | 0.601 | 0.599 | 1.00 | 0.81 |
mugshot | E2-R1 | 100 | 95 | 80.9 | 16.97 | 8.64% | 22% | 0.852 | 0.179 | 0.21 | 0.22 |
spill | E2-R1 | 100 | 85 | 111.1 | 0.61 | 1.67% | 7% | 1.308 | 0.069 | 0.05 | 0.08 |
按合并国家结构重新定价,没有哪个实验臂的 ROAS 变动超过 0.19,排序也一个都没变,所以这个排名不是地域造成的假象。单次安装成本把各实验臂拉开了三倍($0.436 到 $1.308);它们的 ROAS 没有拉开,领先的三个臂都落在 0.84 到 1.12 之间,各自背后只有几个付费用户。
安装日按 UTC 时钟,安装数和付费用户数取自我们自己的记录。这一天八个实验臂在 H=24 上覆盖率都是 100%。付费率和 ARPPU 两列是迄今数字,会随同期群变老而增长,所以它们描述的是这一天,不能跨日读;能跨日比的是 H=24 那一列。
| 实验臂 | 安装数 | 付费用户 | 付费率 | ARPPU(迄今) | ARPU @ H=24 |
|---|---|---|---|---|---|
earner/bodysuit | 233 | 13 | 5.6% | $12.89 | 0.674 |
earner/bikini | 131 | 9 | 6.9% | $10.95 | 0.658 |
earner/pool5 | 89 | 5 | 5.6% | $7.07 | 0.265 |
E2/bikini | 105 | 10 | 9.5% | $9.64 | 0.767 |
E2/bodysuit | 48 | 3 | 6.2% | $13.50 | 0.844 |
E2/pool5 | 52 | 3 | 5.8% | $14.87 | 0.858 |
E2/mugshot | 68 | 3 | 4.4% | $5.53 | 0.244 |
E2/spill | 79 | 2 | 2.5% | $12.53 | 0.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,低于账户里其他任何一个实验臂,而它们也正是单次安装成本排最后的那两个。
bodysuit 的付费率结果(p=0.041)不予采信。 3 个对 8 个付费用户,八次检验里中了一次,Holm 校正下就没了。预算对齐的那个区间在 08-04 00:01 PT 结束,五个新广告组从那一刻起成为一次随机化测试的实验臂。这一天是它们的观察基线:
mugshot $0.852、spill $1.308,另外三个是 $0.436 到 $0.601,这个排序在结构中性重新定价之后依然成立。报告日是一个 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 不变,这个预算区间在对比日没有对应物。没有任何东西横跨两者,所以本报告不做跨预算区间的比较。
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%。