Лаборатория целостности бэктеста
Розничные платформы показывают коэффициент Шарпа или чистую прибыль бэктеста и на этом останавливаются. Институты никогда не доверяют сырому бэктесту — они спрашивают, выживает ли результат поправке на смещение селекции и количество опробованных конфигураций. Лаборатория целостности бэктеста привносит эту проверку в 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), поэтому одинаковые входные данные всегда дают одинаковый вердикт.