Propozycja · samobudujący się research lab
To samouczący się system BADAWCZY (alpha-research factory), nie samouczący się trader. Jeden agent-mózg prowadzi nocną pętlę: proponuje hipotezę o edge'u → pisze konfig w ramach LOCKED data standard → odpala na 4×Spark GB10 → ewaluuje walk-forward z deflacją → loguje wynik do jhonnys-brain → kalibracja trzyma go uczciwym → generuje następną hipotezę. Równolegle Darwin już prowadzi żywy turniej paper-strategii.
Dwa poziomy, ostro rozdzielone. Pierwszy to inżynieria 2–4 tygodni na żywym fundamencie. Drugi to moonshot, który nigdy nie dotyka kluczy API bez osobnej, jawnej decyzji.
To nie research-ryzyko, to spina istniejących klocków. Fundament działa i ma historię.
experiment_propose → experiment_log → auto-flip edge → calibration) jest zaimplementowana: 11 trials, 7 success, Brier 0.284.experiment_log wiring, cron nocny + agent piszący konfigi, DSR/PBO jako twarda bramka z licznikiem prób w postgres.Żaden krok pętli ani Darwin nie dotyka kluczy API i nie składa zleceń.
Wartość: moat R&D + żywy case-study („system przebadał N hipotez kiedy spaliście"), nie linia przychodu na 6mc. Cała filozofia z Alpha Factory: maszyna przyspiesza analizę, krytyczna decyzja zostaje u Bartosza.
Dziesięć kroków od pre-flight guard do raportu porannego. Każdy krok jest oznaczony: gdzie wykonywany — Spark, jhonnys-brain (mózg/graf), Darwin czy człowiek.
Sprawdza warunki startu: swap+earlyoom aktywne, kraken dropped, dysk Mac Mini OK, raw immutable (md5 zweryfikowany). Bez tego trening = OOM (fact #597, edge 224 blocks prior 0.95). Fail → abort batch + alert do człowieka.
experiment_propose czyta theory edges gdzie verification_count=0, rankuje po confidence_prior, zwraca build-ready protokół (hypothesis + params/metrics schema + blast_radius + similar_past_trials + call_template). Dorzuca untested edges V5 (H6/H7).
Agent-mózg (Satoshi na vLLM Qwen3.5-397B) tłumaczy protokół na konkretny config treningu/backtestu w ramach LOCKED data standard (27 features, grid V4 $0.10, batch 512, SurvivalGridNet). Waliduje wzgl. TRAINING-BASELINE.md; KAŻDE odstępstwo → stop + zgłoś człowiekowi PRZED treningiem.
Odpala w oknie nocnym (GPU wolne od inference MiniMax/Qwen). PyTorch single-node lub NCCL multi-node TP gdy wszystkie 4 wolne. Pracuje WYŁĄCZNIE na kopiach raw (fact #455). Output do features/labels/views, nigdy do raw/.
9-fold rolling 24h z buforem 5min, Sharpe_net z fees ≥10bps, bootstrap CI (block_size 600, eff n~1440), Deflated Sharpe Ratio + PBO liczone na CAŁEJ historii prób (licznik z postgres — bez niego deflacja jest fikcją). Bramka: edge przeżywa tylko jeśli DSR>0 po korekcie.
experiment_log z outcome (success/failure/partial/inconclusive), metrics (AUC, Sharpe_net, DSR, PBO), failure_mode, observation, entity_names i theory_edge_ids. Trigger auto-aktualizuje liczniki edge'a i flipuje status (unverified → verified/contradicted/partially_verified).
Liczy Brier per relation_type, porównuje confidence_prior z observed_success_rate. Obecnie overall Brier 0.284, delta +0.168 (overconfident); causes +0.32, requires +0.375 najgorsze. Agent dyskontuje swoje nowe priory o calibration_delta dla danego typu relacji.
Edge który przeżył deflację staje się nowym slotem/family w Darwin config.yaml. Handluje na ŻYWYCH feedach (BN spot + HL WS) z paper execution, orderbook-gate honest-fills (slip≤3bps, spread≤20bps, depth≥$50), allocator Thompson (cap 30%/slot) co godzinę, spawner co 24h. Family C = leak detector.
Każda promocja/degradacja/kill slotu = experiment_log trial przeciw edge'owi („orderbook-gated X ma pozytywny żywy edge na liquid coins"). Żywy turniej zasila theory graf + kalibrację. Domyka pętlę: paper-live wynik wraca jako evidence, nie tylko backtest.
Co przetestowano, co przeżyło deflację, status slotów Darwin (stage/trades/net/p-value/negative-control), proponowane następne hipotezy. KAŻDA rekomendacja promocji live osobno oflagowana [HIGH RISK / WYMAGA DECYZJI BARTOSZA]. Post do #ai-ops via gateway.
Nie projektujemy jej od zera. Cykl: experiment_propose → trial → experiment_log → postgres trigger auto-flipuje edge → theory_calibration_report mierzy Brier → agent dyskontuje następny prior o calibration_delta. To samokorygujące: jeśli agent jest systematycznie zbyt pewny edge'ów typu causes, kalibracja go złapie.
verification_count=0, rankuje po confidence_prior, zwraca call_template.
Immutable logs + provenance: experiment_trials są append-only;
fact_provenance_set wiąże tool_outcomes → events → facts → trials w DAG,
fact_lineage go przechodzi; belief_conflicts trigger (schema 013) wykrywa semantyczne duplikaty ≥0.85 cosine.
Raw immutable (fact #455) + licznik prób w postgres = deflacja ma uczciwy mianownik.
Darwin to LIVE tournament + capital allocator. Nie jest planem — chodzi (M1, paper-only, tmux supervisor). W Autonomous Satoshi pełni rolę forward-test rigu: edge, który przeżył deflowany backtest, dostaje slot i handluje na żywych feedach bez ryzyka kapitału.
Edge po deflacji dostaje slot, handluje na żywych feedach (BN aggTrade + HL trades + HL l2Book WS) z paper execution. Jeden konserwatywny cost model: round trip 12.64bps (HL taker 4.32 + BN 5 + slip 2bps/side).
gate.py chodzi po żywym L2 booku HL przed każdym open, odrzuca fill jeśli slip>3bps LUB spread>20bps LUB depth<$50. Odrzucenia → tabela rejections. To zabiło M0 mirage.
allocator.py liczy rolling stats per slot, bramki promocji (INCUBATOR→CANDIDATE: wszystkie + 72h histereza), degradacja przy rolling-7d net<0 lub DD>400bps. Wagi Thompson-sampling, cap 30%/slot.
Top-3 po net PnL → 2 mutacje ±20% jitter każdy + 1 świeży random per family. Cap populacji 24, kill najsłabszego przy overflow. To ewolucja populacji strategii.
Family C = random entry, identyczny risk mgmt. Jeśli kontrola kiedykolwiek przejdzie bramki promocji → bramki za słabe, WARNING. Built-in sanity check przeciw overfittingowi.
experiment_log wiring (każda promocja/kill → trial w theory grafie) + Family B funding-arb + daily #ai-ops reporter. ZERO order-placement path, ZERO kluczy API.
System tradingowy = wiersz w rejestrze, który Darwin już ewoluuje (tabela slots w darwin.db + config.yaml). To rozszerzenie istniejącego schematu, nie nowy wynalazek. Nowy system = nowy slot (backtest przeżył deflację) lub nowa family (nowy mechanizm).
| Pole | Co to jest |
|---|---|
| STRATEGY CLASS / family | Kategoria mechanizmu. family A = spread/lag BN→HL (port z paper-trader-v4 „Grok"), family C = negative control (random entry), planowane family B = funding-rate arb (HL 1h vs BN 8h, delta-neutral). Mapuje na implementację w slots.py. |
| PARAMS (params_json) | Słownik strojonych parametrów: {entry_bps, momentum_window_s, momentum_threshold_bps, hl_micro_ticks, min_edge_bps, sl_bps, timeout_s, max_positions, cooldown_s, trail_frac}. Spawner mutuje ±20% jitter. |
| DATA / feeds | Żywe strumienie (BN spot aggTrade, HL trades, HL l2Book) + dla backtestu LOCKED data standard (Pakiet A: 27/65 features, raw immutable, training view). |
| REGIME GATE | Meta-warunek kiedy strategia w ogóle handluje. Np. H6 regime_gate na deribit_dvol/funding/VIX wybiera 27% okien o AUC>0.6; orderbook-gate jako twardy regime na płynność. |
| RISK | sl_bps, timeout_s, max_positions, max_drawdown_bps (400, instant degrade), cooldown_s, trailing stop (frac of peak), allocator weight cap 30%. |
| STATUS LIFECYCLE | Stage machine w slots.stage: INCUBATOR → CANDIDATE → degradacja → KILLED. Kolumny: weight, last_degraded_at, degrade_count, parent_id, gen (linia ewolucyjna spawnera). |
Docelowo: theory_node per family (kind=component) + theory_edge „family X ma pozytywny żywy edge" z confidence_prior, który experiment_log z Darwin flipuje.
GPU są współdzielone z inference, więc klaster dzieli się na trzy role w oknach. Konflikt zasobów rozwiązuje scheduler okien: ciężki trening tylko gdy inference-load niski.
vLLM 0.17.1 serwuje Intel/Qwen3.5-397B-A17B-int4 (TP=4 przez Ray, max-len 200K, prefix-cache 98.5% hit) na :8000 przez LiteLLM :4000. Mózg Satoshi: czyta protokół, pisze konfigi, formułuje hipotezy, redaguje raport. Uwaga: thinking-mode bug → enable_thinking:false lub wysoki max_tokens.
PyTorch training SurvivalGridNet / regime-gate / Mamba. Single-node gdy inference zajmuje część klastra, NCCL multi-node TP gdy wszystkie 4 wolne (NCCL_SOCKET_IFNAME na QSFP, RoCE). Clock cap 210–2150MHz (VRM safety, −28% perf) zostaje. MemoryMax/earlyoom bo Tank ma zero swap + historię OOM.
9-fold backtest + bootstrap CI + DSR/PBO. CPU-heavy (80 rdzeni Ray), więc może iść równolegle z lekkim inference. Sekwencja nocna: pre-flight Phase-A → trening na wolnym GPU → walk-forward na CPU → log.
Dziesięć twardych reguł. Naruszenie którejkolwiek = stop. To one odróżniają system BADAWCZY od „samouczącego się tradera", który spaliłby kapitał.
Brak online-RL na kierunek/sizing. RL co najwyżej na egzekucję, później. Samouczenie = wolno rosnący ensemble stabilnych snapshotów (wzorzec Numerai/RD-Agent), NIE adaptacyjne wagi online.
Każdy backtest: koszty ≥10bps (Darwin live: round trip 12.64bps), walk-forward 9-fold, bootstrap CI — bez wyjątków.
DSR + PBO liczone na CAŁEJ historii prób (licznik w postgres). Bez licznika deflacja jest fikcją, a naiwna pętla retreningu = fabryka overfittingu (Bailey/López de Prado).
Micro-live dopiero po ≥4–8 zielonych tygodniach deflowanego WF + zielonego live-paper. Agent REKOMENDUJE, nie WYKONUJE. Pierwsza ekspozycja: funding-arb delta-neutral, NIE directional, NIE lag-arb.
27 features, grid V4 $0.10, batch 512, SurvivalGridNet (decyzja Bartosza 2026-02-25, fact #438). Pętla NIE MA prawa go zmienić; każde odstępstwo → stop + zgłoś PRZED treningiem.
raw/ read-only (chmod a-w), DuckDB read_parquet(raw) only, output ZAWSZE do features/labels/views, md5 verification (fact #455). Factory pracuje wyłącznie na kopiach.
Dane treningowe po cutoffie modelu (03–06/2026 > 01/2026) = memoryzacja LLM wykluczona. Strict exclusive t0 w label construction. HL mark NIGDY jako label (synthetyczny oracle, lagguje BN 3–8s — fact #440).
Obowiązkowe (Darwin family C). Jeśli random-entry kontrola przechodzi bramki promocji → bramki za słabe, WARNING. Built-in leak detector.
theory_calibration_report przed każdym wysokim priorem; dyskontuj o calibration_delta (obecnie +0.168 overall, causes +0.32, requires +0.375). System overconfident — koryguj.
Darwin/pętla NIE czytają kluczy API, ZERO order-placement path, wszystkie feedy to publiczne dane rynkowe. Kill-switch live pojawia się dopiero z MICRO_LIVE (osobny milestone).
To NIE jest linia przychodu na 6mc — to moonshot R&D z opcją na moat. Wpisywanie tego do prognozy = samooszukiwanie. Dlatego budujemy system BADAWCZY z deflacją, nie „samouczącego się tradera".
Directional short-horizon ML umiera przy kosztach: +182% brutto → −99% netto przy ledwie 10bps (arXiv 2606.00060). Tree ceiling potwierdzony 8×: CatBoost/LightGBM max 0.567 AUC na 65 features. Pakiet A mean WF = 0.6099, 0 foldów >0.70 — cytowane 0.7455 to best-fold cherry-pick (korekta fact #471).
Funding-rate arb cross-venue = jedyna klasa edge z opublikowanym pozytywnym wynikiem LIVE dla małego kapitału (14–19% rocznie 2024–25, ale tylko ~40% najlepszych spreadów netto-dodatnie, ryzyko = reversal). Dlatego pierwsza ekspozycja live = funding-arb (Darwin family B), delta-neutral. Spot-perp basis na majorach: zatłoczony poniżej rentowności T-bills od poł. 2024.
Lag-arb BN→HL: lead-lag DWUKIERUNKOWY (HL prowadzi BN ~25% okien), median order-to-fill HL ~884ms zjada sub-sekundowe okno. Własny live test (v5 do 2026-03-03): 303 trade'y, PnL −$0.30 (fact #135). Paper 70% WR nie przełożył się na live. Darwin M0 +773k bps to był LIQUIDITY MIRAGE, zabity przez orderbook-gate.
FINSABER (replikacja 2004–2024 z delisted): „alpha" sławnych agentów LLM (FinMem, FinAgent) znika, Sharpe ujemny, p>0.34. Opublikowane sukcesy = artefakty wąskiej ewaluacji + lookahead przez memoryzację LLM (do 22% obserwacji trzeba wyciąć by zabić fałszywe Sharpe w GPT-4.1).
Retail baseline (dane regulatorów): 73–97% traci, <1% trwale profitable. Automatyzacja nie zmienia znaku dla mediany. RL end-to-end na kierunek/sizing: zero wiarygodnych żywych sukcesów w literaturze (działa tylko na egzekucji — JPM LOXM). FinRL FAQ sam przyznaje, że buy-and-hold trudno pobić.
Bez nowego ryzyka research'owego do tygodnia 3. Twardy gate live na końcu — i to tylko jako rekomendacja do osobnej decyzji Bartosza.
Domknij Darwin M2 #3 — experiment_log wiring. Każda promocja/degradacja/kill slotu → jhonnys-brain trial przeciw theory_edge („orderbook-gated spread/lag ma pozytywny żywy edge na liquid coins"). Dodaj theory_node per family (A/B/C). Zero nowego ryzyka — tylko spina istniejące.
Daily #ai-ops reporter (Darwin M2 #2) — slot table (stage/trades/net/p-value/age), promotions/degradations, negative-control status, post do kanału via gateway. To poranny krok 9 pętli.
Agent-brain harness na vLLM — Satoshi czyta experiment_propose call_template, pisze config walidowany wzgl. TRAINING-BASELINE.md (stop na odstępstwo). Zacznij od H6 regime_gate (prior 0.80, HIGHEST ROI, najtańszy do walidacji).
DSR/PBO bramka + licznik prób w postgres. Bez tego deflacja walk-forward jest fikcją. Phase-A pre-flight guard (theory edge 224) jako krok 0 nocnej pętli.
Cron nocny spinający kroki 0–9 jako resumable workflow (okna nocne, budżet eksperymentów, scheduler zasobów GPU vs inference).
Darwin Family B funding-rate arb (HL 1h vs BN 8h, delta-neutral) + funding feed + orderbook-gate na obu nogach (BN leg dostaje depth check). Tani collector w ramach Collector Stack V3 ($70/mc już ratyfikowany).
Akumulacja zielonych tygodni. Tylko po ≥4–8 zielonych (deflowany WF + zielony live-paper Darwin na funding-arb) agent może WYGENEROWAĆ rekomendację MICRO_LIVE [HIGH RISK] do osobnej decyzji Bartosza. Osobny milestone: kill-switch, real order path, klucze API — NIC z tego nie buduje pętla autonomicznie.