时之砂 · 交易类公式独立交付

v1.5 2026-05-05

时之砂 · 交易类公式独立交付(A 模型 + B 模型 + 积分价值反算)

版本:v1.5
日期:2026-05-05
Owner:Lawrence
交付对象:研发评审 / 精算(Winn)/ 商城(V2)/ 财务


1. 文档定位

1.1 文档范围

本文档收录与"用户交易"直接相关的公式与汇率方法:

  1. A 模型 — 交易触发的积分产生公式
  2. B 模型 v3.3 — 交易触发的体验金返还公式
  3. 积分价值反算 — 1 积分 ↔ 1 USD 的换算方法与 V1 内部参考汇率

KYC 种子、邀请奖励、赛季继承、监控告警、后台调权等非交易触发的公式见主精算 Brief v3.0;本文档不重复

1.2 与主精算 Brief 的关系

文档范围定位
《时之砂_精算 Brief_Winn_v3.0》全 V1 经济模型(19 个公式)精算视角 single source of truth
《时之砂_公式与参数清单_v1.5》全 V1 公式清单业务侧 single source of truth
本文档 v1.0仅交易类公式 + 积分价值反算研发 / 商城 / 财务的轻量交付

本文档中的公式定义与 v3.0 §1 / §2 严格一致。任何冲突以 v3.0 为准。

flowchart LR A[用户单仓完全平仓] --> B[A 模型:积分增量] A --> C[B 模型:体验金返还] B --> D[ceil 取整 + 零保护] C --> E[全局 capping 20%] D --> F[(积分余额)] E --> G[(体验金余额)] F -.V2 商城兑换.-> H[价值反算:1 积分 ≈ X USD] E -.财务对账.-> I[Monthly Accrual]
图 1 — 三公式关系总览:A 模型 / B 模型 / 价值反算在单仓完全平仓事件下的协同关系

1.3 公式呈现规范

每个公式按三阶段递进呈现:

阶段形式用途
① 构成公式变量级抽象表达业务方理解逻辑骨架
② 中文具体公式中文术语 + 完整算式PM / 运营 / 商务 沟通
③ 英文具体公式编程符号 + 完整算式研发评审与实施

所有计算精度统一为 DECIMAL(20, 4)(4 位小数 Decimal,防浮点误差,见《时之砂_积分精度规范_v1.0》)。

1.4 术语对照

中文术语英文符号含义
交易量trade_volume_usd该仓名义价值(USD 计价)= 开仓价 × 数量。永续合约 / CFD 统一口径;A 模型用此字段,详见 §1.5
手续费fee_usd该仓实际手续费或等效手续费(USD 计价)。永续合约:按 maker/taker 费率 × 名义价值的实际手续费;CFD:点差(spread)× cfd_spread_ratio 折算的等效手续费;B 模型用此字段;详见 §1.5
损益pnl该仓已实现损益(USD,盈利正 / 亏损负)
客损绝对值loss_absmax(0, -pnl),仅取亏损部分
占用保证金margin_used该仓占用保证金(USD)
持仓时长t_holding该仓持仓时长
积分余额p_balance用户当前积分余额(时之砂数量)
段位tier1 尘土 / 2 细沙 / 3 流沙 / 4 金沙 / 5 琥珀 / 6 紫晶 / 7 钻晶 / 8 永恒
90 天净盈亏net_pnl_90d用户最近 90 天滚动已平仓累计净 PnL
90 天累计手续费total_fee_90d用户最近 90 天滚动累计手续费
历史战绩比history_rationet_pnl_90d / total_fee_90d
损益强度loss_pctloss_abs / margin_used,该仓亏损占占用保证金比例

1.5 产品差异化口径(v1.5 重写 · A 按交易量 / B 按手续费双口径)

Bitunix 平台 V1 期涉及三类交易产品,A 模型与 B 模型在数据口径上分工不同

1.5.1 A 模型 vs B 模型口径分工(v1.5 关键变化)

模型输入字段设计理由
A 模型(积分发放)trade_volume_usd(交易量)行为数据——用户做了多少交易就奖励多少积分;与产品类型解耦;CFD 0 点差期仍能拿积分;VIP 跃升后手续费率降低不会让积分变少
B 模型(体验金返还)fee_usd(手续费) + loss_abs(客损)结果数据——体验金返还经济本质是"做市商赚的部分分润给用户",按手续费 + 客损更合理

1.5.2 三类产品 trade_volume_usdfee_usd 上报口径

产品类型trade_volume_usdfee_usd上报责任方
永续合约开仓价 × 数量(名义价值)maker/taker 费率 × 名义价值的实际手续费交易撮合引擎
CFD 交易开仓价 × 数量(同合约口径)点差(spread)× cfd_spread_ratio 折算CFD 业务侧
跟单交易跟随主单口径跟随主单口径跟单业务侧

A 模型不再依赖 fee_usd,所以 v1.4 引入的 cfd_spread_ratio 仅在 B 模型范围内发挥作用,不影响 A 模型计算。

1.5.3 关键边界

场景A 模型行为B 模型行为
永续 fee_usd = 0(理论极少)不受影响(按交易量计算)fee_part = 0,仅 loss_part 触发
CFD 0 点差 promo 期正常发积分(按交易量)✓fee_part = 0,仅 loss_part 触发
trade_volume_usd < min_trade_volume_for_grant(如 < 100 USD)A 模型不发积分(零保护)B 模型不受 min_trade_volume_for_grant 影响
0 交易量 + 0 客损(理论极少 / 异常单)不发积分不发体验金
CFD 0 点差 + 亏损 + 交易量 ≥ 100 USD正常发积分 ✓仅 loss_part 触发,有体验金且有积分

v1.5 关键变化:CFD 0 点差期用户做交易就能拿积分,跟"用户做了交易必有反馈"的产品哲学一致;v1.4 之前"0 点差期有体验金但无积分"的反直觉行为消除。

1.5.4 工程实现要点

  • A 模型计算服务接收 trade_volume_usd,不需要 fee_usd
  • B 模型计算服务仍接收 fee_usd + loss_abs,逻辑保持不变
  • cfd_spread_ratio 由 CFD 业务侧在上报 fee_usd 前应用(仅影响 B 模型);变更需 PM + 财务 + CFD 业务侧三签
  • 财务 monthly accrual 对账拆账:A 模型按 source = TRADE_REBATE + 产品类型标签;B 模型按 source = SHIZHISHA_REBATE
  • 交易引擎上报字段需扩展:原 fee_usd 字段不变,新增 trade_volume_usd 字段(NTP 同步时点为完全平仓时)

1.5.5 待业务对齐的 Open Item

#问题影响
1trade_volume_usd 取开仓时点 vs 平仓时点的名义价值?两者在波动行情下差异显著影响 A 模型 grant 数额,需与撮合引擎 + 后端联合签字
2点差 spread 取开仓时点 vs 平仓时点?影响 B 模型 fee_usd,同 v1.4 Open Item
3跟单交易归属规则(主单平仓 vs 跟单平仓时点)影响 trigger_at + season_id 归属
4A 模型杠杆放大是否折算?例:100x 杠杆开仓 5 USD 保证金 = 500 USD 名义价值,但用户实际"风险敞口"仅 5 USD当前公式按名义价值算;如不符合预期需引入折算系数

2. 公式 A — 交易积分产生公式(A 模型)

2.1 构成公式(v1.5 重写 · 按交易量)

flowchart TD S[fee_usd 手续费] --> M1[× base_coef 0.08] M1 --> M2[× m_vip] M2 --> M3[× m_activity] M3 --> M4[× m_audience] M4 --> M5[× m_coldstart] M5 --> R[raw_points 计算积分] R --> CAP{"raw > fee × 0.5?"} CAP -- 是 --> CAP_HIT[硬上限触发 = fee × 0.5] CAP -- 否 --> CAP_OK[capped_points = raw] CAP_HIT --> ZP{"capped <= 0?"} CAP_OK --> ZP ZP -- 是 --> NOOP[grant = 0 · 不写流水] ZP -- 否 --> CEIL[ceil 取整 → grant] CEIL --> WRITE[(L1 grant 写流水)]
图 2 — A 模型计算流程(v1.2 ceil + 零保护):从 fee_usd 经五乘数 → 防套利硬上限 → 零保护判定 → ceil 取整写入流水
$$\begin{aligned} \text{积分增量} &= \text{交易量} \times \text{基础系数} \times \text{综合乘数} \\[4pt] \text{其中综合乘数} &= \text{VIP 乘数} \times \text{活跃度乘数} \times \text{人群包系数} \times \text{冷启动乘数} \end{aligned}$$

v1.5 关键变更:A 模型输入从"手续费 fee_usd"改为"交易量 trade_volume_usd"。理由:①行为数据(交易量)比结果数据(手续费)更准确反映用户活跃;②CFD 0 点差期间用户仍能拿积分;③VIP 跃升后手续费率下降不再让积分变少;④与产品类型解耦(永续 / CFD 都按名义价值);详见 §1.5。

2.2 中文具体公式

$$\begin{aligned} \text{积分增量} =\;& \text{交易量(USD)} \times \text{基础系数(0.0001)} \\ &\times \text{VIP 乘数} \\ &\times \text{活跃度乘数} \\ &\times \text{人群包系数} \\ &\times \text{冷启动乘数} \end{aligned}$$

