Klonika - AI News Portal
OctoBot i backtesting ilościowy: jak zbudować i zwalidować strategię tradingową z optymalizacją parametrów
Zdjęcie: Dany Kurniawan · Pexels

OctoBot i backtesting ilościowy: jak zbudować i zwalidować strategię tradingową z optymalizacją parametrów

9 października 2026 17:58 23 · ISTOTNE

W skrócie

  • Tutorial pokazuje, jak zbudować kompletny system backtestingu ilościowego na parze BTC/USDT z użyciem OctoBot 2.1.1, łącząc sygnały RSI, potwierdzenie trendu przez EMA oraz adaptacyjne poziomy stop-loss i take-profit oparte na ATR.
  • Przeszukiwanie siatki parametrów odbywa się na danych z okresu 2019–2023, a najlepsza konfiguracja jest następnie walidowana na niezależnym zbiorze danych z lat 2023–2025, co pozwala wykryć ewentualne przetrenowanie strategii.
  • Wyniki są wizualizowane interaktywnie w środowisku Colab przy użyciu Pandas i Plotly, a kluczowym miernikiem jakości strategii jest tzw. „edge" — nadwyżka zwrotu ponad pasywne trzymanie aktywów (buy & hold).

Platforma OctoBot w wersji 2.1.1 wraz z biblioteką OctoBot-Script umożliwia zbudowanie kompletnego przepływu backtestingu ilościowego bezpośrednio w środowisku Google Colab marktechpost.com.

Opisywany tutorial prowadzi przez cały proces: od konfiguracji izolowanego środowiska Pythona, przez przeszukiwanie przestrzeni parametrów, aż po walidację na niezależnych danych i interaktywną wizualizację wyników.

Architektura strategii

Strategia opiera się na trzech filarach marktechpost.com:

  • RSI (Relative Strength Index) — sygnał wejścia generowany w strefie wyprzedania rynku,
  • EMA (Exponential Moving Average) — potwierdzenie trendu wzrostowego przez relację szybkiej (50-okresowej) i wolnej (200-okresowej) średniej kroczącej,
  • ATR (Average True Range) — adaptacyjne wyznaczanie poziomów stop-loss i take-profit w oparciu o bieżącą zmienność rynku.

Zlecenie kupna jest składane wyłącznie wtedy, gdy RSI spada poniżej progu wyprzedania (testowane wartości: 25, 30 lub 35) przy jednoczesnym utrzymaniu się szybkiej EMA powyżej wolnej EMA. Stop-loss ustawiany jest na poziomie 2,0-krotności ATR poniżej ceny wejścia, a take-profit — na poziomie 3,0- lub 5,0-krotności ATR powyżej niej. Każda pozycja angażuje 20% portfela.

Środowisko i dane

Aby uniknąć konfliktów z preinstalowanymi zależnościami Colaba, środowisko uruchomieniowe jest tworzone od zera przy użyciu narzędzia uv w izolowanym katalogu wirtualnym marktechpost.com.

Dane historyczne OHLCV dla pary BTC/USDT w interwale dziennym są pobierane przez warstwę danych OctoBot z automatycznym przełączaniem między giełdami: Binance, KuCoin, OKX, Bybit, MEXC i Kraken — co zabezpiecza przed blokowaniem zapytań przez poszczególne platformy.

Eksperyment podzielony jest na dwa rozłączne okna czasowe marktechpost.com:

  • Okres in-sample (optymalizacja): 2019-01-01 – 2023-01-01,
  • Okres out-of-sample (walidacja): 2023-01-01 – 2025-06-01.

Przeszukiwanie siatki parametrów

W fazie optymalizacji testowane są wszystkie kombinacje trzech zmiennych parametrów marktechpost.com:

  • rsi_period: 7, 14 lub 21,
  • rsi_threshold: 25, 30 lub 35,
  • tp_atr_mult: 3,0 lub 5,0.

Daje to łącznie 18 konfiguracji do oceny. Kryterium wyboru najlepszej z nich jest „edge" — nadwyżka zwrotu strategii ponad wynik pasywnego trzymania aktywów (buy & hold). Konfiguracja z najwyższym „edge" w okresie in-sample jest następnie testowana na danych out-of-sample, których strategia nigdy wcześniej nie „widziała".

Logika backtestingu działa jako osobny podproces Pythona, dzięki czemu jego zależności pozostają całkowicie odizolowane od głównego jądra Colaba, a logi strumieniowane są na bieżąco do notatnika marktechpost.com.

Walidacja i wykrywanie przetrenowania

Po wyborze optymalnej konfiguracji przeprowadzana jest walidacja out-of-sample marktechpost.com.

Kluczowym wskaźnikiem jest zmiana wartości „edge" między oboma okresami — tzw. „edge decay". Jeśli spadek wynosi mniej niż 5 punktów procentowych, parametry uznawane są za generalizujące się na nowe dane. Większy spadek sygnalizuje potencjalne przetrenowanie i nakazuje ostrożność przy interpretacji wyników.

Analiza i wizualizacja wyników

Wyniki przeszukiwania siatki są ładowane do Pandas i sortowane według wartości „edge" marktechpost.com.

Interaktywna mapa cieplna (heatmap) tworzona w Plotly przedstawia zależność nadwyżki zwrotu od kombinacji rsi_period i rsi_threshold. Szeroki „płaskowyż" wysokich wartości na mapie świadczy o stabilności strategii, podczas gdy pojedyncza izolowana „gorąca komórka" jest sygnałem szumu statystycznego, a nie rzeczywistej przewagi.

Raport backtestingu generowany przez OctoBot zawiera dane o akcji cenowej, wskaźnikach technicznych i wykonanych zleceniach, które są następnie parsowane i wizualizowane interaktywnie w środowisku Colab przy użyciu wykresów świecowych i serii czasowych.

