tonify-sims

SIM 1 — касса против котла: механизмы выплат · SPEC v1.1

Модельная спека: синтетический рынок от трёх якорей, MVA-матрица {правило × контракт}, UC-кроссовер · Tonify Research · август 2026 · CHANGELOG в конце

Формализация sim1 задним числом — по внешней рецензии (см. CHANGELOG v1.1): sim1 был единственной симуляцией без формальной спеки и без валидационных ворот, при том что именно он несёт коммерческие числа. Уравнения ниже — те, что уже реализованы в tonify_cash_sim.py / v04_full.py / v05_matrix.py / v06_uc_crossover.py; ничего не перекалибровано, числа не менялись.

0. Что строим (одним абзацем)

Синтетический рынок N = 200 000 артистов, построенный кусочной конструкцией от трёх независимо измеренных якорей и валидированный на них (ворота §5), поверх которого считаются: минимальная жизнеспособная аудитория (MVA) для $100/мес по механизмам выплат {pro-rata, user-centric} × {signed, independent} и прямой экономике (донаты с частотой k), кеш-слой рельс (TON/Stars), аналитическое фрод-разбавление и логистика порога выплаты $13. Главные оси прямой экономики (частота k, чек, доля суперфанов) не измерены — sim1 называет циферблаты, MVP их меряет (CRITIC §7, README Limitations).

1. Параметры → источники (классификация: measured / derived / assumed)

Полные реквизиты и расхождения vault↔репо — SOURCES.md (D1–D11). Здесь — классификация статуса каждого параметра: что измерено, что выведено, что допущено и на что допущение влияет.

Параметр Значение Статус Основание / что от него зависит
N 200 000 assumed (масштаб) форма распределения масштаб-инвариантна; валидация в долях
Доли якорей T1/T2 87% / 2.6% measured* Luminate / Spotify L&C; *оговорки D1 (треки vs артисты), CRITIC §5 (правообладатели)
X_HI (порог $1000/год) 225 734 стрима derived = 1000/0.00443; следует из инди-ставки
Тело <1000: LN(ln 80, 1.4) assumed форма тела; валидируется только доля T1
Хвост: Pareto α 1.4 assumed → калибрует T3 подобран до фиксации ворот; T3-ворота §5
PLAYS_PER_LISTENER (PL) 21.21 measured-с-оговоркой LFM-1b Table 6 — время жизни панели, не год; red team: диапазон 8–21 (CRITIC §2)
rate_ind (pro-rata independent) $0.00443/стрим measured (внешний якорь) Duetti US Jan-2026; в vault отсутствует (D3)
rate_signed (карман подписанного) $0.0003/стрим measured (внешний якорь) заявленный якорь v0.2; в vault отсутствует (D3); одна значащая цифра — оговорка точности в PAPER CHANGELOG v0.5.1
LABEL_PASS 6.772% derived = 0.0003/0.00443, вычисляется в коде (v0.5.1); НЕ третий якорь; корроборация «~CNM 6.8%» не подтверждена vault (D4)
SUPERFAN_SHARE (SF) 0.017; диапазон 0.006–0.017 assumed-с-диапазоном SoundCloud×MIDiA 1–2%, ниж. граница из 97-2-1 (CRITIC §7, D5)
DONATE_MEDIAN / σ $5 / 0.8 assumed форма lognormal не измерена для музыки (RESULTS, честные ограничения); чек-диапазон $3.10–6.9 из PWYW (CRITIC §6)
MEAN_GIFT (MG) $6.886 derived = exp(ln 5 + 0.8²/2) из DONATE_MEDIAN/σ
ARTIST_TAKE 0.80 assumed (продукт) базовый директ-сплит; 360-сделка ×0.70 поверх
TON retention / Stars d/m 0.999 / 0.965 / 0.675 vendor-derived Stars — середины диапазонов 95–97 / 65–70 (D8); TON fee $-конверсия (D9)
COMM (комиссия Tonify) 0.05 assumed (продукт) параметр продукта, не рынка
SUB_NET_YR $11.99×12×0.70 смесь 70% пула — measured (B&MT 2023); $11.99 US-цена — не в vault (D6)
PAID_SHARE 0.40 assumed, не обоснован доля платящих слушателей в UC-кошельке; НИГДЕ в доках не выводится; линейно масштабирует весь UC-ответ: uc ∝ PAID_SHARE ⇒ MVA_uc ∝ 1/PAID_SHARE; сетка чувствительности 0.25/0.40/0.60 — v06, fig14
u (прочее прослушивание) база 10 000 плэев/год assumed масштаб чужого прослушивания в кошельке; UC-ответ — функция u, НЕ скаляр: кроссовер u* (§3.2, v06)
TARGET $1 200/год определение $100/мес — определение MVA
k (кеф) ось не параметр ось незамкнутого «Объекта 3»; бенчмарки RESULTS §2