2.3 英文具体公式(研发评审版)

$$\begin{aligned} \text{points\_grant} =\;& \text{trade\_volume\_usd} \times \text{base\_coef} \\ &\times m_{\text{vip}} \times m_{\text{activity}} \times m_{\text{audience}} \times m_{\text{coldstart}} \end{aligned}$$

2.4 参数解释表

3.0 2.0 1.0 0 1.0 VIP1 1.2 VIP2 1.5 VIP3 1.8 VIP4 2.1 VIP5 2.4 VIP6 2.7 VIP7 3.0 VIP8
图 7 — m_vip 8 档阶梯:VIP1=1.0 → VIP8=3.0,每档约 +0.3,与现有 VIP 体系线性对齐
参数中文名取值取值依据 / 工程实现要点
trade_volume_usd交易量(USD 计价)交易引擎传入完全平仓时名义价值 = 开仓价 × 数量;永续 / CFD 同口径;不再使用 fee_usd(A 模型 v1.5 关键变化);详见 §1.5
base_coef基础系数0.0001v1.5 重新校准:每 1 USDT 交易量 = 0.0001 积分,即每 1 万 USDT 交易量 = 1 积分。VIP3 月手续费 500 USD ≈ 月交易量 833K USDT → 月积分 ~156;运营后台可配置(V1-E06 模块 6 + V1-E02 §9.1 a_model_config 表,PM + Winn + 财务三签变更)
min_trade_volume_for_grant最小交易量门槛(防套利)100 USD交易量 < 100 USD 不发积分(零保护);过滤极小套利仓 + 反作弊 95% 拦截作为第二道防线;合约最小开仓 ~50 USD 名义价值,用户单仓 > 100 USD 是常态,不伤新手体感
m_vipVIP 乘数(8 档)VIP1=1.0 / VIP2=1.2 / VIP3=1.5 / VIP4=1.8 / VIP5=2.1 / VIP6=2.4 / VIP7=2.7 / VIP8=3.0线性递增 0.3/档,与现有 VIP 体系对齐
m_activity活跃度乘数(月活天数)0-7 天=1.0 / 8-15 天=1.1 / 16-23 天=1.25 / 24-30 天=1.5阶梯式,避免连续假动作
m_audience人群包系数默认=1.0 / 高价值客群=1.2 / VIP 重点维护=1.3 / 反作弊 SUSPECT=0.7 / BLOCK=0合规允许 ±30%(R06);BLOCK 由 V1-E08 前置拦截
m_coldstart冷启动乘数V1 = 1.0(常规);V2+ EARLY_7DAY_BOOST=2.0 / FIRST_ORDER_BOOST=5.0V1 极简化:首单 5x + 7 日 2x 全部 V2+ 候选
fee_usd手续费v1.5 移除A 模型不再依赖;B 模型仍消费 fee_usd(含 cfd_spread_ratio 折算),详见 §3 + §1.5

2.5 触发与归属规则

取值
触发事件单仓完全平仓(部分平仓不触发)
trigger_at仓位完全平仓时间(NTP 同步,业务方时钟漂移 < 1 秒)
幂等键position_id(按仓位幂等)
sourceTRADE_REBATE
必填字段trade_volume_usd(v1.5 新增) + trigger_at + season_id + antisybil_decision
赛季归属trigger_at vs season_metadata.end_at 决定 season_id(决策 6 原子快照规则)
反作弊钩子grant 必带 antisybil_decision(业务层调风控反作弊后签名传 L1,L1 仅校验签名格式)

2.6 用户场景计算(A 模型 · v1.5 重算 · 按交易量)

m_audience = 1.0(除标注外)、m_coldstart = 1.0(V1 默认)、不含 noise 浮动,便于对照。
本节展示的是 计算精度积分(DECIMAL 4 位)。实际发放整数积分见 §2.7 取整规则。
月交易量按 VIP 平均 taker 费率约 0.06% 反推自旧"月手续费"口径。

场景用户画像月交易量A 模型月积分算式说明
2.6.1 新手轻度VIP1 / 月活 5 天80,000 USD80,000 × 0.0001 × 1.0 × 1.0 × 1.0 × 1.0 = 8.0 积分比 v1.4 4.0 略友好;新手低活跃单纯交易激励
2.6.2 中度活跃VIP3 / 月活 20 天800,000 USD800,000 × 0.0001 × 1.5 × 1.25 × 1.0 × 1.0 = 150 积分一年 ~1,800 积分,约 2 年到流沙
2.6.3 高度活跃VIP6 / 月活 28 天 / 高价值5,000,000 USD5,000,000 × 0.0001 × 2.4 × 1.5 × 1.2 × 1.0 = 2,160 积分一年 ~26,000 积分,1 年内触琥珀
2.6.4 永恒鲸鱼VIP8 / 月活 30 天 / 高价值17,000,000 USD17,000,000 × 0.0001 × 3.0 × 1.5 × 1.2 × 1.0 = 9,180 积分一年 ~110K 积分,约 2.7 年触永恒 300K(匹配"3-5 年达成"目标)

单仓粒度示例(典型单仓名义价值):

场景单仓交易量用户画像A 模型积分增量
防套利门槛触发(< 100 USD)50 USDVIP1 默认min_trade_volume_for_grant 拦截 → 0 积分(不发)
新手小仓500 USDVIP1 / 月活 5 天 / 默认500 × 0.0001 × 1.0 × 1.0 × 1.0 × 1.0 = 0.05 积分(ceil 后实发 1)
中度单仓5,000 USDVIP3 / 月活 20 天 / 默认5,000 × 0.0001 × 1.5 × 1.25 × 1.0 × 1.0 = 0.94 积分(ceil 后实发 1)
高度单仓30,000 USDVIP6 / 月活 28 天 / 高价值30,000 × 0.0001 × 2.4 × 1.5 × 1.2 × 1.0 = 12.96 积分(ceil 后实发 13)
永恒单仓100,000 USDVIP8 / 月活 30 天 / VIP 重点100,000 × 0.0001 × 3.0 × 1.5 × 1.3 × 1.0 = 58.5 积分(ceil 后实发 59)
CFD 0 点差 promo 期5,000 USD(CFD)VIP3 / 月活 20 天 / 默认5,000 × 0.0001 × 1.5 × 1.25 × 1.0 × 1.0 = 0.94 积分(ceil 后实发 1)— 不再因 0 fee 失分

2.7 整数取整规则与防套利硬约束(v1.5 重写 · ceil + 交易量门槛 + 零保护)

2.7.1 前提与问题

前提:用户视角积分只展示整数(不展示小数)。

核心约束(v1.5 升级):

  1. 小仓位用户友好度:用户做了交易必须有 ≥ 1 积分的可见反馈;不能出现"做了 0 积分"的扭曲体感
  2. 套利护城河:哪怕用户故意做交易量极小的微型仓刷分,单仓套利 ROI 必须 ≤ -90%
  3. 工程极简:ceil 取整算法在数据库层面无状态
  4. CFD 0 点差 / 0 fee 不再影响积分(v1.5 按交易量后自然消除)

v1.5 vs v1.2 方向调整:v1.2 防套利靠 max_points_per_fee_ratio(每 fee 最多 X 积分)。v1.5 A 模型不再用 fee,改用 trade_volume_usd,防套利改为 min_trade_volume_for_grant(最小交易量门槛,低于不发)+ 反作弊钩子双层护城河。

2.7.2 取整规则(ceil + 交易量门槛 + 零保护)

flowchart TD GATE{"trade_volume_usd < 100 USD?"} GATE -- 是 --> NOOP1[grant = 0 · 不写流水
门槛拦截 · 防微型套利] GATE -- 否 --> Step2[Step 2: raw_points = trade_volume × 0.0001 × 综合乘数] Step2 --> CHK{"raw_points <= 0?"} CHK -- 是 --> NOOP2[grant = 0 · 不写流水
零保护 · 反作弊 BLOCK / 异常 volume] CHK -- 否 --> CEIL[Step 4: ceil(raw_points) · L1 grant 写流水] NOOP1 --> DONE[结束] NOOP2 --> DONE CEIL --> DONE
图 3 — A 模型 ceil + 交易量门槛 + 零保护 4 步流程(v1.5):双层防套利护城河
Step 1: 最小交易量门槛(防套利第一道闸)
  if trade_volume_usd < min_trade_volume_for_grant:
      grant = 0
      不写流水(小于 100 USD 交易量的微型套利仓直接拦截)
      return

Step 2: 计算原始积分
  raw_points = trade_volume_usd × base_coef
             × m_vip × m_activity × m_audience × m_coldstart

Step 3: 零保护判定
  if raw_points <= 0:
      grant = 0
      不写流水(反作弊 BLOCK 即 m_audience = 0 / 异常 trade_volume 等场景自然过滤)
      return

Step 4: 向上取整 + 写流水
  grant = ceil(raw_points)
  L1 grant(amount = grant, source = TRADE_REBATE,
           trade_volume_usd = ..., trigger_at = ..., season_id = ..., antisybil_decision = ...)

算法无状态;幂等键沿用 position_id

2.7.3 参数取值

