> For the complete documentation index, see [llms.txt](https://xbots.gitbook.io/x-bots.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://xbots.gitbook.io/x-bots.io/torgovlya/reverse-backtester-rukovodstvo.md).

# Reverse Backtester — руководство

> Новый адрес инструмента будет опубликован после завершения переименования.

***

> **Reverse Backtester** — бесплатный онлайн‑инструмент для подбора параметров стратегии **Reverse**.\
> При срабатывании **SL** позиция **переворачивается** (лонг ⇄ шорт), а объём **увеличивается по множителю**.\
> Рост объёма ограничивается глубиной серии **K** (из неё получается максимальный рабочий объём **MaxVol**).

***

### Содержание

* [Что делает бэктестер](#chto-delaet-bektester)
* [Быстрый старт](#bystryi-start)
* [Интерфейс и настройки](#interfeis-i-nastroiki)
  * [1) Пресеты](#id-1-presety)
  * [2) Кэш и риск‑алерты](#id-2-kesh-i-risk-alerty)
  * [3) Комиссии](#id-3-komissii)
  * [4) Фандинг](#id-4-fanding)
  * [5) Диапазоны параметров](#id-5-diapazony-parametrov)
  * [6) Старт, план и прогресс](#id-6-start-plan-i-progress)
  * [7) Результаты, метрики, детали](#id-7-rezultaty-metriki-detali)
  * [8) Экспорт в Derivate.ru](#id-8-eksport-v-x-bots)
* [Рекомендации по практике](#rekomendacii-po-praktike)
* ### [<sub>Количество потоков (воркеров)</sub>](#kolichestvo-potokov-vorkerov-1)
* [Ограничения и допущения](#ogranicheniya-i-dopusheniya)
* [FAQ](#faq)
* [Словарь метрик](#slovar-metrik)
* [История версий](#istoriya-versii)
* [Дорожная карта](#dorozhnaya-karta)

***

### Что делает бэктестер

1. Загружает **минутные свечи** по выбранным парам:
   * по **количеству свечей**,
   * по **готовому периоду** (1–24 мес),
   * либо по **диапазону дат** через календарь.
2. Перебирает **диапазоны параметров** (min/max/step) и симулирует сделки по логике Reverse.
3. Считает **PnL**, **ROI**, **DD**, глубины серий, **win‑rate**, статистики по PnL.
4. Учитывает **комиссии** (maker/taker) и **фандинг** (два режима).
5. Показывает **TOP‑10** по выбранному критерию, **детали сделок**, **графики**.
6. Копирует готовую **конфигурацию JSON** для запуска в **Derivate.ru**.
7. Хранит свечи в **локальном кэше** (ускоряет повторные прогоны).

***

### Быстрый старт

1. **Пары → Выбрать пары…**\
   Отметьте `BTCUSDT` (рекомендуется начинать с одной пары).
2. **Способ загрузки**:
   * «**По количеству свечей**» → `20000`,\
     или «**Период**» → `2 года`,\
     или «**Диапазон дат**» → выберите даты в календаре.
3. **Старт‑направление** → `Лонг`.
4. **Критерий сортировки** → `Доходность (Profit)` (или выберите свой).
5. Проверьте **диапазоны Base/Mult/TP/SL/K** (можно оставить предустановки).
6. Нажмите **Старт**. Дождитесь конца: полоса прогресса станет «шашечной», затем появится «Готово».
7. В таблице откройте **Детали** понравившегося сета. Посмотрите графики/метрики и сделки.
8. Нажмите **Копировать конфигурацию** — вставьте JSON в импорт **Derivate.ru**.

***

### Интерфейс и настройки

#### 1) Пресеты

Верхний блок, компактная «панель запуска».

**1.1. Локальные пресеты**

* **Выбор пресета** — список сохранённых локально.
* **Сохранить текущий** — записывает все параметры формы.
* **Удалить** — удаляет выделенный пресет.
* **Скопировать ссылку‑пресет** — создаёт URL с закодированной конфигурацией.\
  Получатель открывает ссылку — форма подставляется автоматически.

> Пресеты хранятся в браузере. Ссылку можно отправлять коллегам.

**1.2. Выбор пар**

* **Фьючерсные пары Bybit (USDT)** → **Выбрать пары…**\
  Откроется модальное окно с:
  * строкой **поиска**,
  * кнопками **Все / Снять**,
  * списком пар с чекбоксами.
* Рекомендуется выбирать **одну** пару.\
  Если выбрано **несколько**, расчёт идёт **по очереди**, результаты всех пар попадают в одну таблицу. В строках есть колонка **«Пара»**.

**1.3. История (какой объём свечей брать)**

* **Способ загрузки**:
  * **По количеству свечей** — укажите число в поле **«Свечей (1m)»**.\
    Рекомендуем **10–30 тыс.** для быстрых прогонов. Больше — дольше.
  * **Период** — готовый список: `1, 2, 3, 6, 9 месяцев`, `1 год`, `1.5 года`, `2 года`, `Другое (дней)…`.\
    Выберите нужное — система сама вычислит даты «с» и «по».
  * **Диапазон дат** — укажите даты **с** и **по** через календарь.\
    Если указана только дата «по», начало берётся по выбранному периоду.

В статусе после загрузки отображается фактический **диапазон дат** и **количество полученных свечей**.

**1.4. Старт‑направление**

* **Лонг** — первая сделка открывается в лонг.
* **Шорт** — первая сделка открывается в шорт.

Правила переключения:

* после **TP** направление **сбрасывается к стартовому**;
* после **SL** — направление **переворачивается**.

**1.5. Критерий сортировки**

Определяет порядок строк TOP‑10 и общей таблицы.

Готовые варианты:

* **Доходность (Profit)** — максимальный суммарный PnL.
* **ROI %** — максимальный ROI.
* **Recovery‑Factor** — максимальный `Profit / |DD $|`.
* **Минимальная DD %** — приоритет у наименьшей относительной просадки; при равенстве — больше ROI.
* **Win‑rate %** — максимальная доля прибыльных сделок.
* **Avg depth** — минимальная средняя глубина серий.
* **Max depth** — минимальная максимальная глубина серий.
* **DD $** — минимальная абсолютная просадка.
* **Пользовательский (строка)** — задаёте порядок и направление сравнения самостоятельно.

**Синтаксис кастомного критерия**

Строка вида:ddPct, roi, -avgDepth, +profit

* Список полей через запятую.
* **`+`** — **максимизировать**, **`-`** — **минимизировать**.
* Без знака допустимо, но лучше явно указывать направление.

Поддерживаемые поля (основные):\
`profit, roi, ddAbs, ddPct, recFactor, winrate, dealsTotal, dealsTP, dealsSL, cyclesTotal, cyclesTP, cyclesFail, avgDepth, maxDepth, fAvgDepth, fMaxDepth, kUsed, fundTotal`

Примеры:

* **Минимизировать просадку, потом максимизировать ROI, затем Profit**

-ddPct, +roi, +profit

* **Максимизировать Recovery‑Factor, при равенстве минимизировать Max depth**

+recFactor, -maxDepth

***

#### 2) Кэш и риск‑алерты

* **Игнорировать кэш** — всегда загружать данные заново.
* **Очистить кэш пары** — удалить сохранённые свечи для отмеченных пар.
* **Кэш: используется / игнорируется** — индикатор состояния.
* **Порог DD %** — если `DD %` результата **выше**, строка подсвечивается как рискованная.
* **Мин. TP cycles** — если число удачных серий **меньше** порога, строка тоже подсвечивается.
* **Алерты: включены** — напоминание о подсветке риска в таблице.

> **TTL кэша**: \~30 минут. По истечении — свечи будут запрошены снова.

**Правила подсветки риска**

Строка подчёркивается, если:

* `DD % > порога`, **или**
* `TP cycles < минимума`, **или**
* `F‑Max depth ≥ K-1` **и** `Fail (SL) > 0`.

***

#### 3) Комиссии

**Учитывать комиссии** — *Включено / Выключено*.\
При выключении комиссии в расчёт не включаются.

**Профиль**:

* **Bybit деривативы** — maker **0.02 %**, taker **0.055 %** (подставляются автоматически).
* **Кастом** — ручной ввод:
* **Maker, %**
* **Taker, %**

**Режим исполнения**:

* **Обе стороны — taker**
* **Обе стороны — maker**
* **Вход maker, выход taker** *(по умолчанию)*

**Включать комиссии в TP/SL**:

* **Нет — только в PnL**\
  TP/SL считаются «по чистым уровням», комиссия списывается отдельно.
* **Да — корректировать цели**\
  Уровни TP/SL **смещаются**, чтобы «после комиссий» результат соответствовал введённым %.

***

#### 4) Фандинг

**Режим фандинга**:

* **Выключено** — фандинг игнорируется.
* **Дискретный (только в момент события)**\
  Если позиция открыта **на момент события**, списывается/начисляется **полная ставка** за событие.
* **Средняя ставка × число событий**\
  Берётся **средняя ставка** за весь период истории и умножается на число событий, попавших внутрь интервала сделки. Быстро и сглаженно.

**Использовать mark‑price ставки** — включить, чтобы опираться на ставки, рассчитанные по **mark‑price**.

**Ставок загружено** — количество событий в выбранном интервале.

**Средняя ставка, % / событие** — средняя ставка за событие (в процентах).

**Знак начисления**

* При **положительной** ставке **лонги платят**, **шорты получают**.
* При **отрицательной** — наоборот.

***

#### 5) Диапазоны параметров

Каждый параметр задаётся **min / max / step**. Все комбинации перебираются.

* **Base — базовый объём (USDT)**\
  Стартовый объём в серии.
* **Mult — множитель**\
  Во сколько раз увеличивать объём после **каждого SL**.\
  Объём ограничивается сверху — см. **K** и **MaxVol**.
* **TP %** — тейк‑профит, в процентах.
* **SL %** — стоп‑лосс, в процентах.
* **K — количество переворотов**\
  Максимальная длина серии. На каждом SL: `dir *= -1`, `vol = min(MaxVol, vol * Mult)`.\
  При достижении предела — серия помечается как **Fail (SL)**.
* **Воркеров (параллельность)**\
  Сколько потоков использовать. Выбирайте 4–8 на средних ПК.\
  Больше потоков — быстрее, но выше нагрузка на ЦП.

**MaxVol (расчётный)**

* при `K = 1`: `MaxVol = Base`;
* иначе приблизительно: `MaxVol ≈ Base × Mult^(K-1)` (берётся фактическое достигнутое значение в симуляции).

***

#### 6) Старт, план и прогресс

* **Старт** — запуск загрузки свечей (или кэша) и перебора сетов.
* **Всего комбинаций** — «план» — точное число проверяемых комбинаций.
* **Прогресс** — линия с процентом.\
  На финальной сортировке отображается «шашечный» узор — это нормально.
* **Статус** — текущая стадия: «Загрузка свечей…», «Перебор…», «Готово…».
* **Диапазон** — временной интервал истории и фактическое число свечей.

При выборе **нескольких пар** в статусе видно, какая пара сейчас обрабатывается; результаты всех пар сводятся в одну таблицу.

***

#### 7) Результаты, метрики, детали

**7.1. Таблица TOP‑10**

Показывает десять лучших строк по выбранному критерию. Колонки:

* **#** — место в рейтинге.
* **Пара** — символ инструмента.
* **Base (USDT)**, **Mult**, **TP**, **SL**, **K**.
* **K\_used** — максимальная достигнутая глубина в серии.
* **Deals / TP / SL** — количество сделок, TP и SL.
* **WR %** — win‑rate.
* **Fail (SL)** — число серий, где дошли до предела и завершились SL.
* **MaxVol (USDT)** — максимальный рабочий объём.
* **ROI %** — `Profit / MaxVol × 100`.
* **Профит** — суммарный PnL.
* **DD $** — абсолютная просадка (минимум накопленного PnL).
* **DD %** — `|DD $| / MaxVol × 100`.
* **Детали** — переход к подробному отчёту.
* **Конфигурация** — копирование JSON для Derivate.ru.

**Подсветка риска** — см. правила в разделе «Кэш и риск‑алерты».

**7.2. Детали результата**

**Карточки метрик**:

* **Profit**, **ROI %**, **DD $**, **DD %**, **Recovery‑Factor**.
* **MaxVol**, **K\_used**.
* **Сделки**, **TP сделок**, **SL сделок**, **Win‑rate %**.
* **Фандинг, USDT**.
* **Cycles (всего)**, **TP cycles**, **F‑серии (Fail = SL)**, **Незавершённые серии (Tail)**.
* **Avg depth**, **Max depth**, **F‑Avg depth**, **F‑Max depth**.
* **Средний / Медианный PnL**, **StdDev PnL**.
* **Макс. подряд TP / SL**.
* **P95 drawdown** — 95‑й перцентиль просадки.

**Графики**:

* **Equity‑кривая** — накопленный PnL по сделкам.
* **Месячный PnL** — столбцы по месяцам.
* **Гистограмма PnL** — распределение по сделкам.

**Месячная сводка** — таблица `месяц → суммарный PnL`.

**Сделки** — карточки:

* тип (**TP/SL**), время;
* **dir** (long/short);
* **entry / exit**;
* **vol (USDT)**, **qty**;
* **fees**, **funding**;
* **pnl**.\
  Есть пагинация (≈40 сделок на страницу).

***

#### 8) Экспорт в Derivate.ru

Кнопка **«Копировать конфигурацию»** формирует JSON:

* **positionSide** = выбранное **старт‑направление**.
* **takeProfit.value** = `TP / 100`.
* **stopLoss.value** = `SL / 100`.
* **stopLoss.budgetMultiplier** = `Mult`.
* **safety.baseOrderAmount** = `Base`.
* **safety.baseOrderMaxAmount** = округлённый `MaxVol`.
* В имени автоматически вставляются **пара** и **дата/время**.

Скопируйте JSON → вставьте в импорт **Derivate.ru** → при необходимости поправьте → сохраните и запустите.

### Рекомендации по практике

1. **Стартуйте узко.** С маленькими диапазонами и крупными шагами. Нашли область интереса — **сузьте** вокруг неё и уменьшите шаги.
2. **Следите за MaxVol.** Это ваш «потолок» риска. Высокий MaxVol увеличивает Profit, но и **DD** тоже растёт. Сверяйте с реальным бюджетом.
3. **Смотрите на связку метрик.** Profit/ROI сам по себе мало что говорит. Сравнивайте с **DD %**, **Recovery‑Factor**, **depth**, **Fail (SL)**.
4. **Проверяйте устойчивость.** Прогоняйте на **других периодах** (другая волатильность, тренды/флэты). Хорошие сеты остаются «в строю».
5. **Издержки включайте на верификации.** На прикидке можно отключить комиссии/фандинг; перед внедрением — **включите** и убедитесь, что картина не «ломается».
6. **Не гонитесь за экстремальными глубинами K.** Большой K тянет за собой экспоненциальный рост MaxVol и рисков. Лучше найти компромисс.
7. **Несколько пар** гоняйте **последовательно** и сравнивайте итоги построчно, пока не нужен «портфельный отчёт».

***

### ⚙️ Количество потоков (воркеров)

Reverse Backtester позволяет управлять числом потоков, с помощью которых будет происходить перебор конфигураций.

#### Что это такое

Потоки (или воркеры) — это параллельные задачи, которые позволяют **ускорить расчёт**. Чем больше потоков — тем быстрее обработка параметров.

#### Как выбрать

🔢 В поле **"Потоков"** вы можете задать, сколько параллельных задач запустить:

* На большинстве ноутбуков и ПК 4–8 потоков работают стабильно.
* Если не уверены — укажите **4** как универсальное безопасное значение.
* Если знаете, сколько ядер у вашего процессора — можно указать это число (например, 8).

#### Рекомендации

* **Больше потоков — быстрее расчёт**, но и выше нагрузка на устройство.
* **Если браузер начал тормозить** — уменьшите количество потоков и попробуйте снова.
* На **мобильных устройствах** или слабых ноутбуках используйте 2–4 потока.
* Не запускайте несколько вкладок с тестером одновременно — это снижает эффективность.

💡 Если оставить поле пустым или указать некорректное значение — система может не начать перебор. Убедитесь, что указано положительное целое число (1, 2, 4, 8...).

### Ограничения и допущения

* Тайм‑фрейм — **1m**.
* Данные — **Bybit Linear, USDT**.
* Исполнение — **без проскальзывания/спреда** (используются уровни из свечи).
* Кэш хранится локально и живёт **около 30 минут**.
* При выборе нескольких пар расчёт идёт **по очереди**, сводного портфельного отчёта пока нет.

***

### FAQ

**Свечи не загружаются.**\
Проверьте тикер. Если он верный — подождите 30–60 секунд и повторите. Публичный API может временно ограничивать частоту запросов. При необходимости включите «Игнорировать кэш».

**Можно выбрать другой тайм‑фрейм?**\
Нет. 1‑минутный ТФ оставляет максимально точную логику для реверса и выбора TP/SL.

**Почему строка в таблице подсвечена?**\
Сработало правило риска: `DD %` выше порога, или `TP cycles` ниже минимума, или был **Fail** на пределе глубины (`F‑Max depth ≥ K-1` и `Fail > 0`).

**Что означает Fail (SL)?**\
Серия дошла до предельной глубины, увеличить объём дальше нельзя — и серия завершилась **SL**.

**Зачем режим фандинга «Средняя ставка × число событий»?**\
Быстрый и сглаженный способ оценить влияние. Если результат устраивает — перепроверьте «Дискретным» режимом.

**Как ускорить работу?**\
Снизить период/число свечей, сузить диапазоны, уменьшить число параметров, подобрать разумное число **воркеров** (обычно 4–8), использовать кэш.

***

### Словарь метрик

* **Profit** — суммарный PnL (USDT).
* **ROI %** — `Profit / MaxVol × 100`.
* **DD $** — минимальное значение накопленного PnL (по модулю — глубина просадки в деньгах).
* **DD %** — `|DD $| / MaxVol × 100`.
* **Recovery‑Factor** — `Profit / |DD $|`.
* **Deals / TP / SL** — сделки всего / успешные / убыточные.
* **WR % (Win‑rate)** — `TP / Deals × 100`.
* **Cycles** — количество серий (вход → TP/SL).
* **TP cycles** — число серий, закрывшихся TP.
* **Fail (SL)** — число серий, дошедших до предельной глубины и завершившихся SL.
* **Tail** — незавершённые на конце истории серии.
* **Avg depth** — средняя глубина серий.
* **Max depth** — максимальная глубина.
* **F‑Avg / F‑Max depth** — средняя/максимальная глубина среди неудачных серий (Fail).
* **K\_used** — фактически достигнутая максимальная глубина.
* **MaxVol** — максимальный рабочий объём в серии.
* **fundTotal** — суммарный фандинг (USDT).
* **mean/median/std** — средний/медианный/стандартное отклонение PnL по сделкам.
* **maxTPS / maxSLS** — максимальные серии подряд по TP/SL.
* **P95 drawdown** — 95‑й перцентиль просадки по equity.

***

### История версий

#### 1.7

* Комиссии (maker/taker), режимы исполнения, опция «включать в TP/SL».
* Фандинг: **«Дискретный»** и **«Средняя ставка × число событий»**, mark‑price.
* Расширенные метрики: win‑rate, средние/медианные/стандартное отклонение PnL, max подряд TP/SL, P95 DD, Recovery‑Factor, глубины серий.
* Графики: **Equity**, **месячный PnL**, **гистограмма PnL**.
* **Кэш свечей** с сжатием, ускорение повторных прогонов.
* **Пресеты**, **ссылки‑пресеты**.
* **Риск‑алерты** с подсветкой.
* **Периоды / Диапазон дат** и **модальный выбор пар**.
* **Параллельные воркеры**.

#### 1.6

* Фиксированный TF 1m.
* Улучшенная сортировка по DD %.
* Месячные сводки, пагинация.
* Кнопка «Копировать конфигурацию».
* Предустановленные значения для быстрого старта.

***

### Дорожная карта

Ниже — направления, **которые ещё не реализованы** (всё добавленное в 1.7 из прежнего плана уже выполнено).

#### Ближайшие релизы

* **Портфельные отчёты**
  * Сводные метрики по набору пар: суммарный Profit, агрегированные DD %, сводные графики, корреляции месячных PnL.
* **Walk‑Forward / Out‑of‑Sample**
  * Деление истории на окна «обучение/тест», отчёт устойчивости по окнам.
* **Теплокарты параметров**
  * 2D‑heatmap (например, TP × SL или Base × Mult) с метрикой по цвету.
* **Отчёты**
  * Генерация HTML/PDF с ключевыми графиками и таблицами.
* **Публичный шаринг**
  * Публичная ссылка на отчёт (по желанию, с анонимизацией имени).

#### Ускорение и точность

* **WASM‑ядро**
  * Переписать симулятор на Rust/AssemblyScript → ускорение ×3–×5.
* **Проскальзывание/спред**
  * Модели: фиксированный спред (bps), волатильностная, «только вход», «вход+выход».
* **Ценовая база**
  * Выбор логики исполнения по Last/Mark/Mid, привязка фандинга к mark‑price.
* **Профили бирж**
  * Предустановки комиссий/фандинга/лотов для разных бирж.

#### Автоматизация

* **Headless/CLI**
  * Серверный режим, REST‑API, CLI для пакетных задач.
* **Прямой импорт в Derivate.ru**
  * Кнопка «Создать бота» с отправкой через API (по подтверждению пользователя).

#### R\&D

* **Монте‑Карло‑стрессы**
  * Перемешивание последовательностей, бутстрэп‑оценка устойчивости.
* **Границы безопасности**
  * Автостоп перебора при достижении порогов (макс. подряд SL, DD %, время в просадке).
* **Композитные критерии**
  * Взвешенные рейтинги, например:\
    `Score = ROI% – k × DD% – m × DurationP95`.
* **Портфельный оптимизатор**
  * Подбор наборов сетов с целевой метрикой и ограничениями на суммарную просадку.
* **Капитал‑менеджмент**
  * Сценарии распределения капитала между ботами/сетами.

Обратная связь

Если есть идеи или вопросы, обратитесь в поддержку. Контакты будут опубликованы после завершения переименования.