2. Мир, точно

Стримы артиста за год — кусочная конструкция (доли фиксированы якорями):

RNG: default_rng(42), порядок выборки фиксирован (low → mid → top → shuffle). Слушатели артиста: listeners = max(1, s / PL). Валидация мира — ворота §5, печатаются ДО выводов; FAIL блокирует прогон (exit 1).

3. Механизмы выплат, точно

3.1 Пуловые (World A)

Доход артиста: inc = s · rate, rate ∈ {0.00443 (ind), 0.0003 (signed)}. MVA(rate) = TARGET / (PL · rate). Контрактная ось — ОДИН скаляр LABEL_PASS = 0.0003/0.00443, применённый к обеим строкам матрицы; поэтому контракт-мультипликатор ×14.8 = 1/0.06772 — арифметика входов, не эмерджентность (CHANGELOG v1.1 §1). Вклад матрицы — соизмеримость: две измеренные величины впервые на одной MVA-сетке.

3.2 User-centric (Monte-Carlo доли кошелька) и кроссовер u*

Слушатель платит SUB_NET_YR в пул прав с вероятностью PAID_SHARE; доля артиста в кошельке: share = p/(p+o), p ~ LN(ln 5.16, 1.676) (плэи у артиста, LFM-1b), o ~ LN(ln u, 1.0) (прочее прослушивание). Оценка: E[share] по 200 000 сэмплов; uc(u, ps) = ps · SUB_NET_YR · E[share]. PAID_SHARE — скаляр вне MC: uc(u, ps) = uc(u, 0.40) · ps/0.40 — тождество, не приближение.

RNG-порядок канона (v04 = v05 = v06, байт-в-байт): u ∈ [5k, 10k, 20k] из одного потока default_rng(42), по 2×200k сэмплов на точку; v06 продолжает поток точками [2k, 50k], затем [14k, 15k] (уточнение кроссовера); ворота v06 сверяют канон (4 807 / 9 512 / 18 341) с допуском ±1 слушатель.

UC — не скаляр (external review §2). MVA_uc(u) растёт с u и пересекает pro-rata independent (12 771) в точке безразличия u: лог-интерполяция между соседними точками сетки. Прогон v06: u*(0.25) ≈ 8 731; u*(0.40) ≈ 14 146; u*(0.60) ≈ 21 371 плэев/год. При u > u user-centric ХУЖЕ pro-rata для данного артиста: правило перекладывает деньги к артистам малослушающих слушателей и отбирает у артистов многослушающих. Скаляр «×1.34» валиден только в базовой точке (u = 10k, ps = 0.40); внешние эмпирики (SoundCloud +34% нижней корзине, Deezer сдвиг 2.4% пула) независимо подтверждают, что эффект правила мал против эффекта контракта. Фигура: fig14.

3.3 Прямая экономика

MVA_direct(k) = TARGET / (SF · k · MG · take). Углы диапазона при k = 4: лучший (SF=0.017, чек MG=$6.886) — 3 204; худший (SF=0.006, чек $3.10 — фикс-значение PWYW-среднего) — 20 161 > 12 771: худший угол проигрывает инди-пулу (правило коммуникации: после отзыва точки в диапазон вести с диапазона, README Process). Breakeven-сетка d: 18 комбинаций {PL 8, 21.21} × {чек 3.10, MG, 6.9} × {SF 0.006, 0.01, 0.017}, d = PL·0.00443/(SF·чек·take) → 0.38 / 1.25 / 6.31 (CRITIC §1 итог).

3.4 Кеш-слой, Twitch-бенчмарк и декомпозиция

Из $1: артисту r·(1−COMM), Tonify r·COMM, рельсе 1−r; r — retention рельсы. Twitch-механика: 0.017·12·$5·0.50 → MVA 2 353 при фикс-цене подписки $5; на выровненном чеке MG=$6.886 → 1 709. Преимущество прямой экономики над Twitch-механикой — take rate (5% против 50%), не рельса. Декомпозиция 3 204 → 900 (оба take-фактора явно): частота k 4→12 при take 0.80 → 1 068 (×3.0); рельса 0.80 → 0.949 (TON) → 900 (×1.19).

3.5 Фрод и порог

Фрод — аналитическое тождество разбавления: при впрыске F% ботовых стримов пул теряет F/(1+F) (фикс-пул, боты добавляют объём); детекция = 0 по построению; не симуляция. Порог: месяцы до $13 = 13/(inc/12); распределение по миру — RESULTS «Логистика порога».

5. Валидационные ворота (мишень → получено → допуск → PASS/FAIL; печать ДО выводов)