参数含义PM 初值推算依据
min_trade_volume_for_grant最小交易量门槛(防套利硬约束)100 USD套利 ROI 含反作弊 95% 拦截后 ~0.15%(远低于做单成本);合约最小开仓 ~50 USD 名义价值,用户单仓 > 100 USD 是常态,不伤新手体感;CFD 微型仓 < 100 USD 点差成本占比过高不会做
min_grant_threshold起发阈值(积分量级)0任何 raw_points > 0 都向上取整到至少 1;零保护已足够
max_points_per_fee_ratio每 1 USD 手续费上限v1.5 移除A 模型不再用 fee;改为 min_trade_volume_for_grant 替代防套利

2.7.4 防套利护城河(v1.5 重新论证 · 基于 1 积分 = 0.0015 USD)

v1.5 护城河变化:v1.2 靠"低汇率 + max_points_per_fee_ratio";v1.5 靠"低汇率 + min_trade_volume_for_grant + 反作弊"。本质护城河更厚——交易量门槛是绝对硬约束,根本进不来。

最坏情形:用户开最小交易量仓位(刚过门槛)刷分套利

套利场景trade_volume_usd实际成本(点差+滑点)raw_points(VIP8 满档)ceil 实发单仓积分价值ROI
门槛下小仓50 USD~0.025 USD0.0290(门槛拦截)0 USD-100% 不发
刚过门槛100 USD~0.05 USD0.0591 积分0.0015 USD-97%
普通新手单仓500 USD~0.25 USD0.2921 积分0.0015 USD-99.4%
中度单仓5,000 USD~2.5 USD2.933 积分0.0045 USD-99.8%
永恒单仓100,000 USD~50 USD58.559 积分0.089 USD-99.8%

护城河厚度(含反作弊冗余)

  • 单仓套利 ROI ≤ -97%(最坏情形)
  • 反作弊 95% 拦截 → 漏网攻击期望 ROI ≤ -97% × 5% = -99.85%
  • 加上时间 / 机器人 / 滑点 / 市场风险,理性攻击者绝对不划算

汇率灰度安全边际

  • 当前汇率 0.0015 USD/积分 → 最坏 ROI -97%
  • 汇率上调到 0.05 USD/积分(V2 商城)→ ROI 仍 -10% 量级
  • 汇率破 5 USD/积分(理论临界)才有套利空间—— 比 V2 商城 SKU 定价高 ~3000 倍,业务上不可能

v1.5 护城河比 v1.2 厚 ~10 倍,主要靠 min_trade_volume_for_grant 把微型仓套利路径直接堵死。

2.7.5 单仓体感示例(ceil 后用户实际拿到的积分)

本节以中位场景示意。所有"实发积分"是用户在 APP 上一笔交易完成后立即看到的数字。

图 13 — ceil 实发对比:raw 计算精度(灰) vs ceil 实发整数(蓝)· 三画像 × 四档交易量 · y 轴 log 刻度(v1.5 按 trade_volume 重做)

新手 VIP1 / 月活 5 天 / 默认人群(综合乘数 = 0.0001 × 1.0 × 1.0 × 1.0 × 1.0 = 0.0001)

单仓交易量raw_points门槛拦截?ceil 实发体感
50 USD0.005(< 100 USD)0 积分不发,避免微型套利
100 USD0.0101 积分起步保底
500 USD0.0501 积分"做了就有"
5,000 USD0.5001 积分
50,000 USD5.005 积分大单回报匹配

中度 VIP3 / 月活 20 天 / 默认人群(综合乘数 = 0.0001 × 1.5 × 1.25 = 0.000188)

单仓交易量raw_pointsceil 实发
100 USD0.0191 积分
1,000 USD0.1881 积分
10,000 USD1.882 积分
100,000 USD18.819 积分

永恒 VIP8 / 月活 30 天 / VIP 重点维护(综合乘数 = 0.0001 × 3.0 × 1.5 × 1.3 = 0.000585)

单仓交易量raw_pointsceil 实发
100 USD0.05851 积分
10,000 USD5.856 积分
100,000 USD58.559 积分
1,000,000 USD(极端大单)585585 积分

与 v1.2 对比:v1.5 没有 max_points_per_fee_ratio 硬上限了,因为按交易量算积分本来就不会爆——交易量越大积分越多是合理设计。

2.7.6 §2.6 各场景的实际发放整数对照

场景用户画像单仓交易量raw_points 计算精度ceil 实发整数
防套利门槛任意画像< 100 USD任意0(门槛拦截)
新手VIP1 / 月活 5 天 / 默认500 USD0.051
中度VIP3 / 月活 20 天 / 默认5,000 USD0.941
高度VIP6 / 月活 28 天 / 高价值30,000 USD12.9613
永恒VIP8 / 月活 30 天 / VIP 重点100,000 USD58.559
CFD 0 点差期VIP3 / 月活 20 天 / 默认5,000 USD (CFD)0.941 ✓

v1.5 关键改进:CFD 0 点差期用户正常发积分,与永续合约用户一视同仁。

2.7.7 月度发放总量与财务 accrual 缓冲

ceil 取整长期多发的量级估算(按 100K MAU 平台规模,v1.5 重算):

用户分群占比月真实计算积分月 ceil 实发积分多发率多发 USD 等值(1 积分 = 0.0015 USD)
轻度 VIP1-270K 用户8 / 人 / 月~25 / 人 / 月+210%0.026 USD / 人 / 月
中度 VIP3-525K 用户150 / 人 / 月~200 / 人 / 月+33%0.075 USD / 人 / 月
重度 VIP6-85K 用户4,000 / 人 / 月~4,300 / 人 / 月+7.5%0.45 USD / 人 / 月
合计100K MAU~6K USD / 月 ≈ 72K USD / 年

⚠️ 轻度用户多发率高(+210%)是因为单仓积分常 < 1 全部 ceil 到 1。但总量级仍然很小(年成本 < 2K USD),可接受。
v1.5 总多发成本比 v1.2 低 25 倍(v1.2 是 1.8M USD/年 vs v1.5 是 72K USD/年),原因:base_coef 按交易量校准后,重度用户的"多发率"显著下降。

财务 accrual 要点:

  • 月度 monthly accrual 按 ceil 实发积分总量 × 内部参考汇率 × 兑换率 0.8 计提
  • 多发量自然反映在 accrual 中,不需要单独"准备金"
  • §13 异常发放阈值 / §16 季度预算 按 ceil 实发量监控

2.7.8 数据模型与工程实现要点

v1.2 移除 v1.1 引入的尾差账本表user_points_fraction_ledger)。

ceil 算法无状态:

  • A 模型 grant 计算时只读取本仓输入(fee / vip / activity / audience / coldstart)
  • 不需要查询任何用户级历史状态
  • L1 grant 调用与现有接口一致(不需要新增字段)
  • 幂等键沿用 position_id
  • 单点写入,不需要跨表事务

对 V1-E01 / V1-E02 的影响

  • V1-E01 §9 数据模型:不需要新增 user_points_fraction_ledger
  • V1-E02 §4.2 取整步骤:从 6 步简化为 4 步(见 §2.7.2)

B 模型不受影响:B 模型输出 USD 等值体验金(最小单位 cent),非积分整数,沿用 DECIMAL(20, 4) 精度,不需要取整规则。

2.7.9 用户体感与对客说明