Co to oznacza

Opisywany tutorial ma znaczenie wykraczające poza samą naukę obsługi OctoBot. Pokazuje on metodologię, która jest fundamentem profesjonalnego zarządzania strategiami algorytmicznymi: rygorystyczny podział danych na zbiór treningowy i testowy, kwantyfikowalny miernik przewagi rynkowej oraz automatyczne wykrywanie przetrenowania. To podejście — dostępne dziś w środowisku open-source i bezpłatnym Colabie — było jeszcze kilka lat temu domeną wyłącznie wyspecjalizowanych funduszy quant.

Dla polskich inwestorów i deweloperów istotne jest, że cały stos technologiczny jest otwartoźródłowy, a dane pobierane są z giełd kryptowalutowych dostępnych globalnie. Bariera wejścia w algorytmiczny trading ilościowy znacząco się obniżyła — wystarczy znajomość Pythona i zrozumienie podstawowych wskaźników technicznych.

Jednocześnie tutorial uczciwie wskazuje na ograniczenia: „edge decay" między okresem in-sample a out-of-sample to jedyna miara, która naprawdę się liczy przy ocenie, czy strategia ma szansę działać w przyszłości. Wyniki historyczne — nawet starannie zwalidowane — nie gwarantują przyszłych zysków, a każda strategia oparta wyłącznie na danych z jednego instrumentu (BTC/USDT) i jednego interwału (dziennego) wymaga dalszej weryfikacji przed ewentualnym wdrożeniem na żywym rachunku.

Szerszy kontekst

OctoBot ma funkcję optymalizatora strategii, która wykorzystuje kilka scenariuszy backtestingu, aby porównać różne ustawienia strategii i trybu handlowego.

github.com

Backtester obsługuje optymalizację strategii, co oznacza, że można dostosowywać parametry, a nawet włączyć uczenie maszynowe do pętli optymalizacji.

medium.com

OctoBot zawiera silnik backtestingu, który potrafi szybko wykonać strategie handlowe OctoBot na danych historycznych.

octobot.cloud

Podczas backtestingu OctoBot używa tego samego kodu do wykonywania strategii handlowej co w trybie live. Oznacza to, że wyniki uruchomienia strategii w backtestingu i na żywo są identyczne, o ile dane wejściowe są identyczne.

octobot.cloud

Backtesting to świetny sposób na optymalizację strategii, ponieważ uruchamiasz ją na danych historycznych rynków, na których handlujesz.

youtube.com

W tym samouczku budujemy kompletny ilościowy przepływ pracy backtestingu z użyciem OctoBot i OctoBot-Script, zachowując izolowane środowisko.

marktechpost.com

Analiza

Najważniejszy wniosek z tego tutoriala nie dotyczy samej strategii RSI/EMA/ATR, tylko metodologii. Sama konfiguracja jest prosta i ma tylko 18 kombinacji parametrów (3 × 3 × 2), więc ryzyko przeuczenia przez przeszukiwanie siatki jest tu relatywnie niewielkie. Słabsze ogniwa to wybór miary „edge" jako nadwyżki nad buy & hold oraz próg spadku 5 punktów procentowych dla „edge decay", który autor przedstawia jako granicę generalizacji, choć nie uzasadnia go statystycznie. Okres in-sample (2019–2023) obejmuje silny rynek wzrostowy BTC, więc wynik optymalizacji może silnie zależeć od jednego reżimu rynkowego. Dodatkowo cała walidacja opiera się na jednym podziale czasowym, a jeden podział to słaby test odporności, bo wynik zależy od tego, gdzie cięcie zostało wykonane.

Kontekst narzędziowy potwierdza, że OctoBot ma taką funkcję w swojej dokumentacji. Optymalizator strategii porównuje ustawienia na wielu scenariuszach backtestingowych, co pozwala znaleźć najlepszą konfigurację bez testu na rynku w czasie rzeczywistym (wg github.com). Dokumentacja OctoBot wskazuje też, że backtesting korzysta z tego samego kodu co handel na żywo, więc wyniki są identyczne, o ile dane wejściowe są identyczne. Zastrzega jednak, że backtesting działa na pełnych świecach, a ewaluatory czasu rzeczywistego nie mają dostępu do świec w budowie (wg octobot.cloud). Przy interwale dziennym ten efekt jest niewielki, ale warto go pamiętać przy ewentualnym przejściu na krótsze interwały. Osobny materiał wideo opisuje Strategy Designer z kampaniami backtestingowymi i porównywaniem wielu przebiegów (wg youtube.com), co pokazuje, że producent sam kładzie nacisk na porównywanie konfiguracji, a więc na problem, który tutorial rozwiązuje ręcznie w Colabie.

Ostrożność wymagają też źródła poboczne. Artykuł z Medium określa wbudowany backtester OctoBot jako mniej eksponowany w literaturze niż funkcje tradingu na żywo i AI (wg medium.com), więc przykłady społecznościowe mogą być skromniejsze niż oficjalna dokumentacja. Snippet z marktechpost.com wspomina o walk-forward backtestingu, czyli wielokrotnym przesuwaniu okien, a nie jednym podziale, który opisuje omawiany artykuł. Na podstawie dostępnego fragmentu nie da się ustalić, która wersja jest pełniejsza, ale to rozbieżność, którą czytelnik powinien sprawdzić w oryginalnym tutorialu. Najbardziej praktyczny wniosek brzmi więc tak: „edge decay" należy traktować jako punkt wyjścia do oceny, a nie dowód przewagi, zwłaszcza przy jednym instrumencie i jednym interwale.

Opracowanie: Klonika.pl