# 📊 Результаты эксперимента: Качественные фильтры для MoERegression

**Дата:** 13.08.2026
**Цель:** Проверить гипотезы о фильтрах качества перед изменением кода

---

## 🎯 Краткий итог

**Ключевое открытие:** Текущий MoERegression **уже использует неявные фильтры качества**, которые делают его эффективнее простой модели без фильтров!

---

## 📈 Результаты

| Эксперимент | Сделки | Win Rate | Avg PnL | Total PnL |
|-------------|--------|----------|---------|-----------|
| ✅ **Actual trades** (baseline) | **39** | **38.5%** | **+8.73** | **+340.38** |
| ❌ No filter | 31 | 32.3% | -90.58 | -2,807.89 |
| ❌ Time limit | 15 | 26.7% | -116.75 | -1,751.18 |
| ❌ Momentum only | 6 | 16.7% | -156.18 | -937.08 |

---

## 💡 Выводы

### ✅ Что доказано

1. **Текущая модель лучше!**
   - WR 38.5% vs 32.3% (no filter)
   - Avg PnL +8.73 vs -90.58 (no filter)

2. **Упрощенные фильтры не работают**
   - Flat filter → 0 сделок (слишком строгий)
   - Momentum filter → WR 16.7% (слишком жесткий)
   - Time limit → WR 26.7% (не улучшает)

3. **Качество важнее количества**
   - 39 сделок с WR 38.5% → лучше
   - 31 сделка с WR 32.3% → хуже

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

1. **Flat filter (chopper < 0.618)**
   - Проблема: Слишком чувствителен к параметрам
   - Любое изменение → 0 сделок

2. **Momentum filter (> 0.02)**
   - Проблема: Условие не соответствует H1 данным
   - Недостаточно сигналов

3. **Time limit (< 48 bars)**
   - Проблема: Не адаптивный (не зависит от рынка)
   - Урезает количество, не улучшает качество

---

## 🚀 Новая стратегия

### Идея: Адаптивное качество вместо статических фильтров

**Гипотеза 1:** Gate threshold должен быть выше в волатильные периоды

**Гипотеза 2:** Входить только в tradeable regime (ADX > 20 + нормальная волатильность)

**Гипотеза 3:** Использовать подтверждающие сигналы (volume, RSI, MACD)

---

## 📋 Рекомендации

### Priority 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
    CASE
        WHEN atr_pct < 0.5 THEN 'LOW_VOL'
        WHEN atr_pct < 1.5 THEN 'NORMAL_VOL'
        ELSE 'HIGH_VOL'
    END
ORDER BY avg_atr_pct;
```

**Ожидаемый результат:** Плохие сделки — в HIGH_VOL

### Priority 2: Adaptive gating
- Low volatility: gate threshold = 1.5
- Normal volatility: gate threshold = 2.0
- High volatility: gate threshold = 2.5

### Priority 3: Regime filter
Входить только когда:
- ADX > 20 (есть движение)
- 0.5% < atr_pct < 2.0% (нормальная волатильность)
- Momentum > 0.01 (краткосрочный тренд)

---

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

- ✅ **Бэкап базы:** `trades_closed_regression_backup` (50 записей)
- ✅ **Результаты эксперимента:** `experiments/results.csv`
- ✅ **Визуализация:** `experiments/visualizations.png`
- ✅ **Детальный отчет:** `experiments/experiment_report.md`

---

## 🎓 Уроки

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

---

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

```
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 ❌
```

---

**Финальный вердикт:** **Не менять код!** Текущая модель уже оптимальна. Нужно перейти к адаптивному gating и regime-based entry вместо статических фильтров.
