fruh.pl · engineering lab

Kodujemy automatyzację
AI w tradingu.

Budujemy systemy, które podejmują i weryfikują decyzje tradingowe na Hyperliquid — od danych rynkowych, przez sygnały i zarządzanie ryzykiem, po egzekucję i audyt. Agent AI jest częścią stacku: 230 skilli, dostęp do danych, zdolność działania. Człowiek decyduje o kapitale; kod pilnuje dyscypliny.

PythonHyperliquid APIWebSocket Docker · Hetznerpytestshadow modeagent AI

Stan faktyczny, liczbami

Te liczby pochodzą z repozytoriów i serwera — nie z broszury. Aktualizowane przy każdym większym wdrożeniu.

15 500+
linii Pythona (app + testy)
336
testów automatycznych (291 bot + 45 SRAT)
75
modułów aplikacji bota
230
skilli agenta AI
24/7
kontener na Hetznerze + launchd na Macu
5 min
cykl danych publicznych (cron)

Jak powstaje funkcja — pipeline

Każda zdolność systemu przechodzi tę samą drogę. Nic nie trafia na mainnet wcześniej niż przez pełny cykl.

Probe API

Najpierw strzelamy do żywego API i czytamy surowy JSON. Zakładanie kształtu odpowiedzi z dokumentacji to klasyczny błąd — weryfikujemy każdy endpoint przed napisaniem adaptera.

Testy

Nowy kod rodzi się z testami pytest. Semantyka sygnałów, kosztów i progów jest przypięta testami — nie może „zniknąć" przy refaktorze.

Shadow mode

Strategia najpierw działa obok rynku: zapisuje decyzje do łańcucha audytowego, ale nie składa zleceń. Zbieramy przewidywania i wyniki.

Ewaluacja z benchmarkami

Scorecard liczy trafność nie w próżni, ale przeciw benchmarkom: always-LONG i sign(xgap). Strategia jest ciekawa tylko jeśli bije oba.

Gates → live

Fail-closed bramki jakości danych, limity ekspozycji, kill-switch. Dopiero potem egzekucja — i to wyłącznie reduce-only przy ochronie pozycji.

Systemy

Cztery aktywne elementy stacku. Każdy robi co innego i ma inny status — to zamierzone.

RTI-ETH-PROD — bot tradingowy

Docker · Hetzner · rti-eth-prod
LIVE · ochrona pozycji

Produkcyjny system na Hyperliquid. Rdzeń to profit-lock ladder — automatyczna drabina podnoszenia stop-lossa, która chroni zysk szybciej niż człowiek zareaguje: od progu +22 USD stop jedzie na +14, przez +25→15, +30→20, +35→25, po +40→30. Bot ustawia wyłącznie reduce-only trigger SL — nie otworzy pozycji, nie zwiększy ryzyka. Wokół tego: engine sygnałowy multi-timeframe, moduł kapitałowy, dziennik i tryb shadow dla nowych strategii.

  • Signal engine — wskaźniki, multi-TF, explainability: każda decyzja ma ślad „dlaczego"
  • Capital protection — limity ekspozycji per instrument, kill-switch, hard cap
  • Feed health + resilience — fail-closed: złe dane = brak decyzji, nie zła decyzja
  • Sprint engine — krótkie sesje intraday z bramkami wejścia/wyjścia (obecnie w pilocie shadow)
  • Journal — pełna kronika zdarzeń do retrospekcji
  • UI operatora — panel z metrykami na żywo (fruh.pl/rti, za basic-auth)

SRAT_01 — laboratorium strategii

launchd · macOS · ~/SRAT_01
SHADOW · badania

Samodzielny program badawczy: strategie testowane wyłącznie na papierze, z łańcuchem audytowym. Każda decyzja to rekord z hashem poprzedniego — łańcuch jest tamper-evident, każdy rekord da się deterministycznie odtworzyć (verify, replay). Evaluator liczy wynik ex-post z prawdziwym horyzontem świec, a nie „drift do kliknięcia".

  • H2 carry — sygnał contra ekstremalnemu fundingowi; edge liczony z kosztami, hold prorated
  • H3 liquidity — research: dostarczanie płynności w kaskadach likwidacji (edge = zlecenia maker); collector zapisuje taśmę WS trades + książkę 24/7
  • Autopilot — launchd: skan co 15 min, cykl przy triggerze, scorecard codziennie 21:00
  • 45 testów — semantyka modeli przypięta, pivot H1/H2 testowana osobno

SRAT_02 — metodologia poziomów

playbook · docs/SRAT_02.md
DOKUMENT · asystent

