# A0～A15成熟系数计算说明

## 1. 最终口径

本次固定使用`20260712`首层投放用户作为cohort，观察至`20260727`：

| 项目 | 口径 |
|---|---|
| 观察周期 | A0～A15 |
| 小程序实体 | 人群包 + 转化目标 |
| 公众号实体 | 合作方 + 公众号 |
| 首层 | `opengid_base_data.usersharedepth=0` |
| 裂变活跃 | 同一首层rootSession在`user_share_log`中产生的`topic='click' AND usersharedepth>0`活跃用户 |
| 去重 | 同一实体同一自然日按用户去重；隔日再次活跃重新计入 |
| 排除 | 排除原首层cohort用户，避免把首层种子计作自身裂变后代 |

小程序的空人群包统一记为“泛人群”，空或字符串`null`转化目标统一记为“未知”。

## 2. 核心公式

定义：

```text
U0       = A0活跃裂变UV
Uk       = Ak自然日活跃裂变UV，k=1..15
Utotal   = U0+U1+...+U15
```

最终用于ROI的参数：

```text
T1～T15相对T0尾部系数
= (U1+...+U15) / U0

T15成熟系数（相对T0）
= Utotal / U0
= 1 + T1～T15相对T0尾部系数
```

`T15成熟系数`已经包含A0当天，不得在收入中重复增加一次T0。

## 3. 收入与ROI

优先使用当天已经观测到的实际收入：

```text
预测T0～T15裂变总收入
= T0实际裂变收入 × T15成熟系数

预测总收入
= 首层实际效率收入
 + T0实际裂变收入 × T15成熟系数

预测ROI
= 预测总收入 / 投放成本
```

## 4. 样本状态和回退

精确实体同时满足以下条件时标记为“可用”：

```text
首层UV >= 500
且 A0活跃裂变UV >= 200
```

小程序参数回退顺序：

```text
人群包+转化目标
→ 人群包总量比
→ 转化目标总量比
→ 小程序渠道总量比
```

公众号参数回退顺序：

```text
合作方+公众号
→ 合作方总量比
→ 公众号合作即转渠道总量比
```

所有回退系数都使用A0加权总量比：

```text
回退T15成熟系数
= SUM(A0～A15累计裂变活跃人次)
  / SUM(A0活跃裂变UV)
```

不能对各实体成熟系数做算术平均。

## 5. 20260712真实结果摘要

| 渠道 | 精确实体数 | 可用实体数 | 渠道回退T15系数 |
|---|---:|---:|---:|
| 小程序投流 | 40 | 21 | 2.608491 |
| 公众号合作即转 | 110 | 93 | 2.476153 |

样本不足实体仍保留在结果表，通过“样本状态”标记，并在正式使用时走分级回退。

## 6. 运行方式

```bash
python3 calculate_final_t15_coefficients.py --cohort-date 20260712
```

输出：

- `outputs/小程序T15成熟系数_中文_20260712.csv`
- `outputs/公众号T15成熟系数_中文_20260712.csv`
- `outputs/企微T15成熟系数_中文_20260712.csv`
- `outputs/T15分级回退系数_中文_20260712.csv`
- `outputs/最终T15成熟系数_中文_20260712.xlsx`
- `outputs/企微T15成熟系数_中文_20260712.xlsx`
- `outputs/小程序人群包转化目标_A0-A15_20260712.sql`
- `outputs/公众号合作即转_A0-A15_20260712.sql`
- `outputs/企微合作方_A0-A15_20260712.sql`

所有交付CSV和Excel使用中文表头；SQL保留源字段名称以确保可直接执行。
企微 CSV 只包含合作方参数，不写入小程序和公众号共用的分级回退文件。
