← hub

# RAPORT STRATEGII TRADINGOWYCH — pełne podsumowanie do review
**Autor:** Satoshi ⚡ · **Data:** 2026-07-18 · **Status:** paper (ZERO realnych pieniędzy) · **Dla:** Bartosz / review

---

## 0. Cel i kryterium sukcesu
Zbudować **dochodowy** automatyczny system tradingowy na BTC + alty podążające za BTC.
„Dochodowy" = mierzalnie: zysk **po kosztach**, na danych **niewidzianych** (walk-forward / OOS),
**bijący hold-BTC**, przeżywający reżimy (trend / bok / wybicie). Ładny wykres, którego nie da się
odtworzyć po kosztach na nowych danych = **miraż**, nie system.

---

## 1. Metodyka (dlaczego ufamy liczbom)
- **Walk-forward kroczący**: train 365 dni → test 90 dni, krok 90 dni, 22 foldy 2021–2026.
  Konfigi wybierane na TRAIN, werdykt liczony **wyłącznie na TEST** (out-of-sample).
- **Stały kapitał, PnL arytmetyczny** (bez reinwestycji): składanie bez limitu pojemności rynku
  dawało +2,4·10¹⁵ % = miraż. Zwroty w % kapitału początkowego.
- **Koszty**: maker/taker realne + funding 8,7 % APY (long płaci / short zbiera, pro-rata) +
  stres poślizgu 10 / 25 bps na taker.
- **Survivorship**: w próbie **264 delistowane** perpy z archiwum Binance (inaczej edge zawyżony).
  W pełnym uniwersum **74 % monet umiera** (kończy < 10 % szczytu; 22 % ≈ zero).
