// методика

Как Janorium считает бэктест

Janorium прогоняет стратегию по свечам Binance — спот или бессрочные фьючерсы USDT-M — с 2020 года: условия проверяются на каждой закрытой свече, ордер по умолчанию исполняется по цене закрытия этой свечи, стопы сверяются с её максимумом и минимумом, а комиссии, проскальзывание, фандинг и ликвидация начисляются так, как описано ниже. Здесь перечислены все допущения, в том числе то, чего движок не моделирует, — прочтите, прежде чем доверять результату или ссылаться на него.

6 минут чтения

Рыночные данные

  • Биржа и рынки. Только Binance: спот и бессрочные фьючерсы USDT-M. Фьючерсов с маржой в монете и других бирж нет.
  • Период. Бэктест начинается не раньше 2020-01-01. Для прогрева индикаторов может браться и более ранняя история, если она есть у Binance.
  • Таймфреймы. Бэктест идёт на свечах 1m, 5m, 15m, 1h, 4h или 1d; условие может читать ещё недельные и месячные значения. Какие таймфреймы есть у монеты, зависит от загруженных данных — это видно на страницах графиков.
  • Фандинг. Настоящие ставки фандинга Binance, одна запись на каждое начисление.
  • Монеты, снятые с торгов. Бессрочные фьючерсы, которые Binance потом снял с торгов, остаются доступны на свечах 1h и 4h до даты делистинга — так тест на многих монетах может обойти ошибку выжившего.
  • Пропуски и дубли. Пропущенные свечи не придумываются: движок переходит к следующей сохранённой свече. Если свеча сохранена дважды, берётся более новая копия.

Когда исполняется ордер

Условия проверяются один раз на свечу, после её закрытия. Сигнал на свече исполняется по цене её закрытия, сдвинутой против вас на проскальзывание. Стратегию можно переключить на открытие следующей свечи: тогда ордер исполняется по открытию следующей свечи, а условие входа проверяется ещё раз уже на ней.

Стратегия может выставить и отложенный лимитный или стоп-вход на расстоянии от опорной цены, действующий заданное число свечей. Лимитная покупка исполняется, когда цена торгуется ниже уровня, — по уровню или по открытию, если свеча открылась ниже, — с комиссией мейкера и без проскальзывания. Стоп-покупка исполняется, когда цена доходит до уровня, — по уровню или по открытию за ним, с комиссией тейкера и проскальзыванием. Продажи — зеркально.

Стоп-лосс и тейк-профит внутри свечи

  • Уровни сверяются с максимумом и минимумом каждой свечи, а не только с закрытием.
  • При ничьей побеждает стоп. Если одна свеча задела и стоп-лосс, и тейк-профит, движок считает, что первым сработал стоп. Отчёт показывает, сколько сделок это затронуло и каким был бы результат, если бы первым был тейк-профит, — видно, насколько выбор важен. Стратегия может попросить свечи 1m или 5m, чтобы разобрать именно такие свечи точно.
  • Гэп исполняется по открытию. Если свеча открылась за стопом, выход — по открытию, а не по цене стопа.
  • Трейлинг-стоп идёт за максимальным закрытием (минимальным для шорта) на кратное ATR расстояние, только подтягивается, а уровень, рассчитанный на одной свече, впервые проверяется на следующей.

Комиссии и проскальзывание

  • Комиссия — процент от стоимости сделки, берётся при входе и при выходе. Одна ставка означает комиссию тейкера на каждом исполнении; можно задать отдельно ставки мейкера и тейкера, и ставка мейкера действует только на исполненные лимитные входы. На споте комиссия платится в валюте котировки.
  • Проскальзывание сдвигает каждое исполнение против вас, на входе и на выходе: фиксированный процент, доля ATR или влияние, растущее с размером ордера относительно объёма свечи. Необязательный предел пропускает или урезает ордера, которые заняли бы слишком большую долю объёма.
  • По умолчанию. У новой стратегии в редакторе комиссия 0,1% и проскальзывание 0,05% на сторону. Конфиг, отправленный через API без них, считается вовсе без издержек. Реалистичные значения — в пошаговом руководстве.

