wiki: 7 страниц — суть, методика, издержки, результаты, опровергнутое, словарь

2026-09-29 02:46:09 +03:00
parent 9566a1e584
commit d56ace1757
6 changed files with 210 additions and 0 deletions
+31
@@ -0,0 +1,31 @@
# Издержки и планка: сколько нужно зарабатывать, чтобы просто не терять
## Факты по данным
* Средний ход 5м-свечи — **25.81 б.п.**, за час — **90.1 б.п.**
* Комиссия тейкера на круг — **11 б.п.** (0,055% × 2), мейкера — **4 б.п.**
* Живые замеры книги Bybit на объём $1000: проскальзывание BTC 0,006 б.п., ETH 0,019, SOL 0,42,
XRP 0,34, QNT 7,9 б.п.; медианный спред топ-30 — 1,0 б.п. Вывод: **спред не узкое место, узкое
место — комиссия и неблагоприятный отбор.**
## Порог безубыточной точности
Формула: `p* = (Стоп + Издержки) / (Цель + Стоп)` — какую долю сделок нужно выигрывать, чтобы просто
выйти в ноль.
| Цель | Стоп | Тейкер (11 б.п.) | Мейкер (4 б.п.) |
|---|---|---|---|
| 0.1% | 0.1% | 105.0% | 70.0% |
| 0.2% | 0.2% | 77.5% | 60.0% |
| 0.3% | 0.2% | 62.0% | 48.0% |
| 0.5% | 0.3% | 51.2% | 42.5% |
| 1.0% | 0.5% | 40.7% | 36.0% |
| 1.0% | 1.0% | 55.5% | 52.0% |
| 2.0% | 1.0% | 37.0% | 34.7% |
## Что из этого следует
* «Скальпинг по одной свече» (цель 0,2%, стоп 0,2%) требует **77,5%** попаданий — это заведомо
недостижимо; при цели 0,1% порог вообще больше 100% (мёртвая зона: цель меньше издержек).
* Осмысленны только конструкции, где цель в 3–10 раз больше издержек, либо мейкерское исполнение
(порог падает с 77,5% до 60% в том же сценарии), либо снижение частоты сделок.
+43
@@ -0,0 +1,43 @@
# Как считали (методика)
## Данные
* Источник — публичный REST Bybit `/v5/market/kline` (ключи не нужны), 5м свечи, linear USDT-перпы.
* Вселенная: 250 пар с оборотом ≥ $500 тыс./сутки, история ≥ 90 дней; всего **36 328 323 свечи**
за 2024-10-01 … 2026-09-28. Дубликатов нет, медиана покрытия слотов 100%.
* Формат: `ts_ms,open,high,low,close,volume` — отдельный репозиторий `anatoly/crypto-5m-data`,
он же догружен в общий датасет `nikolashkin/tonbot-data`.
## Сверка движка (обязательный шаг)
Прежде чем доверять цифрам, наш движок сверен с **прод-движком TON-бота** на одних и тех же 30м барах
(полученных ресемплом из 5м):
| Пара | сделок прод | сделок стенд | PF прод | PF стенд |
|---|---|---|---|---|
| BTCUSDT | 107 | 107 | 0.4799 | 0.4799 |
| ETHUSDT | 105 | 105 | 0.3737 | 0.3737 |
| SOLUSDT | 82 | 82 | 0.3604 | 0.3604 |
| XRPUSDT | 114 | 114 | 0.6517 | 0.6517 |
| ZECUSDT | 107 | 107 | 0.9739 | 0.9739 |
Совпадение 1:1 — расхождение 0%. Смысл шага: если движки расходятся, то расхождение ищут в «машине
состояний» (окно удержания, кулдаун, дневной лимит, пауза после стопа), а не в правилах входа.
## Издержки
Комиссия вычитается из каждой сделки как доля от цены входа: тейкер 0,055% на ногу (0,11% на круг),
мейкер 0,02% (0,04%). Слиппедж 1 б.п. на ногу для топ-30 пар по обороту и 3 б.п. для остальных.
Funding учитывается только при удержании через 00/08/16 UTC (для 5м-сделок это доли базисного пункта).
## Честность измерений
| Контроль | Как сделан |
|---|---|
| Плацебо | то же правило на сигнале, сдвинутом вперёд на горизонт удержания |
| Рандом | случайные входы той же частоты и направления |
| Значимость | блочный бутстрап **по дням** (перекрывающиеся окна не раздувают t) |
| Множественное тестирование | порог Бонферрони для числа проверенных вариантов (`reports/count_tests.json`) |
| По годам | отдельная таблица `reports/by_year.csv` |
| Половинки | отдельно EV на второй половине периода (OOS) |
| Ликвидность | слиппедж 3 б.п. для неликвида (эдж из неликвида не считается) |
+26
@@ -0,0 +1,26 @@
# Опровергнутое
Прогон по 250 USDT-перпам Bybit (5м, 2024-10-01 … 2026-09-28). Издержки вычтены из каждой сделки.
Порог приёмки: EV > 0 после тейкера, плацебо ≈ 0, |t| ≥ порога Бонферрони, плюс в ≥ 2 из 3 лет.
| Метод | сделок | EV, б.п. | EV OOS | t (бутстрап) | плацебо, б.п. | рандом, б.п. | EV мейкер | Причина отказа |
|---|---|---|---|---|---|---|---|---|
| prod_mr_5m | 105089 | -4.46 | -5.19 | -7.65 | 0.0 | 0.0 | 2.54 | отрицательное матожидание после издержек; OOS тоже минус; плюс менее чем в 2 из 3 лет |
| clv_flow | 257017 | -9.88 | -12.24 | -4.15 | 0.0 | 0.0 | -2.88 | отрицательное матожидание после издержек; OOS тоже минус; плюс менее чем в 2 из 3 лет |
| pairs_btc_eth | 1944 | -13.22 | -9.81 | -5.85 | 0.0 | 0.0 | -6.22 | отрицательное матожидание после издержек; OOS тоже минус; плюс менее чем в 2 из 3 лет |
| intraday_momentum | 125771 | -13.8 | -9.2 | -7.35 | 0.0 | 0.0 | -6.8 | отрицательное матожидание после издержек; OOS тоже минус; плюс менее чем в 2 из 3 лет |
| xs_reversal_15m | 873500 | -14.29 | -14.31 | -29.1 | -16.69 | -16.26 | -7.29 | отрицательное матожидание после издержек; OOS тоже минус; плюс менее чем в 2 из 3 лет |
| xs_reversal_costaware | 873400 | -14.29 | -14.31 | -29.1 | 0.0 | 0.0 | -7.29 | отрицательное матожидание после издержек; OOS тоже минус; плюс менее чем в 2 из 3 лет |
| hour_xs_reversal | 291200 | -14.7 | -14.77 | -35.34 | 0.0 | 0.0 | -7.7 | отрицательное матожидание после издержек; OOS тоже минус; плюс менее чем в 2 из 3 лет |
| ou_ema_costaware | 1047089 | -14.74 | -13.66 | -19.88 | 0.0 | 0.0 | -7.74 | отрицательное матожидание после издержек; OOS тоже минус; плюс менее чем в 2 из 3 лет |
| ou_ema_revert | 1123903 | -14.84 | -13.81 | -21.05 | 0.0 | 0.0 | -7.84 | отрицательное матожидание после издержек; OOS тоже минус; плюс менее чем в 2 из 3 лет |
| lead_lag_btc | 2311277 | -15.64 | -15.67 | -31.17 | 0.0 | 0.0 | -8.64 | отрицательное матожидание после издержек; OOS тоже минус; плюс менее чем в 2 из 3 лет |
| liquidity_sweep | 1166054 | -15.85 | -16.0 | -34.55 | 0.0 | 0.0 | -8.85 | отрицательное матожидание после издержек; OOS тоже минус; плюс менее чем в 2 из 3 лет |
| vwap_revert | 2655400 | -16.42 | -16.35 | -28.62 | 0.0 | 0.0 | -9.42 | отрицательное матожидание после издержек; OOS тоже минус; плюс менее чем в 2 из 3 лет |
| vol_breakout | 738494 | -18.51 | -19.43 | -24.03 | 0.0 | 0.0 | -11.51 | отрицательное матожидание после издержек; OOS тоже минус; плюс менее чем в 2 из 3 лет |
| xs_momentum_15m | 873500 | -18.87 | -19.04 | -38.48 | 0.0 | 0.0 | -11.87 | отрицательное матожидание после издержек; OOS тоже минус; плюс менее чем в 2 из 3 лет |
Методы перечислены вместе с контролем: плацебо — то же правило на сдвинутом вперёд сигнале,
рандом — случайные входы той же частоты. Совпадение EV метода с плацебо означает, что
измерялся дрейф рынка, а не правило.
+50
@@ -0,0 +1,50 @@
# Результаты по методам
Все цифры — после издержек (тейкер 0,11% на круг). `EV` — матожидание сделки в базисных пунктах,
`OOS` — то же на второй половине периода, `t` — блочный бутстрап по дням, `плацебо`/`рандом` — контроли.
## Тейкер
| Метод | сделок | EV, б.п. | OOS | t | плацебо | Sharpe |
|---|---|---|---|---|---|---|
| prod_mr_5m | 105089 | -4.46 | -5.19 | -7.65 | 0.0 | -5.64 |
| clv_flow | 257017 | -9.88 | -12.24 | -4.15 | 0.0 | -2.86 |
| pairs_btc_eth | 1944 | -13.22 | -9.81 | -5.85 | 0.0 | -4.85 |
| intraday_momentum | 125771 | -13.8 | -9.2 | -7.35 | 0.0 | -4.8 |
| xs_reversal_15m | 873500 | -14.29 | -14.31 | -29.1 | -16.69 | -20.44 |
| xs_reversal_costaware | 873400 | -14.29 | -14.31 | -29.1 | 0.0 | -20.43 |
| hour_xs_reversal | 291200 | -14.7 | -14.77 | -35.34 | 0.0 | -26.15 |
| ou_ema_costaware | 1047089 | -14.74 | -13.66 | -19.88 | 0.0 | -13.43 |
| ou_ema_revert | 1123903 | -14.84 | -13.81 | -21.05 | 0.0 | -14.46 |
| lead_lag_btc | 2311277 | -15.64 | -15.67 | -31.17 | 0.0 | -23.18 |
| liquidity_sweep | 1166054 | -15.85 | -16.0 | -34.55 | 0.0 | -25.57 |
| vwap_revert | 2655400 | -16.42 | -16.35 | -28.62 | 0.0 | -23.3 |
| vol_breakout | 738494 | -18.51 | -19.43 | -24.03 | 0.0 | -19.13 |
| xs_momentum_15m | 873500 | -18.87 | -19.04 | -38.48 | 0.0 | -27.0 |
## Мейкер (тот же список правил, комиссия 0,04% на круг)
| Метод | сделок | EV, б.п. | OOS | t |
|---|---|---|---|---|
| prod_mr_5m | 105089 | 2.54 | 1.81 | 4.31 |
| clv_flow | 257017 | -2.88 | -5.24 | -1.24 |
| pairs_btc_eth | 1944 | -6.22 | -2.81 | -2.67 |
| intraday_momentum | 125771 | -6.8 | -2.2 | -3.64 |
| xs_reversal_15m | 873500 | -7.29 | -7.31 | -14.85 |
| xs_reversal_costaware | 873400 | -7.29 | -7.31 | -14.85 |
| hour_xs_reversal | 291200 | -7.7 | -7.77 | -18.56 |
| ou_ema_costaware | 1047089 | -7.74 | -6.66 | -10.64 |
| ou_ema_revert | 1123903 | -7.84 | -6.81 | -11.5 |
| lead_lag_btc | 2311277 | -8.64 | -8.67 | -19.41 |
| liquidity_sweep | 1166054 | -8.85 | -9.0 | -21.45 |
| vwap_revert | 2655400 | -9.42 | -9.35 | -18.64 |
| vol_breakout | 738494 | -11.51 | -12.43 | -16.09 |
| xs_momentum_15m | 873500 | -11.87 | -12.04 | -24.21 |
## Графики
![Матожидание по методам](https://git.nikolashkin.ru/anatoly/crypto-screener-5m/raw/branch/main/charts/ev_by_method.png)
![Кривая капитала лучшего метода](https://git.nikolashkin.ru/anatoly/crypto-screener-5m/raw/branch/main/charts/equity_best.png)
![Распределение доходностей сделок](https://git.nikolashkin.ru/anatoly/crypto-screener-5m/raw/branch/main/charts/trade_hist.png)
+30
@@ -0,0 +1,30 @@
# Словарь терминов
**Базисный пункт (б.п.)** — одна сотая процента. 100 б.п. = 1%. Комиссия 0,11% = 11 б.п.
**Матожидание сделки (EV)** — средний результат одной сделки после издержек. Если отрицательное —
стратегия в среднем теряет деньги, сколько бы сделок ни было.
**PF (profit factor)** — сумма прибылей / сумма убытков. Больше 1 — в плюсе.
**OOS (out-of-sample)** — вторая половина периода, на которую правила «не смотрели». Показывает,
не подогнаны ли правила под прошлое.
**t-статистика** — во сколько раз средний результат больше своего разброса. Для честных выводов
считаем бутстрапом по дням; порог для десятков проверок ≈ 3.
**Плацебо-контроль** — то же правило, но сигнал сдвинут вперёд на горизонт удержания. Если результат
такой же, значит измерялось движение рынка, а не правило.
**Рандом-контроль** — случайные входы той же частоты. Показывает, что даёт «нулевая» стратегия.
**Sharpe** — доходность, делённая на разброс (по дневным результатам, приведена к году).
**Просадка** — максимальное падение кривой капитала от предыдущего максимума.
**Тейкер / мейкер** — тейкер берёт ликвидность (0,055% на Bybit, всегда исполняется), мейкер ставит
лимитную заявку (0,02%, но может не исполниться и выбирается неблагоприятно).
**Квантиль / дециль** — доля вселенной: дециль 10% при 250 парах = 25 пар.
**Слиппедж** — разница между ожидаемой ценой и фактической ценой исполнения.
+30
@@ -0,0 +1,30 @@
# Суть: что мы проверяли и чем всё кончилось
## Коротко, простыми словами
Мы взяли **250 криптовалютных пар** на бирже Bybit, скачали их **5-минутные свечи за два года**
(36,3 млн свечей) и проверили 14 стратегий: каждая сделка считалась с реальной комиссией
(0,11% за вход+выход) и проскальзыванием. Плюс отдельный прогон по мейкерским комиссиям (0,04%).
**Итог: методов с плюсом после издержек — 0.** Лучший по матожиданию — `prod_mr_5m`
(-4.46 б.п. на сделку), и он тоже в минусе.
## Почему так
Средний ход 5-минутной свечи по этим парам — **25.81 б.п.** Комиссия за вход+выход —
**11 б.п.** То есть комиссия сопоставима с движением цены целиком. Чтобы стратегия на таком горизонте
зарабатывала, она должна «видеть» направление заметно лучше случайного: при цели и стопе по 0,2%
нужно угадывать **77,5%** сделок (расчёт в странице «Издержки»). Правила, которые такого перевеса не
имеют, уходят в минус ровно на величину издержек — это и видно в таблице результатов.
## Что это значит практически
* Это **не** «мы не нашли стратегию» в смысле «плохо искали»: тот же вывод даёт научная литература
(разобрано 133 источника в соседнем репозитории `anatoly/crypto-5m-research`): на 1–15 минутах
лучшие найденные сигналы дают 0,15–1,3 б.п. валового перевеса против 11 б.п. издержек.
* Рабочий вывод для заработка: на 5м сигнал обязан либо **резко снизить оборот** (входить редко,
только когда ожидаемое движение в разы больше издержек), либо **торговать мейкером**, либо
переходить на горизонт, где движение в разы больше комиссии. Первое и второе мы проверили
отдельными конфигурациями — результаты в «Результаты».
* Подтверждённая нашими прошлыми прогонами стратегия (дневной кросс-секционный momentum 14д/7д,
+242 б.п./нед) на 5-минутный горизонт **не переносится** — это разные эффекты.