Nie kod — metodologia ręcznego tradingu L/S, którą egzekwuje agent AI na życzenie operatora („l czy s?"). Świeże dane ze skanera, poziomy zawsze z podstawą: struktura / VWAP / projekcja / półka. Reżimy rynkowe decydują, który klocek jest aktywny — paraboliczny, pullback do VWAP, wybicie z półką. Werdykt nigdy z pamięci, zawsze z bieżącego odczytu.

Agent AI (Hermes) — operator stacku

macOS · 230 skilli · fruh.pl/skille
AKTYWNY

Agent siedzi na topie całego labu: czyta kody, deployuje na serwer, analizuje dane rynkowe (funding, OI, płynność, SMC), prowadzi retrospektywy i egzekwuje SRAT_02. Każda zdolność to skill — procedura z krokami, pułapkami i wymogiem dowodu. Inwentarz jest publiczny na osobnej stronie.

Co jest w środku bota

75 modułów. Najważniejsze odpowiedzialności, po nazwach z repozytorium.

profit_lock_manager
Serce systemu: progi drabiny, przejścia, modyfikacja reduce-only SL na giełdzie.
ladder_engine + ladder_review
Logika drabiny i jej retrospektywny przegląd — czy progi robią to, co powinny.
stop_manager
Cykl życia stop-lossów: ustawianie, modyfikacja, potwierdzenie na koncie.
signal_engine/
engine, mtf, indicators, tp_sl, risk_manager, explainability — pełny tor od danych do rekomendacji.
sprint_* (6 modułów)
Sesje intraday: gates, pilot, session, shadow, shadow_data — strategia sprint w bezpiecznym torze.
capital_protection
Twarde limity: max ekspozycja per instrument, płynność, kill-switch stanu konta.
shadow_loop + shadow_recorder
Strategie działające na papierze z pełnym zapisem decyzji — zanim zobaczą rynek.
feed_health
Jakość danych: świeżość, luki, spójność źródeł. Fail-closed, nie fail-optimistic.
data_hub + integrations
Agregacja źródeł: HL REST/WS, darmowe API rynku, cache i rate-limiter.
journal + database
Kronika zdarzeń i stanu — pod retrospekcję i audyt, nie tylko pod UI.
websocket_manager + ws
Strumienie live: cena, książka, taśma — z auto-reconnect i monitoringiem.
backtest/
Silnik historyczny z kosztami transakcyjnymi w torze — wynik netto, nie brutto.

Uczciwość: co nie zadziałało

Większość pomysłów na strategie umiera — i to jest feature, nie bug. Kilka faktów z łańcucha decyzji:

H1 mikrodyslokacje odrzucone — na majorach mediana |xgap| to 0,7–0,9 bps przy ~11 bps kosztów round-trip. Model przesunięty na carry (H2), H1 zostaje tylko do replayu.

Sprint engine → shadow — profit factor 0,456 na danych pilota. Poniżej 1,0 = strategia traci; została wycofana z toru egzekucji do czasu poprawy. UI pokazuje ten wynik otwarto.

Scorecard 38,7% trafności — pierwotny system sygnałów SRAT_01 był gorszy niż moneta. Zarchiwizowany; wniosek: bez benchmarków (always-LONG 67% w rynku LONG-bias) hit-rate jest ozdobą.

Ledger v1 mierzył zły horyzont — wynik liczony „od decyzji do kliknięcia", nie po realnym oknie pozycji. Przepisany na świecowy horyzont prawdziwy; stare dane zarchiwizowane z ostrzeżeniem.

Założenia kształtu API — dwa razy w jednej sesji struktura odpowiedzi HL okazała się inna niż w docs. Od tamtej pory: live-probe przed każdą integracją, surowy JSON do pliku.

Żadna strategia wejścia nie ma dziś potwierdzonego edge'u ponad koszty. To, co działa na produkcji, to ochrona tego, co już jest — profit-lock ladder. Dopóki dane nie powiedzą inaczej, nie udajemy odwrotnego.

Bezpieczeństwo kapitału

Zasady zaprojektowane tak, żeby błąd kodu nie mógł kosztować więcej niż dyskomfort.

reduce-only, zawsze
Jedyne zlecenia, jakie bot składa na żywo, to reduce-only stop-lossy. Zamknięcie pozycji, nigdy otwarcie.
opt-in na live
Domyślnie DRY_RUN. Realna egzekucja wymaga jawnego LIVE=true + frazy potwierdzającej w env. Start bota = wyłączony.
capital protection
Twarde limity ekspozycji per instrument i globalny kill-switch na stan konta.
fail-closed
Brak danych lub złe dane zatrzymuje decyzję. System woli nie zrobić nic niż zrobić coś głupiego.
klucze poza kodem
Env na serwerze, sekrety nigdy w repo, skan przed każdym deploymentem.
audyt i replay
Łańcuch hashy w SRAT_01, journal w bocie: każdą decyzję da się odtworzyć i rozliczyć.

Stack i miejscówki

Python 3.11FastAPI + uvicornpytest Hyperliquid REST + WSSDocker ComposeHetzner VPS nginxlaunchd (macOS)CoinAnk / AiCoin / free APIs agent Hermes · 230 skilligit