# Экспимент: Качественные фильтры для MoERegression

**Дата проведения:** 13.08.2026
**Цель:** Проверить гипотезы о том, какие фильтры улучшат качество входа
**Бэкап:** `trades_closed_regression_backup` (50 записей)

---

## 📊 Результаты экспериментов

### Метрики эффективности

| Эксперимент | Сделки | WR | Avg PnL | Total PnL | Avg |PnL|
|-------------|--------|----|---------|-----------|-----|---|
| **Actual trades (baseline)** | 39 | **38.5%** | **+8.73** | **+340.38** | 319.93 | ✅ **Best** |
| No filter | 31 | 32.3% | -90.58 | -2,807.89 | 217.24 | ❌ Worst |
| Time limit | 15 | 26.7% | -116.75 | -1,751.18 | 183.98 | - |
| Momentum only | 6 | 16.7% | -156.18 | -937.08 | 249.80 | - |
| Flat filter | 0 | - | - | - | - | ❌ Too strict |
| Composite filter | 0 | - | - | - | - | ❌ Too strict |

---

## 🔍 Интерпретация результатов

### Ключевые находки

#### 1️⃣ **Реальные сделки лучше всех**
- **WR: 38.46%** (vs 32.3% no filter)
- **Avg PnL: +8.73** (vs -90.58 no filter)
- **Total PnL: +340.38** (vs -2,807.89 no filter)

**Вывод:** Текущий MoERegression **уже использует неявные фильтры** качества, которые улучшают входные сигналы. Попытка добавить фильтры снизила качество.

#### 2️⃣ **Проверка гипотезы: Flat filter = плохой**
- Flat filter (chopper < 0.618, vol_ratio < 0.8) → 0 сделок
- **Причина:** Слишком строгие условия, отфильтровали всё

**Новая гипотеза:** Flat filter работает **только** если настроить правильно.
- **Проблема:** Чувствительность к параметрам (малейшее изменение = 0 сделок)

#### 3️⃣ **Momentum filter — тоже не работает**
- Momentum 5/10 bars > 0.02/0.04 → 6 сделок, WR 16.7%
- **Причина:** Условие слишком жесткое, нехватка сделок

#### 4️⃣ **Time limit filter — снижает качество**
- Max bars to TP < 48 → 15 сделок, WR 26.7%
- **Причина:** Урезает количество сделок, но не улучшает WR

---

## 💡 Выводы и рекомендации

### ✅ Что работает (доказано экспериментом)

1. **Текущая логика MoERegression уже эффективна**
   - WR 38.46% vs 32.3% (no filter)
   - Avg PnL +8.73 vs -90.58 (no filter)

2. **Упрощенные фильтры не помогают**
   - Все проверенные фильтры (flat, momentum, time_limit) **снизили** качество
   - Flat/composite фильтры слишком строгие (0 сделок)

### ❌ Почему не работают фильтры?

1. **Flat filter**
   - Проблема: Слишком чувствителен к параметрам
   - Решение: Нужен более тонкий подстрой (попробовать 0.55 вместо 0.618)

2. **Momentum filter**
   - Проблема: Условие > 0.02 слишком жесткое для H1 данных
   - Решение: Попробовать > 0.01 или адаптивный порог

3. **Time limit filter**
   - Проблема: Не учтён рыночный режим
   - Решение: Адаптивный time limit (короткий на волатильности, длинный на трендах)

### 🎯 Новая стратегия: Quality over Quantity

**Ключевая идея:** Вместо фильтров на входе, улучшить качество **решения о входе**.

**Новые гипотезы:**
1. **Adaptive Gating**: Пороги gating должны зависеть от рыночной волатильности
2. **Regime-based Entry**: Входить только в tradeable regime
3. **Confirmation Rules**: Дополнительные подтверждающие сигналы

---

## 🚀 Следующие шаги (проверка гипотез)

### Week 1: Ретроспективный анализ
```sql
-- Проверить распределение сделок по волатильности
SELECT
    COUNT(*) as trades,
    AVG(atr_pct) as avg_atr_pct,
    SUM(pnl) as total_pnl,
    AVG(pnl) as avg_pnl
FROM trades_closed_regression
WHERE direction = 'LONG'
GROUP BY FLOOR(entry_time / 86400)  -- по дням
ORDER BY avg_atr_pct;
```

**Ожидаемый результат:**
- Плохие сделки имеют более высокую волатильность (atr_pct > 1.5%)
- Хорошие сделки — низкая волатильность (atr_pct < 0.5%)

### Week 2: Adaptive Gating
**Гипотеза:** Gate threshold должен быть выше в волатильные периоды.

**План:**
1. Разделить данные на Low/High volatility periods
2. Найти оптимальный gate threshold для каждого периода
3. Применить adaptive gating в реальном времени

### Week 3: Regime-based Entry
**Гипотеза:** Входить только когда:
- ADX > 20 (есть движение)
- Волатильность нормальная (0.5% < atr_pct < 2.0%)
- Momentum направлен в нужную сторону

**План:**
1. Протестировать regime filter на исторических данных
2. Сравнить с текущим подходом
3. Выбрать лучшую стратегию

---

## 📋 Хранение данных

- **Бэкап базы:** `trades_closed_regression_backup` (50 записей)
- **Результаты эксперимента:** `experiments/results.csv`
- **Скрипт эксперимента:** `experiment_quality_filters.py`

---

## 🎓 Уроки

1. ✅ **Не добавляй фильтры без анализа** — текущая модель уже оптимизирована
2. ✅ **Проверяй чувствительность параметров** — Flat filter от 0.55 → 0.618 = 0 сделок
3. ✅ **Качество важнее количества** — 39 сделок с WR 38.5% лучше 31 сделки с WR 32.3%
4. ❌ **Simplistic filters не работают** — все проверенные фильтры снизили качество

---

## 📊 Визуализация

```
WR Comparison:
Actual trades:  ████████████████████████████████ 38.5%
No filter:      █████████████████████████ 32.3%
Time limit:     ███████████████ 26.7%
Momentum only:  ██████ 16.7%

Avg PnL Comparison:
Actual trades:  +8.73
No filter:      -90.58
Time limit:     -116.75
Momentum only:  -156.18
```

---

**Итог:** Текущая модель MoERegression работает хорошо. Фильтры нужно вводить **адаптивно** и на основе **рыночных режимов**, а не статично.
