Самая дорогая ошибка в проверке идеи это подогнать правила под прошлое и поверить красивой цифре.
Скилл ведёт проверку как аккуратный исследователь: согласует с вами правила, считает с издержками, отдельно проверяет на данных, на которых идею не подгоняли, и сравнивает со случайными входами. Всё, что агент предположил сам, он записывает в отчёт.
Как установить
Скопируйте текст скилла и вставьте его в чат агента, добавив сверху такую строку:
Сохрани это как скилл с именем "hypothesis-test". Если не можешь сохранять скиллы, следуй этому в рамках нашего разговора.
Текст скилла
---
name: hypothesis-test
description: Проверка торговой идеи на истории в ATAS через MCP-сервер ATAS со стандартным отчётом: издержки, размер выборки, проверка вне выборки и сравнение со случайными входами. Используй, когда пользователь просит сделать бэктест, проверить сетап, паттерн или уровень, узнать, как часто что-то происходит («работает ли поглощение на вчерашнем POC», «проверь идею», «как часто цена возвращается к POC»). Не для сигналов на сегодня, точек входа и выставления ордеров.
compatibility: Нужны MCP-сервер ATAS, подключение к криптобирже и возможность запускать код для расчётов. Рыночные данные AI Connect отдаёт агенту по криптовалютам.
metadata:
version: 0.2
updated: 2026-11-05
---
# hypothesis-test
Проверь одну торговую идею на истории, доступной в ATAS, и сообщи, что подтверждают данные. Отвечай на языке пользователя, коротко. Никогда не выставляй ордера и не называй результат доказательством того, что стратегия заработает.
## Жёсткие правила
- Проверяй только те правила, которые подтвердил пользователь. Не добавляй, не убирай и не ужесточай фильтры, сессии и временные окна по своей инициативе. Предпочтения из более ранней части разговора не учитывай, если пользователь не повторил их для этой проверки.
- Используй только данные ATAS. Внешние сервисы и файлы бери, только если пользователь попросил об этом в этом же запросе, и назови источник в отчёте.
- Считай кодом (твой инструмент запуска кода). Не считай статистику в уме. Если запускать код нельзя, скажи об этом и ограничься количеством сигналов.
- Каждое изменение и допущение записывай в отчёт в раздел «Допущения и изменения», даже мелкое.
- Читай числа из инструментов. Никогда не оценивай их по скриншоту.
## 1. Зафиксируй правила
Заполни поля из запроса. О недостающем спроси один раз и предложи значение по умолчанию. Не начинай, пока пользователь не подтвердит.
| Поле | Пример | По умолчанию, если пользователь согласен |
|---|---|---|
| Инструмент и биржа | BTCUSDT, бессрочный фьючерс Binance | Нет, должен указать пользователь |
| Период баров | 5 минут | Нет, должен указать пользователь |
| Сетап | Бычье поглощение, касающееся POC предыдущей сессии | Нет, должен указать пользователь |
| Вход | Открытие следующего бара | Открытие следующего бара |
| Стоп | За лоу паттерна | Нет, должен указать пользователь |
| Цель | 1R | Нет, должен указать пользователь |
| Выход по времени | Закрыть в 20:00 UTC | Нет, должен указать пользователь |
| Фильтр времени суток | Только часы сессии США | Нет |
| Стороны | Лонг и шорт | Как следует из сетапа |
| История | Последние 60 дней | Всё, что может загрузить график |
| Издержки | Комиссия в % от объёма сделки, проскальзывание 1 тик на сторону | Комиссия из `commissions_list`, проскальзывание 1 тик на сторону |
| Фандинг | Учитывать для бессрочного фьючерса | Не учитывать и записать в допущения |
Если правило можно понять двумя способами, спроси. «Касается POC» требует определения в тиках.
## 2. Получи данные, не трогая графики пользователя
1. `workspace_get_overview`, затем `instruments_search` для инструмента.
2. Открой отдельный график: `modules_open` с `placement: "newTab"` и `tabName: "Hypothesis test"`. Не меняй период и глубину истории на графиках пользователя.
3. Задай глубину через `module_update_context` и `timeFrame: {"minutes": 5, "daysToLoad": N}`. Если `loaded` равно false, подожди и проверь снова. На длинных периодах загрузка может занять время.
4. Читай бары через `chart_get_bars`: `format: "table"`, только нужные `fields`, `count` до 2000. Листай назад через `to`. Отбрасывай последний бар, если он ещё может формироваться.
5. Уровни сессий: добавь на тестовый график Volume Profile & TPO (найди через `indicators_search`) и читай `indicators_get_values` с `levels: 0`, до 30 профилей за вызов, листая через `to`. Не пересчитывай POC и value area из баров.
6. Условия по футпринту: `chart_get_bars` с `footprint: true`, `footprintBars` ограничен 100 барами за вызов и считается от самого нового из возвращённых, так что проверяй их только на отрезке, который реально можешь прочитать, и говори, докуда он доходит. Сначала проверь футпринт: если на большинстве баров объём по уровням почти одинаковый, он распределён равномерно, такие уровни и POC использовать нельзя. Скажи об этом и назови дни, где данные нормальные.
7. Сетап, который можно выразить побарным скриптом, можно посчитать через `scripts_preview`: он считает по последним 20000 баров и ничего не сохраняет. Нужны Script Lab и разрешение на скрипты. При отказе используй бары.
Если ATAS не отдаёт рыночные данные инструмента, скажи, что через AI Connect они доступны по криптовалютам, и остановись, пока пользователь не выберет инструмент. Бары реплея и ATAS Sim недоступны, не ищи обходных путей.
Время баров в UTC. Криптовалюты торгуются круглосуточно, поэтому сессии задаются часами суток. Смещение графика бери из `chartTimeZoneOffset` и учитывай переход на летнее время, если сессия привязана к Нью-Йорку или Лондону.
Перед расчётами запиши первый и последний бар, число сессий, пропуски и загрузился ли запрошенный период полностью. Если нет, сообщи пользователю настоящий период.
## 3. Считай честно
- **Без заглядывания вперёд.** Сигнал существует только после закрытия его бара. Уровень существует только после закрытия сессии, которая его сформировала. Вход на следующем баре или позже.
- **Стоп и цель в одном баре:** считай стоп и сообщи, скольких сделок это коснулось.
- **Издержки:** комиссия и проскальзывание на каждую сделку, на входе и на выходе. Комиссию в процентах считай от объёма сделки по цене исполнения. Фандинг учитывай, только если пользователь попросил.
- **Открытые позиции:** одна позиция за раз, если пользователь не сказал иначе. Сообщи, сколько сигналов из-за этого пропущено.
- **Контракты:** у спота и бессрочного фьючерса ролловеров нет. Если инструмент с датой экспирации, отметь ролловеры внутри периода.
- **Бары не тики.** Входы и выходы лишь приближённо показывают, что получил бы настоящий ордер.
## 4. Сравни с чем-нибудь
- **Раздели по времени до того, как посмотришь на результат:** первые 70% это выборка, последние 30% проверка вне выборки. Сообщи обе части. Если вне выборки меньше 30 сделок, скажи, что она ничего подтвердить не может.
- **База для сравнения:** те же выходы и издержки на случайных входах в те же сессии, с числом повторов, достаточным для устойчивого результата. Покажи сетап рядом с этой базой и разброс прогонов. Если результат сетапа внутри разброса, пиши, что он не отличается от случайных входов, а не лучше или хуже их.
- **Подбор параметров:** не оптимизируй без просьбы. Если попросили, сообщи, сколько вариантов перебрал, и проверь выбранный вне выборки только один раз.
## 5. Выбери вердикт
Используй ровно один:
- **Данных недостаточно:** всего меньше 30 сделок. Дай количество и никаких выводов о результате.
- **Преимущества не видно:** после издержек сетап не лучше базы или его матожидание не выше нуля.
- **Слабое подтверждение:** лучше базы в выборке, но вне выборки расходится, слишком мало сделок или основной результат дают несколько сделок.
- **Стоит проверять дальше:** лучше базы после издержек в обеих частях и не зависит от нескольких сделок.
Никогда не пиши «работает», «прибыльно» или «доказано». Самый сильный вывод: идею стоит проверять дальше.
## 6. Отчёт
Используй этот формат. Результаты давай в R и в процентах от цены входа, в деньгах только если известен объём позиции.
```
Гипотеза: <одна строка>
Правила как проверены: <все поля>
Данные: <инструмент, биржа, период, первый и последний бар, часы, источник>
Допущения и изменения: <всё, что ты решил сам, или "нет">
Выборка Вне выборки Случайные входы
Сделки
Винрейт (диапазон 95%)
Средняя прибыль / убыток (R)
Матожидание после издержек (R)
Профит-фактор
Макс. просадка (R)
Самая длинная серия убытков
Издержки на сделку: <% и R>
Винрейт безубыточности для этих выходов: <%>
Стоп и цель в одном баре: <количество>
Пропущенные сигналы: <количество>
Доля прибыли от 3 лучших сделок: <%>
По месяцам: <сделки и матожидание>
Вердикт: <один из четырёх>
Почему: <два-три предложения с числами>
Что эта проверка не может сказать: <её настоящие ограничения>
Следующая проверка: <одно конкретное предложение>
```
## 7. Убери за собой
Спроси, оставить ли тестовый график. Если нет, закрой его через `modules_close`. Примеры сделок размечай только по просьбе пользователя (`LongPosition` / `ShortPosition`) и только на тестовом графике.
Закончи одной строкой: это проверка на истории, прошлые результаты не гарантируют будущих, решение принимает трейдер.
Как запустить
Используй hypothesis-test. BTCUSDT, 5 минут, вся загруженная история, только сессия США 9:30-16:00 по Нью-Йорку. Покупаю, когда в баре есть стопка из трёх и более уровней подряд с диагональным имбалансом в покупки: объём по ask на уровне больше объёма по bid на уровне ниже в 3 раза. Бар должен закрыться в верхней трети своего диапазона. Вход на открытии следующего бара, стоп за лоу сигнального бара, цель 1R, выход в 16:00 по Нью-Йорку. Комиссия 0,05% от объёма сделки на сторону, проскальзывание 0,01% на сторону.
Агент повторит правила и спросит о том, что можно понять по-разному:
Используй hypothesis-test. BTCUSDT, 5 минут, вся загруженная история, только сессия США 9:30-16:00 по Нью-Йорку. Покупаю, когда в баре есть стопка из трёх и более уровней подряд с диагональным имбалансом в покупки: объём по ask на уровне больше объёма по bid на уровне ниже в 3 раза. Бар должен закрыться в верхней трети своего диапазона. Вход на открытии следующего бара, стоп за лоу сигнального бара, цель 1R, выход в 16:00 по Нью-Йорку. Комиссия 0,05% от объёма сделки на сторону, проскальзывание 0,01% на сторону.
ATAS доступен. До начала проверки нужно подтвердить недостающие детали - этого требует ваша инструкция hypothesis-test:
- Биржа и контракт: на открытом графике BTCUSDT Binance Futures. Использовать этот бессрочный фьючерс?
- Стоп «за лоу»: предлагаю на один минимальный тик ниже лоу сигнального бара.
- Имбаланс: предлагаю
ask ≥ 3 × bidуровнем ниже; при нулевом bid и положительном ask считать имбалансом. Уровни - соседние минимальные тики инструмента, без объединения цен. Подходит? - Сессия: 09:30-16:00 Нью-Йорка с учётом летнего времени. Проверять каждый календарный день, включая выходные, или только понедельник-пятницу? Предлагаю каждый день, без дополнительных фильтров.
- История: под «всей загруженной» понимать глубину текущего BTC-графика, которую воспроизведу на отдельном тестовом графике?
- Исполнение: предлагаю одну позицию одновременно, без фандинга; 1R - расстояние от цены входа с проскальзыванием до стопа, цель до вычета издержек. Последний допустимый вход - 15:55, выход оставшейся позиции в 16:00.
Остальные правила зафиксированы: 5 минут, только лонг, стопка ≥3 имбалансов, закрытие в верхней трети, вход на следующем открытии, комиссия 0,05% и проскальзывание 0,01% на каждую сторону.
Подтвердите предложенные значения или укажите изменения.
Это проверка на истории, прошлые результаты не гарантируют будущих, решение принимает трейдер.
После подтверждения агент считает на графике в новой вкладке «Hypothesis test», ваши графики остаются как были. Здесь он остановился ещё раз: футпринт BTCUSDT в ATAS идёт с шагом цены 10 USDT, а подтверждённое правило говорило о минимальном тике 0,1 USDT. Уточнили, что соседние уровни идут через 10 USDT, а стоп стоит на 10 USDT ниже лоу.
Что вы получите
Сначала идёт вердикт и правила в том виде, в каком они проверены. Затем таблица за первую часть периода, за вторую и для сравнения на случайных входах: сделки, винрейт, матожидание после издержек, просадка. В конце главное: почему такой вердикт, чего проверка сказать не может и что проверить дальше.
Полный ответ агента
Бери уровни с шагом футпринта на графике, 10 USDT: три соседних уровня это три цены подряд с этим шагом. Стоп ставь на 10 USDT ниже лоу сигнального бара. Остальное как подтвердил. Начинай.
Гипотеза: покупка после ≥3 соседних диагональных имбалансов 3:1 и закрытия бара в верхней трети.
Правила как проверены: BTCUSDT Binance Futures, бессрочный контракт, 5 минут; уровни через 10 USDT, ask ≥ 3 × bid уровнем ниже, положительный ask при нулевом bid учитывается. Лонг на следующем открытии; стоп на 10 USDT ниже лоу сигнального бара; цель 1R от исполнения входа. Каждый день, 09:30-16:00 Нью-Йорка с переходом на зимнее время; последний вход 15:55, принудительный выход в 16:00. Одна позиция одновременно. Комиссия 0,05%, проскальзывание 0,01% на каждую сторону; без фандинга.
Данные: только ATAS, Binance Only Market Data. 18 113 закрытых баров, 04.09.2026 00:00-05.11.2026 21:20 UTC; 63 сессии, пропусков нет. Подтверждённая глубина загружена полностью. Футпринт прочитан по всему периоду порциями до 100 баров.
Допущения и изменения: шаг уровней и отступ стопа изменены по вашему указанию. Формирующийся бар исключён. До расчёта установлена граница 70/30: 18.10.2026 00:35 UTC. Верхняя треть включает её нижнюю границу; бар нулевого диапазона не считается сигналом. Гэп через стоп исполняется по открытию с проскальзыванием. Случайная база - 2000 прогонов с тем же числом попыток входа по каждому дню, стопом за предыдущим баром и теми же выходами; попытки с входом ниже стопа пропускаются. Число исполненных сделок поэтому различается.
| Показатель | Выборка | Вне выборки | Случайные входы¹ |
|---|---|---|---|
| Сделки | 239 | 109 | 306 / 155 |
| Винрейт, 95% интервал | 42,3% [36,2-48,6] | 40,4% [31,6-49,8] | 16,7% / 17,2% |
| Средняя прибыль / убыток, R | +0,51 / −1,34 | +0,53 / −1,45 | +0,40 / −2,49; +0,42 / −2,53 |
| Матожидание после издержек, R | −0,557 | −0,651 | −2,013 / −2,022 |
| Матожидание, % цены входа | −0,1134% | −0,1139% | −0,1257% / −0,1284% |
| Профит-фактор² | 0,279 | 0,246 | 0,032 / 0,034 |
| Макс. просадка, R | 133,67 | 70,94 | 615,64 / 312,42 |
| Самая длинная серия убытков | 11 | 8 | 26 / 19 |
¹ Медианы прогонов: выборка / вне выборки. Центральные 95% прогонов по матожиданию: [−2,200; −1,838] R / [−2,282; −1,782] R. Средние результаты двух половин по 1000 прогонов различались менее чем на 0,004R.
² По суммам результатов в R.
Средняя прибыль / убыток в процентах входа: выборка +0,1823% / −0,3298%, вне выборки +0,1996% / −0,3261%.
Издержки на сделку: в среднем 0,1200%, или 0,597R; по частям 0,591R / 0,611R.
Винрейт безубыточности по наблюдаемым средним выигрышам и потерям: 72,7%.
Стоп и цель в одном баре: 0.
Пропущенные сигналы из-за позиции: 180 из 528.
Доля прибыли от трёх лучших сделок: 3,57% суммы положительных результатов; общий итог отрицательный, доля от чистой прибыли неприменима.
| Месяц | Сделки | Матожидание, R | % входа |
|---|---|---|---|
| Сентябрь | 147 | −0,484 | −0,1070% |
| Октябрь | 170 | −0,659 | −0,1177% |
| Ноябрь, по 5-е | 31 | −0,675 | −0,1220% |
Вердикт: Преимущества не видно.
Сетап выше случайной базы по R, однако после издержек матожидание отрицательное в обеих частях: −0,557R и −0,651R. Вне выборки 109 сделок; её результат также отрицательный.
Что эта проверка не может сказать: баровые исполнения не воспроизводят очередь лимитных ордеров, реальные спреды и движение внутри бара; фандинг исключён. Просадка выражена в суммах R, без модели размера позиции.
Следующая проверка: повторить неизменённые правила на новом, ранее не использованном периоде.
Оставить тестовый график Hypothesis test 2 или закрыть?
Это проверка на истории, прошлые результаты не гарантируют будущих, решение принимает трейдер.
Вердиктов четыре: данных недостаточно, преимущества не видно, слабое подтверждение, стоит проверять дальше. Самый сильный из них последний: дальше него проверка на истории не идёт. Идея из примера получила «преимущества не видно»: она лучше случайных входов, но после издержек матожидание отрицательное в обеих частях периода. Комиссия и проскальзывание в процентах съели в среднем 0,6 R на сделку.
Что можно задать
| Поле | Что указать | Если не указать |
|---|---|---|
| Инструмент, период, сетап, стоп, цель | Ваши правила | Агент спросит |
| Вход | Когда вы заходите | Открытие следующего бара |
| Выход по времени | Когда сделка должна закончиться | Конец сессии |
| Фильтр сессии | Например, только Нью-Йорк | Без фильтра |
| История | Насколько далеко назад | Всё, что загрузит график |
| Издержки | Ваши комиссия и проскальзывание | Ваша комиссия из ATAS и 1 тик на сторону |
| Фандинг | Учитывать ли его для бессрочного фьючерса | Не учитывается |
Условие можно описать и по футпринту, как в примере: стопка имбалансов, дельта на уровне, где закрылся бар.
Что нужно
- Подключение к криптобирже с футпринтом, если условие по футпринту
- Агент, который умеет запускать код
Это проверка на истории. Прошлые результаты не гарантируют будущих, торговое решение принимаете вы.