Перейти к основному содержимому

Лаборатория целостности бэктеста

Розничные платформы показывают коэффициент Шарпа или чистую прибыль бэктеста и на этом останавливаются. Институты никогда не доверяют сырому бэктесту — они спрашивают, выживает ли результат поправке на смещение селекции и количество опробованных конфигураций. Лаборатория целостности бэктеста привносит эту проверку в cMind. Это детерминированная математика (без AI, без внешних вызовов), поэтому вердикт воспроизводим и каждое число объяснимо.

Откройте её в cBots → Integrity (/quant/integrity).

Что она вычисляет​

Имея ряд доходности (или кривую капитала/баланса) и количество наборов параметров, которые вы опробовали для получения результата, анализатор сообщает:

  • Коэффициент Шарпа — за период и ежегодный (квадратный корень из времени).
  • Вероятностный коэффициент Шарпа (PSR) — уверенность в том, что истинный коэффициент Шарпа превосходит эталон, учитывая длину трека, асимметрию и эксцесс (Bailey & López de Prado, 2012). Короткий или жирнохвостый рекорд его снижает.
  • Дефлированный коэффициент Шарпа (DSR) — PSR, измеренный в сравнении с дефлированным эталоном: коэффициент Шарпа, который вы ожидали бы от лучшего из N случайных испытаний при нулевой гипотезе (теорема о ложной стратегии). Чем больше конфигураций вы опробовали, тем выше планка — это то, что ловит переобучение.
  • t-статистика среднего дохода. Согласно Harvey, Liu & Zhu, подлинный край должен преодолеть t ≥ 3.0, а не учебник 2.0.
  • Асимметрия / эксцесс доходностей, которые питают коррекции PSR/DSR.

Вердикт​

ВердиктЗначениеПравило
НадежныйКрай выживает при опробованных вами испытаниях.DSR ≥ 95% и PSR ≥ 95% и |t| ≥ 3.0
ХрупкийСтатистически живой, но не убедительно — не наращивайте размер только на этом основании.между двумя
ПереобученСкорее всего артефакт смещения селекции, а не настоящий край.DSR < 90%

Каждый результат содержит простое объяснение на английском языке, поэтому "почему" никогда не скрывается.

Вероятность переобучения бэктеста (по испытаниям)​

Подача количества испытаний хорошо; подача фактического рядя вне выборки каждой конфигурации, которую вы опробовали лучше. Вставьте их в необязательную сетку испытаний (одна серия на строку) и cMind запускает комбинаторно-симметричную кросс-валидацию (Bailey, Borwein, López de Prado & Zhu, 2015): он разделяет наблюдения на группы и для каждого способа выбора половины как внутри выборки выбирает лучшую конфигурацию внутри выборки и проверяет, приземлится ли этот победитель в нижней половине вне выборки. Вероятность переобучения бэктеста (PBO) — это доля разделений, где победитель не обобщился. PBO, близкая к 0, означает, что лучшая конфигурация действительно лучшая; PBO 0.5 или выше означает, что ваш процесс селекции выбирает шум — вердикт становится Переобучен независимо от того, насколько хорошо выглядел победитель.

POST /api/quant/pbo
{ "trials": [[...], [...], ...] }

Когда нативный оптимизатор cTrader Console появится, cMind будет автоматически подавать его полную поверхность испытаний здесь.

Испытания — цифра, которая имеет значение​

Trials это количество наборов параметров, которые вы протестировали перед выбором этого. Тестирование одной стратегии и тестирование десяти тысяч и сохранение лучшей — это совсем разные вещи: второе производит высокий коэффициент Шарпа внутри выборки случайно. Подача честного количества испытаний — это вся суть — она повышает дефляцию и может переместить "отличный" бэктест в Переобучен. Когда нативный оптимизатор cTrader Console появится, cMind подает ему размер реальной сетки развертки автоматически.

Входные данные​

  • Периодические доходности — одно число за период (например 0.01 = +1%). Как минимум два. Поле проверяется по мере ввода: оно подсчитывает действительные числа, отмечает любой токен, который не является числом, и включает Analyze только после наличия как минимум двух чистых значений (сетка испытаний включает Assess overfitting после того, как две серии из четырех или более чисел каждая готовы).
  • Кривая капитала / баланса — cMind выводит для вас последовательные простые доходности.
  • Прямо из запуска бэктеста — без копирования-вставки. Каждый завершенный бэктест открывает значок щита Check backtest integrity на строке списка Backtest и в представлении деталей его экземпляра; один щелчок запускает лабораторию на сохраненной кривой капитала этого запуска и показывает вердикт в диалоговом окне. Значок отключен до завершения бэктеста и создания отчета, поэтому это никогда не мертвый контроль. Под капотом это POST /api/quant/integrity/backtest/{instanceId}, который читает кривую капитала из сохраненного отчета.

API​

POST /api/quant/integrity
{ "returns": [0.006, 0.004, 0.006, ...], "trials": 250 }

Возвращает вердикт, все метрики и обоснование. POST /api/quant/integrity/backtest/{id} запускает тот же анализ на завершенном бэктесте, который вам принадлежит.

Почему это надежно​

Статистика — это чистые функции в ядре домена (Core.Quant) с нулевыми зависимостями инфраструктуры — они не могут быть выведены из строя сетевым сбоем, и они зафиксированы модульными тестами золотого вектора в сравнении с опубликованными формулами. Нормальный CDF/обратный — это аппроксимации в замкнутой форме (Abramowitz-Stegun / Acklam), поэтому одинаковые входные данные всегда дают одинаковый вердикт.