# Core Concepts — Базовые концепции BQuant

## 🎯 Назначение раздела

Этот раздел связывает быстрый старт с подробной документацией и объясняет, как устроен Universal Zone Analysis Pipeline v2.1. Вы узнаете, какие компоненты участвуют в анализе зон, как подготавливаются данные и какие результаты возвращаются пользователю.

## 🧱 Ключевые составляющие Universal Pipeline

| Компонент | Что делает | Где описан |
|-----------|------------|------------|
| **DataFrame с OHLCV** | Исходные котировки и готовые индикаторы | [Data Management](../api/data/README.md) |
| **IndicatorConfig** | Описание источника и параметров индикатора | [Indicators](../api/indicators/README.md) |
| **ZoneDetectionConfig** | Стратегия поиска зон и её правила | [Analysis / Zones](../api/analysis/zones.md) |
| **UniversalZoneAnalyzer** | Извлекает признаки, гипотезы, последовательности | [Analysis / pipeline](../api/analysis/pipeline.md) |
| **ZoneAnalysisResult** | Итоговый объект с зонами, метриками и сервисными данными | [Analysis / base](../api/analysis/base.md) |

> ℹ️ Universal Pipeline не привязан к MACD. Любой индикатор (включая пользовательский) или готовый столбец может стать основой для зон при корректной конфигурации `ZoneDetectionConfig`.

## 🔄 Поток данных и контрольные точки

1. **Подготовка данных** — убедитесь, что DataFrame содержит столбцы `time`, `open`, `high`, `low`, `close`, `volume` и дополнительные индикаторы.
2. **Настройка индикатора** — либо рассчитываем индикатор в пайплайне, либо подаем готовые значения (например, `macd_histogram`).
3. **Выбор стратегии детекции** — `zero_crossing`, `threshold`, `line_crossing`, `preloaded` или `combined`.
4. **Анализ зон** — UniversalZoneAnalyzer рассчитывает признаки, гипотезы и (по необходимости) регрессию, валидацию и кластеризацию.
5. **Интерпретация результата** — объект `ZoneAnalysisResult` содержит списки зон, статистику, отчеты по стратегиям и вспомогательные данные для визуализации.

## ⚙️ Конфигурация пайплайна через классы

Следующий пример повторяет структуру документации и показывает, из каких элементов собирается pipeline.

```python
from bquant.analysis.zones.pipeline import IndicatorConfig, ZoneDetectionConfig, ZoneAnalysisConfig

config = ZoneAnalysisConfig(
    indicator=IndicatorConfig(
        source='custom',
        name='macd',
        params={'fast': 12, 'slow': 26, 'signal': 9}
    ),
    zone_detection=ZoneDetectionConfig(
        strategy_name='zero_crossing',
        rules={'indicator_col': 'macd_histogram'},
        min_duration=3
    ),
    perform_clustering=True,
    n_clusters=3,
    run_regression=False,
    run_validation=False
)

print(config.zone_detection.strategy_name)
print(config.indicator.name)
```

## 🚀 Минимальный анализ зон на готовых данных

В sample-данных `tv_xauusd_1h` уже присутствуют столбцы `macd` и `signal`, поэтому гистограмму можно получить вычитанием. Это избавляет от повторного расчета индикатора и демонстрирует, как документация рекомендует работать с готовыми колонками.

```python
from bquant.data.samples import get_sample_data
from bquant.analysis.zones import analyze_zones

df = get_sample_data('tv_xauusd_1h').head(200).copy()
df['macd_histogram'] = df['macd'] - df['signal']  # В документации делаем явную оговорку

result = (
    analyze_zones(df)
    .detect_zones('zero_crossing', indicator_col='macd_histogram')
    .with_strategies(swing='find_peaks', shape='statistical')
    .analyze(clustering=True, n_clusters=3)
    .build()
)

print(len(result.zones))
print(sorted(result.statistics.keys())[:3])
print(result.clustering is not None)
```

### Что важно знать о `ZoneAnalysisResult`

- `zones` — список обнаруженных зон с временными границами, типом и метаданными.
- `statistics` — агрегированные метрики (длительность, распределение амплитуд, асимметрия и т.д.).
- `hypothesis_tests` — результаты гипотез (подходят для отчетов и автоматической валидации).
- `clustering`, `regression_results`, `validation_results` — присутствуют, если вы включили соответствующие этапы.
- `data` — копия исходного DataFrame (можно отключить через параметры сохранения).

## 📎 Что почитать дальше

- [Quick Start](quick_start.md) — если хотите сразу применить пайплайн к своим данным.
- [Core Modules](../api/core/README.md) — архитектура ядра и сервисные компоненты.
- [Analysis / pipeline](../api/analysis/pipeline.md) — полный справочник по конфигурации и расширениям.
- [Visualization](../api/visualization/README.md) — способы представить результаты `ZoneAnalysisResult`.