维度说明
用户看到的积分余额整数累计(ceil 实发值之和)
用户看到的单仓积分增量整数(几乎所有单仓都有 ≥ 1 积分反馈
对客文案(首页 / 流水)"本次交易获得 X 时之砂" — 直观
对客文案(产品规则页)"每笔交易至少获得 1 时之砂;具体数量与手续费、VIP 等级、活跃度相关"
客服 FAQ不需要"为什么显示 0 积分"的解释了 ✓

用户体感跃升:从 v1.1 的"做了 0 积分要解释" → v1.2 的"做了就有 1 积分起步",对私域代理获客 / KOL 社群裂变场景尤其重要。

2.7.10 实施 PRD

  • V1-E02 §4.2 A 模型计算:取整逻辑按本节 §2.7.2 4 步实施
  • V1-E01 §9 数据模型:不新增 user_points_fraction_ledger 表(v1.1 计划已废止)
  • V1-E04 段位计算:使用实发整数积分余额(与 v1.1 一致)
  • V1-E06 后台调权:作用于整数余额(与 v1.1 一致)
  • V1-E04 / V1-E05 对客文案:按 §2.7.9 表述

3. 公式 B — 交易返回体验金公式(B 模型 v3.3)

3.1 构成公式(v1.3 简化 · 砍掉 m_balance)

flowchart TD IN1[fee_usd] --> FP IN2[pnl → loss_abs] --> LP IN4[tier / holding / audience] --> COM[共同乘数] IN5[net_pnl_90d / total_fee_90d] --> MH[m_history 5 档] IN6[loss_abs / margin_used] --> MLP[m_loss_pct 4 档] COM --> FP[fee_part = fee × 0.05 × 共同乘数] COM --> LP[loss_part = loss_abs × 0.04 × m_history × m_loss_pct × 共同乘数] MH --> LP MLP --> LP FP --> RAW[raw_bonus = fee_part + loss_part] LP --> RAW RAW --> CAP{"raw > (fee+loss) × 0.20?"} CAP -- 是 --> CAPHIT[final = fee+loss × 0.20] CAP -- 否 --> CAPOK[final = raw_bonus]
图 4 — B 模型计算流程(v1.3 砍 m_balance 后):fee_part 与 loss_part 加和后受 global capping 20% 死约束
$$\begin{aligned} \text{共同乘数} &= \text{段位乘数} \times \text{持仓时长乘数} \times \text{人群包乘数} \times (1 + \text{随机扰动}) \\[4pt] \text{手续费部分} &= \text{手续费} \times \text{手续费保底系数} \times \text{共同乘数} \\[4pt] \text{客损部分} &= \text{客损绝对值} \times \text{客损分润系数} \times \text{历史画像乘数} \times \text{损益强度乘数} \times \text{共同乘数} \\[4pt] \text{应发体验金} &= \text{手续费部分} + \text{客损部分} \\[4pt] \text{最终发放体验金} &= \min\bigl(\text{应发体验金},\; (\text{手续费} + \text{客损绝对值}) \times \text{全局上限比例}\bigr) \end{aligned}$$

v1.3 重要变更:v1.2 公式中的"积分余额乘数 m_balance"已砍掉。原因:段位本身就由积分余额决定(§4 段位 8 档阈值),m_balance 与 m_tier 高度共线(Pearson > 0.95);m_balance 的连续平滑奖励在 ceil 取整后用户视角不可感知,而段位心智(沙漏视觉 + 跨段位推送)是产品哲学核心,应让 m_tier 独自承担"积分越多越值"的放大职责。m_tier 8 档数值已重新校准(见 §3.4)。

结构语义

  • 手续费部分(fee_part)— 所有仓位都拿,"持续交易激励"
  • 客损部分(loss_part)— 只在亏损单触发;用户长期战绩 + 损益强度独立放大
  • 全局硬上限 — 哪怕所有参数最佳,最终发放永远不超过 (手续费 + 客损绝对值) × 20%

3.2 中文具体公式

$$\begin{aligned} \text{共同乘数} &= \text{段位乘数} \times \text{持仓时长乘数} \times \text{人群包乘数} \times (1 + \text{随机扰动}) \\[4pt] \text{手续费部分} &= \text{手续费(USD)} \times \text{手续费保底系数(0.05)} \times \text{共同乘数} \\[4pt] \text{客损部分} &= \text{客损绝对值(USD)} \times \text{客损分润系数(0.04)} \\ &\quad \times \text{历史画像乘数} \times \text{损益强度乘数} \times \text{共同乘数} \\[4pt] \text{应发体验金} &= \text{手续费部分} + \text{客损部分} \\[4pt] \text{最终发放体验金(USD)} &= \min\bigl(\text{应发体验金},\; (\text{手续费} + \text{客损绝对值}) \times \text{全局上限比例(0.20)}\bigr) \end{aligned}$$

3.3 英文具体公式(研发评审版)

$$\begin{aligned} \text{common\_multiplier} &= m_{\text{tier}} \times m_{\text{holding}} \times m_{\text{audience}} \times (1 + \text{noise}) \\[4pt] \text{fee\_part} &= \text{fee\_usd} \times \text{fee\_floor} \times \text{common\_multiplier} \\[4pt] \text{loss\_part} &= \text{loss\_abs} \times \text{loss\_share} \times m_{\text{history}} \times m_{\text{loss\_pct}} \times \text{common\_multiplier} \\[4pt] \text{raw\_bonus} &= \text{fee\_part} + \text{loss\_part} \\[4pt] \text{final\_bonus\_usd} &= \min\bigl(\text{raw\_bonus},\; (\text{fee\_usd} + \text{loss\_abs}) \times \text{global\_cap\_ratio}\bigr) \end{aligned}$$

3.4 完整参数解释表

4.0 3.0 2.0 1.0 1.00 LV1 尘土 1.20 LV2 细沙 1.45 LV3 流沙 1.75 LV4 金沙 2.15 LV5 琥珀 2.65 LV6 紫晶 3.30 LV7 钻晶 4.20 LV8 永恒 基线 1.00(v1.3 重新校准;跨段位跳变 20-27% 递增;v1.5 加 LV 副标题)
图 8 — m_tier 8 段位乘数(v1.3 重新校准 1.00 → 4.20 + v1.5 LV1-LV8 外显)+ 沙漏视觉对照:填充比例 12% → 100% 渐进,永恒段位渐变+微光
1.5 1.0 0.5 0 0.5 <1min 0.8 1-10min 1.0 10-60min 1.2 1-24h 1.5 >24h 短仓压制刷量 ← → 长仓奖励持有
图 9 — m_holding 5 档阶梯曲线:从 0.5 到 1.5,每档独立色,曲线呈单调上升
参数中文名取值取值依据 / 工程实现要点
fee_usd手续费交易引擎传入同 A 模型
loss_abs客损绝对值max(0, -pnl)仅取亏损部分;盈利或持平时 = 0
fee_floor手续费保底系数0.05盈利单按 fee × 5% 兜底,保住"持续交易激励"心智
loss_share客损分润系数0.04用户每亏 1 USD,base 维度分 4 cent 给体验金;中位场景 × 综合乘数 ≈ 12-15%,capping 在 20%
global_cap_ratio全局硬上限比例0.20死约束:哪怕所有参数最佳,发放 ≤ (fee + loss_abs) × 20%;做市商每仓净留 ≥ 80%
m_balance(p_balance)积分余额乘数v1.3 砍掉与 m_tier 高度共线(Pearson > 0.95);ceil 取整后用户不可感知;放大职责合并到 m_tier
m_tier(tier)段位乘数(v1.5 段位外显 = 技能等级LV1 尘土 1.00 / LV2 细沙 1.20 / LV3 流沙 1.45 / LV4 金沙 1.75 / LV5 琥珀 2.15 / LV6 紫晶 2.65 / LV7 钻晶 3.30 / LV8 永恒 4.20跨段位跳变 20-27%(递增);v1.5 起段位外显("技能等级 + 中文段位名"双显),但进度阈值不公示(防反算);具体加成倍数也不公示,跨段位时模糊告知"积分更值钱,体验金返还会有正向影响",详见 §3.10 段位外显与升级叙事
m_holding(t_holding)持仓时长乘数<1min 0.5 / 1-10min 0.8 / 10-60min 1.0 / 1-24h 1.2 / >24h 1.5短仓压制刷量,长仓奖励持有
m_audience人群包系数默认 1.0 / 高价值 1.2 / VIP 重点 1.3 / SUSPECT 0.7 / BLOCK 0同 A 模型,合规允许 ±30%
m_history历史画像乘数5 档:重盈 0.70 / 轻盈 0.85 / 平衡 1.00 / 轻亏 1.15 / 重亏 1.30仅作用于 loss_part;判定逻辑见 §3.5
m_loss_pct损益强度乘数4 档:0-20% 1.00 / 20-50% 1.10 / 50-80% 1.20 / >80% 1.30仅作用于 loss_part;判定逻辑见 §3.6
noise防反算随机扰动均匀分布 ∈ [-0.05, +0.05](V1 ±5%)灰度后视反算难度可调到 ±10%

3.5 历史画像乘数 m_history 判定逻辑

3.5.1 为什么不用"胜率"作为判定变量

胜率(盈利单数 / 总单数)有三个致命问题:

问题真实场景用胜率判定的错误
盈亏比掩盖用户 2 笔:盈 5 + 亏 100胜率 50% 判"平衡",实际是 -95 USD 亏损
大样本下盈亏比失真1000 笔,胜率 55%,单笔均盈 1 + 均亏 -3胜率"健康"但总净亏 -1100 USD
高赔率玩家被误判100 笔,胜率 30%,单笔均盈 50 + 均亏 -5胜率"差"但总净盈 +1150 USD

胜率维度无法表达"用户每出 1 USD 手续费最终赚 / 亏多少"——这才是经济意义上的"长期战绩"。

3.5.2 历史战绩比定义

$$\text{history\_ratio} = \frac{\text{net\_pnl\_90d}}{\text{total\_fee\_90d}}$$

直观语义:"用户每出 1 USD 手续费,最终净赚/净亏多少 USD"。

3.5.3 五档判定区间

重亏 轻亏 平衡 轻盈 重盈 1.30 1.15 1.00 0.85 0.70 -1.0 -0.2 0 +0.2 +1.0 -2.0 +2.0 散户基线(约 70% 用户落此档) history_ratio = net_pnl_90d ÷ total_fee_90d < 30 笔强制 1.00(小样本兜底)
图 10 — m_history 5 档数轴:以"每出 1 USD fee 净赚/亏多少"作为长期画像判定,赢家削减、长亏者补偿
用户画像history_ratio 区间含义m_history
重度盈利(赢家)> +1.0每出 1 USD 手续费净赚 > 1 USD0.70
轻度盈利(+0.2, +1.0]略有盈利0.85
大致平衡[-0.2, +0.2]中位散户基线(约 70% 用户在此档)1.00
轻度亏损[-1.0, -0.2)略有亏损1.15
重度亏损< -1.0每出 1 USD 手续费净亏 > 1 USD1.30

3.5.4 边界处理(覆盖所有特殊样本)

情形判定逻辑m_history 结果
90 天 0 笔交易(无历史)数据不足,强制默认1.00
90 天 < 30 笔交易(小样本,含 1-2 笔)不参与画像判定,强制默认1.00
90 天 ≥ 30 笔,但 total_fee_90d 异常为 0工程兜底:分母用 max(total_fee_90d, 1.0) 避免除零按 ratio 取档
90 天 1000 笔,胜率 55% 但净盈亏负ratio < 0 → 进亏损档1.151.30
90 天 500 笔,胜率 30% 但净盈亏正ratio > 0 → 进盈利档0.850.70
90 天 50 笔,全部小赚 + 1 次大亏 → net 平ratio ≈ 0 → 平衡档1.00
90 天 30 笔刚跨门槛 + 严重亏损跨过样本门槛 → 按 ratio 取档1.30(若 ratio < -1.0)

样本门槛 30 笔的依据:行业惯用窗口(参考 Bybit / Bitget 跟单交易统计);小于 30 笔时单笔波动占比过大,画像不稳定,强制按"中位"处理。

3.5.5 数据更新时机

取值
计算窗口滚动 90 天(按 UTC 自然日)
更新频率每日 UTC 03:00 batch 重算
与日内 grant 关系日内 grant 使用昨日快照值(不实时计算)
接入路径V1-E08 反作弊画像旁的 user_trading_profile_90d 快照表
字段user_id / net_pnl_90d / total_fee_90d / trade_count_90d / history_ratio / m_history_bucket / snapshot_at

3.6 损益强度乘数 m_loss_pct 判定逻辑

3.6.1 损益强度定义

$$\text{loss\_pct} = \frac{\text{loss\_abs}}{\text{margin\_used}}$$

直观语义:"这笔亏损吃掉用户该仓本金的百分之多少"。

3.6.2 四档判定区间

归左档 归左档 归左档 1.00 1.10 1.20 1.30 0% 20% 50% 80% 100%+ loss_pct = loss_abs ÷ margin_used ● 闭(含)/○ 开(不含)/(a, b] 半开区间
图 11 — m_loss_pct 4 档损益强度数轴:每档 (a, b] 半开区间,边界值(20%/50%/80%)统一归左档
损益强度loss_pct 区间含义m_loss_pct
盈利 / 持平loss_abs = 0无亏损1.00(实际不参与,loss_part = 0)
小回撤(0%, 20%]用户痛感低1.00
中度回撤(20%, 50%]"亏的不少"心理1.10
大幅回撤(50%, 80%]明显痛感1.20
接近爆仓> 80%"差点爆仓"强体感1.30

3.6.3 边界处理

情形处理
无杠杆现货交易 margin_used = 0兜底用 loss_abs / fee_usd 估算(极少触发,因合约/CFD 必有保证金)
全仓爆仓 loss_pct > 100%强制截断为 100%,取 m_loss_pct = 1.30
部分平仓的 loss_pct按完全平仓时点的累计 loss / 仓位最终占用保证金计算

3.7 触发与归属规则

sequenceDiagram participant TE as 交易引擎 participant AS as 反作弊 V1-E08 participant AM as A 模型 V1-E02 participant BM as B 模型 V1-E02 participant L1 as L1 V1-E01 TE->>AS: 仓位完全平仓,请决策 AS-->>TE: antisybil_decision + 签名 TE->>AM: 计算 raw_points AM->>L1: grant(trigger_at, season_id, decision) L1-->>AM: ok TE->>BM: 计算 final_bonus BM-->>TE: bonus_amount Note over L1: trigger_at vs end_at 决定 season_id 归属
图 5 — 触发与归属时序:单仓平仓后反作弊决策 → A 模型 grant → B 模型并行计算 → L1 写流水(season 原子归属)
取值
触发事件单仓完全平仓(部分平仓不触发)
trigger_at仓位完全平仓时间
幂等键position_id(按仓位幂等)
sourceSHIZHISHA_REBATE(体验金流水)
调用关系A 模型 grant 成功后并行触发;调本公式计算 final_bonus_usd → 调 V1-E03 体验金写入
防反算组合拳多变量化(7 项乘数)+ noise + 24h 聚合 + 段位升段话术 + 阈值不公示

3.8 用户场景计算(B 模型,10 个覆盖各边界)

所有场景取 noise = 0(中位)以便对照;实际发放有 ±5% 浮动。所有金额单位 USD。

场景 3.8.1 — 新手 KYC 后首单小盈利(边界:新用户 + 盈利单 + 0 笔历史)

维度
用户画像VIP1 / 尘土 / 积分余额 100
历史样本90 天 0 笔 → m_history = 1.00(强制默认)
仓信息fee 1 USD / pnl +3 USD(盈利)/ 持仓 5min(短仓)/ 默认人群
$$\begin{aligned} \text{loss\_abs} &= \max(0, -3) = 0 \quad \text{(盈利单)} \\ \text{共同乘数} &= 1.00 \times 0.8 \times 1.0 \times 1.0 = 0.80 \quad \text{(m\_tier=尘土1.00,无 m\_balance)} \\ \text{手续费部分} &= 1 \times 0.05 \times 0.80 = 0.04 \\ \text{客损部分} &= 0 \quad \text{(盈利单 loss\_part 为 0)} \\ \text{应发体验金} &= 0.04 \\ \text{capping} &= (1 + 0) \times 0.20 = 0.20 \end{aligned}$$
最终发放 ≈ 0.04 USD

新手盈利单返还偏低(4 分钱),符合"先建立段位再放大"的设计意图。配套 A 模型按交易量算(fee 1 USD ≈ 交易量 ~1,667 USD → 0.17 积分计算精度,ceil 取整后 1 积分),整体新手单仓激励仍弱但有 ≥ 1 积分起步保底。

场景 3.8.2 — 新手中亏(边界:新用户 + 亏损单 + 2 笔历史 / 小样本强制默认)

维度
用户画像VIP1 / 尘土 / 积分余额 100
历史样本90 天 2 笔(一赚一亏,total_fee 8,net_pnl -5)→ < 30 笔 → m_history = 1.00(强制默认)
仓信息fee 1 USD / pnl -10 USD / 占用保证金 20 USD → loss_pct 50% → m_loss_pct = 1.10(按 §3.6.2 区间 (20%, 50%] 中度回撤档) / 短仓 5min
$$\begin{aligned} \text{loss\_abs} &= 10 \\ \text{共同乘数} &= 1.00 \times 0.8 \times 1.0 \times 1.0 = 0.80 \quad \text{(m\_tier=尘土1.00)} \\ \text{手续费部分} &= 1 \times 0.05 \times 0.80 = 0.04 \\ \text{客损部分} &= 10 \times 0.04 \times 0.80 \times 1.00 \times 1.10 = 0.35 \\ \text{应发体验金} &= 0.39 \\ \text{capping} &= (1 + 10) \times 0.20 = 2.20 \end{aligned}$$
最终发放 ≈ 0.39 USD

关键演示:90 天只交易了 2 笔即使全亏,也强制按"平衡"画像处理 —— 不因小样本噪音被误打成重亏,防止"新人输 2 笔反而被强补偿"的扭曲激励。

场景 3.8.3 — 刚跨过样本门槛的重亏用户(边界:30 笔恰好达标 + 重亏画像)

维度
用户画像VIP2 / 细沙 / 积分余额 400
历史样本90 天 30 笔(恰好达标)/ total_fee 60 / net_pnl -120 / history_ratio = -2.0 → m_history = 1.30(重亏)
仓信息fee 3 USD / pnl -45 USD / 占用保证金 70 USD → loss_pct 64% → m_loss_pct = 1.20 / 持仓 30min
$$\begin{aligned} \text{loss\_abs} &= 45 \\ \text{共同乘数} &= 1.20 \times 1.0 \times 1.0 \times 1.0 = 1.20 \quad \text{(m\_tier=细沙1.20)} \\ \text{手续费部分} &= 3 \times 0.05 \times 1.20 = 0.18 \\ \text{客损部分} &= 45 \times 0.04 \times 1.20 \times 1.30 \times 1.20 = 3.37 \\ \text{应发体验金} &= 3.55 \\ \text{capping} &= (3 + 45) \times 0.20 = 9.60 \end{aligned}$$
最终发放 ≈ 3.55 USD

跨过 30 笔门槛后,长期亏损画像激活,同等单仓 loss 下补偿比同画像但小样本场景高 8 倍以上。

场景 3.8.4 — 高胜率但低盈亏比的"长亏者"(边界:胜率 55% 但总亏)

维度
用户画像VIP3 / 金沙 / 积分余额 5000
历史样本90 天 1000 笔 / 胜率 55%(550 盈 / 450 亏)/ 单笔均盈 +1 / 单笔均亏 -3 / total_fee 500 / net_pnl = 550 - 1350 = -800 → history_ratio = -1.6 → m_history = 1.30(重亏)
仓信息fee 4 USD / pnl -40 USD / 占用保证金 80 USD → loss_pct 50% → m_loss_pct = 1.10(按 §3.6.2 区间 (20%, 50%] 中度回撤档) / 持仓 2h
$$\begin{aligned} \text{loss\_abs} &= 40 \\ \text{共同乘数} &= 1.75 \times 1.2 \times 1.0 \times 1.0 = 2.10 \quad \text{(m\_tier=金沙1.75)} \\ \text{手续费部分} &= 4 \times 0.05 \times 2.10 = 0.42 \\ \text{客损部分} &= 40 \times 0.04 \times 2.10 \times 1.30 \times 1.10 = 4.80 \\ \text{应发体验金} &= 5.22 \\ \text{capping} &= (4 + 40) \times 0.20 = 8.80 \end{aligned}$$
最终发放 ≈ 5.22 USD

关键演示:虽然胜率 55%(看似健康),但盈亏比 1:3 导致总净亏 -800 USD,history_ratio = -1.6 → 进重亏档。这就是为什么不能用胜率判定—— 胜率 55% 在此场景下其实是"长期被市场打击"的画像。

场景 3.8.5 — 低胜率但高盈亏比的"高赔率玩家"(边界:胜率 30% 但总盈)

维度
用户画像VIP4 / 金沙 / 积分余额 7000
历史样本90 天 500 笔 / 胜率 30%(150 盈 / 350 亏)/ 单笔均盈 +50 / 单笔均亏 -5 / total_fee 800 / net_pnl = 7500 - 1750 = +5750 → history_ratio = +7.2 → m_history = 0.70(重盈)
仓信息fee 5 USD / pnl -50 USD(这次亏)/ 占用保证金 100 USD → loss_pct 50% → m_loss_pct = 1.10(按 §3.6.2 区间 (20%, 50%] 中度回撤档) / 持仓 8h
$$\begin{aligned} \text{loss\_abs} &= 50 \\ \text{共同乘数} &= 1.75 \times 1.2 \times 1.0 \times 1.0 = 2.10 \quad \text{(m\_tier=金沙1.75)} \\ \text{手续费部分} &= 5 \times 0.05 \times 2.10 = 0.525 \\ \text{客损部分} &= 50 \times 0.04 \times 2.10 \times 0.70 \times 1.10 = 3.234 \\ \text{应发体验金} &= 3.76 \\ \text{capping} &= (5 + 50) \times 0.20 = 11.0 \end{aligned}$$
最终发放 ≈ 3.76 USD

关键演示:胜率 30%(看似差)但赢得多输得少,总净盈 +5750 USD,history_ratio = +7.2 → 进重盈档(赢家)。即使这次单仓亏 50 USD,补偿被压到 3.76 USD,符合"赢家少返"逻辑。同一仓位下三种历史画像的对比详见场景 3.8.10。

场景 3.8.6 — 中度活跃 baseline(平衡画像,无大盈无大亏)

维度
用户画像VIP3 / 金沙 / 积分余额 5000
历史样本90 天 200 笔 / total_fee 200 / net_pnl -10 / history_ratio = -0.05 → m_history = 1.00(平衡)
仓信息fee 5 USD / pnl -50 USD / 占用保证金 150 USD → loss_pct 33% → m_loss_pct = 1.10 / 持仓 4h
$$\begin{aligned} \text{loss\_abs} &= 50 \\ \text{共同乘数} &= 1.75 \times 1.2 \times 1.0 \times 1.0 = 2.10 \quad \text{(m\_tier=金沙1.75)} \\ \text{手续费部分} &= 5 \times 0.05 \times 2.10 = 0.525 \\ \text{客损部分} &= 50 \times 0.04 \times 2.10 \times 1.00 \times 1.10 = 4.62 \\ \text{应发体验金} &= 5.15 \\ \text{capping} &= (5 + 50) \times 0.20 = 11.0 \end{aligned}$$
最终发放 ≈ 5.15 USD

这是公式设计的"中位坐标"——大多数用户落在这档,单仓返还约该仓亏损的 10.3%。

场景 3.8.7 — 高段位大亏长仓触发 capping

维度
用户画像VIP6 / 紫晶 / 积分余额 30000 / 高价值人群
历史样本90 天 800 笔 / total_fee 2400 / net_pnl -1200 / history_ratio = -0.5 → m_history = 1.15(轻亏)
仓信息fee 20 USD / pnl -300 USD / 占用保证金 500 USD → loss_pct 60% → m_loss_pct = 1.20 / 持仓 36h(>24h)
$$\begin{aligned} \text{loss\_abs} &= 300 \\ \text{共同乘数} &= 2.65 \times 1.5 \times 1.2 \times 1.0 = 4.77 \quad \text{(m\_tier=紫晶2.65)} \\ \text{手续费部分} &= 20 \times 0.05 \times 4.77 = 4.77 \\ \text{客损部分} &= 300 \times 0.04 \times 4.77 \times 1.15 \times 1.20 = 79.0 \\ \text{应发体验金} &= 83.77 \\ \text{capping} &= (20 + 300) \times 0.20 = 64.0 \end{aligned}$$
最终发放 = 64.0 USD(capping 触顶,被抹掉 ~20 USD)

算到 83.77 USD 但被全局 20% 上限拍死到 64 USD。做市商账面赚 300 USD 让出 64 USD(20%),净留 80%。

场景 3.8.8 — 永恒鲸鱼超大爆仓(边界:极端组合 + 强 capping)

维度
用户画像VIP8 / 永恒 / 积分余额 500000 / VIP 重点维护
历史样本90 天 50 笔 / total_fee 3000 / net_pnl -5000 / history_ratio = -1.67 → m_history = 1.30(重亏)
仓信息fee 50 USD / pnl -2000 USD / 占用保证金 2000 USD → loss_pct 100% → m_loss_pct = 1.30 / 持仓 48h
$$\begin{aligned} \text{loss\_abs} &= 2000 \\ \text{共同乘数} &= 4.20 \times 1.5 \times 1.3 \times 1.0 = 8.19 \quad \text{(m\_tier=永恒4.20)} \\ \text{手续费部分} &= 50 \times 0.05 \times 8.19 = 20.48 \\ \text{客损部分} &= 2000 \times 0.04 \times 8.19 \times 1.30 \times 1.30 = 1107.60 \\ \text{应发体验金} &= 1128.08 \\ \text{capping} &= (50 + 2000) \times 0.20 = 410.0 \end{aligned}$$
最终发放 = 410 USD(capping 触顶,被抹掉 ~718 USD)

极端鲸鱼场景:raw_bonus 算到 1128 USD 但被砍到 410 USD。做市商赚 2000 USD 让出 410 USD(20%),净留 80%。

场景 3.8.9 — 高频赢家小亏(边界:重盈画像 + 小回撤)

维度
用户画像VIP5 / 琥珀 / 积分余额 15000 / 默认人群
历史样本90 天 600 笔 / total_fee 1500 / net_pnl +1800 / history_ratio = +1.2 → m_history = 0.70(重盈)
仓信息fee 6 USD / pnl -20 USD / 占用保证金 200 USD → loss_pct 10% → m_loss_pct = 1.00 / 持仓 1h
$$\begin{aligned} \text{loss\_abs} &= 20 \\ \text{共同乘数} &= 2.15 \times 1.2 \times 1.0 \times 1.0 = 2.58 \quad \text{(m\_tier=琥珀2.15)} \\ \text{手续费部分} &= 6 \times 0.05 \times 2.58 = 0.774 \\ \text{客损部分} &= 20 \times 0.04 \times 2.58 \times 0.70 \times 1.00 = 1.445 \\ \text{应发体验金} &= 2.22 \\ \text{capping} &= (6 + 20) \times 0.20 = 5.20 \end{aligned}$$
最终发放 ≈ 2.22 USD

高频赢家小亏单:m_history 0.70(赢家削减)+ m_loss_pct 1.00(小回撤不放大)→ 体验金约该仓亏损的 11.1%,不触 capping。

场景 3.8.10 — 中度用户三种历史画像对比(同一仓位)

固定仓位:fee 5 USD / pnl -50 USD / 占用保证金 150 USD → loss_pct 33% / 持仓 4h
固定画像:VIP3 / 金沙 / 积分余额 5000 / 默认人群

$$\begin{aligned} \text{共同乘数} &= 1.75 \times 1.2 \times 1.0 \times 1.0 = 2.10 \quad \text{(m\_tier=金沙1.75)} \\ \text{手续费部分} &= 5 \times 0.05 \times 2.10 = 0.525 \quad \text{(与画像无关,恒定)} \end{aligned}$$
用户长期战绩history_ratiom_history客损部分应发体验金最终发放vs 平衡画像
重度盈利(赢家)> +1.00.7050 × 0.04 × 2.10 × 0.70 × 1.10 = 3.233.763.76 USD-27%
轻度盈利(+0.2, +1.0]0.853.934.454.45 USD-14%
大致平衡[-0.2, +0.2]1.004.625.155.15 USD基线
轻度亏损[-1.0, -0.2)1.155.315.845.84 USD+13%
重度亏损(长亏者)< -1.01.306.016.536.53 USD+27%

赢家 vs 长亏者单仓返还差 1.74 倍(3.76 vs 6.53)— 显著但不夸张,给重亏用户清晰的"被照顾"信号,又不至于让赢家觉得"被惩罚"。比 v1.2(4.69 vs 8.15 = 1.74x)量级整体下降 ~20%,源于砍 m_balance 后整体放大缩水,但画像差异化比例完全保持

3.9 跨场景观察总结

图 14 — 10 个场景最终发放对比(USD,log 刻度)· 蓝色=未触发 capping · 橙色=capping 触顶
≈ 10×
盈利 vs 亏损 单仓返还差
新手 11× / 中位 10× / 重亏画像 12×
1.74×
历史画像最大差
同一仓 3.76 USD vs 6.53 USD(赢家 vs 长亏者)
<5% / ~30% / >70%
capping 触发率(预估)
中位中亏 / 高段位大亏 / 永恒+重亏组合
9-11%
典型分润比例
中位场景的体验金 ÷ (fee + loss_abs)
20%
触顶分润上限
恒定 capping = (fee + loss_abs) × 0.20 死约束
≥ 80%
做市商净留比例
满档触顶 80.0% / 中位场景 89-91%

3.10 段位外显与升级叙事(v1.5 新增)

v1.5 关键产品决策:段位从"隐藏 8 档"改为"段位外显 + 技能等级心智 + 进度不公示"。

3.10.1 段位外显的内容边界

维度v1.4 之前(隐藏段位)v1.5(段位外显)
段位身份不显示,仅通过沙漏视觉材质暗示显式展示:"LV3 流沙"(技能等级 + 中文段位名)
段位数值乘数(m_tier)不公示仍不公示(防 KOL 反算)
段位升级阈值(300 / 1000 / 3000 ... 300K)不公示仍不公示(防反算)
升级进度("距离下一段位还差 X 积分")不显示仍不显示 ⭐(v1.5 关键决策)
沙漏视觉材质段位的唯一表达保留 + 加段位徽章 + LV 标识
跨段位 APP 推送"您的时之砂更珍贵了"(隐式)明示"您的技能等级提升到 LV3 流沙!您的时之砂更值钱了,每次交易的体验金返还会有正向影响"

3.10.2 8 档段位与技能等级对应

技能等级中文段位名阈值(不对客)m_tier(不对客)
LV1尘土< 300 积分1.00
LV2细沙300-10001.20
LV3流沙1000-30001.45
LV4金沙3000-100001.75
LV5琥珀10000-300002.15
LV6紫晶30000-800002.65
LV7钻晶80000-3000003.30
LV8永恒≥ 3000004.20

阈值取自公式清单 v1.5 §4 PM 推荐 baseline。v1.5 段位外显后阈值仍不公示,仅 PM/精算/财务/风控内部知晓。

3.10.3 用户视角的对客文案设计

首页 / 个人中心 显式展示

┌─────────────────────────────┐
│ 🏆 LV3 流沙                 │
│ 当前时之砂:1,847           │
│ [沙漏视觉]                  │
└─────────────────────────────┘

跨段位升级推送(APP push + 首页 banner)

恭喜!您的技能等级提升到 LV3 流沙!🎉

您的时之砂变得更值钱了,每次交易的体验金返还
会有正向影响。

[查看我的沙漏]

关键叙事规则(v1.5 锁定):

  1. 不公示具体加成倍数(如"返还提升 21%"是禁用文案)
  2. 不公示阈值进度(如"距离 LV4 金沙还差 1,153 积分"是禁用文案)
  3. 仅用"更值钱 / 有正向影响 / 倍数提升"等模糊表述
  4. 沙漏视觉随段位变化(材质从尘土质感 → 钻石材质 + 时光冻结)作为隐式锚点

3.10.4 与防反算组合拳的协同

v1.5 段位外显本身不破坏防反算策略:

防反算手段v1.5 是否生效
7 项乘数多变量化✅ 保留(不公示具体值)
±5% 随机噪声✅ 保留
24h 累计聚合(用户协议表述)✅ 保留
段位升段话术("更值钱"模糊表述)加强(外显后跨段位心智更强)
阈值与权重不公示✅ 保留

结论:v1.5 段位外显 = 心智锚点强化 + 防反算策略不变。

3.10.5 影响范围(联动文档清单)

文档改动
本文档 §3.4 m_tier 表段位名加 "LV X" 副标题 ✓
V1-E04 沙漏视觉与段位徽章 PRD新增"段位徽章 + LV 标识"UI 组件
V1-E05 推送 / 通知 PRD跨段位升级推送文案落本节 §3.10.3
V1-E07 段位判定业务层跨段位事件需触发 push + banner(实时穿越触发 + 每日 batch 兜底)
V1-E09 用户协议段位外显但阈值与具体加成不公示的声明
时之砂_产品架构_v1.1段位外显作为关键决策记录入卷宗
时之砂_关键决策_v1.X新增"段位外显 + 技能等级心智"决策

4. 积分价值反算

4.1 方法论决策:混合路径

PM 最终决策:混合路径 C —— V1 期公式先行 + 反算"内部参考汇率"(不对客披露);V2 商城 SKU 定价显性锚定汇率。

4.1.1 三条路径对比

路径描述V1 适配度缺点
A. 先定汇率 → 反推公式参数业务先锚 1 U = X 积分❌ 不适配公式参数被绑架;与 LTV backtest 结论冲突
B. 先有公式 → 反推汇率公式按 LTV 演化,汇率 emergent⚠️ 部分适配用户无"积分值多少钱"心智锚
C. 混合(已决)V1 公式先行 + 反算参考汇率;V2 商城锚定显性汇率✅ 适配V1 期内部参考汇率非显性,但 V1 本来就无 consume 路径,不影响用户体感

4.1.2 V1 vs V2 期汇率角色

汇率角色用途是否对客
V1(2026-07 ~ 2027-Q1)内部参考汇率精算 monthly accrual / §13 异常发放阈值 USD↔积分换算 / §16 季度预算估算❌ 不对客披露(V1 无 consume,对客无意义)
V2(2027-Q1 起)商城 SKU 定价用户首次看到"积分能换什么"的真实接口;自然反映"积分含金量"✅ 显性公示(SKU 价格表)

4.2 V1 内部参考汇率反算

4.2.1 反算逻辑

V1 期积分本身的成本为 0(纯累积,不消耗)—— 但形成"未消耗负债"。负债的真实成本由 V2 商城兑换时点决定:

$$1 \text{ 积分的 USD 等值} = \frac{\text{商城 SKU 面额(USD)} \times \text{估算兑换率}}{\text{SKU 积分价格}}$$

其中:

  • 商城 SKU 面额 = V2 商城上线时 SKU 标定的 USD 价值(如 10 USD 体验金券)
  • 估算兑换率 = 1 - breakage 率 = 0.8(V1 目标 breakage 20%,公式 §15)
  • SKU 积分价格 = V2 商城上线时定的积分价格(PM 预设区间 1000-1500 积分 / 10 USD 券)

4.2.2 V1 期内部参考汇率预设初值(v1.2 重算)

v1.2 升级:v1.1 给的 0.005-0.01 USD/积分 是按"10 USD 体验金券 = 1200 积分"反推。v1.2 用 5 个约束多维度推算后,收敛到 1 积分 = 0.0015 USD(即 1 USDT ≈ 670 积分)

第一性原理 5 约束推算

#约束推导允许区间
1永恒 USD 价值匹配 VIP7 鲸鱼终身礼遇永恒 300K 积分 = 500-3000 USD(参考 SKP 黑卡 / Amex Centurion)0.0017 - 0.01 USD/积分
2中度用户 1 年攒到最低 SKU(10 USD 券)VIP3 月 75 积分 × 12 = 900 积分 = 10 × 0.8 折损≈ 0.009 USD/积分
3防套利护城河(反作弊后 ROI < 5%)最小套利仓 fee 0.01 → ceil 1 积分≤ 0.005 USD/积分
4ceil 多发量年成本 < 季度预算 5%100K MAU × 多发 35% × 月 6.65M 积分≤ 0.002 USD/积分
5用户体感"数字够大但不离谱"1 USDT 兑 100-10000 积分均合理0.0001 - 0.01 USD/积分

约束交集中位数:1 积分 = 0.0015 USD(即 1 USDT ≈ 670 积分)

用途V1 推荐参考值说明
月度 monthly accrual 估算1 积分 = 0.0015 USD财务对账中位口径
§13 异常发放监控阈值 USD→积分换算1 积分 = 0.0015 USD与 accrual 统一口径
§16 季度预算 USD→积分发放量上限1 积分 = 0.0015 USD同上
永恒长期负债估算(公式 §18)1 积分 = 0.0015 USD中位口径,永恒 300K = 450 USD

⚠️ 本汇率值仅用于 V1 期内部精算,不对客披露。V2 商城上线前 3 个月按真实数据反向校准(见 §4.3)。

4.2.3 §13 / §16 USD ↔ 积分换算表(v1.2 重算)

按"1 积分 = 0.0015 USD"统一口径换算(V1 精算用,可灰度后调整):

公式参数USD 值等值积分用途
§13 scope_hour_threshold70 USD/小时46,667 积分/小时小时级异常告警阈值
§13 scope_day_threshold1,450 USD/天966,667 积分/天日级异常告警阈值
§13 scope_week_threshold9,200 USD/周6,133,333 积分/周周级异常告警阈值
§16 quarterly_budget_cap100,000 USD/季度66,666,667 积分/季度季度预算指标(非熔断)
§14 single_op_user_limit±1,000 积分后台单次单用户调权上限(已是积分单位)
月度 monthly accrual(典型 100K MAU)~13,500 USD~9,000,000 积分按 ceil 实发量 + 兑换率 0.8 推算
永恒 300K 积分 USD 等值450 USD300,000 积分永恒长期负债估算锚点

4.2.4 汇率调整流程与护城河联动

v1.2 新增章节。

任何汇率上调动作(如商城 SKU 锚点调整、breakage 实际值偏离等)必须按以下流程:

步骤操作
1. 触发事件V2 商城 SKU 价格调整 / 反作弊画像数据偏差 > 30% / 月度 accrual 偏差 > 20%
2. 联合评估PM Lawrence + Winn + 风控负责人 + CFO 评估新汇率下 §2.7.4 护城河是否仍然成立
3. 红线新汇率必须保证:单仓最坏套利 ROI ≤ -50%(含反作弊冗余)
4. 联动调整如新汇率会破红线,则 §2.7.3 max_points_per_fee_ratio 必须下调到 0.3 或更低
5. 签字落库三方签字 → §4.2.2 / §4.2.3 重算 → §2.7.4 护城河表重算

4.3 V2 商城上线时的反向校验

V2 商城上线(约 2027-Q1)时,SKU 定价反向校验流程:

4.3.1 校验步骤

flowchart LR S1["Step 1: 拉 V1 末期数据<br/>中位/P90/总流通"] --> S2["Step 2: 反推商城最低 SKU 价格<br/>= 中位用户半年积分 × 70-90%"] S2 --> S3["Step 3: SKU 阶梯定价<br/>体验金券/折扣券/VIP券/0费率/仓位券"] S3 --> S4["Step 4: 反向校准内部参考汇率<br/>1 积分 = SKU面额 × 0.8 ÷ 价格"] S4 -.偏离超过 ±30%.-> ROLL[回调 SKU 定价] ROLL --> S2
图 6 — V2 商城上线时的反向校验闭环:SKU 定价反推汇率,偏离 ±30% 即回调
Step 1: 拉 V1 末期数据
  - 中位用户积分余额(P50)
  - 高段位用户积分余额(P90)
  - 平台总积分流通量

Step 2: 反推商城最低 SKU 价格
  - 最低 SKU 价格 = 中位用户半年累计积分 × 70-90%
  - 保证半年活跃用户能在商城至少换到一个最低价 SKU

Step 3: SKU 阶梯定价
  - 体验金券:10 USD / 50 USD / 100 USD 三档面额
  - 手续费折扣券:24h / 7d 两档
  - VIP 体验券:7 天 / 30 天 两档
  - 0 费率卡:24h
  - 仓位券:按平均赔付成本 × 2-3 倍

Step 4: 反向校准内部参考汇率
  - 1 积分 USD 等值 = SKU 面额 × 0.8 ÷ SKU 积分价格
  - 内部精算系统更新参考汇率

4.3.2 校验通过标准

维度目标
中位用户半年内可消耗占比70-90%
商城 breakage 率15-25%(航司基准)
永恒用户兑换覆盖度≥ 50%(永恒用户半年内能消耗 ≥ 50% 当期积分)
积分通胀控制V2 上线后 3 个月内,平台总流通积分下降 30-50%

4.4 关键风险与缓解

风险缓解
V1 期"参考汇率"被运营/财务误用为对客披露文档明确标注"V1 期不对客披露"+ 培训运营/客服话术
V2 商城 SKU 定价偏离反向校验,导致内部参考汇率漂移过大V2 上线前 1 个月联合 PM + Winn + CFO 走一次校验流程,偏离 > ±30% 触发回调
商城兑换率(0.8)实际值偏低(< 0.6),导致内部参考汇率高估上线后 6 个月数据回测兑换率,调整参考汇率
永恒用户 breakage 极低(< 10%),永恒长期负债被低估永恒用户独立精算 discount_factor(公式 §18),用 0.6 折现

4.5 落地工作项

#工作项Owner时点
1V1 期内部参考汇率写入财务系统精算配置Winn + CFOV1 上线前
2V1-E06 后台 §异常发放监控阈值配置面板,支持 USD ↔ 积分换算V1-E06 PM + 后端V1 上线前
3V2 商城 SKU 定价反向校验流程 SOPPM Lawrence + WinnV2 上线前 3 个月
4永恒长期负债估算专项报告(含 discount_factor backtest)Winn + CFOV1 上线后 6 个月

5. 修订记录

版本日期变更作者
v1.02026-05-05初稿:A 模型 + B 模型 v3.3 + 积分价值反算(路径 C 混合);含 10 个用户场景计算(覆盖小样本 / 胜率高总亏 / 高赔率玩家 / 永恒爆仓等边界)Lawrence + AI 辅助
v1.12026-05-05§2.7 新增 A 模型整数取整规则(floor + 用户尾差账本)+ max_points_per_fee_ratio = 0.5 防套利硬上限;§2.6 标题改为"计算精度视图"并补"实发整数见 §2.7";新增 user_points_fraction_ledger 数据表;新增累积发放示例 / 月度对账 / 对客文案Lawrence + AI 辅助
v1.1.12026-05-14HTML 内审发现 §3.6.2 区间表与 §3.8 场景表对 loss_pct = 50% 边界值的归属不一致:表写 (20%, 50%] 归 1.10 但场景算式用了 1.20。统一为严格大于判定(HTML 计算器实现):①§3.8.2 / §3.8.4 / §3.8.5 三场景 m_loss_pct 从 1.20 改为 1.10,重算客损部分 + 应发 + 最终发放;②§3.4 参数表 m_loss_pct 行加边界归属注;③§3.6.2 表后加边界规则说明;④§3.9 跨场景统计更新;⑤区间表统一用 (a, b] 代码格式表达Lawrence + AI 辅助
v1.22026-05-14§2.7 取整规则方向调整:基于"小仓位用户体感"考量,从 v1.1 的 floor + 用户尾差账本 改为 ceil + 零保护。①§2.7 整章重写(10 个小节);②起发阈值 min_grant_threshold = 0;③max_points_per_fee_ratio = 0.5 保留;④移除 user_points_fraction_ledger 数据表;⑤§4.2 内部参考汇率重写为第一性原理 5 约束推算,PM 推荐初值 1 积分 = 0.0015 USD(1 USDT ≈ 670 积分);⑥§4.2.3 §13/§16 USD↔积分换算表全部按 0.0015 重算;⑦新增 §4.2.4 汇率调整流程与护城河联动;⑧用户体感改"做了就有 1 积分起步",对客文案不再需要"为什么 0 积分"FAQLawrence + AI 辅助
v1.32026-05-14B 模型砍 m_balance:基于"m_balance 与 m_tier 高度共线(Pearson > 0.95)+ ceil 取整后 m_balance 连续奖励用户不可感知 + 段位心智应主导经济权重"的判断,砍掉积分余额乘数。①§3.1/3.2/3.3 公式去 m_balance;②§3.4 参数表移除 m_balance 行;③m_tier 8 档重新校准:尘土 1.00 / 细沙 1.20 / 流沙 1.45 / 金沙 1.75 / 琥珀 2.15 / 紫晶 2.65 / 钻晶 3.30 / 永恒 4.20(跨段位跳变 20-27% 递增);④§3.8 全部 10 场景重算;⑤§3.9 跨场景统计更新(典型分润 10-13% → 9-11%);⑥§3.8.10 五画像对比新值 3.76/4.45/5.15/5.84/6.53 USD,1.74x 比例保持;⑦HTML 计算器 Tab B 移除"积分余额"输入 + m_tier 8 档按新值;⑧HTML 图 12 删除(m_balance 函数曲线已无意义)Lawrence + AI 辅助
v1.42026-05-14产品差异化口径明示:将永续合约与 CFD 两类产品的 fee_usd 上报口径在 PRD 中显性化。①§1.4 术语对照表 fee_usd 行补充两类口径;②新增 §1.5 "产品差异化口径"独立小节(含三类产品对照表 + 关键边界 + 工程实现要点 + 3 个待业务对齐 Open Item);③§2.4 A 模型参数表新增 cfd_spread_ratio = 0.10;④§3.4 B 模型 fee_usd 行引用 §1.5;⑤公式本身不变;⑥"0 fee + 0 客损"场景明示为"不发体验金"Lawrence + AI 辅助
v1.52026-05-14三个重大决策:①A 模型按交易量 —— 从 fee_usd × 0.08 × ... 改为 trade_volume_usd × 0.0001 × ...(行为数据替代结果数据,CFD 0 点差期不再失分,VIP 跃升不再让积分变少);§1.4 新增 trade_volume_usd 术语;§1.5 重写为"A 按交易量 / B 按 fee_usd"双口径;§2.1-§2.4 公式与参数表重写;移除 max_points_per_fee_ratio;新增 min_trade_volume_for_grant = 100 USD 防套利门槛;§2.5-§2.7 触发场景与取整规则重算(含 CFD 0 点差期场景)。②B 模型保持现状(仅 A 模型改),cfd_spread_ratio 仍保留供 B 模型使用。③段位外显 + 技能等级心智 —— 段位从"隐藏 8 档"改为"LV1-LV8 + 中文段位名"双显(如 LV3 流沙),但阈值/进度/具体加成倍数仍不公示;跨段位升级用"积分更值钱、体验金返还有正向影响"模糊文案;新增 §3.10 段位外显与升级叙事独立小节;§3.4 m_tier 表加 LV 副标题。④联动改动:HTML 计算器 Tab A 输入字段 fee_usdtrade_volume_usd;base_coef 默认 0.0001;新增 min_trade_volume_for_grant = 100 USD 阈值;A 模型场景表全部按交易量重算Lawrence + AI 辅助

文档结束

研发评审请重点关注 §2.3 / §3.3 英文公式 + §3.4 参数表 + §3.5 历史画像数据接入。
精算(Winn)请重点关注 §3.8 场景行为分布 + §4 内部参考汇率。
商城(V2)请重点关注 §4.3 V2 上线时反向校验流程。

— Lawrence