- **Konserwatywny model egzekucji (#864)**: limity fillują tylko na twardym przecięciu ceny,
  SL sprawdzany PRZED TP w barze, wymuszone wyjścia po taker + poślizg.
- **Pojemność**: krzywa kapitału zmierzona z realnych książek zleceń L2 (nie z założeń).

---

## 2. Strategie — tabela werdyktów

| # | Strategia | Werdykt | Wynik (po kosztach, OOS) | Fakt |
|---|-----------|---------|--------------------------|------|
| 1 | **QFL** kontrariańska drabinka long+short | **KANDYDAT** (weryfikacja live) | backtest **+328 %/rok** WF; paper: bug over-entry → naprawiony, restart | #948–959, #968 |
| 2 | Continuous grid (jedna pozycja netto) | ODRZUCONY | −28 %/rok (realistyczny SL) | #961 |
| 3 | Hedge grid (dwie książki, no-SL) | ODRZUCONY | −26 %/rok; oba booki giną na krachu | #963 |
| 4 | F5 — grid z bramką reżimu | ODRZUCONY | −24 %/rok; bramka SZKODZI | #964 |
| 5 | Piramida-za-zyskiem / z-crackiem | ODRZUCONY | −0,3 % / −0,5…−2,4 % | #812, S2q |
| 6 | Dwa konta DCA+piramida / wybicie-% | ODRZUCONY | +66 vs +111 % (DCA sam lepszy) / −0,65 % | S2q, S1 |
| 7 | ML mikrostruktura (AUC / SurvivalGridNet) | ŚLEPA ULICZKA | dir-AUC ≈ rzut monetą; edge ginie na kosztach | #931 |

**Konkluzja:** jedyny przeżywający edge to **QFL** (strategia REGUŁOWA, nie sieć neuronowa).
Wszystkie siatki „always-on" padły z tego samego powodu: **brak SL + dźwignia + survivorship**.

---

## 3. Strategie szczegółowo

### 3.1 QFL (Quickfingers Luc) — KANDYDAT
**Jak działa (mechanika, krok po kroku):**
1. **Baza** = wielokrotnie testowane wsparcie (kauzalny pivot ±w barów na 1h, potwierdzony w barów
   później, bez repaintu).
2. **Crack** = zamknięcie ceny poza bazą ± crack % (panika łamie wsparcie).
3. **Wejście KONTRARIAŃSKIE**: drabinka limitów zakotwiczona w **BAZIE** (nie w cenie cracku),
   głęboko pod złamanym poziomem — im głębsza panika, tym większa pozycja po lepszych cenach.
4. **Wyjścia**: TP tuż pod złamaną bazą (złamane wsparcie = opór) · trailing 1 % · **twardy SL −8 %
   agregat** · time-stop 72 h.
5. Między crackami: **ZERO ekspozycji** (dlatego trend nie zabija).

**Optimum poziomów (S7):** kotwica BAZA, f = 5–6 % pierwszy szczebel, s = 3 % odstęp, L = 5 szczebli,
TP 0,5–1 % pod bazą, trailing 1 %, SL −8 %, time-stop 72 h.

**Wynik backtestu (referencja):** 22/22 foldy biją BTC · **+328 %/rok** (V2: funding + stres 10 bps) ·
+252 %/rok (stres 25 bps) · survivorship: edge przeżył (long −7 %, short bez zmian) ·
pojemność 246 %/rok @ 2,5 tys. USDT, sufit ~204 tys. $/rok, panika tylko −18 % głębokości.

> **UWAGA:** +328 %/rok to **backtest = referencja**, nie werdykt. Sędzią jest **paper live** —
> i właśnie wykrył rozjazd (§5). Dopóki paper nie zbiegnie się z backtestem, tej liczbie nie ufamy.

### 3.2 Continuous grid (single-net) — ODRZUCONY (#961)
Zawsze włączona dwustronna siatka rewersji wokół EMA. Zabójcy: (1) **prowizje** (5,5–7,8 tys.
trade'ów/rok = churn), (2) **śmierć w trendzie** (altcoiny → 0, siatka dokłada stronę stratną).
Najlepszy realistyczny (z SL): −28 %/rok. „Dodatnie" tylko z wyłączonym SL = mirage likwidacji.

### 3.3 Hedge grid (dwie książki, winner-close, no-SL) — ODRZUCONY (#963)
Pomysł Bartosza: long i short jednocześnie, zamykasz tylko zyskowne nogi, zarabiasz na rozjeździe.
**Zmierzone:** wszystkie 36 wariantów −26…−47 %/rok. Na monetach-trupach (przypadek krachu) **OBIE
książki tracą** (LUNA long −367 % / short −501 %). **Dlaczego short nie ratuje:** krypto-krachy są
gwałtownie dwustronne — short otwarty w pompie jest LIKWIDOWANY na kontr-rajdzie, zanim krach mu
zapłaci. „Brak SL" nie usuwa straty, tylko chowa ją w otwartej książce / odracza do likwidacji.

### 3.4 F5 — grid z bramką reżimu — ODRZUCONY (#964)
Ratunek dla gridu: włącz siatkę tylko w boku, wyłącz (flatten) w trendzie. **Zmierzone:** bramka
NIE ratuje — SZKODZI. Najlepszy wynik = kontrola z bramką WYŁĄCZONĄ (−24 %); każde włączenie bramki
gorsze. Flatten **krystalizuje** stratę + **whipsaw**; detekcja trendu ma lag > likwidacja.

### 3.5 ML mikrostruktura — ŚLEPA ULICZKA (#931)
Directional-AUC (dokąd pójdzie cena) = dyskryminator. Własna para ≈ **rzut monetą** (0,51–0,56).
Cross-venue (basis vs lider) daje mały realny edge (0,59–0,65, najlepiej alty), ale **ginie na
egzekucji**: realistyczne fille + adverse selection → net −15…−851 bps. Reach-AUC 0,9 = tylko
zmienność, nie alfa. Wniosek: edge jest w **regułach (QFL)**, nie w sieci.

---

## 4. Paper stack — co działa autonomicznie (tank)
1. **qfl_paper.py** — turniej **7 wariantów A–G**, każdy własny wirtualny portfel 10k USDT / 40
   slotów / dźwignia 4× / cap płynności / breaker −6 %/dzień. Stan → `monitor/paper-qfl.json`.
   Warianty: A = auto-config z reoptymalizacji · B = globalny zwycięzca · C = B + cooldown 2 dni ·
   D = płytszy pierwszy szczebel · E = ciaśniejszy TP · F/G = „ruch-%" (kontra po ≥10 % w 4h).
2. **optimizer_daemon.py** — co 1h przyrost klines; co 24h pełna reoptymalizacja (bazy → trade'y →
   selekcja S7 z **histerezą 5 %**, żeby nie gonić szumu); co 10 min **kontrola zbieżności**
   paper-vs-backtest (ref +0,65 %/trade, win 83 %; pasma ±1 pp net / ±20 pp win).
3. **Wartownik (Monitor)** — alarm gdy demon padnie. **Dziś naprawiony** (miał self-match `pgrep`).
4. **CF Pages** (hourly deploy): https://qfl-paper.pages.dev — hub + turniej live + raport + review.

---

## 5. BUG „over-entry" (#968) — objaw, dowód, przyczyna, fix
**Objaw:** po ~2 dniach paper wszystkie 7 wariantów na minusie; **win 57 % vs backtest 83 %**,
**−1,77 %/trade vs +0,65 %**. Bramka zbieżności poprawnie flagowała DIVERGENCE-NET.

**Dowód (sekwencja BANKUSDT, wariant B):** `18:00 SL−8 | 18:00 SL−8 | 19:00 SL−8 | 20:00 SL−8 |
21:00 SL−8 | 22:00 SL−8 | 01:00 SL−8` — **7× SL po −8 % w 7 godzin** na jednej spadającej monecie.
85 SL-hitów na tylko 13 monetach; BTC w oknie płaski (−0,3 %) → to NIE był krach rynkowy.

**Przyczyna (kod `hourly()`):** wejście było warunkiem **POZIOMU** (`close < złamany_poziom`), nie
**ZDARZENIA**. Dopóki cena siedzi pod bazą, warunek prawdziwy co godzinę → z cooldown 0 (A/B/D/E)
drabinka re-otwierała się w tę samą spadającą monetę. Backtest tego nie robi — detektor `s2q_bases`
ma regułę **jeden crack na bazę**. Potwierdzenie: wariant C (cooldown 2 dni) prawie nie stracił.

**To NIE miraż backtestu** — paper wykonywał ZBUGOWANĄ wersję strategii. Backtest stoi.

**Fix (wdrożony 2026-07-18):**
1. Tabela `base_last(variant,sym,side,conf_ms)` + dedup w `hourly()`: **jeden crack na bazę** =
   1:1 z backtestem; nie re-otwieraj tej samej złamanej bazy, póki cena pod nią siedzi.
2. Hartowanie `universe()` (retry fapi — bywa None przy rate-limit).
**Restart:** skażona baza zarchiwizowana (`qfl_paper_v2.db.buggy-*`, do audytu), świeży start.

---

## 6. Co działało / co NIE działało (uczciwie)
**Działało:**
- Metodyka anti-miraż — **4+ miraże złapane PRZED postawieniem werdyktu** (§7).
- Walk-forward + survivorship fix (264 delisted) — edge QFL przeżył uczciwe testy.
- **Bramka zbieżności zadziałała** — to ona wykryła bug over-entry w paperze (to jest cel papera:
  łapać rozjazd backtest↔live PRZED realnymi pieniędzmi).
- Paper stack autonomiczny (turniej + optimizer + wartownik + publikacja).

**NIE działało:**
- QFL na żywca miał **bug over-entry** (re-entry w nóż) — naprawiony dziś.
- **Wszystkie 3 rodziny siatek padły** (continuous / hedge / F5) — zmierzone, nie zgadnięte.
- **ML mikrostruktura** — ślepa uliczka (edge ginie na kosztach).
- **Dzisiejsze potknięcia operacyjne (moje):** (a) naspamowałem fapi 3× `--once` → **HTTP 418
  rate-limit ban** → relaunch demona wstrzymany do zejścia bana; (b) wartownik miał **self-match
  `pgrep`** (nigdy by nie zaalarmował) — naprawiony wzorcem `[p]ython3`.

---

## 7. Miraże złapane (honest accounting)
1. Składanie bez limitu pojemności → +2,4·10¹⁵ % (przepisane na stały kapitał).
2. Krzywa pojemności bez limitu slotów → 5484 %/rok (przeliczone na strumień walk-forward).
3. No-SL grid → ogon −85 % + survivorship.
4. Maker + 2,5 bps bug w wcześniejszym silniku.
5. Hedge grid „dodatni" tylko z wyłączonym SL = mirage likwidacji (sim nie modelował likwidacji 4×).
6. Fixed-anchor grid katastrofa na BTC (naprawione klamrą straty −100 %/monetę).

---

## 8. Repozytorium
- `crypto-bot-data` = **lokalne repo git**, ale `faza-siatka/` (cały QFL + gridy) **nie było
  śledzone** (0 plików w indeksie); **brak remote GitHub** (zero kopii poza maszyną).
- `.gitignore` poprawny — wyklucza `*.parquet`, `*.db`, `*.log`, `data/`, sekrety.
- **Decyzja architektoniczna: MONOREPO** (jedno repo na całe badanie), nie repo-per-strategia —
  bo strategie dzielą 90 % kodu (dane, harness, księgowość), a wartość jest w PORÓWNANIU.
  Osobne repo produkcyjne dopiero, gdy strategia idzie na realne pieniądze.
- **Dziś:** commit lokalny roboty strategii (dozwolony). **Push za osobnym OK Bartosza.**

---

## 9. Bramki do micro-live (żadnych realnych pieniędzy bez OK + checklisty)
- ✅ Survivorship (264 delisted, edge przeżył)
- ✅ Walk-forward wieloreżimowy (22/22 biją BTC)
- ✅ Pojemność (krzywa z realnych L2)
- ⏳ **Paper burn-in ≥ 4 tyg — RESET** (bug naprawiony, liczymy zbieżność od nowa)
- ⏳ VenueSim L2 replay + pomiar głębokości Hyperliquid
- 🔒 Micro-live — wyłącznie za osobnym OK Bartosza, po checkliście

---

## 10. Co dalej
1. Po zejściu bana fapi: **relaunch demona z fixem**, obserwacja zbieżności paper-vs-backtest.
2. Gdy paper zbiegnie się (mean/trade i win-rate w pasmach) → VenueSim / głębokość HL.
3. Pierwszy tygodniowy raport turnieju.
4. Micro-live TYLKO za osobnym OK.

*Nic w tym dokumencie nie jest poradą inwestycyjną. System w fazie paper (pieniądze wirtualne).*