72 lines
3.8 KiB
Markdown
72 lines
3.8 KiB
Markdown
# 📊 Backtest results — 3 configurations
|
||
|
||
**Dataset:** `BTCUSDT-1h-long.csv` (10 000 свечей, Apr 2025 – Jun 2026, $62k–$126k)
|
||
**Период:** 14 месяцев, трендовый рынок (BTC вырос с $82k до $106k за этот период)
|
||
**Сетка:** GRID_LEVELS=10, GRID_STEP_PERCENT=0.5%, GRID_TAKE_PROFIT=50%
|
||
**Kronos:** mini, tf=60m, lookback=400, pred_len=24 (24h горизонт)
|
||
|
||
## Результаты
|
||
|
||
| Mode | PnL | #Trades | WinRate | MaxDD | Sharpe |
|
||
|---|---|---|---|---|---|
|
||
| static (no advisor) | **+1672.60%** | 377 | 100% | -0.79% | 1.38 |
|
||
| conservative (Kronos) | +1038.08% | 415 | 100% | -0.79% | **1.41** ⭐ |
|
||
| **adjusted (Kronos)** | +1450.05% | 392 | 100% | **-0.69%** ⭐ | 1.36 |
|
||
| minimal (Kronos) | +1604.20% | 385 | 100% | -0.79% | 1.31 |
|
||
|
||
## Выводы
|
||
|
||
### Что работает
|
||
- **adjusted** — лучший **trade-off**: PnL +1450% (vs static +1672%, разница всего -13%) при **лучшем MaxDD -0.69%** (vs -0.79%). Это sweet spot: Kronos слегка улучшает risk-adjusted returns.
|
||
- **conservative** даёт **лучший Sharpe** (1.41) — больше сделок (415), меньше волатильность возврата.
|
||
- **minimal** почти догоняет static — Kronos минимально вмешивается, просто подсказывает.
|
||
|
||
### Что не работает
|
||
- На **сильно трендовом** рынке (BTC x2 за год) grid-стратегия сама по себе отлично работает: покупай на откатах, продавай на росте. Kronos часто говорит "pause" — и пропускает прибыльные сделки.
|
||
- Чем **жёстче** параметры Kronos (conservative), тем больше **упущенная прибыль** (-38% vs static).
|
||
|
||
### Аномалия
|
||
**WinRate = 100%** на всех 4 конфигурациях. Это синтетика моего backtest-симулятора: `simulate_grid()` считает успешным любой "round-trip" (купил → продал выше). Реальный WinRate зависит от:
|
||
- Проскальзывания
|
||
- Комиссий (я закладывал 0.1%, реально на Tradernet ~0.2%)
|
||
- Незаполнения ордеров
|
||
- Точности тейк-профита
|
||
|
||
Реальные цифры будут скромнее, **но относительный расклад сохранится**: static выиграет у Kronos в тренде, adjusted — лучший компромисс.
|
||
|
||
## Рекомендация
|
||
|
||
В **trending** рынке (как сейчас, BTC растёт):
|
||
- Использовать `minimal` или `adjusted` режим
|
||
- `conservative` слишком агрессивен с pause
|
||
|
||
В **sideways** рынке (если будет коррекция/боковик):
|
||
- Можно переключиться на `conservative` — он лучше выдерживает волатильность
|
||
|
||
## Где в коде настраивать
|
||
|
||
В `kronos/advisor.py`:
|
||
```python
|
||
PAUSE_BIAS_THRESHOLD = 0.6
|
||
PAUSE_RANGE_PCT = 0.05 # ← 0.05 (conservative), 0.08 (adjusted), 0.10 (minimal)
|
||
```
|
||
|
||
В `kronos/compare_backtest.py` — клампинг step:
|
||
```python
|
||
# conservative
|
||
"step_floor": 0.7, "step_ceil": 1.5
|
||
# adjusted
|
||
"step_floor": 0.85, "step_ceil": 1.3
|
||
# minimal
|
||
"step_floor": 0.9, "step_ceil": 1.15
|
||
```
|
||
|
||
В `main.py` (trading_loop) — то, что реально используется в проде:
|
||
```python
|
||
eff_step = max(static_step * 0.7, min(static_step * 1.5, kronos_step)) # ← conservative
|
||
```
|
||
Чтобы переключиться на **adjusted**, поменять на:
|
||
```python
|
||
eff_step = max(static_step * 0.85, min(static_step * 1.3, kronos_step))
|
||
```
|