Бэктест может корректно обработать каждую строку и всё равно ответить не на тот вопрос, потому что строки описывают не тот рынок, пропускают часть выборки или привязывают информацию не к тому времени. Поэтому качество данных — часть спецификации стратегии. Прежде чем смотреть на доходность, зафиксируйте, что означает каждое наблюдение, когда оно стало доступно и как было получено.
1. Назовите точный рынок и бар
Запишите провайдера и площадку, точный символ, спотовый или производный контракт, активы котировки и расчёта, интервал свечи, а также то, обозначает ли метка времени открытие или закрытие бара. «Часовые свечи BTC» опускает детали, которые могут изменить цены, объём, фандинг и торговые часы. Используйте ценовой ряд одного контракта вместе с историей ставки финансирования этого контракта, если только документированный исследовательский вопрос не оправдывает иное соединение.
Проверьте метаданные контракта на предмет делистингов, миграций, множителей контракта и изменений символа в течение выборки. Символ может сохраниться, тогда как определение его рынка меняется. Если источник пересматривает исторические данные, сохраните дату получения и необработанную копию, чтобы будущий прогон мог объяснить расхождение.
2. Проверьте временной индекс до расчёта индикаторов
Приведите метки времени к UTC, сохранив исходное представление провайдера. Зафиксируйте, выражены ли числовые значения в секундах или миллисекундах. Метке времени ISO нужен явный Z или смещение UTC, чтобы идентифицировать момент; строка локального времени вроде 2026-04-07 13:00 неоднозначна без часового пояса. Проверьте порядок и уникальность, затем сравните первое и последнее время с запрошенным окном и ожидаемым числом интервалов.
Для выборки, охватывающей четыре часа часовых баров, начиная с 10:00 UTC, ожидаемые времена открытия — 10:00, 11:00, 12:00 и 13:00. Файл с 10:00, 11:00, 11:00 и 13:00 всё ещё содержит четыре строки, но в нём есть дубликат 11:00 и нет наблюдения 12:00. Подсчёт строк сам по себе не выявляет оба дефекта. Устраняйте их из авторитетного источника; не усредняйте дублирующиеся бары и не придумывайте обычную на вид свечу, чтобы заполнить пропуск. Если пропуск исключён, укажите даты, правило и то, как это влияет на прогрев, сделки и охват выборки.
3. Проверьте значения и охват источника
Для каждого бара OHLC подтвердите положительные конечные цены, high ≥ max(open, close), low ≤ min(open, close) и high ≥ low. Объём должен использовать заявленную единицу и быть неотрицательным. Постройте график или просмотрите несколько необработанных строк в начале, середине, конце и вокруг подозрительных движений, сверив их с исходным источником. Ищите устаревшие повторы, резкие изменения единицы объёма, дублированные границы страниц, частичные текущие свечи и пропущенные интервалы. Правдоподобный график не доказывает, что рынок определён верно или что данные действительно получены от заявленного провайдера.
Охват — свойство не только файла, но и API. Как актуальный пример Hyperliquid: его эндпоинт снимка свечей документирует поддерживаемые интервалы и сообщает, что доступны только последние 5,000 свечей. Ответ со свечами содержит метки времени открытия и закрытия, а также символ, интервал, OHLC, объём и число сделок; его схема WebSocket помечает поля меток времени как миллисекунды. Если запрошенная история выходит за доступное окно этого эндпоинта, ответ, который успешно разбирается, всё равно может быть неполным. Зафиксируйте окно запроса и проверьте, что первый и последний возвращённые бары соответствуют ему. Для более старого охвата используйте подходящий архив или другого явно указанного провайдера. Это детали API Hyperliquid, проверенные 25 сентября 2026 года, а не универсальные лимиты бирж; см. API снимка свечей и схему WebSocket свечей.
4. Согласуйте фандинг и другие событийные данные по их фактическому смыслу
Ставка финансирования привязана к времени и контракту. Сохраняйте единицу ставки, знак, метку времени и расчётную конвенцию. Отсутствующая ставка — это неизвестность, а не нулевой платёж. Рыночная история ставки финансирования описывает ставки в моменты расчёта; отдельный реестр счёта фиксирует размер позиции и фактическое изменение денежных средств. Они отвечают на разные вопросы. Hyperliquid, например, документирует почасовую ставку финансирования для своих бессрочных фьючерсов, эндпоинт исторических ставок и отдельный реестр фандинга пользователя с такими полями, как time, coin, rate, size и USDC delta. Сопоставляйте нужную запись с позицией, удерживаемой в тот момент, а не заполняйте вперёд или применяйте ставку к каждому бару. Изучите его актуальные правила фандинга и эндпоинты данных по бессрочным фьючерсам, проверенные 25 сентября 2026 года.
Момент подачи сигналов требует такой же аккуратности. Финальные high, low и close бара не все известны на его открытии. Если правилу нужен завершённый close, решение может использовать его только после окончания бара. Тогда смоделированный вход должен использовать более позднее исполняемое наблюдение по заявленной конвенции. Проверка решения на основе close на открытии того же бара приводит к утечке будущей информации. Проверьте прогрев индикаторов, границы ресемплинга, объединённые признаки и точную строку, использованную для сигнала.
5. Сохраняйте необработанные доказательства и каждое преобразование
Сохраните исходный ответ или файл без изменений вместе с именем источника, идентификаторами рынка, параметрами запроса, меткой времени получения, интервалом, часовым поясом, числом строк и запрошенными началом/концом. Зафиксируйте версию программного обеспечения или преобразования и криптографический отпечаток. Создайте отдельный очищенный набор данных; для каждой правки или исключения сохраните исходную строку, причину, источник замены и точное преобразование. Это позволяет другому исследователю воспроизвести результат и сравнить более позднюю ревизию источника, не гадая, что означали «очищенные данные».
Исследовательский прогон должен связать отпечаток своего набора данных с версией стратегии, версией движка, временным диапазоном, настройками, предупреждениями и выводами. Хеш устанавливает, что два файла побайтово или по значениям идентичны при выбранном методе; он не устанавливает, что любой из файлов верен. Происхождение данных и точность данных — связанные, но разные проверки.
Что проверяет SuperQuant
Импортёр CSV в SuperQuant требует поля timestamp, open, high, low, close и volume, с необязательным funding_rate. Он требует не менее 60 возрастающих по времени, уникальных, непрерывных часовых наблюдений в UTC, положительных конечных цен OHLC, неотрицательного объёма и корректных соотношений свечи. Метки времени ISO должны нести часовой пояс. Отсутствующий фандинг остаётся null и о нём сообщается; стратегии, которые включают фандинг или зависят от фильтра по фандингу, требуют наблюдений фандинга. Эти проверки отклоняют некорректную структуру, но импортёр не может подтвердить заявленную биржу или доказать экономическую точность.
Встроенные истории — синтетические учебные примеры, а не рыночные записи. Импортированный ряд — это самостоятельное доказательство со своим источником и ограничениями. Изучите шаблон CSV с историческими данными и чек-лист аудита бэктеста, затем прочитайте руководство по издержкам и обзор смещения из-за заглядывания в будущее. Хорошие данные делают тест интерпретируемым; они не демонстрируют устойчивое преимущество или будущий результат. Это руководство носит общеобразовательный характер и не является инвестиционной рекомендацией.