Руководство: Рабочий процесс статистического анализа
💡 Для кого это руководство?
Этот документ предназначен для аналитиков и разработчиков, которые хотят научиться применять статистические методы для проверки (валидации) торговых гипотез и анализа данных с помощью
bquant.
1. От Наблюдения к Доказательству
Основная цель количественного анализа — не просто найти интересные закономерности, а доказать, что они не являются случайностью. Модуль bquant.analysis.statistical предоставляет инструменты для этого второго, критически важного шага.
Если analyze_zones помогает найти и описать паттерны, то bquant.analysis.statistical помогает проверить и доказать их значимость.
2. Ключевые компоненты
В основе модуля лежат два основных класса:
StatisticalAnalyzer: Универсальный инструмент для “разведки” данных. Он отвечает за описательную статистику, анализ распределений, тесты на нормальность и корреляционный анализ.HypothesisTestSuite: Специализированный набор тестов для быстрой проверки распространенных торговых гипотез. Например: “Приносят ли бычьи зоны статистически значимую прибыль?” или “Зависит ли доходность зоны от ее длительности?”.
3. Типичный рабочий процесс
Статистический анализ — это последовательный процесс, где каждый шаг строится на предыдущем.
Шаг 1: Описательная статистика (“Первый взгляд”)
Прежде чем строить сложные модели, необходимо понять “характер” ваших данных.
Что делаем? С помощью
StatisticalAnalyzer.descriptive_statistics()получаем ключевые метрики: среднее, медиану, стандартное отклонение, асимметрию, эксцесс.Зачем это нужно? Чтобы получить общее представление о масштабе и разбросе данных. Например, аномально высокое стандартное отклонение может говорить о выбросах, а ненулевая асимметрия — о несимметричности распределения доходностей.
Шаг 2: Анализ распределения (“Какова природа данных?”)
Многие статистические тесты (например, t-тест) предполагают, что данные распределены нормально. Это предположение необходимо проверить.
Что делаем? Используем
StatisticalAnalyzer.normality_test(), который применяет тесты Шапиро-Уилка и Колмогорова-Смирнова.Зачем это нужно? Если данные не являются нормальными, для сравнения выборок следует использовать непараметрические тесты (например, тест Манна-Уитни), которые более устойчивы к выбросам и ненормальным распределениям.
Шаг 3: Корреляционный анализ (“Что с чем связано?”)
Этот шаг помогает найти взаимосвязи между различными переменными.
Что делаем? Рассчитываем корреляционную матрицу и проверяем значимость каждой корреляции.
Зачем это нужно? Чтобы найти потенциальные предикторы для будущих моделей. Например, если вы обнаружили сильную корреляцию между объемом и волатильностью, объем можно использовать как одну из переменных в регрессионной модели для предсказания волатильности.
Шаг 4: Проверка гипотез (“Это реально или случайность?”)
Это ядро всего процесса. На этом этапе мы проверяем конкретные торговые идеи.
Что делаем? Используем
HypothesisTestSuiteдля проверки заранее определенных гипотез. Например,test_bull_bear_asymmetry_hypothesis()проверяет, есть ли статистически значимая разница в средних характеристиках (например, доходности или длительности) между бычьими и медвежьими зонами.Зачем это нужно? Чтобы получить объективный, основанный на p-value, ответ на вопрос, работает ли ваша торговая идея. Если p-value < 0.05, вы можете с 95% уверенностью утверждать, что наблюдаемый эффект (например, более высокая доходность в бычьих зонах) реален.
4. Связь с анализом зон
Пайплайн analyze_zones является идеальным поставщиком данных для статистического анализа. Словарь zone.features, который генерируется для каждой зоны, содержит множество готовых метрик (duration, price_return, volatility_score и т.д.), которые можно напрямую подавать в HypothesisTestSuite для проверки гипотез.
Пример:
С помощью
analyze_zonesвы получаете список зон с их характеристиками.Вы передаете этот список в
HypothesisTestSuite.test_zone_duration_hypothesis().Тест автоматически сравнивает доходности длинных и коротких зон и сообщает вам, есть ли между ними статистически значимая разница.
🔗 См. также
Справочник API (statistical.md): Полный список классов, методов и примеры синтаксиса.