+Впервые на top traders desk?
Деск сам считает рынок и публикует решения рядом со счётом, который по ним торгует. Короткий маршрут:
toptraders · кросс-лаборатория v2
Кросс-лаборатория v2: что осталось от перебора
перебрано проб: 29202 · финалистов в таблице: 10 · окно 2020-09-01 — 2026-08-13 · издержки 0.1% на сторону · книга 1 млн $
Мы перебрали 29 202 варианта торговых правил. Ни один не доказал, что зарабатывает не случайно. Ниже написано, как мы это проверяли и что нашли по дороге.
Правило здесь — это пара: чем входим и чем выходим. Мы взяли список входов, список выходов и список фильтров, перемножили их и прогнали каждый вариант на четырёх барах, от дневного до пятнадцатиминутного. Список инструментов собран без отбора по дожившим: имена, снятые с биржи, в нём остались.
В таблице ниже десять лучших. Проигравшие из неё не убраны и помечены поимённо: правило, которое не подтвердилось, мы печатаем так же, как то, которое сработало.
Ниже, отдельным разделом, стоит HyperDelta v.1 — правило, которое пришло к нам со стороны, а не из перебора. Устроено оно иначе, поэтому в общую таблицу мы его не ставим: у него свой раздел и свой вердикт.
Кривые капитала
Как рос бы счёт, если торговать по правилу. Каждая линия начинается со 100: у разных баров разные окна, и складывать их деньгами нельзя. Наведите курсор — увидите все линии на эту дату. Клик по имени в списке убирает линию.
Метрики рядом
Десять правил в одной таблице. Клик по заголовку сортирует её. Последняя колонка отвечает на главный вопрос: доказало ли правило, что оно не случайность. Деньги и место в панели получают только те, кто доказал.
| место | алгоритм | итого | годовых | просадка | sharpe | sortino | calmar | pf | recovery | застой, дней | время в рынке | сделок | прибыльных | sharpe проверочной части | DSR | ёмкость | контроли |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | xl-momcs-1d-ls-2 | +103% | +12.7% | -33.6% | 0.59 | 0.87 | 0.38 | 1.09 | 3.07 | 1073 | +33% | 4340 | +50% | 0.53 | 0.01 | 1.00 | контроль не пройден: DSR, здравость контролей, sharpe |
| 2 | xl-smacross-4h-ls | +47% | +6.7% | -15.5% | 0.62 | 0.92 | 0.43 | 1.29 | 3.02 | 767 | +14% | 7112 | +53% | 0.20 | 0.01 | 1.00 | контроль не пройден: DSR, sharpe |
| 3 | xl-nearhigh-4h-ls | +76% | +10.0% | -34.6% | 0.56 | 0.83 | 0.29 | 1.27 | 2.20 | 1426 | +13% | 9718 | +48% | 0.00 | 0.00 | 1.00 | контроль не пройден: DSR, sharpe |
| 4 | xl-macross-1d-ls | +128% | +14.9% | -35.4% | 0.56 | 0.86 | 0.42 | 1.26 | 3.61 | 962 | +30% | 6223 | +35% | 0.03 | 0.01 | 1.00 | контроль не пройден: DSR, sharpe |
| 5 | xl-donchian-1d-l | +36% | +5.3% | -26.9% | 0.46 | 0.64 | 0.20 | 1.72 | 1.34 | 1816 | +5% | 2217 | +49% | -0.12 | 0.00 | 1.00 | контроль не пройден: DSR, sharpe |
| 6 | xl-donchian-4h-l | +33% | +4.9% | -23.7% | 0.47 | 0.69 | 0.21 | 1.39 | 1.40 | 1723 | +5% | 3774 | +47% | -0.15 | 0.00 | 1.00 | контроль не пройден: DSR, sharpe |
| 7 | xl-momts-4h-ls | +72% | +9.5% | -59.7% | 0.45 | 0.66 | 0.16 | 1.19 | 1.20 | 1033 | +30% | 9029 | +39% | -0.44 | 0.00 | 1.00 | контроль не пройден: DSR, sharpe |
| 8 | xl-fundingfade-15m-l-2 | +1% | +0.3% | -2.2% | 0.29 | 0.52 | 0.12 | 1.14 | 0.60 | 938 | +0% | 1832 | +47% | -0.45 | 0.00 | 1.00 | контроль не пройден: DSR, sharpe |
| 9 | xl-volsurge-1d-l | +48% | +6.8% | -67.5% | 0.37 | 0.51 | 0.10 | 1.68 | 0.71 | 1739 | +25% | 3255 | +44% | -0.56 | 0.00 | 1.00 | контроль не пройден: DSR, sharpe |
| 10 | xl-volsurge-1d-ls | +106% | +12.9% | -55.8% | 0.54 | 0.76 | 0.23 | 1.25 | 1.90 | 962 | +33% | 4289 | +47% | -0.63 | 0.00 | 1.00 | контроль не пройден: DSR, sharpe |
Что каждое из них делает
Одна строка на правило: на чём оно входит, на каком баре работает и в какой фазе рынка живёт.
| алгоритм | семейство | бар | сторона | фильтр | фаза цикла |
|---|---|---|---|---|---|
| xl-momcs-1d-ls-2 | momcs | 1d | лонг и шорт | нет | алгоритм фазы «бычка» |
| xl-smacross-4h-ls | smacross | 4h | лонг и шорт | есть | всефазный |
| xl-nearhigh-4h-ls | nearhigh | 4h | лонг и шорт | есть | алгоритм фазы «бычка» |
| xl-macross-1d-ls | macross | 1d | лонг и шорт | нет | алгоритм фазы «бычка» |
| xl-donchian-1d-l | donchian | 1d | только лонг | есть | алгоритм фазы «бычка» |
| xl-donchian-4h-l | donchian | 4h | только лонг | есть | алгоритм фазы «бычка» |
| xl-momts-4h-ls | momts | 4h | лонг и шорт | есть | алгоритм фазы «бычка» |
| xl-fundingfade-15m-l-2 | fundingfade | 15m | только лонг | есть | алгоритм фазы «аккумуляция» |
| xl-volsurge-1d-l | volsurge | 1d | только лонг | есть | алгоритм фазы «бычка» |
| xl-volsurge-1d-ls | volsurge | 1d | лонг и шорт | нет | алгоритм фазы «бычка» |
Sharpe против просадки
Чем выше точка, тем ровнее доход; чем правее, тем глубже правило проседало. Хорошее место — левый верх. Размер кружка говорит, сколько от бумажного sharpe останется, если торговать этим правилом на большие деньги. Номер внутри — место в таблице выше, цвет закреплён за правилом и от прогона к прогону не меняется.
Доходность по месяцам
Один месяц — одна клетка. Зелёная клетка — месяц в плюс, красная — в минус; чем ярче, тем больше. Правило выбирается списком, число видно при наведении.
Не все правила работают на всём рынке
Рынок бывает в трёх состояниях: растёт, падает и стоит на месте. Мы разметили окно этими тремя состояниями по одной формуле и посчитали каждое правило в каждом из них отдельно. Одна строка — одно семейство правил.
Колонка «в своей фазе» — как правило работает там, где ему хорошо. Колонка «вне её» — то же самое в остальное время. Мы печатаем обе: правило, показывающее только свою фазу, прячет половину окна.
| семейство | класс | что оно делает | лучшая фаза | sharpe в своей фазе | sharpe вне её | правил в замере |
|---|---|---|---|---|---|---|
| pullback | трендовые | в растущем рынке дождаться короткого отката и купить его | аккумуляция | 1.23 | -0.15 | 6 |
| smacross | трендовые | цена пересекла одно длинное среднее, иногда с проверкой наклона | аккумуляция | 1.09 | 0.11 | 4 |
| rsimr | контртрендовые | индекс перекупленности упал низко — покупаем отскок | бычка | 1.08 | 0.11 | 6 |
| fundingfade | контртрендовые | ставка фандинга ушла в крайность — встаём против толпы | аккумуляция | 0.91 | 0.06 | 4 |
| macross | трендовые | быстрое среднее пересекло медленное — самое старое трендовое правило | бычка | 0.91 | 0.27 | 3 |
| nearhigh | трендовые | цена вплотную к многомесячному максимуму — покупаем силу, а не пробой | бычка | 0.90 | -0.88 | 4 |
| donchian | трендовые | цена вышла за максимум последних N баров — входим в ту же сторону | бычка | 0.87 | -0.20 | 3 |
| supertrend | трендовые | линия по размаху цены переворачивается — сторона меняется вместе с ней | аккумуляция | 0.84 | 0.44 | 4 |
| momcs | кросс-секционные | сравнить все имена между собой и взять верхние против нижних | бычка | 0.82 | -0.21 | 2 (мало) |
| volsurge | событийные | объём резко выше обычного — идём за движением или против него | бычка | 0.81 | -0.08 | 2 (мало) |
| bbfade | контртрендовые | цена ушла далеко от своего среднего — ставим на возврат | медвежка | 0.72 | -0.42 | 2 (мало) |
| gann | трендовые | максимумы и минимумы короткого окна дают лесенку — идём за лесенкой | бычка | 0.67 | -0.01 | 2 (мало) |
| momts | трендовые | доходность самого инструмента за последние K баров вышла за полосу | бычка | 0.67 | 0.01 | 3 |
| squeeze | событийные | размах цены сжался до минимума — ждём выхода из сжатия | бычка | 0.51 | 0.15 | 4 |
Замерено 14 семейств из 15. Не попало сюда: tom — до проверки фаз ни одно его правило не дошло, и выдумывать за него строку мы не будем.
- Падающий рынок съедает почти всех. Медиана по всем измеренным правилам: в растущем рынке sharpe 0.61, в стоячем 0.39, в падающем -0.53. Минус здесь означает, что правило теряет деньги ровнее, чем зарабатывает.
- Большинство правил — правила растущего рынка. Лучшая фаза у 9 семейств из 14 — рост. Это не свойство рынка, это свойство наших правил: почти все они устроены как «покупай то, что уже идёт вверх».
- В падающем рынке живёт одна идея — ставка на возврат цены. Из 14 семейств лучшую фазу в падении нашли только: bbfade. Остальные там платят.
- Стоячий рынок — не пустое время. 4 семейств зарабатывают в нём больше, чем в росте, и 3 из них — трендовые. Тренды бывают и внутри боковика, они просто короче. Правило, отключённое «до конца боковика», теряет эту часть окна целиком.
- Фаза важнее настроек. У 14 семейств из 14 результат вне своей фазы хуже, чем в ней, а у 7 он вне её отрицательный. Значит проверка фазы — не украшение правила, а его часть: без неё правило половину времени работает против себя.
- Это не отменяет вердикта. Фазы посчитаны для 49 правил, дошедших до проверки. Ни одно из них проверку на случайность не прошло, и фазная разметка их не спасает: она говорит, ГДЕ искать в следующий раз, а не что мы уже нашли.
Воронка отбора
Сколько правил вошло на каждый шаг, сколько отсеялось и почему. Мы печатаем это целиком: перебор, который не говорит, сколько правил он выбросил, ничем не отличается от перебора, который ничего не искал.
Сколько правил мы попробовали всего
Чем больше правил перебрать, тем выше шанс, что какое-то выйдет в плюс просто так. Поэтому мы считаем каждую пробу и делим на неё. Занизить это число — единственная ошибка счёта, которая делает результат красивее, поэтому мы печатаем его целиком.
| что считаем | проб |
|---|---|
| проб всего | 29202 |
| из них измерено | 28566 |
| снято перечислителем | 636 |
| проб до этого прогона | 182 |
| шаг A | 19524 |
| шаг B | 8140 |
| шаг C | 720 |
Кандидаты без строки
| кандидат | бар | почему |
|---|---|---|
| xl-bbfade-1h-l | — | контроли есть, а в списке кандидатов имени нет: список пересобран после ступени D |
| xl-donchian-1d-l-2 | — | контроли есть, а в списке кандидатов имени нет: список пересобран после ступени D |
| xl-fundingfade-1d-l | — | контроли есть, а в списке кандидатов имени нет: список пересобран после ступени D |
| xl-fundingfade-4h-l | — | контроли есть, а в списке кандидатов имени нет: список пересобран после ступени D |
| xl-gann-1d-ls | — | контроли есть, а в списке кандидатов имени нет: список пересобран после ступени D |
| xl-macross-1d-ls-2 | — | контроли есть, а в списке кандидатов имени нет: список пересобран после ступени D |
| xl-momts-1d-ls-2 | — | контроли есть, а в списке кандидатов имени нет: список пересобран после ступени D |
| xl-nearhigh-1d-l | — | контроли есть, а в списке кандидатов имени нет: список пересобран после ступени D |
| xl-nearhigh-1d-l-2 | — | контроли есть, а в списке кандидатов имени нет: список пересобран после ступени D |
| xl-pullback-1d-l | — | контроли есть, а в списке кандидатов имени нет: список пересобран после ступени D |
| xl-pullback-1d-l-2 | — | контроли есть, а в списке кандидатов имени нет: список пересобран после ступени D |
| xl-pullback-4h-l | — | контроли есть, а в списке кандидатов имени нет: список пересобран после ступени D |
| xl-pullback-4h-l-2 | — | контроли есть, а в списке кандидатов имени нет: список пересобран после ступени D |
| xl-rsimr-1d-l | — | контроли есть, а в списке кандидатов имени нет: список пересобран после ступени D |
| xl-rsimr-1d-l-2 | — | контроли есть, а в списке кандидатов имени нет: список пересобран после ступени D |
| xl-rsimr-1h-l | — | контроли есть, а в списке кандидатов имени нет: список пересобран после ступени D |
| xl-rsimr-1h-l-2 | — | контроли есть, а в списке кандидатов имени нет: список пересобран после ступени D |
| xl-smacross-1d-ls | — | контроли есть, а в списке кандидатов имени нет: список пересобран после ступени D |
| xl-smacross-1d-ls-2 | — | контроли есть, а в списке кандидатов имени нет: список пересобран после ступени D |
| xl-squeeze-1d-ls | — | контроли есть, а в списке кандидатов имени нет: список пересобран после ступени D |
| xl-squeeze-1d-ls-2 | — | контроли есть, а в списке кандидатов имени нет: список пересобран после ступени D |
| xl-squeeze-4h-ls-2 | — | контроли есть, а в списке кандидатов имени нет: список пересобран после ступени D |
| xl-supertrend-1d-ls | — | контроли есть, а в списке кандидатов имени нет: список пересобран после ступени D |
| xl-supertrend-1d-ls-2 | — | контроли есть, а в списке кандидатов имени нет: список пересобран после ступени D |
HyperDelta v.1 — заведён владельцем, вне перебора
Правило сравнивает имена корзины между собой по доходности за одно и то же прошедшее окно: верхушка списка идёт в лонг, хвост — в шорт, равными долями. Инструменты — перпы Binance, пятнадцать штук одновременно; сумма долей нулевая, то есть книга не стоит ни за рост, ни за падение рынка целиком, а объём заявок вдвое больше счёта. Корзина пересобирается через фиксированное число баров 4h; между пересборками веса не трогаются. Длина шага, окно момента и размер ноги публично не печатаются — по ним правило повторяется, и они лежат во внутреннем отчёте.
В таблицу десяти он не поставлен, и это не оговорка. Финалисты перебора держат по одной позиции на долю счёта и не открывают обе стороны сразу; здесь книга двусторонняя, с нулевой суммой долей. Строка рядом с ними сравнивала бы разные вещи по одинаковым колонкам. Само правило деск не искал: его завёл владелец по чужому бэктесту, а движок деска пересчитал на своих данных.
Что намерил деск
Две линии инструментов и две издержки. Первая линия — пятнадцать имён владельца: список знает, кто дожил до 2026 года, поэтому он ПОТОЛОК, а не оценка. Вторая берёт первые пятнадцать по обороту на первый день каждого квартала, то есть состав известен на дату решения и будущего не знает. Окна у линий разные и напечатаны в своей колонке: подпись обязана следовать за данными.
| что измерено | издержки на сторону | окно | итого | годовых | просадка | sharpe |
|---|---|---|---|---|---|---|
| 15 имён владельца (только дожившие), издержки деска | 0.1% | 2022-03-16 — 2026-08-13 | +78% | +13.9% | -23.6% | 0.73 |
| 15 имён владельца (только дожившие), издержки источника | 0.065% | 2022-03-16 — 2026-08-13 | +128% | +20.6% | -20.9% | 1.00 |
| топ-15 по обороту на дату решения, издержки деска | 0.1% | 2020-09-01 — 2026-08-13 | +171% | +18.3% | -48.2% | 0.69 |
| топ-15 по обороту на дату решения, издержки источника | 0.065% | 2020-09-01 — 2026-08-13 | +275% | +24.9% | -45.8% | 0.87 |
Окно источника и его заявка
Заявка пришла без метода и без прогона, поэтому её нельзя ни воспроизвести, ни опровергнуть — она печатается как чужое число и ни в одну метрику деска не входит. Рядом стоит наш пересчёт того же правила на ЕГО окне: сначала нашими издержками, потом его, потом без издержек вовсе. Последняя строка ставит верхнюю границу тому, сколько разрыва можно списать на комиссию; остаток нашими данными не отвечается, потому что состав корзины и источник цен у него нам неизвестны.
| строка | издержки на сторону | окно | итого | годовых | просадка | sharpe |
|---|---|---|---|---|---|---|
| 15 имён владельца (только дожившие), издержки деска | 0.1% | 2024-03-01 — 2026-08-14 | +19% | +7.3% | -22.0% | 0.45 |
| 15 имён владельца (только дожившие), издержки источника | 0.065% | 2024-03-01 — 2026-08-14 | +37% | +13.7% | -16.4% | 0.74 |
| 15 имён владельца (только дожившие), без издержек вовсе | 0% | 2024-03-01 — 2026-08-14 | +79% | +26.8% | -13.7% | 1.28 |
| топ-15 по обороту на дату решения, издержки деска | 0.1% | 2024-03-01 — 2026-08-14 | +31% | +11.6% | -43.0% | 0.49 |
| топ-15 по обороту на дату решения, издержки источника | 0.065% | 2024-03-01 — 2026-08-14 | +50% | +18.0% | -41.2% | 0.66 |
| топ-15 по обороту на дату решения, без издержек вовсе | 0% | 2024-03-01 — 2026-08-14 | +94% | +30.9% | -37.7% | 0.97 |
| заявка источника — деском НЕ подтверждена | 0.065% | 2024-03-01 — 2026-08-14 | +434% | — | -21.7% | 2.00 |
Фандинг
Книга перповая и платит ставку в обе стороны: половина имён платит, половина получает. У корзины с нулевой суммой долей это слагаемое того же порядка, что доход, поэтому оно вынесено строкой, а не спрятано внутри итога. Минус означает, что книга за фандинг платит.
| что считаем | значение |
|---|---|
| фандинг в составе итога | -2.7% |
| издержки в составе итога | +71.7% |
| итого, если фандинг не начислять | +82.7% |
| sharpe, если фандинг не начислять | 0.76 |
| разница итога | -5.0% |
Контроли
Каждая полоса — двести случайных прогонов по фиксированным зёрнам, и сравнение идёт с p95 полосы, а не с её серединой. Первая полоса спрашивает, выбирает ли момент ИМЕНА; вторая — несёт ли информацию знак момента или только его величина. Третья переставляет ранги на каждом пересборе и платит кратно больший оборот, поэтому она меряет частоту торговли, а не ранг, и в вердикт НЕ входит. Ниже — два внешних ориентира: та же корзина, купленная целиком, и BTC.
| с чем сравниваем | прогонов | медиана итого | p95 итого | p95 sharpe | правило выше |
|---|---|---|---|---|---|
| имя торгует чужой момент | 200 | -57.3% | -18.6% | -0.19 | да |
| знак момента перевёрнут половине имён | 200 | -51.5% | +32.6% | 0.44 | да |
| ранги переставлены на каждом ребалансе | 200 | -95.9% | -92.9% | -3.42 | да |
| вся корзина 1/N в лонг | — | -24.3% | — | 0.26 | да |
| BTC куплен и удержан | — | +55.1% | — | 0.45 | да |
Поправка на число проб
Правило пришло готовым: деск не перебирал ни порогов, ни окон, ни вариантов, поэтому знаменатель проб здесь равен единице, и это сказано вслух. Такая поправка МЯГЧЕ любой поправки финалиста перебора — там знаменатель считает всю серию. Сравнивать эти две величины между собой поэтому нельзя.
| что считаем | значение |
|---|---|
| DSR | 0.94 |
| порог | 0.50 |
| проб | 1 |
| дней в измерении | 1611 |