Фьючерсы: плечо, фандинг, ликвидация

  • Плечо и маржа. Целое плечо от 1× до 125×, изолированная или кросс-маржа. Маржа — стоимость позиции, делённая на плечо. Кросс-маржа упрощена до счёта одной монеты.
  • Фандинг начисляется в каждый записанный момент расчёта, пока позиция открыта: количество × mark price × ставка. Лонг платит при положительной ставке и получает при отрицательной. На изолированной марже уплаченный фандинг сдвигает цену ликвидации.
  • Цена ликвидации = вход × (1 − 1/плечо + 0,4%) для лонга и вход × (1 + 1/плечо − 0,4%) для шорта — поддерживающая маржа фиксирована на 0,4%. Она проверяется внутри свечи по максимуму и минимуму последних сделок, раньше стопов, — если только стоп между открытием и ценой ликвидации не закрыл позицию первым. Ликвидация исполняется по цене ликвидации с комиссией тейкера и проскальзыванием.

Размер позиции, капитал и прогрев

  • Размер — процент от свободного капитала, фиксированная сумма, процент риска до стопа или целевая волатильность. Количество не округляется до шага лота биржи. Вход, который не помещается в свободный капитал, пропускается и никогда не исполняется частично.
  • Несколько входов — слои, пирамидинг и усреднение (DCA) со страховочными ордерами — поддерживаются.
  • Капитал. Форма нового бэктеста начинает с 10 000 USDT.
  • Прогрев. Индикаторы считаются и на свечах до даты начала (до 50 000 штук), поэтому первая сделка не ждёт, пока наберётся 200-периодная средняя. Статистика, кривая капитала и buy & hold начинаются с даты начала.

Как считаются метрики

Общая доходность
КакИтоговый капитал ÷ начальный − 1
CAGR
Как(итоговый ÷ начальный)^(365 ÷ дни) − 1, от первой до последней свечи бэктеста
Макс. просадка
КакНаибольшее падение от предыдущего пика капитала, переоценённого по закрытию каждой свечи (не внутри свечи)
Шарп, Сортино
КакДневные доходности по последнему значению капитала за каждые сутки UTC, безрисковая ставка 0, годовые через √365
Доля прибыльных (win rate)
КакДоля строк сделок с положительным чистым результатом; каждый частичный выход — отдельная строка; комиссии и фандинг учтены
Профит-фактор
КакСумма прибыльных сделок ÷ сумма убыточных
Buy & hold
КакОт закрытия первой свечи до закрытия последней, без комиссий и фандинга

Что значат цифры и какие значения хорошие: метрики бэктеста.

Без заглядывания в будущее

  • Значение старшего таймфрейма (дневная средняя в стратегии на 1h) берётся только с последней закрытой старшей свечи.
  • Условие по другой монете читает только свечи, закрывшиеся не позже текущей.
  • Условия по фандингу читают последнюю начисленную ставку, а не прогноз следующей; доля тейкеров сдвинута на один период, чтобы свеча никогда не видела собственного будущего.

Чего движок не моделирует

  • Глубину стакана и влияние на рынок — кроме необязательного проскальзывания от объёма.
  • Спред между покупкой и продажей как отдельную издержку, частичные исполнения и задержки.
  • Правила биржи: шаг лота, шаг цены и минимальную сумму ордера.
  • Ликвидацию по mark price, ступенчатую поддерживающую маржу, ликвидационную комиссию биржи, автоделевередж и страховой фонд — настоящая ликвидация может наступить раньше и стоить дороже.
  • Шорт на споте, фьючерсы с маржой в монете и общий маржинальный счёт на несколько монет.
  • Сбои биржи: пропущенных свечей просто нет.

Вопросы

Janorium исполняет ордер по закрытию или по открытию следующей свечи?

По закрытию свечи, давшей сигнал, плюс проскальзывание — если стратегия не выбрала «открытие следующей свечи»: тогда ордер исполняется по открытию следующей свечи.

Что срабатывает первым, если одна свеча задела и стоп-лосс, и тейк-профит?

Стоп-лосс — осторожное допущение. Отчёт показывает, сколько сделок это затронуло и каким был бы результат, если бы первым был тейк-профит.

Учитывается ли фандинг в бэктестах фьючерсов?

Да. Каждое настоящее начисление фандинга Binance, пока позиция открыта, списывается или зачисляется: количество × mark price × ставка.

Есть ли в бэктестах Janorium ошибка выжившего?

Бессрочные фьючерсы, снятые с торгов, остаются доступны на свечах 1h и 4h до делистинга, поэтому тест на многих монетах может включать и те, что потом исчезли. Снятые со спота монеты не сохраняются.

Как считается максимальная просадка?

По капиталу, переоценённому на закрытии каждой свечи, за вычетом комиссий: наибольшее падение от предыдущего пика. Движения внутри свечи не учитываются.

Проверьте свою идею

Создайте бесплатный аккаунт, начните с шаблона или своих правил и прочитайте первый отчёт.

Другие руководства