Ворота Мишень Получено Допуск Вердикт
T1 доля <1000 стримов/год 87% (Luminate; D1) 87.0% [86%; 88%] PASS
T2 доля >$1000/год 2.6% (Spotify L&C) 2.6% [2.4%; 2.8%] PASS
T3 доля стримов у топ-0.28% ~50% (Last.fm/Celma; D2) 44.5% [40%; 55%] PASS
V06 канон UC 4 807 / 9 512 / 18 341 воспроизведён ±1 слушатель PASS (assert)
V05 якорь signed 188 590 (=1200/(21.21·0.0003)) сверка в коде ±0.5 PASS (assert)

Оговорка T3 (декларация post-hoc, регламент sim2 v1.2): допуск [40%; 55%] зафиксирован в v1.1 ПОСЛЕ прогона — сам якорь неточечный (Celma: 50% у топ-0.28% из 260 525 артистов Last.fm-2007; CMA: 63–65% у топ-0.4%, 2014–2020), относительный промах к 50% — 11%. FAIL любых ворот блокирует выводы (exit 1); справочные (не ворота): нижние 90% → 0.9% (Jensen ~2%, порядок сходится), Gini 0.97.

6. Фальсификаторы

7. Фигуры

fig1 (MVA vs k + референсы матрицы) · fig2 (распределение дохода, биномиальные суперфаны v0.3) · fig3 (фрод-тождество) · fig4 (рельсы $1) · fig5 (лестница матрицы) · fig6 (MRR-solver) · fig7 (heatmap {правило × контракт}) · fig14 (UC-кроссовер: MVA(u) × PAID_SHARE, u* отмечен). Все — в figures/ (EN) и figures/ru/ (RU) из одного прогона; палитра #0D0A1A/#6B2FFF/ #00D4F5/#FF4D8D/#FFD426; подпись «аналитика vs симуляция» на каждой (регламент viz + проверка направления шкалы, CLAUDE_CODE_HANDOFF).

8. Детерминизм

seed = 42 всюду; RNG-порядки зафиксированы (§2, §3.2). stdout байт-идентичен между прогонами и окружениями; PNG байт-идентичны в пределах одного окружения (версия matplotlib и шрифты влияют на хэши) — формулировка README v1.1.

9. Честные ограничения

Хвост между якорями — конструкция (α=1.4 подобран, T3-ворота с post-hoc допуском §5); UC — аппроксимация кошелька, не двудольный граф; PAID_SHARE не обоснован и линейно масштабирует UC (§1); PL — время жизни панели, не год; оба per-stream якоря отсутствуют в vault (D3); оси прямой экономики не измерены — их меряет MVP. Ни один вывод не сильнее своего фальсификатора (§6).

CHANGELOG (жанр CRITIC.md: обвинение → вердикт → действие)

v1.0 → v1.1 (внешняя рецензия, 7 пунктов; август 2026)

  1. «×14.8 — инверсия входа, матрица ранга 1». Вердикт: верно; LABEL_PASS — один скаляр на обе строки, ×14.8 = 1/0.06772 по построению. Действие: переформулировано в README/PAPER (арифметика, не эмерджентность; вклад — соизмеримость), §3.1.
  2. «UC-скаляр ×1.34 скрывает зависимость от u». Вердикт: верно, и хуже — эффект меняет знак (u=20k: 18 341 > 12 771). Действие: v06 + fig14 + u*(ps) ∈ {8 731; 14 146; 21 371}; скаляр заменён кроссовером, §3.2.
  3. «Геройский абзац ведёт с лучшего угла». Вердикт: верно. Действие: hero-диапазон 3 204…20 161 с признанием проигрыша худшего угла; правило коммуникации в README Process.
  4. «Twitch-бенчмарк на другом чеке». Вердикт: верно. Действие: same-check 1 709 рядом с 2 353; вывод переформулирован в take rate 5% vs 50%, §3.4.
  5. «3 204 → 900 смешивает частоту и рельс». Вердикт: верно. Действие: декомпозиция ×3.0 (частота) и ×1.19 (рельса), §3.4; take-факторы в подписи fig5.
  6. «Нет ворот; T3 промахивается на 11% без пометки». Вердикт: верно. Действие: ворота §5 с допусками и FAIL-блокировкой (exit 1); T3-допуск задекларирован post-hoc.
  7. «Побайтовость фигур — только внутри окружения». Вердикт: верно. Действие: формулировка §8 и README Reproducibility.

Корень (вердикт рецензии принят): sim1 был единственной симуляцией без формальной спеки — эта спека закрывает перекос. Числа v0.5.1 не менялись; все новые числа (u*, 1 709, 1 068, 20 161) — производные существующих осей.